From 6c7ff617b913b21b8b12b035f0d653c068830de3 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 20 Sep 2024 12:36:06 +0800 Subject: [PATCH 001/205] docs(protocol): update Hekla deployments (#18152) --- .../deployments/hekla-contract-logs.md | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/packages/protocol/deployments/hekla-contract-logs.md b/packages/protocol/deployments/hekla-contract-logs.md index b5e682ffb32..18a3f4e41e8 100644 --- a/packages/protocol/deployments/hekla-contract-logs.md +++ b/packages/protocol/deployments/hekla-contract-logs.md @@ -9,12 +9,13 @@ ### shared_address_manager - proxy: `0x7D3338FD5e654CAC5B10028088624CA1D64e74f7` -- impl: `0x27ef4e7b101e822Dd107FF14Ca2540e89cea8E3e` +- impl: `0xba8C3B09AA3FbFD2bcf62cBDaA71c2c49C1e6200` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` - transferred ownership on Jul 8, 2024 + - upgraded on Sep 20, 2024 at commit `fd1c039` ### taiko_token @@ -39,12 +40,13 @@ ### bridge - proxy: `0xA098b76a3Dd499D3F6D58D8AcCaFC8efBFd06807` -- impl: `0x339F4C5320a5C697EA10b4f35d546C330AB43d8D` +- impl: `0xFf9a9A5CC30C59AD0383E8914efc84b33C4Ed5B2` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` - transferred ownership on Jul 8, 2024 + - upgraded on Sep 20, 2024 at commit `fd1c039` ### erc20_vault @@ -98,17 +100,18 @@ ### rollup_address_manager - proxy: `0x1F027871F286Cf4B7F898B21298E7B3e090a8403` -- impl: `0x68570e85Ca54bAE1B6f608d0929665146BA66B39` +- impl: `0xF27440B4Bd3c9cabe858261F0BD500831ce7E1bD` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `13ad99d` - upgraded on Jun 10, 2024 at commit `d5965bb` - transferred ownership on Jul 8, 2024 + - upgraded on Sep 20, 2024 at commit `fd1c039` ### taikoL1 - proxy: `0x79C9109b764609df928d16fC4a91e9081F7e87DB` -- impl: `0xFEE0b488da4DFC7Cd784d47de42b9467C1faE0F3.` +- impl: `0xb179D4038DD6084c548EEf674DAC262F51264e5e.` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `4903bec` @@ -122,6 +125,7 @@ - upgraded on Jul 11, 2024 at [PR #17779](https://github.com/taikoxyz/taiko-mono/pull/17779) - upgraded on Jul 15, 2024 at commit `45281b8` - upgraded on Aug 15, 2024 at `protocol-v1.8.0` with [#17919](https://github.com/taikoxyz/taiko-mono/pull/17919) + - upgraded on Sep 20, 2024 at commit `fd1c039` ### assignmentHook @@ -155,40 +159,44 @@ ### prover_set - proxy: `0xD3f681bD6B49887A48cC9C9953720903967E9DC0` -- impl: `0x4ABc9874bca5bc33cB62396754BdcC5811D98fcd.` +- impl: `0x2dd26aa9D68A2a629aae2f3AA588119362787300.` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - deployed on Jun 17, 2024 at commit `b7e12e3` - upgraded on Jul 11, 2024 at commit `30631a9` + - upgraded on Sep 20, 2024 at commit `fd1c039` ### prover_set_contester - proxy: `0x335103c4fa2F55451975082136F1478eCFeB84B9` -- impl: `0x4ABc9874bca5bc33cB62396754BdcC5811D98fcd.` +- impl: `0xfED83D74c35D29cb2E9cC0514D2B7DcfDA965E3a.` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - deployed on Jun 21, 2024 at commit `099ce22` - upgraded on Jul 11, 2024 at commit `30631a9` + - upgraded on Sep 20, 2024 at commit `fd1c039` ### guardian_prover - proxy: `0x92F195a8702da2104aE8E3E10779176E7C35d6BC` -- impl: `0x23bDb18995266c1Ac4c1BDBF69aE977A2DCE0750` +- impl: `0x7a5858e6A57776dc8f5E1E3a7C9631ED2c272673` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` - transferred ownership on Jul 8, 2024 + - upgraded on Sep 20, 2024 at commit `fd1c039` ### guardian_minority - proxy: `0x31d4d27da5c299d4b6CE19c869B8891C0002795d` -- impl: `0x7eA0a9d62cF26Bd81D62AEf6D6D67a86A580aFA3` +- impl: `0x31DC2Cb5986555994d4aa7d4A25aE96203deDFb8` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - deployed on May 20, 2024 at commit `6e56475` - upgraded on Jun 10, 2024 at commit `d5965bb` - transferred ownership on Jul 8, 2024 + - upgraded on Sep 20, 2024 at commit `fd1c039` ### risc0_groth16_verifier @@ -225,11 +233,12 @@ ### bridge - proxy: `0x1670090000000000000000000000000000000001` -- impl: `0xD981DaF607bb6D4249f943d1b13a9AE071E8E3B4` +- impl: `0x07781C4C8a972C2a9Bd7b2a2d6EB649cD1a31f45` - owner: `0x95F6077C7786a58FA070D98043b16DF2B1593D2b` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` + - upgraded on Sep 20, 2024 at commit `fd1c039` ### erc20_vault @@ -273,29 +282,32 @@ ### shared_address_manager - proxy: `0x1670090000000000000000000000000000000006` -- impl: `0x91Cf5766Fbc35bb1a2226DE5052C308a5EDd1d47` +- impl: `0xd4ec1C9622958AFCE7f9E21f758D2edfa2df0Cf0` - owner: `0x95F6077C7786a58FA070D98043b16DF2B1593D2b` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` + - upgraded on Sep 20, 2024 at commit `fd1c039` ### taikoL2 - proxy: `0x1670090000000000000000000000000000010001` -- impl: `0x0C74010473C066Cdd20BA32044D1f6E28527A725` +- impl: `0x8b9700D5c4212C3467e3f25989897293B06e147D` - owner: `0x95F6077C7786a58FA070D98043b16DF2B1593D2b` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` + - upgraded on Sep 20, 2024 at commit `fd1c039` ### rollup_address_manager - proxy: `0x1670090000000000000000000000000000010002` -- impl: `0xd41f03dF5f46a0686807d9DBDd94a1223FC73AEe` +- impl: `0xd4ec1C9622958AFCE7f9E21f758D2edfa2df0Cf0` - owner: `0x95F6077C7786a58FA070D98043b16DF2B1593D2b` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` + - upgraded on Sep 20, 2024 at commit `fd1c039` ### bridged_erc20 From 896f8899addeeeca565f728456cc8c46b688733a Mon Sep 17 00:00:00 2001 From: Karim <162329697+kimo-ice@users.noreply.github.com> Date: Fri, 20 Sep 2024 07:22:22 +0200 Subject: [PATCH 002/205] fix(protocol): update nc (netcat) pkg name and add error handling (#18153) Co-authored-by: Karim Co-authored-by: David Co-authored-by: maskpp --- .github/workflows/protocol.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/protocol.yml b/.github/workflows/protocol.yml index 5ac4436e399..184c898102e 100644 --- a/.github/workflows/protocol.yml +++ b/.github/workflows/protocol.yml @@ -20,7 +20,8 @@ jobs: access_token: ${{ github.token }} - name: Prepare environment - run: sudo apt-get update && sudo apt-get install -y git nc + continue-on-error: true + run: sudo apt-get update && sudo apt-get install -y git netcat - name: Checkout repository uses: actions/checkout@v4 From 92f571a15daa4ad300b4665bbace9248c439fd11 Mon Sep 17 00:00:00 2001 From: maskpp Date: Fri, 20 Sep 2024 16:13:10 +0800 Subject: [PATCH 003/205] chore(protocol): remove reliance on taiko contracts and update golangci-lint (#18151) --- .github/workflows/taiko-client--hive_test.yml | 15 +-------------- .github/workflows/taiko-client--test.yml | 10 +++++----- packages/taiko-client/.golangci.yml | 1 - packages/taiko-client/Makefile | 2 +- .../taiko-client/integration_test/hive_test.go | 2 +- 5 files changed, 8 insertions(+), 22 deletions(-) diff --git a/.github/workflows/taiko-client--hive_test.yml b/.github/workflows/taiko-client--hive_test.yml index edea54a6798..4e35a6d0d19 100644 --- a/.github/workflows/taiko-client--hive_test.yml +++ b/.github/workflows/taiko-client--hive_test.yml @@ -13,7 +13,7 @@ jobs: if: github.event.pull_request.draft == false && contains(github.event.pull_request.labels.*.name, 'option.hive-test') name: hive tests runs-on: [arc-runner-set] - timeout-minutes: 20 + timeout-minutes: 30 steps: - name: Cancel Previous Runs @@ -32,22 +32,9 @@ jobs: go-version: 1.21 cache: true - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - - - name: Install pnpm dependencies - uses: ./.github/actions/install-pnpm-dependencies - - name: Clone taikoxyz/hive run: git clone https://github.com/taikoxyz/hive.git /tmp/hive - - name: Update taiko contract tx list - working-directory: . - run: | - export TAIKO_MONO_DIR=$PWD - cd /tmp/hive/simulators/taiko - sh scripts/deploy_l1_contract.sh - - name: Hive tests working-directory: packages/taiko-client run: | diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index 0c88c6988f6..3f7aa2aa7fa 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -12,11 +12,8 @@ jobs: lint: if: github.event.pull_request.draft == false name: Lint - runs-on: [arc-runner-set] + runs-on: [ubuntu-latest] steps: - - name: Install Git - run: sudo apt-get update && sudo apt-get install -y git make - - uses: actions/checkout@v4 - name: Set up Go @@ -25,9 +22,12 @@ jobs: go-version: 1.21 cache: true + - name: Install golangci-lint + run: go install -v github.com/golangci/golangci-lint/cmd/golangci-lint@v1.60.0 + - name: Lint working-directory: packages/taiko-client - run: make lint + run: golangci-lint run --path-prefix=./ --config=.golangci.yml integration_tests: if: github.event.pull_request.draft == false diff --git a/packages/taiko-client/.golangci.yml b/packages/taiko-client/.golangci.yml index 76330f12d5b..7ea97535aaa 100644 --- a/packages/taiko-client/.golangci.yml +++ b/packages/taiko-client/.golangci.yml @@ -49,7 +49,6 @@ linters: - sqlclosecheck - staticcheck - stylecheck - - typecheck - unconvert - unused - whitespace diff --git a/packages/taiko-client/Makefile b/packages/taiko-client/Makefile index 292ea57f33c..8454ee49e41 100644 --- a/packages/taiko-client/Makefile +++ b/packages/taiko-client/Makefile @@ -14,7 +14,7 @@ clean: lint: @go install golang.org/x/tools/cmd/goimports@latest \ - && go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.56.2 \ + && go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.60 \ && goimports -local "github.com/taikoxyz/taiko-mono/packages/taiko-client" -w ./ \ && golangci-lint run diff --git a/packages/taiko-client/integration_test/hive_test.go b/packages/taiko-client/integration_test/hive_test.go index a16ce490c17..0df80196797 100644 --- a/packages/taiko-client/integration_test/hive_test.go +++ b/packages/taiko-client/integration_test/hive_test.go @@ -43,7 +43,7 @@ func TestHiveHandler(t *testing.T) { }) // Multi clusters reorg test. - t.Run("taiko-reorg/taiko-reorg/clusters(1)", func(t *testing.T) { + t.Run("taiko-reorg/taiko-reorg", func(t *testing.T) { testDenebReorg(t, "taiko-reorg/taiko-reorg", [][]string{clientGroups[0]}) }) From 273bf53fad763b8504353e7cc14c8585e341f9d0 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Sat, 21 Sep 2024 10:06:44 +0800 Subject: [PATCH 004/205] feat(protocol): introduce `getTransitions` in TaikoL1 (#18154) Co-authored-by: Karim Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> Co-authored-by: Daniel Wang --- .github/workflows/protocol.yml | 2 +- .../contracts/layer1/based/LibUtils.sol | 51 +++++++++++++++++++ .../contracts/layer1/based/TaikoL1.sol | 30 +++++++++++ 3 files changed, 82 insertions(+), 1 deletion(-) diff --git a/.github/workflows/protocol.yml b/.github/workflows/protocol.yml index 184c898102e..9ec582faeb2 100644 --- a/.github/workflows/protocol.yml +++ b/.github/workflows/protocol.yml @@ -21,7 +21,7 @@ jobs: - name: Prepare environment continue-on-error: true - run: sudo apt-get update && sudo apt-get install -y git netcat + run: sudo apt-get update && sudo apt-get install -y git netcat wget - name: Checkout repository uses: actions/checkout@v4 diff --git a/packages/protocol/contracts/layer1/based/LibUtils.sol b/packages/protocol/contracts/layer1/based/LibUtils.sol index d302a7b31d6..26ffc29a0fb 100644 --- a/packages/protocol/contracts/layer1/based/LibUtils.sol +++ b/packages/protocol/contracts/layer1/based/LibUtils.sol @@ -43,6 +43,7 @@ library LibUtils { error L1_BLOCK_MISMATCH(); error L1_INVALID_BLOCK_ID(); + error L1_INVALID_PARAMS(); error L1_INVALID_GENESIS_HASH(); error L1_TRANSITION_NOT_FOUND(); error L1_UNEXPECTED_TRANSITION_ID(); @@ -164,6 +165,31 @@ library LibUtils { return _state.transitions[slot][_tid]; } + /// @dev Retrieves the transitions with a batch of parentHash. + /// @param _state Current TaikoData.State. + /// @param _config Actual TaikoData.Config. + /// @param _blockIds Id array of the block. + /// @param _tids The transition id array. + /// @return transitions_ The state transition pointer array. + function getTransitions( + TaikoData.State storage _state, + TaikoData.Config memory _config, + uint64[] calldata _blockIds, + uint32[] calldata _tids + ) + internal + view + returns (TaikoData.TransitionState[] memory transitions_) + { + if (_blockIds.length == 0 || _blockIds.length != _tids.length) { + revert L1_INVALID_PARAMS(); + } + transitions_ = new TaikoData.TransitionState[](_blockIds.length); + for (uint256 i; i < _blockIds.length; ++i) { + transitions_[i] = getTransition(_state, _config, _blockIds[i], _tids[i]); + } + } + /// @notice This function will revert if the transition is not found. /// @dev Retrieves the transition with a given parentHash. /// @param _state Current TaikoData.State. @@ -189,6 +215,31 @@ library LibUtils { return _state.transitions[slot][tid]; } + /// @dev Retrieves the transitions with a batch of parentHash. + /// @param _state Current TaikoData.State. + /// @param _config Actual TaikoData.Config. + /// @param _blockIds Id array of the blocks. + /// @param _parentHashes Parent hashes of the blocks. + /// @return transitions_ The state transition pointer array. + function getTransitions( + TaikoData.State storage _state, + TaikoData.Config memory _config, + uint64[] calldata _blockIds, + bytes32[] calldata _parentHashes + ) + internal + view + returns (TaikoData.TransitionState[] memory transitions_) + { + if (_blockIds.length == 0 || _blockIds.length != _parentHashes.length) { + revert L1_INVALID_PARAMS(); + } + transitions_ = new TaikoData.TransitionState[](_blockIds.length); + for (uint256 i; i < _blockIds.length; ++i) { + transitions_[i] = getTransition(_state, _config, _blockIds[i], _parentHashes[i]); + } + } + /// @dev Retrieves the ID of the transition with a given parentHash. /// This function will return 0 if the transition is not found. function getTransitionId( diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index d15f655cf79..2f103841e25 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -212,6 +212,21 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { return LibUtils.getTransition(state, getConfig(), _blockId, _parentHash); } + /// @notice Gets the state transitions for a batch of block. + /// @param _blockIds Index of the blocks. + /// @param _parentHashes Parent hashes of the blocks. + /// @return The state transition array of the blocks. + function getTransitions( + uint64[] calldata _blockIds, + bytes32[] calldata _parentHashes + ) + external + view + returns (TaikoData.TransitionState[] memory) + { + return LibUtils.getTransitions(state, getConfig(), _blockIds, _parentHashes); + } + /// @notice Gets the state transition for a specific block. /// @param _blockId Index of the block. /// @param _tid The transition id. @@ -227,6 +242,21 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { return LibUtils.getTransition(state, getConfig(), _blockId, _tid); } + /// @notice Gets the state transitions for a batch of block. + /// @param _blockIds Index array of the blocks. + /// @param _tids The transition id array of the blocks. + /// @return The state transition array of the blocks. + function getTransitions( + uint64[] calldata _blockIds, + uint32[] calldata _tids + ) + external + view + returns (TaikoData.TransitionState[] memory) + { + return LibUtils.getTransitions(state, getConfig(), _blockIds, _tids); + } + /// @notice Returns information about the last verified block. /// @return blockId_ The last verified block's ID. /// @return blockHash_ The last verified block's blockHash. From bba2b791d5c701b4c86834ab35682bde02d9bcb3 Mon Sep 17 00:00:00 2001 From: Andrew Scot Date: Sat, 21 Sep 2024 15:57:23 +1000 Subject: [PATCH 005/205] chore(repo): temporarily comment out the dead youtube link (#18155) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 22b5ba5f8c8..bb831dc6a9b 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ [![Twitter Follow](https://img.shields.io/twitter/follow/taikoxyz?style=social)](https://twitter.com/taikoxyz) [![Discord](https://img.shields.io/discord/984015101017346058?color=%235865F2&label=Discord&logo=discord&logoColor=%23fff)](https://discord.gg/taikoxyz) -[![YouTube](https://img.shields.io/youtube/channel/subscribers/UCxd_ARE9LtAEdnRQA6g1TaQ)](https://www.youtube.com/@taikoxyz) + [![GitPOAP Badge](https://public-api.gitpoap.io/v1/repo/taikoxyz/taiko-mono/badge)](https://www.gitpoap.io/gh/taikoxyz/taiko-mono) [![License](https://img.shields.io/github/license/taikoxyz/taiko-mono)](https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md) From 53d83423cfee99b0bb84b18c40fdb5c4597f2de5 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Sun, 22 Sep 2024 11:13:46 +0800 Subject: [PATCH 006/205] chore(repo): restore youtube link (#18158) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bb831dc6a9b..22b5ba5f8c8 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ [![Twitter Follow](https://img.shields.io/twitter/follow/taikoxyz?style=social)](https://twitter.com/taikoxyz) [![Discord](https://img.shields.io/discord/984015101017346058?color=%235865F2&label=Discord&logo=discord&logoColor=%23fff)](https://discord.gg/taikoxyz) - +[![YouTube](https://img.shields.io/youtube/channel/subscribers/UCxd_ARE9LtAEdnRQA6g1TaQ)](https://www.youtube.com/@taikoxyz) [![GitPOAP Badge](https://public-api.gitpoap.io/v1/repo/taikoxyz/taiko-mono/badge)](https://www.gitpoap.io/gh/taikoxyz/taiko-mono) [![License](https://img.shields.io/github/license/taikoxyz/taiko-mono)](https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md) From 7e27d1de388755b167d864df37133bfedafa2462 Mon Sep 17 00:00:00 2001 From: maskpp Date: Mon, 23 Sep 2024 15:05:38 +0800 Subject: [PATCH 007/205] ci(protocol): avoid installing `netcat` in action (#18159) --- .github/workflows/protocol.yml | 4 ++-- packages/taiko-client/.golangci.yml | 19 ++++--------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/.github/workflows/protocol.yml b/.github/workflows/protocol.yml index 9ec582faeb2..a64fdd72c05 100644 --- a/.github/workflows/protocol.yml +++ b/.github/workflows/protocol.yml @@ -21,7 +21,7 @@ jobs: - name: Prepare environment continue-on-error: true - run: sudo apt-get update && sudo apt-get install -y git netcat wget + run: sudo apt-get update && sudo apt-get install -y git wget - name: Checkout repository uses: actions/checkout@v4 @@ -56,7 +56,7 @@ jobs: timeout-minutes: 2 run: | anvil --hardfork cancun & - while ! nc -z localhost 8545; do + until cast chain-id --rpc-url "http://localhost:8545" 2> /dev/null; do sleep 1 done pnpm test:deploy:l1 diff --git a/packages/taiko-client/.golangci.yml b/packages/taiko-client/.golangci.yml index 7ea97535aaa..365baaafa23 100644 --- a/packages/taiko-client/.golangci.yml +++ b/packages/taiko-client/.golangci.yml @@ -3,22 +3,10 @@ run: timeout: 20m tests: true - skip-dirs-use-default: true - skip-files: - - bindings/gen_taiko_l1.go - - bindings/gen_taiko_l2.go - - bindings/encoding/struct.go issues: - # List of regexps of issue texts to exclude. - # - # But independently of this option we use default exclude patterns, - # it can be disabled by `exclude-use-default: false`. - # To list all excluded by default patterns execute `golangci-lint run --help` - # - # Default: https://golangci-lint.run/usage/false-positives/#default-exclusions - exclude: - - abcdef + exclude-dirs: + - bindings linters: disable-all: true @@ -43,7 +31,8 @@ linters: - makezero - misspell - misspell - - megacheck + - gosimple + - staticcheck - revive - staticcheck - sqlclosecheck From e1420ede5e17b18a30b24881033251ac067c0ac3 Mon Sep 17 00:00:00 2001 From: maskpp Date: Mon, 23 Sep 2024 20:29:49 +0800 Subject: [PATCH 008/205] test(taiko-client): increase hive-test timeout limitiation (#18164) --- .github/workflows/taiko-client--hive_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/taiko-client--hive_test.yml b/.github/workflows/taiko-client--hive_test.yml index 4e35a6d0d19..ffdc53bbc3d 100644 --- a/.github/workflows/taiko-client--hive_test.yml +++ b/.github/workflows/taiko-client--hive_test.yml @@ -13,7 +13,7 @@ jobs: if: github.event.pull_request.draft == false && contains(github.event.pull_request.labels.*.name, 'option.hive-test') name: hive tests runs-on: [arc-runner-set] - timeout-minutes: 30 + timeout-minutes: 40 steps: - name: Cancel Previous Runs @@ -39,4 +39,4 @@ jobs: working-directory: packages/taiko-client run: | export HIVE_DIR=/tmp/hive - go test -v -p=1 ./integration_test -timeout=1200s + go test -v -p=1 ./integration_test -timeout=2400s From d0c0fed57c8b8ba139b65d0215df1976358e7635 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 23 Sep 2024 21:18:16 +0800 Subject: [PATCH 009/205] feat(taiko-client): support `TaikoL1.proposeBlocksV2` (#18116) Co-authored-by: maskpp --- packages/taiko-client/bindings/.githead | 2 +- .../taiko-client/bindings/gen_prover_set.go | 23 ++- .../bindings/metadata/metadata_legacy.go | 2 +- .../bindings/metadata/metadata_ontake.go | 2 +- .../driver/chain_syncer/blob/syncer.go | 1 - .../driver/chain_syncer/blob/syncer_test.go | 2 +- .../driver/chain_syncer/chain_syncer_test.go | 5 + packages/taiko-client/driver/driver_test.go | 12 +- packages/taiko-client/driver/state/state.go | 12 +- .../taiko-client/internal/testutils/helper.go | 119 +++++++------- .../internal/testutils/interfaces.go | 8 +- .../event_iterator/block_proposed_iterator.go | 9 +- packages/taiko-client/pkg/rpc/dial_test.go | 1 - packages/taiko-client/pkg/rpc/engine.go | 2 +- packages/taiko-client/pkg/rpc/methods.go | 2 +- packages/taiko-client/pkg/rpc/subscription.go | 12 +- .../taiko-client/pkg/rpc/subscription_test.go | 4 +- packages/taiko-client/proposer/config.go | 7 +- packages/taiko-client/proposer/proposer.go | 146 ++++++++++++++---- .../taiko-client/proposer/proposer_test.go | 10 +- .../proposer/transaction_builder/blob.go | 131 +++++++++++----- .../proposer/transaction_builder/calldata.go | 85 +++++++--- .../transaction_builder/calldata_test.go | 5 +- .../proposer/transaction_builder/interface.go | 6 +- .../taiko-client/prover/event_handler/util.go | 1 - .../proof_submitter/proof_submitter_test.go | 6 + packages/taiko-client/prover/prover.go | 9 +- 27 files changed, 413 insertions(+), 211 deletions(-) diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead index 65f7ccb8387..cf0bf0044cb 100644 --- a/packages/taiko-client/bindings/.githead +++ b/packages/taiko-client/bindings/.githead @@ -1 +1 @@ -adc47f408282c25c7a50c26e31130fc495734dcc +db7b7a03af3797d37cce04cc2b05614c8dfeece4 diff --git a/packages/taiko-client/bindings/gen_prover_set.go b/packages/taiko-client/bindings/gen_prover_set.go index abfe03a6779..b00641ce1c3 100644 --- a/packages/taiko-client/bindings/gen_prover_set.go +++ b/packages/taiko-client/bindings/gen_prover_set.go @@ -31,7 +31,7 @@ var ( // ProverSetMetaData contains all meta data concerning the ProverSet contract. var ProverSetMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"admin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveAllowance\",\"inputs\":[{\"name\":\"_address\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"_delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProver\",\"inputs\":[{\"name\":\"_prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isProver\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isValidSignature\",\"inputs\":[{\"name\":\"_hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"magicValue_\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_input\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawEtherToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProverEnabled\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"admin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveAllowance\",\"inputs\":[{\"name\":\"_address\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"_delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProver\",\"inputs\":[{\"name\":\"_prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isProver\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isValidSignature\",\"inputs\":[{\"name\":\"_hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"magicValue_\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_input\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawEtherToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProverEnabled\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // ProverSetABI is the input ABI used to generate the binding from. @@ -772,6 +772,27 @@ func (_ProverSet *ProverSetTransactorSession) ProposeBlockV2(_params []byte, _tx return _ProverSet.Contract.ProposeBlockV2(&_ProverSet.TransactOpts, _params, _txList) } +// ProposeBlocksV2 is a paid mutator transaction binding the contract method 0x0c8f4a10. +// +// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) payable returns() +func (_ProverSet *ProverSetTransactor) ProposeBlocksV2(opts *bind.TransactOpts, _paramsArr [][]byte, _txListArr [][]byte) (*types.Transaction, error) { + return _ProverSet.contract.Transact(opts, "proposeBlocksV2", _paramsArr, _txListArr) +} + +// ProposeBlocksV2 is a paid mutator transaction binding the contract method 0x0c8f4a10. +// +// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) payable returns() +func (_ProverSet *ProverSetSession) ProposeBlocksV2(_paramsArr [][]byte, _txListArr [][]byte) (*types.Transaction, error) { + return _ProverSet.Contract.ProposeBlocksV2(&_ProverSet.TransactOpts, _paramsArr, _txListArr) +} + +// ProposeBlocksV2 is a paid mutator transaction binding the contract method 0x0c8f4a10. +// +// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) payable returns() +func (_ProverSet *ProverSetTransactorSession) ProposeBlocksV2(_paramsArr [][]byte, _txListArr [][]byte) (*types.Transaction, error) { + return _ProverSet.Contract.ProposeBlocksV2(&_ProverSet.TransactOpts, _paramsArr, _txListArr) +} + // ProveBlock is a paid mutator transaction binding the contract method 0x10d008bd. // // Solidity: function proveBlock(uint64 _blockId, bytes _input) returns() diff --git a/packages/taiko-client/bindings/metadata/metadata_legacy.go b/packages/taiko-client/bindings/metadata/metadata_legacy.go index 15408346892..10b1b0eef2e 100644 --- a/packages/taiko-client/bindings/metadata/metadata_legacy.go +++ b/packages/taiko-client/bindings/metadata/metadata_legacy.go @@ -22,7 +22,7 @@ type TaikoDataBlockMetadataLegacy struct { // NewTaikoDataBlockMetadataLegacy creates a new instance of TaikoDataBlockMetadataLegacy // from the TaikoL1.BlockProposed event. -func NewTaikoDataBlockMetadataLegacy(e *bindings.LibProposingBlockProposed) *TaikoDataBlockMetadataLegacy { +func NewTaikoDataBlockMetadataLegacy(e *bindings.TaikoL1ClientBlockProposed) *TaikoDataBlockMetadataLegacy { return &TaikoDataBlockMetadataLegacy{ TaikoDataBlockMetadata: e.Meta, Log: e.Raw, diff --git a/packages/taiko-client/bindings/metadata/metadata_ontake.go b/packages/taiko-client/bindings/metadata/metadata_ontake.go index 70f44a6b8c2..5ae06a9e11b 100644 --- a/packages/taiko-client/bindings/metadata/metadata_ontake.go +++ b/packages/taiko-client/bindings/metadata/metadata_ontake.go @@ -20,7 +20,7 @@ type TaikoDataBlockMetadataOntake struct { // NewTaikoDataBlockMetadataOntake creates a new instance of TaikoDataBlockMetadataOntake // from the TaikoL1.BlockProposedV2 event. -func NewTaikoDataBlockMetadataOntake(e *bindings.LibProposingBlockProposedV2) *TaikoDataBlockMetadataOntake { +func NewTaikoDataBlockMetadataOntake(e *bindings.TaikoL1ClientBlockProposedV2) *TaikoDataBlockMetadataOntake { return &TaikoDataBlockMetadataOntake{ TaikoDataBlockMetadataV2: e.Meta, Log: e.Raw, diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer.go b/packages/taiko-client/driver/chain_syncer/blob/syncer.go index a5287f39d30..47f2d997a15 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer.go @@ -134,7 +134,6 @@ func (s *Syncer) processL1Blocks(ctx context.Context) error { iter, err := eventIterator.NewBlockProposedIterator(ctx, &eventIterator.BlockProposedIteratorConfig{ Client: s.rpc.L1, TaikoL1: s.rpc.TaikoL1, - LibProposing: s.rpc.LibProposing, StartHeight: s.state.GetL1Current().Number, EndHeight: l1End.Number, FilterQuery: nil, diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go index 530e1943a7a..22b27b665a2 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go @@ -129,7 +129,7 @@ func (s *BlobSyncerTestSuite) TestTreasuryIncomeAllAnchors() { s.Nil(err) s.Greater(headAfter, headBefore) - s.Zero(balanceAfter.Cmp(balance)) + s.Equal(1, balanceAfter.Cmp(balance)) } func (s *BlobSyncerTestSuite) TestTreasuryIncome() { diff --git a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go index 2d3f225a3d1..5327317f02e 100644 --- a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go +++ b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go @@ -17,6 +17,7 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" ) @@ -50,11 +51,15 @@ func (s *ChainSyncerTestSuite) SetupTest() { prop := new(proposer.Proposer) l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) s.Nil(err) + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + s.Nil(err) s.Nil(prop.InitFromConfig(context.Background(), &proposer.Config{ ClientConfig: &rpc.ClientConfig{ L1Endpoint: os.Getenv("L1_WS"), L2Endpoint: os.Getenv("L2_WS"), + L2EngineEndpoint: os.Getenv("L2_AUTH"), + JwtSecret: string(jwtSecret), TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1")), TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2")), TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN")), diff --git a/packages/taiko-client/driver/driver_test.go b/packages/taiko-client/driver/driver_test.go index 82dc9fded7e..cbae3bf9525 100644 --- a/packages/taiko-client/driver/driver_test.go +++ b/packages/taiko-client/driver/driver_test.go @@ -86,7 +86,7 @@ func (s *DriverTestSuite) TestProcessL1Blocks() { txCount, err := s.d.rpc.L2.TransactionCount(context.Background(), header.Hash()) s.Nil(err) - s.Equal(uint(1), txCount) + s.GreaterOrEqual(txCount, uint(1)) anchorTx, err := s.d.rpc.L2.TransactionInBlock(context.Background(), header.Hash(), 0) s.Nil(err) @@ -132,7 +132,7 @@ func (s *DriverTestSuite) TestCheckL1ReorgToHigherFork() { // Because of evm_revert operation, the nonce of the proposer need to be adjusted. // Propose ten blocks on another fork for i := 0; i < 10; i++ { - s.ProposeInvalidTxListBytes(s.p) + s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().BlobSyncer()) } l1Head4, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) @@ -140,8 +140,6 @@ func (s *DriverTestSuite) TestCheckL1ReorgToHigherFork() { s.Greater(l1Head4.Number.Uint64(), l1Head2.Number.Uint64()) - s.Nil(s.d.ChainSyncer().BlobSyncer().ProcessL1Blocks(context.Background())) - l2Head3, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) s.Nil(err) @@ -190,7 +188,7 @@ func (s *DriverTestSuite) TestCheckL1ReorgToLowerFork() { s.GreaterOrEqual(l1Head3.Number.Uint64(), l1Head1.Number.Uint64()) // Propose one blocks on another fork - s.ProposeInvalidTxListBytes(s.p) + s.ProposeValidBlock(s.p) l1Head4, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) s.Nil(err) @@ -246,9 +244,9 @@ func (s *DriverTestSuite) TestCheckL1ReorgToSameHeightFork() { s.GreaterOrEqual(l1Head3.Number.Uint64(), l1Head1.Number.Uint64()) // Propose two blocks on another fork - s.ProposeInvalidTxListBytes(s.p) + s.ProposeValidBlock(s.p) time.Sleep(3 * time.Second) - s.ProposeInvalidTxListBytes(s.p) + s.ProposeValidBlock(s.p) l1Head4, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) s.Nil(err) diff --git a/packages/taiko-client/driver/state/state.go b/packages/taiko-client/driver/state/state.go index c9f30c36522..3f27585bcf4 100644 --- a/packages/taiko-client/driver/state/state.go +++ b/packages/taiko-client/driver/state/state.go @@ -64,11 +64,11 @@ func (s *State) init(ctx context.Context) error { return err } - log.Info("Genesis L1 height", "height", stateVars.A.GenesisHeight) s.GenesisL1Height = new(big.Int).SetUint64(stateVars.A.GenesisHeight) + log.Info("Genesis L1 height", "height", stateVars.A.GenesisHeight) s.OnTakeForkHeight = new(big.Int).SetUint64(encoding.GetProtocolConfig(s.rpc.L2.ChainID.Uint64()).OntakeForkHeight) - log.Info("OnTake fork height", "L2 height", s.OnTakeForkHeight) + log.Info("OnTake fork height", "height", s.OnTakeForkHeight) // Set the L2 head's latest known L1 origin as current L1 sync cursor. latestL2KnownL1Header, err := s.rpc.LatestL2KnownL1Header(ctx) @@ -107,10 +107,10 @@ func (s *State) eventLoop(ctx context.Context) { // Channels for subscriptions. l1HeadCh = make(chan *types.Header, 10) l2HeadCh = make(chan *types.Header, 10) - blockProposedCh = make(chan *bindings.LibProposingBlockProposed, 10) + blockProposedCh = make(chan *bindings.TaikoL1ClientBlockProposed, 10) transitionProvedCh = make(chan *bindings.TaikoL1ClientTransitionProved, 10) blockVerifiedCh = make(chan *bindings.TaikoL1ClientBlockVerified, 10) - blockProposedV2Ch = make(chan *bindings.LibProposingBlockProposedV2, 10) + blockProposedV2Ch = make(chan *bindings.TaikoL1ClientBlockProposedV2, 10) transitionProvedV2Ch = make(chan *bindings.TaikoL1ClientTransitionProvedV2, 10) blockVerifiedV2Ch = make(chan *bindings.TaikoL1ClientBlockVerifiedV2, 10) @@ -118,10 +118,10 @@ func (s *State) eventLoop(ctx context.Context) { l1HeadSub = rpc.SubscribeChainHead(s.rpc.L1, l1HeadCh) l2HeadSub = rpc.SubscribeChainHead(s.rpc.L2, l2HeadCh) l2BlockVerifiedSub = rpc.SubscribeBlockVerified(s.rpc.TaikoL1, blockVerifiedCh) - l2BlockProposedSub = rpc.SubscribeBlockProposed(s.rpc.LibProposing, blockProposedCh) + l2BlockProposedSub = rpc.SubscribeBlockProposed(s.rpc.TaikoL1, blockProposedCh) l2TransitionProvedSub = rpc.SubscribeTransitionProved(s.rpc.TaikoL1, transitionProvedCh) l2BlockVerifiedV2Sub = rpc.SubscribeBlockVerifiedV2(s.rpc.TaikoL1, blockVerifiedV2Ch) - l2BlockProposedV2Sub = rpc.SubscribeBlockProposedV2(s.rpc.LibProposing, blockProposedV2Ch) + l2BlockProposedV2Sub = rpc.SubscribeBlockProposedV2(s.rpc.TaikoL1, blockProposedV2Ch) l2TransitionProvedV2Sub = rpc.SubscribeTransitionProvedV2(s.rpc.TaikoL1, transitionProvedV2Ch) ) diff --git a/packages/taiko-client/internal/testutils/helper.go b/packages/taiko-client/internal/testutils/helper.go index f8a96b2a582..d93e3499f15 100644 --- a/packages/taiko-client/internal/testutils/helper.go +++ b/packages/taiko-client/internal/testutils/helper.go @@ -14,24 +14,16 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" "github.com/phayes/freeport" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/metadata" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" ) -func (s *ClientTestSuite) ProposeInvalidTxListBytes(proposer Proposer) { - invalidTxListBytes := RandomBytes(256) - - s.Nil(proposer.ProposeTxList(context.Background(), invalidTxListBytes, 1)) -} - func (s *ClientTestSuite) proposeEmptyBlockOp(ctx context.Context, proposer Proposer) { - emptyTxListBytes, err := rlp.EncodeToBytes(types.Transactions{}) - s.Nil(err) - s.Nil(proposer.ProposeTxList(ctx, emptyTxListBytes, 0)) + s.Nil(proposer.ProposeTxLists(ctx, []types.Transactions{{}})) } func (s *ClientTestSuite) ProposeAndInsertEmptyBlocks( @@ -43,18 +35,16 @@ func (s *ClientTestSuite) ProposeAndInsertEmptyBlocks( l1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) s.Nil(err) - sink := make(chan *bindings.LibProposingBlockProposed) - - sub, err := s.RPCClient.LibProposing.WatchBlockProposed(nil, sink, nil, nil) + sink := make(chan *bindings.TaikoL1ClientBlockProposed) + sub, err := s.RPCClient.TaikoL1.WatchBlockProposed(nil, sink, nil, nil) s.Nil(err) defer func() { sub.Unsubscribe() close(sink) }() - sink2 := make(chan *bindings.LibProposingBlockProposedV2) - - sub2, err := s.RPCClient.LibProposing.WatchBlockProposedV2(nil, sink2, nil) + sink2 := make(chan *bindings.TaikoL1ClientBlockProposedV2) + sub2, err := s.RPCClient.TaikoL1.WatchBlockProposedV2(nil, sink2, nil) s.Nil(err) defer func() { sub2.Unsubscribe() @@ -62,16 +52,16 @@ func (s *ClientTestSuite) ProposeAndInsertEmptyBlocks( }() // RLP encoded empty list - var emptyTxs []types.Transaction - encoded, err := rlp.EncodeToBytes(emptyTxs) - s.Nil(err) - - s.Nil(proposer.ProposeTxList(context.Background(), encoded, 0)) + s.Nil(proposer.ProposeTxLists(context.Background(), []types.Transactions{{}})) + s.Nil(blobSyncer.ProcessL1Blocks(context.Background())) - s.ProposeInvalidTxListBytes(proposer) + // Valid transactions lists. + s.ProposeValidBlock(proposer) + s.Nil(blobSyncer.ProcessL1Blocks(context.Background())) // Random bytes txList s.proposeEmptyBlockOp(context.Background(), proposer) + s.Nil(blobSyncer.ProcessL1Blocks(context.Background())) var txHash common.Hash for i := 0; i < 3; i++ { @@ -93,13 +83,6 @@ func (s *ClientTestSuite) ProposeAndInsertEmptyBlocks( s.Nil(err) s.Greater(newL1Head.Number.Uint64(), l1Head.Number.Uint64()) - ctx, cancel := context.WithTimeout(context.Background(), time.Minute) - defer cancel() - - s.Nil(backoff.Retry(func() error { - return blobSyncer.ProcessL1Blocks(ctx) - }, backoff.NewExponentialBackOff())) - s.Nil(s.RPCClient.WaitTillL2ExecutionEngineSynced(context.Background())) return metadataList @@ -114,39 +97,31 @@ func (s *ClientTestSuite) ProposeAndInsertValidBlock( l1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) s.Nil(err) - l2Head, err := s.RPCClient.L2.HeaderByNumber(context.Background(), nil) - s.Nil(err) - // Propose txs in L2 execution engine's mempool - sink := make(chan *bindings.LibProposingBlockProposed) - - sub, err := s.RPCClient.LibProposing.WatchBlockProposed(nil, sink, nil, nil) + sink := make(chan *bindings.TaikoL1ClientBlockProposed) + sub, err := s.RPCClient.TaikoL1.WatchBlockProposed(nil, sink, nil, nil) s.Nil(err) - defer func() { - sub.Unsubscribe() - close(sink) - }() - sink2 := make(chan *bindings.LibProposingBlockProposedV2) - sub2, err := s.RPCClient.LibProposing.WatchBlockProposedV2(nil, sink2, nil) + sink2 := make(chan *bindings.TaikoL1ClientBlockProposedV2) + sub2, err := s.RPCClient.TaikoL1.WatchBlockProposedV2(nil, sink2, nil) s.Nil(err) + defer func() { + sub.Unsubscribe() sub2.Unsubscribe() + close(sink) close(sink2) }() - baseFeeInfo, err := s.RPCClient.TaikoL2.GetBasefee(nil, l1Head.Number.Uint64()+1, uint32(l2Head.GasUsed)) - s.Nil(err) - nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) s.Nil(err) tx := types.NewTransaction( nonce, common.BytesToAddress(RandomBytes(32)), - common.Big1, - 100000, - new(big.Int).SetUint64(uint64(10*params.GWei)+baseFeeInfo.Basefee.Uint64()), + common.Big0, + 100_000, + new(big.Int).SetUint64(uint64(10*params.GWei)), []byte{}, ) signedTx, err := types.SignTx(tx, types.LatestSignerForChainID(s.RPCClient.L2.ChainID), s.TestAddrPrivKey) @@ -197,24 +172,44 @@ func (s *ClientTestSuite) ProposeAndInsertValidBlock( func (s *ClientTestSuite) ProposeValidBlock( proposer Proposer, -) *bindings.LibProposingBlockProposed { +) { l1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) s.Nil(err) - l2Head, err := s.RPCClient.L2.HeaderByNumber(context.Background(), nil) + state, err := s.RPCClient.GetProtocolStateVariables(nil) + s.Nil(err) + + l2Head, err := s.RPCClient.L2.HeaderByNumber(context.Background(), new(big.Int).SetUint64(state.B.NumBlocks-1)) s.Nil(err) // Propose txs in L2 execution engine's mempool - sink := make(chan *bindings.LibProposingBlockProposed) + sink := make(chan *bindings.TaikoL1ClientBlockProposed) + sink2 := make(chan *bindings.TaikoL1ClientBlockProposedV2) + + sub, err := s.RPCClient.TaikoL1.WatchBlockProposed(nil, sink, nil, nil) + s.Nil(err) - sub, err := s.RPCClient.LibProposing.WatchBlockProposed(nil, sink, nil, nil) + sub2, err := s.RPCClient.TaikoL1.WatchBlockProposedV2(nil, sink2, nil) s.Nil(err) + defer func() { sub.Unsubscribe() + sub2.Unsubscribe() close(sink) + close(sink2) }() - baseFeeInfo, err := s.RPCClient.TaikoL2.GetBasefee(nil, l1Head.Number.Uint64()+1, uint32(l2Head.GasUsed)) + ontakeForkHeight, err := s.RPCClient.TaikoL2.OntakeForkHeight(nil) + s.Nil(err) + + baseFee, err := s.RPCClient.CalculateBaseFee( + context.Background(), + l2Head, + l1Head.Number, + l2Head.Number.Uint64()+1 >= ontakeForkHeight, + &encoding.InternlDevnetProtocolConfig.BaseFeeConfig, + l1Head.Time, + ) s.Nil(err) nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) @@ -223,9 +218,9 @@ func (s *ClientTestSuite) ProposeValidBlock( tx := types.NewTransaction( nonce, common.BytesToAddress(RandomBytes(32)), - common.Big1, - 100000, - new(big.Int).SetUint64(uint64(10*params.GWei)+baseFeeInfo.Basefee.Uint64()), + common.Big0, + 100_000, + new(big.Int).SetUint64(uint64(10*params.GWei)+baseFee.Uint64()), []byte{}, ) signedTx, err := types.SignTx(tx, types.LatestSignerForChainID(s.RPCClient.L2.ChainID), s.TestAddrPrivKey) @@ -234,21 +229,25 @@ func (s *ClientTestSuite) ProposeValidBlock( s.Nil(proposer.ProposeOp(context.Background())) - event := <-sink + var txHash common.Hash + select { + case event := <-sink: + txHash = event.Raw.TxHash + case event := <-sink2: + txHash = event.Raw.TxHash + } - _, isPending, err := s.RPCClient.L1.TransactionByHash(context.Background(), event.Raw.TxHash) + _, isPending, err := s.RPCClient.L1.TransactionByHash(context.Background(), txHash) s.Nil(err) s.False(isPending) - receipt, err := s.RPCClient.L1.TransactionReceipt(context.Background(), event.Raw.TxHash) + receipt, err := s.RPCClient.L1.TransactionReceipt(context.Background(), txHash) s.Nil(err) s.Equal(types.ReceiptStatusSuccessful, receipt.Status) newL1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) s.Nil(err) s.Greater(newL1Head.Number.Uint64(), l1Head.Number.Uint64()) - - return event } // RandomHash generates a random blob of data and returns it as a hash. diff --git a/packages/taiko-client/internal/testutils/interfaces.go b/packages/taiko-client/internal/testutils/interfaces.go index d8d1a401899..d35f125ade5 100644 --- a/packages/taiko-client/internal/testutils/interfaces.go +++ b/packages/taiko-client/internal/testutils/interfaces.go @@ -3,6 +3,8 @@ package testutils import ( "context" + "github.com/ethereum/go-ethereum/core/types" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/utils" ) @@ -13,9 +15,5 @@ type BlobSyncer interface { type Proposer interface { utils.SubcommandApplication ProposeOp(ctx context.Context) error - ProposeTxList( - ctx context.Context, - txListBytes []byte, - txNum uint, - ) error + ProposeTxLists(ctx context.Context, txLists []types.Transactions) error } diff --git a/packages/taiko-client/pkg/chain_iterator/event_iterator/block_proposed_iterator.go b/packages/taiko-client/pkg/chain_iterator/event_iterator/block_proposed_iterator.go index 75ca82b8209..67fc0fea23d 100644 --- a/packages/taiko-client/pkg/chain_iterator/event_iterator/block_proposed_iterator.go +++ b/packages/taiko-client/pkg/chain_iterator/event_iterator/block_proposed_iterator.go @@ -39,7 +39,6 @@ type BlockProposedIterator struct { type BlockProposedIteratorConfig struct { Client *rpc.EthClient TaikoL1 *bindings.TaikoL1Client - LibProposing *bindings.LibProposing MaxBlocksReadPerEpoch *uint64 StartHeight *big.Int EndHeight *big.Int @@ -69,7 +68,7 @@ func NewBlockProposedIterator(ctx context.Context, cfg *BlockProposedIteratorCon BlockConfirmations: cfg.BlockConfirmations, OnBlocks: assembleBlockProposedIteratorCallback( cfg.Client, - cfg.LibProposing, + cfg.TaikoL1, cfg.FilterQuery, cfg.OnBlockProposedEvent, iterator, @@ -99,7 +98,7 @@ func (i *BlockProposedIterator) end() { // by a event iterator's inner block iterator. func assembleBlockProposedIteratorCallback( client *rpc.EthClient, - libProposing *bindings.LibProposing, + taikoL1 *bindings.TaikoL1Client, filterQuery []*big.Int, callback OnBlockProposedEvent, eventIter *BlockProposedIterator, @@ -112,7 +111,7 @@ func assembleBlockProposedIteratorCallback( ) error { endHeight := end.Number.Uint64() - iter, err := libProposing.FilterBlockProposed( + iter, err := taikoL1.FilterBlockProposed( &bind.FilterOpts{Start: start.Number.Uint64(), End: &endHeight, Context: ctx}, filterQuery, nil, @@ -122,7 +121,7 @@ func assembleBlockProposedIteratorCallback( } defer iter.Close() - iterOntake, err := libProposing.FilterBlockProposedV2( + iterOntake, err := taikoL1.FilterBlockProposedV2( &bind.FilterOpts{Start: start.Number.Uint64(), End: &endHeight, Context: ctx}, filterQuery, ) diff --git a/packages/taiko-client/pkg/rpc/dial_test.go b/packages/taiko-client/pkg/rpc/dial_test.go index aeea111769e..f488d781230 100644 --- a/packages/taiko-client/pkg/rpc/dial_test.go +++ b/packages/taiko-client/pkg/rpc/dial_test.go @@ -15,7 +15,6 @@ import ( func TestDialEngineClientWithBackoff(t *testing.T) { jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) - require.Nil(t, err) require.NotEmpty(t, jwtSecret) diff --git a/packages/taiko-client/pkg/rpc/engine.go b/packages/taiko-client/pkg/rpc/engine.go index 8b0428ae8bb..ca30e6ae192 100644 --- a/packages/taiko-client/pkg/rpc/engine.go +++ b/packages/taiko-client/pkg/rpc/engine.go @@ -112,8 +112,8 @@ func (c *EngineClient) TxPoolContentWithMinTip( ) ([]*miner.PreBuiltTxList, error) { timeoutCtx, cancel := context.WithTimeout(ctx, defaultTimeout) defer cancel() - var result []*miner.PreBuiltTxList + if err := c.CallContext( timeoutCtx, &result, diff --git a/packages/taiko-client/pkg/rpc/methods.go b/packages/taiko-client/pkg/rpc/methods.go index b32af19169a..d89b1457a7c 100644 --- a/packages/taiko-client/pkg/rpc/methods.go +++ b/packages/taiko-client/pkg/rpc/methods.go @@ -383,7 +383,7 @@ func (c *Client) GetPoolContent( ctx, l2Head, l1Head.Number, - chainConfig.IsOntake(l2Head.Number), + chainConfig.IsOntake(new(big.Int).Add(l2Head.Number, common.Big1)), &chainConfig.ProtocolConfigs.BaseFeeConfig, uint64(time.Now().Unix()), ) diff --git a/packages/taiko-client/pkg/rpc/subscription.go b/packages/taiko-client/pkg/rpc/subscription.go index 8f148ed8b2c..b1e14b958d3 100644 --- a/packages/taiko-client/pkg/rpc/subscription.go +++ b/packages/taiko-client/pkg/rpc/subscription.go @@ -66,11 +66,11 @@ func SubscribeBlockVerifiedV2( // SubscribeBlockProposed subscribes the protocol's BlockProposed events. func SubscribeBlockProposed( - libProposing *bindings.LibProposing, - ch chan *bindings.LibProposingBlockProposed, + taikoL1 *bindings.TaikoL1Client, + ch chan *bindings.TaikoL1ClientBlockProposed, ) event.Subscription { return SubscribeEvent("BlockProposed", func(ctx context.Context) (event.Subscription, error) { - sub, err := libProposing.WatchBlockProposed(nil, ch, nil, nil) + sub, err := taikoL1.WatchBlockProposed(nil, ch, nil, nil) if err != nil { log.Error("Create TaikoL1.BlockProposed subscription error", "error", err) return nil, err @@ -84,11 +84,11 @@ func SubscribeBlockProposed( // SubscribeBlockProposedV2 subscribes the protocol's BlockProposedV2 events. func SubscribeBlockProposedV2( - libProposing *bindings.LibProposing, - ch chan *bindings.LibProposingBlockProposedV2, + taikoL1 *bindings.TaikoL1Client, + ch chan *bindings.TaikoL1ClientBlockProposedV2, ) event.Subscription { return SubscribeEvent("BlockProposedV2", func(ctx context.Context) (event.Subscription, error) { - sub, err := libProposing.WatchBlockProposedV2(nil, ch, nil) + sub, err := taikoL1.WatchBlockProposedV2(nil, ch, nil) if err != nil { log.Error("Create TaikoL1.BlockProposedV2 subscription error", "error", err) return nil, err diff --git a/packages/taiko-client/pkg/rpc/subscription_test.go b/packages/taiko-client/pkg/rpc/subscription_test.go index da79cc3b54a..2248a1d2357 100644 --- a/packages/taiko-client/pkg/rpc/subscription_test.go +++ b/packages/taiko-client/pkg/rpc/subscription_test.go @@ -26,8 +26,8 @@ func TestSubscribeBlockVerified(t *testing.T) { func TestSubscribeBlockProposed(t *testing.T) { require.NotNil(t, SubscribeBlockProposed( - newTestClient(t).LibProposing, - make(chan *bindings.LibProposingBlockProposed, 1024)), + newTestClient(t).TaikoL1, + make(chan *bindings.TaikoL1ClientBlockProposed, 1024)), ) } diff --git a/packages/taiko-client/proposer/config.go b/packages/taiko-client/proposer/config.go index d8444e080ea..7ad390c4863 100644 --- a/packages/taiko-client/proposer/config.go +++ b/packages/taiko-client/proposer/config.go @@ -74,6 +74,11 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { return nil, err } + maxProposedTxListsPerEpoch := c.Uint64(flags.MaxProposedTxListsPerEpoch.Name) + if maxProposedTxListsPerEpoch > 2 { + return nil, fmt.Errorf("max proposed tx lists per epoch should not exceed 2, got: %d", maxProposedTxListsPerEpoch) + } + return &Config{ ClientConfig: &rpc.ClientConfig{ L1Endpoint: c.String(flags.L1WSEndpoint.Name), @@ -96,7 +101,7 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { MinTxListBytes: c.Uint64(flags.MinTxListBytes.Name), MinTip: minTip.Uint64(), MinProposingInternal: c.Duration(flags.MinProposingInternal.Name), - MaxProposedTxListsPerEpoch: c.Uint64(flags.MaxProposedTxListsPerEpoch.Name), + MaxProposedTxListsPerEpoch: maxProposedTxListsPerEpoch, AllowZeroInterval: c.Uint64(flags.AllowZeroInterval.Name), ProposeBlockTxGasLimit: c.Uint64(flags.TxGasLimit.Name), IncludeParentMetaHash: c.Bool(flags.ProposeBlockIncludeParentMetaHash.Name), diff --git a/packages/taiko-client/proposer/proposer.go b/packages/taiko-client/proposer/proposer.go index 480e127027d..065d8711faa 100644 --- a/packages/taiko-client/proposer/proposer.go +++ b/packages/taiko-client/proposer/proposer.go @@ -4,11 +4,13 @@ import ( "context" "errors" "fmt" + "math/big" "math/rand" "sync" "time" "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" @@ -291,46 +293,60 @@ func (p *Proposer) ProposeOp(ctx context.Context) error { return nil } - g, gCtx := errgroup.WithContext(ctx) - // Propose all L2 transactions lists. - for _, txs := range txLists[:utils.Min(p.MaxProposedTxListsPerEpoch, uint64(len(txLists)))] { - nonce, err := p.rpc.L1.PendingNonceAt(ctx, p.proposerAddress) - if err != nil { - log.Error("Failed to get proposer nonce", "error", err) - break - } + // Propose the transactions lists. + return p.ProposeTxLists(ctx, txLists) +} - log.Info("Proposer current pending nonce", "nonce", nonce) +// ProposeTxList proposes the given transactions lists to TaikoL1 smart contract. +func (p *Proposer) ProposeTxLists(ctx context.Context, txLists []types.Transactions) error { + // Check if the current L2 chain is after ontake fork. + state, err := rpc.GetProtocolStateVariables(p.rpc.TaikoL1, &bind.CallOpts{Context: ctx}) + if err != nil { + return err + } - g.Go(func() error { - txListBytes, err := rlp.EncodeToBytes(txs) + // If the current L2 chain is before ontake fork, propose the transactions lists one by one. + if !p.chainConfig.IsOntake(new(big.Int).SetUint64(state.B.NumBlocks)) { + g, gCtx := errgroup.WithContext(ctx) + for _, txs := range txLists[:utils.Min(p.MaxProposedTxListsPerEpoch, uint64(len(txLists)))] { + nonce, err := p.rpc.L1.PendingNonceAt(ctx, p.proposerAddress) if err != nil { - return fmt.Errorf("failed to encode transactions: %w", err) - } - if err := p.ProposeTxList(gCtx, txListBytes, uint(txs.Len())); err != nil { - return err + log.Error("Failed to get proposer nonce", "error", err) + break } - p.lastProposedAt = time.Now() - return nil - }) - if err := p.rpc.WaitL1NewPendingTransaction(ctx, p.proposerAddress, nonce); err != nil { - log.Error("Failed to wait for new pending transaction", "error", err) + log.Info("Proposer current pending nonce", "nonce", nonce) + + g.Go(func() error { + if err := p.ProposeTxListLegacy(gCtx, txs); err != nil { + return err + } + p.lastProposedAt = time.Now() + return nil + }) + + if err := p.rpc.WaitL1NewPendingTransaction(ctx, p.proposerAddress, nonce); err != nil { + log.Error("Failed to wait for new pending transaction", "error", err) + } } - } - if err := g.Wait(); err != nil { - return err + + return g.Wait() } - return nil + // If the current L2 chain is after ontake fork, batch propose all L2 transactions lists. + return p.ProposeTxListOntake(ctx, txLists) } -// ProposeTxList proposes the given transactions list to TaikoL1 smart contract. -func (p *Proposer) ProposeTxList( +// ProposeTxListLegacy proposes the given transactions list to TaikoL1 smart contract. +func (p *Proposer) ProposeTxListLegacy( ctx context.Context, - txListBytes []byte, - txNum uint, + txList types.Transactions, ) error { + txListBytes, err := rlp.EncodeToBytes(txList) + if err != nil { + return fmt.Errorf("failed to encode transactions: %w", err) + } + compressedTxListBytes, err := utils.Compress(txListBytes) if err != nil { return err @@ -358,7 +374,7 @@ func (p *Proposer) ProposeTxList( return errors.New("insufficient prover balance") } - txCandidate, err := p.txBuilder.Build( + txCandidate, err := p.txBuilder.BuildLegacy( ctx, p.IncludeParentMetaHash, compressedTxListBytes, @@ -372,10 +388,76 @@ func (p *Proposer) ProposeTxList( return err } - log.Info("📝 Propose transactions succeeded", "txs", txNum) + log.Info("📝 Propose transactions succeeded", "txs", len(txList)) metrics.ProposerProposedTxListsCounter.Add(1) - metrics.ProposerProposedTxsCounter.Add(float64(txNum)) + metrics.ProposerProposedTxsCounter.Add(float64(len(txList))) + + return nil +} + +// ProposeTxListOntake proposes the given transactions lists to TaikoL1 smart contract. +func (p *Proposer) ProposeTxListOntake( + ctx context.Context, + txLists []types.Transactions, +) error { + var ( + proverAddress = p.proposerAddress + txListsBytesArray [][]byte + txNums []int + totalTxs int + ) + for _, txs := range txLists { + txListBytes, err := rlp.EncodeToBytes(txs) + if err != nil { + return fmt.Errorf("failed to encode transactions: %w", err) + } + + compressedTxListBytes, err := utils.Compress(txListBytes) + if err != nil { + return err + } + + txListsBytesArray = append(txListsBytesArray, compressedTxListBytes) + txNums = append(txNums, len(txs)) + totalTxs += len(txs) + } + + if p.Config.ClientConfig.ProverSetAddress != rpc.ZeroAddress { + proverAddress = p.Config.ClientConfig.ProverSetAddress + } + + ok, err := rpc.CheckProverBalance( + ctx, + p.rpc, + proverAddress, + p.TaikoL1Address, + new(big.Int).Mul(p.protocolConfigs.LivenessBond, new(big.Int).SetUint64(uint64(len(txLists)))), + ) + + if err != nil { + log.Warn("Failed to check prover balance", "error", err) + return err + } + + if !ok { + return errors.New("insufficient prover balance") + } + + txCandidate, err := p.txBuilder.BuildOntake(ctx, txListsBytesArray) + if err != nil { + log.Warn("Failed to build TaikoL1.proposeBlocksV2 transaction", "error", encoding.TryParsingCustomError(err)) + return err + } + + if err := p.sendTx(ctx, txCandidate); err != nil { + return err + } + + log.Info("📝 Batch propose transactions succeeded", "txs", txNums) + + metrics.ProposerProposedTxListsCounter.Add(float64(len(txLists))) + metrics.ProposerProposedTxsCounter.Add(float64(totalTxs)) return nil } @@ -404,7 +486,7 @@ func (p *Proposer) sendTx(ctx context.Context, txCandidate *txmgr.TxCandidate) e receipt, err := txMgr.Send(ctx, *txCandidate) if err != nil { log.Warn( - "Failed to send TaikoL1.proposeBlock / TaikoL1.proposeBlockV2 transaction by tx manager", + "Failed to send TaikoL1.proposeBlock / TaikoL1.proposeBlocksV2 transaction by tx manager", "isPrivateMempool", isPrivate, "error", encoding.TryParsingCustomError(err), ) diff --git a/packages/taiko-client/proposer/proposer_test.go b/packages/taiko-client/proposer/proposer_test.go index 5d3d5f1c62a..2e0cd796c03 100644 --- a/packages/taiko-client/proposer/proposer_test.go +++ b/packages/taiko-client/proposer/proposer_test.go @@ -145,7 +145,7 @@ func (s *ProposerTestSuite) TestProposeTxLists() { break } - candidate, err := txBuilder.Build( + candidate, err := txBuilder.BuildLegacy( p.ctx, p.IncludeParentMetaHash, compressedTxListBytes, @@ -232,18 +232,18 @@ func (s *ProposerTestSuite) TestName() { func (s *ProposerTestSuite) TestProposeOp() { // Propose txs in L2 execution engine's mempool - sink := make(chan *bindings.LibProposingBlockProposed) + sink := make(chan *bindings.TaikoL1ClientBlockProposed) - sub, err := s.p.rpc.LibProposing.WatchBlockProposed(nil, sink, nil, nil) + sub, err := s.p.rpc.TaikoL1.WatchBlockProposed(nil, sink, nil, nil) s.Nil(err) defer func() { sub.Unsubscribe() close(sink) }() - sink2 := make(chan *bindings.LibProposingBlockProposedV2) + sink2 := make(chan *bindings.TaikoL1ClientBlockProposedV2) - sub2, err := s.p.rpc.LibProposing.WatchBlockProposedV2(nil, sink2, nil) + sub2, err := s.p.rpc.TaikoL1.WatchBlockProposedV2(nil, sink2, nil) s.Nil(err) defer func() { sub2.Unsubscribe() diff --git a/packages/taiko-client/proposer/transaction_builder/blob.go b/packages/taiko-client/proposer/transaction_builder/blob.go index a76741c2a3d..b5270f3ac3c 100644 --- a/packages/taiko-client/proposer/transaction_builder/blob.go +++ b/packages/taiko-client/proposer/transaction_builder/blob.go @@ -4,6 +4,7 @@ import ( "context" "crypto/ecdsa" "crypto/sha256" + "fmt" "math/big" "github.com/ethereum-optimism/optimism/op-service/eth" @@ -54,22 +55,47 @@ func NewBlobTransactionBuilder( } } -// Build implements the ProposeBlockTransactionBuilder interface. -func (b *BlobTransactionBuilder) Build( +// BuildLegacy implements the ProposeBlockTransactionBuilder interface. +func (b *BlobTransactionBuilder) BuildLegacy( ctx context.Context, includeParentMetaHash bool, txListBytes []byte, ) (*txmgr.TxCandidate, error) { + // Check if the current L2 chain is after ontake fork. + state, err := rpc.GetProtocolStateVariables(b.rpc.TaikoL1, &bind.CallOpts{Context: ctx}) + if err != nil { + return nil, err + } + + if b.chainConfig.IsOntake(new(big.Int).SetUint64(state.B.NumBlocks)) { + return nil, fmt.Errorf("legacy transaction builder is not supported after ontake fork") + } + var blob = ð.Blob{} if err := blob.FromData(txListBytes); err != nil { return nil, err } - // If the current proposer wants to include the parent meta hash, then fetch it from the protocol. + commitment, err := blob.ComputeKZGCommitment() + if err != nil { + return nil, err + } + blobHash := kzg4844.CalcBlobHashV1(sha256.New(), &commitment) + + signature, err := crypto.Sign(blobHash[:], b.proposerPrivateKey) + if err != nil { + return nil, err + } + signature[64] = signature[64] + 27 + var ( parentMetaHash = [32]byte{} - err error + to = &b.taikoL1Address + data []byte + encodedParams []byte ) + + // If the current proposer wants to include the parent meta hash, then fetch it from the protocol. if includeParentMetaHash { if parentMetaHash, err = getParentMetaHash( ctx, @@ -80,28 +106,44 @@ func (b *BlobTransactionBuilder) Build( } } - commitment, err := blob.ComputeKZGCommitment() + // ABI encode the TaikoL1.proposeBlock / ProverSet.proposeBlock parameters. + encodedParams, err = encoding.EncodeBlockParams(&encoding.BlockParams{ + ExtraData: rpc.StringToBytes32(b.extraData), + Coinbase: b.l2SuggestedFeeRecipient, + ParentMetaHash: parentMetaHash, + Signature: signature, + }) if err != nil { return nil, err } - blobHash := kzg4844.CalcBlobHashV1(sha256.New(), &commitment) - signature, err := crypto.Sign(blobHash[:], b.proposerPrivateKey) - if err != nil { - return nil, err - } - signature[64] = signature[64] + 27 - - var ( - to = &b.taikoL1Address - data []byte - encodedParams []byte - method string - ) if b.proverSetAddress != rpc.ZeroAddress { to = &b.proverSetAddress + + data, err = encoding.ProverSetABI.Pack("proposeBlock", encodedParams, []byte{}) + if err != nil { + return nil, err + } + } else { + data, err = encoding.TaikoL1ABI.Pack("proposeBlock", encodedParams, []byte{}) + if err != nil { + return nil, err + } } + return &txmgr.TxCandidate{ + TxData: data, + Blobs: []*eth.Blob{blob}, + To: to, + GasLimit: b.gasLimit, + }, nil +} + +// BuildOntake implements the ProposeBlockTransactionBuilder interface. +func (b *BlobTransactionBuilder) BuildOntake( + ctx context.Context, + txListBytesArray [][]byte, +) (*txmgr.TxCandidate, error) { // Check if the current L2 chain is after ontake fork. state, err := rpc.GetProtocolStateVariables(b.rpc.TaikoL1, &bind.CallOpts{Context: ctx}) if err != nil { @@ -109,44 +151,51 @@ func (b *BlobTransactionBuilder) Build( } if !b.chainConfig.IsOntake(new(big.Int).SetUint64(state.B.NumBlocks)) { - // ABI encode the TaikoL1.proposeBlock / ProverSet.proposeBlock parameters. - method = "proposeBlock" - - // ABI encode the TaikoL1.proposeBlock / ProverSet.proposeBlock parameters. - encodedParams, err = encoding.EncodeBlockParams(&encoding.BlockParams{ - ExtraData: rpc.StringToBytes32(b.extraData), - Coinbase: b.l2SuggestedFeeRecipient, - ParentMetaHash: parentMetaHash, - Signature: signature, - }) - if err != nil { + return nil, fmt.Errorf("ontake transaction builder is not supported before ontake fork") + } + + // ABI encode the TaikoL1.proposeBlocksV2 / ProverSet.proposeBlocksV2 parameters. + var ( + to = &b.taikoL1Address + data []byte + blobs []*eth.Blob + encodedParamsArray [][]byte + ) + if b.proverSetAddress != rpc.ZeroAddress { + to = &b.proverSetAddress + } + + for i := range txListBytesArray { + var blob = ð.Blob{} + if err := blob.FromData(txListBytesArray[i]); err != nil { return nil, err } - } else { - // ABI encode the TaikoL1.proposeBlockV2 / ProverSet.proposeBlockV2 parameters. - method = "proposeBlockV2" - if encodedParams, err = encoding.EncodeBlockParamsOntake(&encoding.BlockParamsV2{ + blobs = append(blobs, blob) + + encodedParams, err := encoding.EncodeBlockParamsOntake(&encoding.BlockParamsV2{ Coinbase: b.l2SuggestedFeeRecipient, - ParentMetaHash: parentMetaHash, + ParentMetaHash: [32]byte{}, AnchorBlockId: 0, Timestamp: 0, BlobTxListOffset: 0, - - BlobTxListLength: uint32(len(txListBytes)), - BlobIndex: 0, - }); err != nil { + BlobTxListLength: uint32(len(txListBytesArray[i])), + BlobIndex: uint8(i), + }) + if err != nil { return nil, err } + + encodedParamsArray = append(encodedParamsArray, encodedParams) } if b.proverSetAddress != rpc.ZeroAddress { - data, err = encoding.ProverSetABI.Pack(method, encodedParams, []byte{}) + data, err = encoding.ProverSetABI.Pack("proposeBlocksV2", encodedParamsArray, []byte{}) if err != nil { return nil, err } } else { - data, err = encoding.TaikoL1ABI.Pack(method, encodedParams, []byte{}) + data, err = encoding.TaikoL1ABI.Pack("proposeBlocksV2", encodedParamsArray, []byte{}) if err != nil { return nil, err } @@ -154,7 +203,7 @@ func (b *BlobTransactionBuilder) Build( return &txmgr.TxCandidate{ TxData: data, - Blobs: []*eth.Blob{blob}, + Blobs: blobs, To: to, GasLimit: b.gasLimit, }, nil diff --git a/packages/taiko-client/proposer/transaction_builder/calldata.go b/packages/taiko-client/proposer/transaction_builder/calldata.go index fa22fb675f2..1eb7322967c 100644 --- a/packages/taiko-client/proposer/transaction_builder/calldata.go +++ b/packages/taiko-client/proposer/transaction_builder/calldata.go @@ -3,6 +3,7 @@ package builder import ( "context" "crypto/ecdsa" + "fmt" "math/big" "github.com/ethereum-optimism/optimism/op-service/txmgr" @@ -51,8 +52,8 @@ func NewCalldataTransactionBuilder( } } -// Build implements the ProposeBlockTransactionBuilder interface. -func (b *CalldataTransactionBuilder) Build( +// BuildLegacy implements the ProposeBlockTransactionBuilder interface. +func (b *CalldataTransactionBuilder) BuildLegacy( ctx context.Context, includeParentMetaHash bool, txListBytes []byte, @@ -79,54 +80,90 @@ func (b *CalldataTransactionBuilder) Build( signature[64] = signature[64] + 27 var ( - to = &b.taikoL1Address - data []byte - encodedParams []byte - method string + to = &b.taikoL1Address + data []byte ) if b.proverSetAddress != rpc.ZeroAddress { to = &b.proverSetAddress } - // Check if the current L2 chain is after ontake fork. - state, err := rpc.GetProtocolStateVariables(b.rpc.TaikoL1, &bind.CallOpts{Context: ctx}) + // ABI encode the TaikoL1.proposeBlock / ProverSet.proposeBlock parameters. + encodedParams, err := encoding.EncodeBlockParams(&encoding.BlockParams{ + Coinbase: b.l2SuggestedFeeRecipient, + ExtraData: rpc.StringToBytes32(b.extraData), + ParentMetaHash: parentMetaHash, + Signature: signature, + }) if err != nil { return nil, err } - if !b.chainConfig.IsOntake(new(big.Int).SetUint64(state.B.NumBlocks)) { - // ABI encode the TaikoL1.proposeBlock / ProverSet.proposeBlock parameters. - method = "proposeBlock" + if b.proverSetAddress != rpc.ZeroAddress { + to = &b.proverSetAddress - if encodedParams, err = encoding.EncodeBlockParams(&encoding.BlockParams{ - Coinbase: b.l2SuggestedFeeRecipient, - ExtraData: rpc.StringToBytes32(b.extraData), - ParentMetaHash: parentMetaHash, - Signature: signature, - }); err != nil { + data, err = encoding.ProverSetABI.Pack("proposeBlock", encodedParams, txListBytes) + if err != nil { return nil, err } } else { - // ABI encode the TaikoL1.proposeBlockV2 / ProverSet.proposeBlockV2 parameters. - method = "proposeBlockV2" + data, err = encoding.TaikoL1ABI.Pack("proposeBlock", encodedParams, txListBytes) + if err != nil { + return nil, err + } + } + + return &txmgr.TxCandidate{ + TxData: data, + Blobs: nil, + To: to, + GasLimit: b.gasLimit, + }, nil +} + +// BuildOntake implements the ProposeBlockTransactionBuilder interface. +func (b *CalldataTransactionBuilder) BuildOntake( + ctx context.Context, + txListBytesArray [][]byte, +) (*txmgr.TxCandidate, error) { + // Check if the current L2 chain is after ontake fork. + state, err := rpc.GetProtocolStateVariables(b.rpc.TaikoL1, &bind.CallOpts{Context: ctx}) + if err != nil { + return nil, err + } - if encodedParams, err = encoding.EncodeBlockParamsOntake(&encoding.BlockParamsV2{ + if !b.chainConfig.IsOntake(new(big.Int).SetUint64(state.B.NumBlocks)) { + return nil, fmt.Errorf("ontake transaction builder is not supported before ontake fork") + } + + // ABI encode the TaikoL1.proposeBlocksV2 / ProverSet.proposeBlocksV2 parameters. + var ( + to = &b.taikoL1Address + data []byte + encodedParamsArray [][]byte + ) + + for range txListBytesArray { + encodedParams, err := encoding.EncodeBlockParamsOntake(&encoding.BlockParamsV2{ Coinbase: b.l2SuggestedFeeRecipient, - ParentMetaHash: parentMetaHash, + ParentMetaHash: [32]byte{}, AnchorBlockId: 0, Timestamp: 0, - }); err != nil { + }) + if err != nil { return nil, err } + encodedParamsArray = append(encodedParamsArray, encodedParams) } if b.proverSetAddress != rpc.ZeroAddress { - data, err = encoding.ProverSetABI.Pack(method, encodedParams, txListBytes) + to = &b.proverSetAddress + + data, err = encoding.ProverSetABI.Pack("proposeBlocksV2", encodedParamsArray, txListBytesArray) if err != nil { return nil, err } } else { - data, err = encoding.TaikoL1ABI.Pack(method, encodedParams, txListBytes) + data, err = encoding.TaikoL1ABI.Pack("proposeBlocksV2", encodedParamsArray, txListBytesArray) if err != nil { return nil, err } diff --git a/packages/taiko-client/proposer/transaction_builder/calldata_test.go b/packages/taiko-client/proposer/transaction_builder/calldata_test.go index 8bc54e226d2..a268508ee88 100644 --- a/packages/taiko-client/proposer/transaction_builder/calldata_test.go +++ b/packages/taiko-client/proposer/transaction_builder/calldata_test.go @@ -5,7 +5,10 @@ import ( ) func (s *TransactionBuilderTestSuite) TestBuildCalldata() { - tx, err := s.calldataTxBuilder.Build(context.Background(), false, []byte{1}) + tx, err := s.calldataTxBuilder.BuildLegacy(context.Background(), false, []byte{1}) s.Nil(err) s.Nil(tx.Blobs) + + _, err = s.calldataTxBuilder.BuildOntake(context.Background(), [][]byte{{1}, {2}}) + s.Error(err, "ontake transaction builder is not supported before ontake fork") } diff --git a/packages/taiko-client/proposer/transaction_builder/interface.go b/packages/taiko-client/proposer/transaction_builder/interface.go index a1cee51f4e3..125a9da092d 100644 --- a/packages/taiko-client/proposer/transaction_builder/interface.go +++ b/packages/taiko-client/proposer/transaction_builder/interface.go @@ -8,9 +8,13 @@ import ( // ProposeBlockTransactionBuilder is an interface for building a TaikoL1.proposeBlock transaction. type ProposeBlockTransactionBuilder interface { - Build( + BuildLegacy( ctx context.Context, includeParentMetaHash bool, txListBytes []byte, ) (*txmgr.TxCandidate, error) + BuildOntake( + ctx context.Context, + txListBytesArray [][]byte, + ) (*txmgr.TxCandidate, error) } diff --git a/packages/taiko-client/prover/event_handler/util.go b/packages/taiko-client/prover/event_handler/util.go index 1cf306ce525..92539d7e1c1 100644 --- a/packages/taiko-client/prover/event_handler/util.go +++ b/packages/taiko-client/prover/event_handler/util.go @@ -93,7 +93,6 @@ func getMetadataFromBlockID( iter, err := eventIterator.NewBlockProposedIterator(ctx, &eventIterator.BlockProposedIteratorConfig{ Client: rpc.L1, TaikoL1: rpc.TaikoL1, - LibProposing: rpc.LibProposing, StartHeight: new(big.Int).Sub(proposedIn, common.Big1), EndHeight: proposedIn, OnBlockProposedEvent: callback, diff --git a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go index 84926335d96..7b96d2f226a 100644 --- a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go +++ b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go @@ -22,6 +22,7 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/blob" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" producer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" @@ -126,11 +127,16 @@ func (s *ProofSubmitterTestSuite) SetupTest() { prop := new(proposer.Proposer) l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) s.Nil(err) + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + s.Nil(err) + s.NotEmpty(jwtSecret) s.Nil(prop.InitFromConfig(context.Background(), &proposer.Config{ ClientConfig: &rpc.ClientConfig{ L1Endpoint: os.Getenv("L1_WS"), L2Endpoint: os.Getenv("L2_WS"), + L2EngineEndpoint: os.Getenv("L2_AUTH"), + JwtSecret: string(jwtSecret), TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1")), TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2")), TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN")), diff --git a/packages/taiko-client/prover/prover.go b/packages/taiko-client/prover/prover.go index 3df6bd33a40..36d7985465a 100644 --- a/packages/taiko-client/prover/prover.go +++ b/packages/taiko-client/prover/prover.go @@ -281,20 +281,20 @@ func (p *Prover) eventLoop() { // Channels chBufferSize := p.protocolConfig.BlockMaxProposals - blockProposedCh := make(chan *bindings.LibProposingBlockProposed, chBufferSize) + blockProposedCh := make(chan *bindings.TaikoL1ClientBlockProposed, chBufferSize) blockVerifiedCh := make(chan *bindings.TaikoL1ClientBlockVerified, chBufferSize) transitionProvedCh := make(chan *bindings.TaikoL1ClientTransitionProved, chBufferSize) transitionContestedCh := make(chan *bindings.TaikoL1ClientTransitionContested, chBufferSize) - blockProposedV2Ch := make(chan *bindings.LibProposingBlockProposedV2, chBufferSize) + blockProposedV2Ch := make(chan *bindings.TaikoL1ClientBlockProposedV2, chBufferSize) blockVerifiedV2Ch := make(chan *bindings.TaikoL1ClientBlockVerifiedV2, chBufferSize) transitionProvedV2Ch := make(chan *bindings.TaikoL1ClientTransitionProvedV2, chBufferSize) transitionContestedV2Ch := make(chan *bindings.TaikoL1ClientTransitionContestedV2, chBufferSize) // Subscriptions - blockProposedSub := rpc.SubscribeBlockProposed(p.rpc.LibProposing, blockProposedCh) + blockProposedSub := rpc.SubscribeBlockProposed(p.rpc.TaikoL1, blockProposedCh) blockVerifiedSub := rpc.SubscribeBlockVerified(p.rpc.TaikoL1, blockVerifiedCh) transitionProvedSub := rpc.SubscribeTransitionProved(p.rpc.TaikoL1, transitionProvedCh) transitionContestedSub := rpc.SubscribeTransitionContested(p.rpc.TaikoL1, transitionContestedCh) - blockProposedV2Sub := rpc.SubscribeBlockProposedV2(p.rpc.LibProposing, blockProposedV2Ch) + blockProposedV2Sub := rpc.SubscribeBlockProposedV2(p.rpc.TaikoL1, blockProposedV2Ch) blockVerifiedV2Sub := rpc.SubscribeBlockVerifiedV2(p.rpc.TaikoL1, blockVerifiedV2Ch) transitionProvedV2Sub := rpc.SubscribeTransitionProvedV2(p.rpc.TaikoL1, transitionProvedV2Ch) transitionContestedV2Sub := rpc.SubscribeTransitionContestedV2(p.rpc.TaikoL1, transitionContestedV2Ch) @@ -376,7 +376,6 @@ func (p *Prover) proveOp() error { iter, err := eventIterator.NewBlockProposedIterator(p.ctx, &eventIterator.BlockProposedIteratorConfig{ Client: p.rpc.L1, TaikoL1: p.rpc.TaikoL1, - LibProposing: p.rpc.LibProposing, StartHeight: new(big.Int).SetUint64(p.sharedState.GetL1Current().Number.Uint64()), OnBlockProposedEvent: p.blockProposedHandler.Handle, BlockConfirmations: &p.cfg.BlockConfirmations, From ea0ca9040cc3d1d9fec50777d40b3cf69803c115 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Tue, 24 Sep 2024 13:17:12 +0800 Subject: [PATCH 010/205] fix(taiko-client): record `lastProposedAt` after ontake fork (#18166) --- packages/taiko-client/proposer/proposer.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/taiko-client/proposer/proposer.go b/packages/taiko-client/proposer/proposer.go index 065d8711faa..585bf705e22 100644 --- a/packages/taiko-client/proposer/proposer.go +++ b/packages/taiko-client/proposer/proposer.go @@ -334,7 +334,11 @@ func (p *Proposer) ProposeTxLists(ctx context.Context, txLists []types.Transacti } // If the current L2 chain is after ontake fork, batch propose all L2 transactions lists. - return p.ProposeTxListOntake(ctx, txLists) + if err := p.ProposeTxListOntake(ctx, txLists); err != nil { + return err + } + p.lastProposedAt = time.Now() + return nil } // ProposeTxListLegacy proposes the given transactions list to TaikoL1 smart contract. From 5023226a7aa2e7355e835f9447b17eb85c60032a Mon Sep 17 00:00:00 2001 From: David Date: Tue, 24 Sep 2024 14:34:46 +0800 Subject: [PATCH 011/205] test(taiko-client): introduce `TestProposeTxListOntake` (#18167) --- packages/taiko-client/bindings/.githead | 2 +- .../taiko-client/bindings/gen_lib_utils.go | 2 +- .../taiko-client/bindings/gen_taiko_l1.go | 64 ++++++++++++++++++- .../taiko-client/proposer/proposer_test.go | 36 +++++++++++ 4 files changed, 101 insertions(+), 3 deletions(-) diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead index cf0bf0044cb..d028d466fde 100644 --- a/packages/taiko-client/bindings/.githead +++ b/packages/taiko-client/bindings/.githead @@ -1 +1 @@ -db7b7a03af3797d37cce04cc2b05614c8dfeece4 +ea0ca9040cc3d1d9fec50777d40b3cf69803c115 diff --git a/packages/taiko-client/bindings/gen_lib_utils.go b/packages/taiko-client/bindings/gen_lib_utils.go index 419002568bf..72f84ffea2f 100644 --- a/packages/taiko-client/bindings/gen_lib_utils.go +++ b/packages/taiko-client/bindings/gen_lib_utils.go @@ -31,7 +31,7 @@ var ( // LibUtilsMetaData contains all meta data concerning the LibUtils contract. var LibUtilsMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", } // LibUtilsABI is the input ABI used to generate the binding from. diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go index 2a35219f6f7..45d2ae602af 100644 --- a/packages/taiko-client/bindings/gen_taiko_l1.go +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -169,7 +169,7 @@ type TaikoDataTransitionState struct { // TaikoL1ClientMetaData contains all meta data concerning the TaikoL1Client contract. var TaikoL1ClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_tids\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoL1ClientABI is the input ABI used to generate the binding from. @@ -677,6 +677,68 @@ func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransition0(_blockId uint64 return _TaikoL1Client.Contract.GetTransition0(&_TaikoL1Client.CallOpts, _blockId, _parentHash) } +// GetTransitions is a free data retrieval call binding the contract method 0xaf2ba709. +// +// Solidity: function getTransitions(uint64[] _blockIds, uint32[] _tids) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1Client *TaikoL1ClientCaller) GetTransitions(opts *bind.CallOpts, _blockIds []uint64, _tids []uint32) ([]TaikoDataTransitionState, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getTransitions", _blockIds, _tids) + + if err != nil { + return *new([]TaikoDataTransitionState), err + } + + out0 := *abi.ConvertType(out[0], new([]TaikoDataTransitionState)).(*[]TaikoDataTransitionState) + + return out0, err + +} + +// GetTransitions is a free data retrieval call binding the contract method 0xaf2ba709. +// +// Solidity: function getTransitions(uint64[] _blockIds, uint32[] _tids) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1Client *TaikoL1ClientSession) GetTransitions(_blockIds []uint64, _tids []uint32) ([]TaikoDataTransitionState, error) { + return _TaikoL1Client.Contract.GetTransitions(&_TaikoL1Client.CallOpts, _blockIds, _tids) +} + +// GetTransitions is a free data retrieval call binding the contract method 0xaf2ba709. +// +// Solidity: function getTransitions(uint64[] _blockIds, uint32[] _tids) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransitions(_blockIds []uint64, _tids []uint32) ([]TaikoDataTransitionState, error) { + return _TaikoL1Client.Contract.GetTransitions(&_TaikoL1Client.CallOpts, _blockIds, _tids) +} + +// GetTransitions0 is a free data retrieval call binding the contract method 0xb89c61bc. +// +// Solidity: function getTransitions(uint64[] _blockIds, bytes32[] _parentHashes) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1Client *TaikoL1ClientCaller) GetTransitions0(opts *bind.CallOpts, _blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getTransitions0", _blockIds, _parentHashes) + + if err != nil { + return *new([]TaikoDataTransitionState), err + } + + out0 := *abi.ConvertType(out[0], new([]TaikoDataTransitionState)).(*[]TaikoDataTransitionState) + + return out0, err + +} + +// GetTransitions0 is a free data retrieval call binding the contract method 0xb89c61bc. +// +// Solidity: function getTransitions(uint64[] _blockIds, bytes32[] _parentHashes) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1Client *TaikoL1ClientSession) GetTransitions0(_blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { + return _TaikoL1Client.Contract.GetTransitions0(&_TaikoL1Client.CallOpts, _blockIds, _parentHashes) +} + +// GetTransitions0 is a free data retrieval call binding the contract method 0xb89c61bc. +// +// Solidity: function getTransitions(uint64[] _blockIds, bytes32[] _parentHashes) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransitions0(_blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { + return _TaikoL1Client.Contract.GetTransitions0(&_TaikoL1Client.CallOpts, _blockIds, _parentHashes) +} + // GetVerifiedBlockProver is a free data retrieval call binding the contract method 0x6074b8c1. // // Solidity: function getVerifiedBlockProver(uint64 _blockId) view returns(address prover_) diff --git a/packages/taiko-client/proposer/proposer_test.go b/packages/taiko-client/proposer/proposer_test.go index 2e0cd796c03..360e6217268 100644 --- a/packages/taiko-client/proposer/proposer_test.go +++ b/packages/taiko-client/proposer/proposer_test.go @@ -2,6 +2,7 @@ package proposer import ( "context" + "math/big" "os" "testing" "time" @@ -283,6 +284,41 @@ func (s *ProposerTestSuite) TestProposeEmptyBlockOp() { s.Nil(s.p.ProposeOp(context.Background())) } +func (s *ProposerTestSuite) TestProposeTxListOntake() { + for i := 0; i < int(s.p.protocolConfigs.OntakeForkHeight); i++ { + s.ProposeAndInsertValidBlock(s.p, s.s) + } + + l2Head, err := s.p.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + s.GreaterOrEqual(l2Head.Number.Uint64(), s.p.protocolConfigs.OntakeForkHeight) + + sink := make(chan *bindings.TaikoL1ClientBlockProposedV2) + sub, err := s.p.rpc.TaikoL1.WatchBlockProposedV2(nil, sink, nil) + s.Nil(err) + defer func() { + sub.Unsubscribe() + close(sink) + }() + s.Nil(s.p.ProposeTxListOntake(context.Background(), []types.Transactions{{}, {}})) + s.Nil(s.s.ProcessL1Blocks(context.Background())) + + var l1Height *big.Int + for i := 0; i < 2; i++ { + event := <-sink + if l1Height == nil { + l1Height = new(big.Int).SetUint64(event.Raw.BlockNumber) + continue + } + s.Equal(l1Height.Uint64(), event.Raw.BlockNumber) + } + + newL2head, err := s.p.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + s.Equal(l2Head.Number.Uint64()+2, newL2head.Number.Uint64()) +} + func (s *ProposerTestSuite) TestUpdateProposingTicker() { s.p.ProposeInterval = 1 * time.Hour s.NotPanics(s.p.updateProposingTicker) From 9dbad24cefcd260e2b452c9e8a46fcbe5f327cb4 Mon Sep 17 00:00:00 2001 From: maskpp Date: Wed, 25 Sep 2024 09:53:02 +0800 Subject: [PATCH 012/205] chore(taiko-client): try cross-compile taiko-client to speed up docker building (#18171) Co-authored-by: RogerLamTd --- .github/workflows/taiko-client--docker.yml | 6 +++--- packages/taiko-client/Dockerfile | 14 ++++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.github/workflows/taiko-client--docker.yml b/.github/workflows/taiko-client--docker.yml index 8b5ed921889..ece6656bccb 100644 --- a/.github/workflows/taiko-client--docker.yml +++ b/.github/workflows/taiko-client--docker.yml @@ -31,7 +31,7 @@ jobs: uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v3 - name: Docker meta id: meta @@ -46,11 +46,11 @@ jobs: type=sha - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: packages/taiko-client/Dockerfile - platforms: linux/amd64,linux/arm64 + platforms: linux/arm64,linux/amd64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/packages/taiko-client/Dockerfile b/packages/taiko-client/Dockerfile index 45004845b22..dea1333dcef 100644 --- a/packages/taiko-client/Dockerfile +++ b/packages/taiko-client/Dockerfile @@ -1,6 +1,8 @@ -FROM golang:1.21-alpine as builder +FROM --platform=$BUILDPLATFORM golang:1.21 AS builder +ARG TARGETOS +ARG TARGETARCH -RUN apk update && apk add --no-cache --update gcc musl-dev linux-headers git make build-base +RUN apt-get update && apt-get install -y git make g++-x86-64-linux-gnu libc6-dev-amd64-cross WORKDIR /build @@ -9,8 +11,12 @@ COPY go.mod go.sum ./ COPY packages/taiko-client/ packages/taiko-client/ WORKDIR /build/packages/taiko-client - -RUN make build +RUN echo "TARGETOS=${TARGETOS}, TARGETARCH=${TARGETARCH}" && \ + if [ "$TARGETARCH" = "amd64" ]; then \ + CGO_ENABLED=1 CC=x86_64-linux-gnu-gcc GOOS=${TARGETOS} GOARCH=${TARGETARCH} make build; \ + else \ + make build; \ + fi FROM alpine:latest From 485b2ee9a4bf4e16b9d0ab7b704eba0b0a46996c Mon Sep 17 00:00:00 2001 From: maskpp Date: Wed, 25 Sep 2024 17:12:50 +0800 Subject: [PATCH 013/205] chore(taiko-client): revert building changes (#18174) --- .github/workflows/taiko-client--docker.yml | 6 +++--- packages/taiko-client/Dockerfile | 14 ++++---------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/.github/workflows/taiko-client--docker.yml b/.github/workflows/taiko-client--docker.yml index ece6656bccb..8b5ed921889 100644 --- a/.github/workflows/taiko-client--docker.yml +++ b/.github/workflows/taiko-client--docker.yml @@ -31,7 +31,7 @@ jobs: uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v1 - name: Docker meta id: meta @@ -46,11 +46,11 @@ jobs: type=sha - name: Build and push - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v5 with: context: . file: packages/taiko-client/Dockerfile - platforms: linux/arm64,linux/amd64 + platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/packages/taiko-client/Dockerfile b/packages/taiko-client/Dockerfile index dea1333dcef..45004845b22 100644 --- a/packages/taiko-client/Dockerfile +++ b/packages/taiko-client/Dockerfile @@ -1,8 +1,6 @@ -FROM --platform=$BUILDPLATFORM golang:1.21 AS builder -ARG TARGETOS -ARG TARGETARCH +FROM golang:1.21-alpine as builder -RUN apt-get update && apt-get install -y git make g++-x86-64-linux-gnu libc6-dev-amd64-cross +RUN apk update && apk add --no-cache --update gcc musl-dev linux-headers git make build-base WORKDIR /build @@ -11,12 +9,8 @@ COPY go.mod go.sum ./ COPY packages/taiko-client/ packages/taiko-client/ WORKDIR /build/packages/taiko-client -RUN echo "TARGETOS=${TARGETOS}, TARGETARCH=${TARGETARCH}" && \ - if [ "$TARGETARCH" = "amd64" ]; then \ - CGO_ENABLED=1 CC=x86_64-linux-gnu-gcc GOOS=${TARGETOS} GOARCH=${TARGETARCH} make build; \ - else \ - make build; \ - fi + +RUN make build FROM alpine:latest From 227c5b11685708aa783eacc6a7a59539bb00dbcc Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Wed, 25 Sep 2024 16:32:49 -0700 Subject: [PATCH 014/205] feat(eventindexer): updates for ontake fork eventindexer (#18178) --- .../eventindexer/contracts/bridge/Bridge.go | 20 +- .../contracts/sgxverifier/SgxVerifier.go | 61 +- .../eventindexer/contracts/taikol1/TaikoL1.go | 1429 +- .../contracts/taikotoken/TaikoToken.go | 2 +- packages/eventindexer/scripts/abigen.sh | 4 +- pnpm-lock.yaml | 30474 +++++++--------- 6 files changed, 15249 insertions(+), 16741 deletions(-) diff --git a/packages/eventindexer/contracts/bridge/Bridge.go b/packages/eventindexer/contracts/bridge/Bridge.go index 97be0a48852..d674263b28d 100644 --- a/packages/eventindexer/contracts/bridge/Bridge.go +++ b/packages/eventindexer/contracts/bridge/Bridge.go @@ -61,7 +61,7 @@ type IBridgeMessage struct { // BridgeMetaData contains all meta data concerning the Bridge contract. var BridgeMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"context\",\"inputs\":[],\"outputs\":[{\"name\":\"ctx_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Context\",\"components\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"inputs\":[{\"name\":\"dataLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"hashMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"enabled_\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"destBridge_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageSent\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"messageStatus\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIBridge.Status\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextMessageId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"processMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"status_\",\"type\":\"uint8\",\"internalType\":\"enumIBridge.Status\"},{\"name\":\"reason_\",\"type\":\"uint8\",\"internalType\":\"enumIBridge.StatusReason\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recallMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"retryMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_isLastAttempt\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"selfDelegate\",\"inputs\":[{\"name\":\"_anyToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"msgHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"message_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"inputs\":[{\"name\":\"_msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageProcessed\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"stats\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structBridge.ProcessingStats\",\"components\":[{\"name\":\"gasUsedInFeeCalc\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proofSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numCacheOps\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"processedByRelayer\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageSent\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageStatusChanged\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIBridge.Status\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"context\",\"inputs\":[],\"outputs\":[{\"name\":\"ctx_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Context\",\"components\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"inputs\":[{\"name\":\"dataLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"hashMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_sharedAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"enabled_\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"destBridge_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageSent\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"messageStatus\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIBridge.Status\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextMessageId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"processMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"status_\",\"type\":\"uint8\",\"internalType\":\"enumIBridge.Status\"},{\"name\":\"reason_\",\"type\":\"uint8\",\"internalType\":\"enumIBridge.StatusReason\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recallMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"retryMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_isLastAttempt\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"selfDelegate\",\"inputs\":[{\"name\":\"_anyToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"msgHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"message_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"inputs\":[{\"name\":\"_msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageProcessed\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"stats\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structBridge.ProcessingStats\",\"components\":[{\"name\":\"gasUsedInFeeCalc\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proofSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numCacheOps\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"processedByRelayer\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageSent\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageStatusChanged\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIBridge.Status\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // BridgeABI is the input ABI used to generate the binding from. @@ -981,23 +981,23 @@ func (_Bridge *BridgeTransactorSession) FailMessage(_message IBridgeMessage) (*t // Init is a paid mutator transaction binding the contract method 0xf09a4016. // -// Solidity: function init(address _owner, address _addressManager) returns() -func (_Bridge *BridgeTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _addressManager common.Address) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "init", _owner, _addressManager) +// Solidity: function init(address _owner, address _sharedAddressManager) returns() +func (_Bridge *BridgeTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _sharedAddressManager common.Address) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "init", _owner, _sharedAddressManager) } // Init is a paid mutator transaction binding the contract method 0xf09a4016. // -// Solidity: function init(address _owner, address _addressManager) returns() -func (_Bridge *BridgeSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { - return _Bridge.Contract.Init(&_Bridge.TransactOpts, _owner, _addressManager) +// Solidity: function init(address _owner, address _sharedAddressManager) returns() +func (_Bridge *BridgeSession) Init(_owner common.Address, _sharedAddressManager common.Address) (*types.Transaction, error) { + return _Bridge.Contract.Init(&_Bridge.TransactOpts, _owner, _sharedAddressManager) } // Init is a paid mutator transaction binding the contract method 0xf09a4016. // -// Solidity: function init(address _owner, address _addressManager) returns() -func (_Bridge *BridgeTransactorSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { - return _Bridge.Contract.Init(&_Bridge.TransactOpts, _owner, _addressManager) +// Solidity: function init(address _owner, address _sharedAddressManager) returns() +func (_Bridge *BridgeTransactorSession) Init(_owner common.Address, _sharedAddressManager common.Address) (*types.Transaction, error) { + return _Bridge.Contract.Init(&_Bridge.TransactOpts, _owner, _sharedAddressManager) } // Init2 is a paid mutator transaction binding the contract method 0x069489a2. diff --git a/packages/eventindexer/contracts/sgxverifier/SgxVerifier.go b/packages/eventindexer/contracts/sgxverifier/SgxVerifier.go index 1e63f0022d1..14b110d3450 100644 --- a/packages/eventindexer/contracts/sgxverifier/SgxVerifier.go +++ b/packages/eventindexer/contracts/sgxverifier/SgxVerifier.go @@ -40,6 +40,18 @@ type IVerifierContext struct { MsgSender common.Address } +// IVerifierContextV2 is an auto generated low-level Go binding around an user-defined struct. +type IVerifierContextV2 struct { + MetaHash [32]byte + BlobHash [32]byte + Prover common.Address + BlockId uint64 + IsContesting bool + BlobUsed bool + MsgSender common.Address + Tran TaikoDataTransition +} + // TaikoDataTierProof is an auto generated low-level Go binding around an user-defined struct. type TaikoDataTierProof struct { Tier uint16 @@ -113,7 +125,7 @@ type V3StructQEAuthData struct { // SgxVerifierMetaData contains all meta data concerning the SgxVerifier contract. var SgxVerifierMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addInstances\",\"inputs\":[{\"name\":\"_instances\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addressRegistered\",\"inputs\":[{\"name\":\"instanceAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"alreadyAttested\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deleteInstances\",\"inputs\":[{\"name\":\"_ids\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"instances\",\"inputs\":[{\"name\":\"instanceId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validSince\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerInstance\",\"inputs\":[{\"name\":\"_attestation\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.ParsedV3QuoteStruct\",\"components\":[{\"name\":\"header\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.Header\",\"components\":[{\"name\":\"version\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"attestationKeyType\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"teeType\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"qeSvn\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"pceSvn\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"qeVendorId\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"userData\",\"type\":\"bytes20\",\"internalType\":\"bytes20\"}]},{\"name\":\"localEnclaveReport\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.EnclaveReport\",\"components\":[{\"name\":\"cpuSvn\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"miscSelect\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"reserved1\",\"type\":\"bytes28\",\"internalType\":\"bytes28\"},{\"name\":\"attributes\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"mrEnclave\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mrSigner\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved3\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"isvProdId\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"isvSvn\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"reserved4\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reportData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"v3AuthData\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.ECDSAQuoteV3AuthData\",\"components\":[{\"name\":\"ecdsa256BitSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"ecdsaAttestationKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"pckSignedQeReport\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.EnclaveReport\",\"components\":[{\"name\":\"cpuSvn\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"miscSelect\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"reserved1\",\"type\":\"bytes28\",\"internalType\":\"bytes28\"},{\"name\":\"attributes\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"mrEnclave\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mrSigner\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved3\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"isvProdId\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"isvSvn\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"reserved4\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reportData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"qeReportSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"qeAuthData\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.QEAuthData\",\"components\":[{\"name\":\"parsedDataSize\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"certification\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.CertificationData\",\"components\":[{\"name\":\"certType\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"certDataSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"decodedCertDataArray\",\"type\":\"bytes[3]\",\"internalType\":\"bytes[3]\"}]}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InstanceAdded\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"instance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"replaced\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"validSince\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InstanceDeleted\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"instance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addInstances\",\"inputs\":[{\"name\":\"_instances\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addressRegistered\",\"inputs\":[{\"name\":\"instanceAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"alreadyAttested\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deleteInstances\",\"inputs\":[{\"name\":\"_ids\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"instances\",\"inputs\":[{\"name\":\"instanceId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validSince\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerInstance\",\"inputs\":[{\"name\":\"_attestation\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.ParsedV3QuoteStruct\",\"components\":[{\"name\":\"header\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.Header\",\"components\":[{\"name\":\"version\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"attestationKeyType\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"teeType\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"qeSvn\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"pceSvn\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"qeVendorId\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"userData\",\"type\":\"bytes20\",\"internalType\":\"bytes20\"}]},{\"name\":\"localEnclaveReport\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.EnclaveReport\",\"components\":[{\"name\":\"cpuSvn\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"miscSelect\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"reserved1\",\"type\":\"bytes28\",\"internalType\":\"bytes28\"},{\"name\":\"attributes\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"mrEnclave\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mrSigner\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved3\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"isvProdId\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"isvSvn\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"reserved4\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reportData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"v3AuthData\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.ECDSAQuoteV3AuthData\",\"components\":[{\"name\":\"ecdsa256BitSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"ecdsaAttestationKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"pckSignedQeReport\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.EnclaveReport\",\"components\":[{\"name\":\"cpuSvn\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"miscSelect\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"reserved1\",\"type\":\"bytes28\",\"internalType\":\"bytes28\"},{\"name\":\"attributes\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"mrEnclave\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mrSigner\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved3\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"isvProdId\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"isvSvn\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"reserved4\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reportData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"qeReportSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"qeAuthData\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.QEAuthData\",\"components\":[{\"name\":\"parsedDataSize\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"certification\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.CertificationData\",\"components\":[{\"name\":\"certType\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"certDataSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"decodedCertDataArray\",\"type\":\"bytes[3]\",\"internalType\":\"bytes[3]\"}]}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBatchProof\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIVerifier.ContextV2[]\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InstanceAdded\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"instance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"replaced\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"validSince\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InstanceDeleted\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"instance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // SgxVerifierABI is the input ABI used to generate the binding from. @@ -741,6 +753,35 @@ func (_SgxVerifier *SgxVerifierCallerSession) Resolve0(_name [32]byte, _allowZer return _SgxVerifier.Contract.Resolve0(&_SgxVerifier.CallOpts, _name, _allowZeroAddress) } +// VerifyBatchProof is a free data retrieval call binding the contract method 0x7103b6da. +// +// Solidity: function verifyBatchProof((bytes32,bytes32,address,uint64,bool,bool,address,(bytes32,bytes32,bytes32,bytes32))[] , (uint16,bytes) ) view returns() +func (_SgxVerifier *SgxVerifierCaller) VerifyBatchProof(opts *bind.CallOpts, arg0 []IVerifierContextV2, arg1 TaikoDataTierProof) error { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "verifyBatchProof", arg0, arg1) + + if err != nil { + return err + } + + return err + +} + +// VerifyBatchProof is a free data retrieval call binding the contract method 0x7103b6da. +// +// Solidity: function verifyBatchProof((bytes32,bytes32,address,uint64,bool,bool,address,(bytes32,bytes32,bytes32,bytes32))[] , (uint16,bytes) ) view returns() +func (_SgxVerifier *SgxVerifierSession) VerifyBatchProof(arg0 []IVerifierContextV2, arg1 TaikoDataTierProof) error { + return _SgxVerifier.Contract.VerifyBatchProof(&_SgxVerifier.CallOpts, arg0, arg1) +} + +// VerifyBatchProof is a free data retrieval call binding the contract method 0x7103b6da. +// +// Solidity: function verifyBatchProof((bytes32,bytes32,address,uint64,bool,bool,address,(bytes32,bytes32,bytes32,bytes32))[] , (uint16,bytes) ) view returns() +func (_SgxVerifier *SgxVerifierCallerSession) VerifyBatchProof(arg0 []IVerifierContextV2, arg1 TaikoDataTierProof) error { + return _SgxVerifier.Contract.VerifyBatchProof(&_SgxVerifier.CallOpts, arg0, arg1) +} + // AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. // // Solidity: function acceptOwnership() returns() @@ -806,23 +847,23 @@ func (_SgxVerifier *SgxVerifierTransactorSession) DeleteInstances(_ids []*big.In // Init is a paid mutator transaction binding the contract method 0xf09a4016. // -// Solidity: function init(address _owner, address _addressManager) returns() -func (_SgxVerifier *SgxVerifierTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _addressManager common.Address) (*types.Transaction, error) { - return _SgxVerifier.contract.Transact(opts, "init", _owner, _addressManager) +// Solidity: function init(address _owner, address _rollupAddressManager) returns() +func (_SgxVerifier *SgxVerifierTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _rollupAddressManager common.Address) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "init", _owner, _rollupAddressManager) } // Init is a paid mutator transaction binding the contract method 0xf09a4016. // -// Solidity: function init(address _owner, address _addressManager) returns() -func (_SgxVerifier *SgxVerifierSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { - return _SgxVerifier.Contract.Init(&_SgxVerifier.TransactOpts, _owner, _addressManager) +// Solidity: function init(address _owner, address _rollupAddressManager) returns() +func (_SgxVerifier *SgxVerifierSession) Init(_owner common.Address, _rollupAddressManager common.Address) (*types.Transaction, error) { + return _SgxVerifier.Contract.Init(&_SgxVerifier.TransactOpts, _owner, _rollupAddressManager) } // Init is a paid mutator transaction binding the contract method 0xf09a4016. // -// Solidity: function init(address _owner, address _addressManager) returns() -func (_SgxVerifier *SgxVerifierTransactorSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { - return _SgxVerifier.Contract.Init(&_SgxVerifier.TransactOpts, _owner, _addressManager) +// Solidity: function init(address _owner, address _rollupAddressManager) returns() +func (_SgxVerifier *SgxVerifierTransactorSession) Init(_owner common.Address, _rollupAddressManager common.Address) (*types.Transaction, error) { + return _SgxVerifier.Contract.Init(&_SgxVerifier.TransactOpts, _owner, _rollupAddressManager) } // Pause is a paid mutator transaction binding the contract method 0x8456cb59. diff --git a/packages/eventindexer/contracts/taikol1/TaikoL1.go b/packages/eventindexer/contracts/taikol1/TaikoL1.go index a2492f91290..c0212e5e1f8 100644 --- a/packages/eventindexer/contracts/taikol1/TaikoL1.go +++ b/packages/eventindexer/contracts/taikol1/TaikoL1.go @@ -29,6 +29,15 @@ var ( _ = abi.ConvertType ) +// LibSharedDataBaseFeeConfig is an auto generated low-level Go binding around an user-defined struct. +type LibSharedDataBaseFeeConfig struct { + AdjustmentQuotient uint8 + SharingPctg uint8 + GasIssuancePerSecond uint32 + MinGasExcess uint64 + MaxGasIssuancePerBlock uint32 +} + // TaikoDataBlock is an auto generated low-level Go binding around an user-defined struct. type TaikoDataBlock struct { MetaHash [32]byte @@ -59,6 +68,43 @@ type TaikoDataBlockMetadata struct { Sender common.Address } +// TaikoDataBlockMetadataV2 is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataBlockMetadataV2 struct { + AnchorBlockHash [32]byte + Difficulty [32]byte + BlobHash [32]byte + ExtraData [32]byte + Coinbase common.Address + Id uint64 + GasLimit uint32 + Timestamp uint64 + AnchorBlockId uint64 + MinTier uint16 + BlobUsed bool + ParentMetaHash [32]byte + Proposer common.Address + LivenessBond *big.Int + ProposedAt uint64 + ProposedIn uint64 + BlobTxListOffset uint32 + BlobTxListLength uint32 + BlobIndex uint8 + BaseFeeConfig LibSharedDataBaseFeeConfig +} + +// TaikoDataBlockV2 is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataBlockV2 struct { + MetaHash [32]byte + AssignedProver common.Address + LivenessBond *big.Int + BlockId uint64 + ProposedAt uint64 + ProposedIn uint64 + NextTransitionId *big.Int + LivenessBondReturned bool + VerifiedTransitionId *big.Int +} + // TaikoDataConfig is an auto generated low-level Go binding around an user-defined struct. type TaikoDataConfig struct { ChainId uint64 @@ -68,7 +114,9 @@ type TaikoDataConfig struct { BlockMaxGasLimit uint32 LivenessBond *big.Int StateRootSyncInternal uint8 - CheckEOAForCalldataDA bool + MaxAnchorHeightOffset uint64 + BaseFeeConfig LibSharedDataBaseFeeConfig + OntakeForkHeight uint64 } // TaikoDataEthDeposit is an auto generated low-level Go binding around an user-defined struct. @@ -121,7 +169,7 @@ type TaikoDataTransitionState struct { // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"checkEOAForCalldataDA\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BATCH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BATCH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NO_HOOKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_tids\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoL1ABI is the input ABI used to generate the binding from. @@ -301,6 +349,37 @@ func (_TaikoL1 *TaikoL1CallerSession) AddressManager() (common.Address, error) { return _TaikoL1.Contract.AddressManager(&_TaikoL1.CallOpts) } +// BondBalanceOf is a free data retrieval call binding the contract method 0xa9c2c835. +// +// Solidity: function bondBalanceOf(address _user) view returns(uint256) +func (_TaikoL1 *TaikoL1Caller) BondBalanceOf(opts *bind.CallOpts, _user common.Address) (*big.Int, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "bondBalanceOf", _user) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BondBalanceOf is a free data retrieval call binding the contract method 0xa9c2c835. +// +// Solidity: function bondBalanceOf(address _user) view returns(uint256) +func (_TaikoL1 *TaikoL1Session) BondBalanceOf(_user common.Address) (*big.Int, error) { + return _TaikoL1.Contract.BondBalanceOf(&_TaikoL1.CallOpts, _user) +} + +// BondBalanceOf is a free data retrieval call binding the contract method 0xa9c2c835. +// +// Solidity: function bondBalanceOf(address _user) view returns(uint256) +func (_TaikoL1 *TaikoL1CallerSession) BondBalanceOf(_user common.Address) (*big.Int, error) { + return _TaikoL1.Contract.BondBalanceOf(&_TaikoL1.CallOpts, _user) +} + // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // // Solidity: function getBlock(uint64 _blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32) blk_) @@ -332,9 +411,40 @@ func (_TaikoL1 *TaikoL1CallerSession) GetBlock(_blockId uint64) (TaikoDataBlock, return _TaikoL1.Contract.GetBlock(&_TaikoL1.CallOpts, _blockId) } +// GetBlockV2 is a free data retrieval call binding the contract method 0x3f0c544a. +// +// Solidity: function getBlockV2(uint64 _blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint24,bool,uint24) blk_) +func (_TaikoL1 *TaikoL1Caller) GetBlockV2(opts *bind.CallOpts, _blockId uint64) (TaikoDataBlockV2, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "getBlockV2", _blockId) + + if err != nil { + return *new(TaikoDataBlockV2), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataBlockV2)).(*TaikoDataBlockV2) + + return out0, err + +} + +// GetBlockV2 is a free data retrieval call binding the contract method 0x3f0c544a. +// +// Solidity: function getBlockV2(uint64 _blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint24,bool,uint24) blk_) +func (_TaikoL1 *TaikoL1Session) GetBlockV2(_blockId uint64) (TaikoDataBlockV2, error) { + return _TaikoL1.Contract.GetBlockV2(&_TaikoL1.CallOpts, _blockId) +} + +// GetBlockV2 is a free data retrieval call binding the contract method 0x3f0c544a. +// +// Solidity: function getBlockV2(uint64 _blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint24,bool,uint24) blk_) +func (_TaikoL1 *TaikoL1CallerSession) GetBlockV2(_blockId uint64) (TaikoDataBlockV2, error) { + return _TaikoL1.Contract.GetBlockV2(&_TaikoL1.CallOpts, _blockId) +} + // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,bool)) +// Solidity: function getConfig() pure returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,uint64,(uint8,uint8,uint32,uint64,uint32),uint64)) func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getConfig") @@ -351,33 +461,35 @@ func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,bool)) +// Solidity: function getConfig() pure returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,uint64,(uint8,uint8,uint32,uint64,uint32),uint64)) func (_TaikoL1 *TaikoL1Session) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,bool)) +// Solidity: function getConfig() pure returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8,uint64,(uint8,uint8,uint32,uint64,uint32),uint64)) func (_TaikoL1 *TaikoL1CallerSession) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } // GetLastSyncedBlock is a free data retrieval call binding the contract method 0x9413caa9. // -// Solidity: function getLastSyncedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +// Solidity: function getLastSyncedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_, uint64 verifiedAt_) func (_TaikoL1 *TaikoL1Caller) GetLastSyncedBlock(opts *bind.CallOpts) (struct { - BlockId uint64 - BlockHash [32]byte - StateRoot [32]byte + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte + VerifiedAt uint64 }, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getLastSyncedBlock") outstruct := new(struct { - BlockId uint64 - BlockHash [32]byte - StateRoot [32]byte + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte + VerifiedAt uint64 }) if err != nil { return *outstruct, err @@ -386,6 +498,7 @@ func (_TaikoL1 *TaikoL1Caller) GetLastSyncedBlock(opts *bind.CallOpts) (struct { outstruct.BlockId = *abi.ConvertType(out[0], new(uint64)).(*uint64) outstruct.BlockHash = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) outstruct.StateRoot = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + outstruct.VerifiedAt = *abi.ConvertType(out[3], new(uint64)).(*uint64) return *outstruct, err @@ -393,41 +506,45 @@ func (_TaikoL1 *TaikoL1Caller) GetLastSyncedBlock(opts *bind.CallOpts) (struct { // GetLastSyncedBlock is a free data retrieval call binding the contract method 0x9413caa9. // -// Solidity: function getLastSyncedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +// Solidity: function getLastSyncedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_, uint64 verifiedAt_) func (_TaikoL1 *TaikoL1Session) GetLastSyncedBlock() (struct { - BlockId uint64 - BlockHash [32]byte - StateRoot [32]byte + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte + VerifiedAt uint64 }, error) { return _TaikoL1.Contract.GetLastSyncedBlock(&_TaikoL1.CallOpts) } // GetLastSyncedBlock is a free data retrieval call binding the contract method 0x9413caa9. // -// Solidity: function getLastSyncedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +// Solidity: function getLastSyncedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_, uint64 verifiedAt_) func (_TaikoL1 *TaikoL1CallerSession) GetLastSyncedBlock() (struct { - BlockId uint64 - BlockHash [32]byte - StateRoot [32]byte + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte + VerifiedAt uint64 }, error) { return _TaikoL1.Contract.GetLastSyncedBlock(&_TaikoL1.CallOpts) } // GetLastVerifiedBlock is a free data retrieval call binding the contract method 0x26af7986. // -// Solidity: function getLastVerifiedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +// Solidity: function getLastVerifiedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_, uint64 verifiedAt_) func (_TaikoL1 *TaikoL1Caller) GetLastVerifiedBlock(opts *bind.CallOpts) (struct { - BlockId uint64 - BlockHash [32]byte - StateRoot [32]byte + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte + VerifiedAt uint64 }, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getLastVerifiedBlock") outstruct := new(struct { - BlockId uint64 - BlockHash [32]byte - StateRoot [32]byte + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte + VerifiedAt uint64 }) if err != nil { return *outstruct, err @@ -436,6 +553,7 @@ func (_TaikoL1 *TaikoL1Caller) GetLastVerifiedBlock(opts *bind.CallOpts) (struct outstruct.BlockId = *abi.ConvertType(out[0], new(uint64)).(*uint64) outstruct.BlockHash = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) outstruct.StateRoot = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + outstruct.VerifiedAt = *abi.ConvertType(out[3], new(uint64)).(*uint64) return *outstruct, err @@ -443,22 +561,24 @@ func (_TaikoL1 *TaikoL1Caller) GetLastVerifiedBlock(opts *bind.CallOpts) (struct // GetLastVerifiedBlock is a free data retrieval call binding the contract method 0x26af7986. // -// Solidity: function getLastVerifiedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +// Solidity: function getLastVerifiedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_, uint64 verifiedAt_) func (_TaikoL1 *TaikoL1Session) GetLastVerifiedBlock() (struct { - BlockId uint64 - BlockHash [32]byte - StateRoot [32]byte + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte + VerifiedAt uint64 }, error) { return _TaikoL1.Contract.GetLastVerifiedBlock(&_TaikoL1.CallOpts) } // GetLastVerifiedBlock is a free data retrieval call binding the contract method 0x26af7986. // -// Solidity: function getLastVerifiedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_) +// Solidity: function getLastVerifiedBlock() view returns(uint64 blockId_, bytes32 blockHash_, bytes32 stateRoot_, uint64 verifiedAt_) func (_TaikoL1 *TaikoL1CallerSession) GetLastVerifiedBlock() (struct { - BlockId uint64 - BlockHash [32]byte - StateRoot [32]byte + BlockId uint64 + BlockHash [32]byte + StateRoot [32]byte + VerifiedAt uint64 }, error) { return _TaikoL1.Contract.GetLastVerifiedBlock(&_TaikoL1.CallOpts) } @@ -557,6 +677,99 @@ func (_TaikoL1 *TaikoL1CallerSession) GetTransition0(_blockId uint64, _parentHas return _TaikoL1.Contract.GetTransition0(&_TaikoL1.CallOpts, _blockId, _parentHash) } +// GetTransitions is a free data retrieval call binding the contract method 0xaf2ba709. +// +// Solidity: function getTransitions(uint64[] _blockIds, uint32[] _tids) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1 *TaikoL1Caller) GetTransitions(opts *bind.CallOpts, _blockIds []uint64, _tids []uint32) ([]TaikoDataTransitionState, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "getTransitions", _blockIds, _tids) + + if err != nil { + return *new([]TaikoDataTransitionState), err + } + + out0 := *abi.ConvertType(out[0], new([]TaikoDataTransitionState)).(*[]TaikoDataTransitionState) + + return out0, err + +} + +// GetTransitions is a free data retrieval call binding the contract method 0xaf2ba709. +// +// Solidity: function getTransitions(uint64[] _blockIds, uint32[] _tids) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1 *TaikoL1Session) GetTransitions(_blockIds []uint64, _tids []uint32) ([]TaikoDataTransitionState, error) { + return _TaikoL1.Contract.GetTransitions(&_TaikoL1.CallOpts, _blockIds, _tids) +} + +// GetTransitions is a free data retrieval call binding the contract method 0xaf2ba709. +// +// Solidity: function getTransitions(uint64[] _blockIds, uint32[] _tids) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1 *TaikoL1CallerSession) GetTransitions(_blockIds []uint64, _tids []uint32) ([]TaikoDataTransitionState, error) { + return _TaikoL1.Contract.GetTransitions(&_TaikoL1.CallOpts, _blockIds, _tids) +} + +// GetTransitions0 is a free data retrieval call binding the contract method 0xb89c61bc. +// +// Solidity: function getTransitions(uint64[] _blockIds, bytes32[] _parentHashes) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1 *TaikoL1Caller) GetTransitions0(opts *bind.CallOpts, _blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "getTransitions0", _blockIds, _parentHashes) + + if err != nil { + return *new([]TaikoDataTransitionState), err + } + + out0 := *abi.ConvertType(out[0], new([]TaikoDataTransitionState)).(*[]TaikoDataTransitionState) + + return out0, err + +} + +// GetTransitions0 is a free data retrieval call binding the contract method 0xb89c61bc. +// +// Solidity: function getTransitions(uint64[] _blockIds, bytes32[] _parentHashes) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1 *TaikoL1Session) GetTransitions0(_blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { + return _TaikoL1.Contract.GetTransitions0(&_TaikoL1.CallOpts, _blockIds, _parentHashes) +} + +// GetTransitions0 is a free data retrieval call binding the contract method 0xb89c61bc. +// +// Solidity: function getTransitions(uint64[] _blockIds, bytes32[] _parentHashes) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) +func (_TaikoL1 *TaikoL1CallerSession) GetTransitions0(_blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { + return _TaikoL1.Contract.GetTransitions0(&_TaikoL1.CallOpts, _blockIds, _parentHashes) +} + +// GetVerifiedBlockProver is a free data retrieval call binding the contract method 0x6074b8c1. +// +// Solidity: function getVerifiedBlockProver(uint64 _blockId) view returns(address prover_) +func (_TaikoL1 *TaikoL1Caller) GetVerifiedBlockProver(opts *bind.CallOpts, _blockId uint64) (common.Address, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "getVerifiedBlockProver", _blockId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetVerifiedBlockProver is a free data retrieval call binding the contract method 0x6074b8c1. +// +// Solidity: function getVerifiedBlockProver(uint64 _blockId) view returns(address prover_) +func (_TaikoL1 *TaikoL1Session) GetVerifiedBlockProver(_blockId uint64) (common.Address, error) { + return _TaikoL1.Contract.GetVerifiedBlockProver(&_TaikoL1.CallOpts, _blockId) +} + +// GetVerifiedBlockProver is a free data retrieval call binding the contract method 0x6074b8c1. +// +// Solidity: function getVerifiedBlockProver(uint64 _blockId) view returns(address prover_) +func (_TaikoL1 *TaikoL1CallerSession) GetVerifiedBlockProver(_blockId uint64) (common.Address, error) { + return _TaikoL1.Contract.GetVerifiedBlockProver(&_TaikoL1.CallOpts, _blockId) +} + // Impl is a free data retrieval call binding the contract method 0x8abf6077. // // Solidity: function impl() view returns(address) @@ -907,25 +1120,46 @@ func (_TaikoL1 *TaikoL1TransactorSession) AcceptOwnership() (*types.Transaction, return _TaikoL1.Contract.AcceptOwnership(&_TaikoL1.TransactOpts) } +// DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9. +// +// Solidity: function depositBond(uint256 _amount) returns() +func (_TaikoL1 *TaikoL1Transactor) DepositBond(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "depositBond", _amount) +} + +// DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9. +// +// Solidity: function depositBond(uint256 _amount) returns() +func (_TaikoL1 *TaikoL1Session) DepositBond(_amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.Contract.DepositBond(&_TaikoL1.TransactOpts, _amount) +} + +// DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9. +// +// Solidity: function depositBond(uint256 _amount) returns() +func (_TaikoL1 *TaikoL1TransactorSession) DepositBond(_amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.Contract.DepositBond(&_TaikoL1.TransactOpts, _amount) +} + // Init is a paid mutator transaction binding the contract method 0x29d1b62f. // -// Solidity: function init(address _owner, address _addressManager, bytes32 _genesisBlockHash, bool _toPause) returns() -func (_TaikoL1 *TaikoL1Transactor) Init(opts *bind.TransactOpts, _owner common.Address, _addressManager common.Address, _genesisBlockHash [32]byte, _toPause bool) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "init", _owner, _addressManager, _genesisBlockHash, _toPause) +// Solidity: function init(address _owner, address _rollupAddressManager, bytes32 _genesisBlockHash, bool _toPause) returns() +func (_TaikoL1 *TaikoL1Transactor) Init(opts *bind.TransactOpts, _owner common.Address, _rollupAddressManager common.Address, _genesisBlockHash [32]byte, _toPause bool) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "init", _owner, _rollupAddressManager, _genesisBlockHash, _toPause) } // Init is a paid mutator transaction binding the contract method 0x29d1b62f. // -// Solidity: function init(address _owner, address _addressManager, bytes32 _genesisBlockHash, bool _toPause) returns() -func (_TaikoL1 *TaikoL1Session) Init(_owner common.Address, _addressManager common.Address, _genesisBlockHash [32]byte, _toPause bool) (*types.Transaction, error) { - return _TaikoL1.Contract.Init(&_TaikoL1.TransactOpts, _owner, _addressManager, _genesisBlockHash, _toPause) +// Solidity: function init(address _owner, address _rollupAddressManager, bytes32 _genesisBlockHash, bool _toPause) returns() +func (_TaikoL1 *TaikoL1Session) Init(_owner common.Address, _rollupAddressManager common.Address, _genesisBlockHash [32]byte, _toPause bool) (*types.Transaction, error) { + return _TaikoL1.Contract.Init(&_TaikoL1.TransactOpts, _owner, _rollupAddressManager, _genesisBlockHash, _toPause) } // Init is a paid mutator transaction binding the contract method 0x29d1b62f. // -// Solidity: function init(address _owner, address _addressManager, bytes32 _genesisBlockHash, bool _toPause) returns() -func (_TaikoL1 *TaikoL1TransactorSession) Init(_owner common.Address, _addressManager common.Address, _genesisBlockHash [32]byte, _toPause bool) (*types.Transaction, error) { - return _TaikoL1.Contract.Init(&_TaikoL1.TransactOpts, _owner, _addressManager, _genesisBlockHash, _toPause) +// Solidity: function init(address _owner, address _rollupAddressManager, bytes32 _genesisBlockHash, bool _toPause) returns() +func (_TaikoL1 *TaikoL1TransactorSession) Init(_owner common.Address, _rollupAddressManager common.Address, _genesisBlockHash [32]byte, _toPause bool) (*types.Transaction, error) { + return _TaikoL1.Contract.Init(&_TaikoL1.TransactOpts, _owner, _rollupAddressManager, _genesisBlockHash, _toPause) } // Init2 is a paid mutator transaction binding the contract method 0x069489a2. @@ -1012,6 +1246,48 @@ func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlock(_params []byte, _txList [ return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, _params, _txList) } +// ProposeBlockV2 is a paid mutator transaction binding the contract method 0x648885fb. +// +// Solidity: function proposeBlockV2(bytes _params, bytes _txList) returns((bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta_) +func (_TaikoL1 *TaikoL1Transactor) ProposeBlockV2(opts *bind.TransactOpts, _params []byte, _txList []byte) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "proposeBlockV2", _params, _txList) +} + +// ProposeBlockV2 is a paid mutator transaction binding the contract method 0x648885fb. +// +// Solidity: function proposeBlockV2(bytes _params, bytes _txList) returns((bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta_) +func (_TaikoL1 *TaikoL1Session) ProposeBlockV2(_params []byte, _txList []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlockV2(&_TaikoL1.TransactOpts, _params, _txList) +} + +// ProposeBlockV2 is a paid mutator transaction binding the contract method 0x648885fb. +// +// Solidity: function proposeBlockV2(bytes _params, bytes _txList) returns((bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta_) +func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlockV2(_params []byte, _txList []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlockV2(&_TaikoL1.TransactOpts, _params, _txList) +} + +// ProposeBlocksV2 is a paid mutator transaction binding the contract method 0x0c8f4a10. +// +// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) returns((bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32))[] metaArr_) +func (_TaikoL1 *TaikoL1Transactor) ProposeBlocksV2(opts *bind.TransactOpts, _paramsArr [][]byte, _txListArr [][]byte) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "proposeBlocksV2", _paramsArr, _txListArr) +} + +// ProposeBlocksV2 is a paid mutator transaction binding the contract method 0x0c8f4a10. +// +// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) returns((bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32))[] metaArr_) +func (_TaikoL1 *TaikoL1Session) ProposeBlocksV2(_paramsArr [][]byte, _txListArr [][]byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlocksV2(&_TaikoL1.TransactOpts, _paramsArr, _txListArr) +} + +// ProposeBlocksV2 is a paid mutator transaction binding the contract method 0x0c8f4a10. +// +// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) returns((bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32))[] metaArr_) +func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlocksV2(_paramsArr [][]byte, _txListArr [][]byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlocksV2(&_TaikoL1.TransactOpts, _paramsArr, _txListArr) +} + // ProveBlock is a paid mutator transaction binding the contract method 0x10d008bd. // // Solidity: function proveBlock(uint64 _blockId, bytes _input) returns() @@ -1033,6 +1309,27 @@ func (_TaikoL1 *TaikoL1TransactorSession) ProveBlock(_blockId uint64, _input []b return _TaikoL1.Contract.ProveBlock(&_TaikoL1.TransactOpts, _blockId, _input) } +// ProveBlocks is a paid mutator transaction binding the contract method 0x440b6e18. +// +// Solidity: function proveBlocks(uint64[] _blockIds, bytes[] _inputs, bytes _batchProof) returns() +func (_TaikoL1 *TaikoL1Transactor) ProveBlocks(opts *bind.TransactOpts, _blockIds []uint64, _inputs [][]byte, _batchProof []byte) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "proveBlocks", _blockIds, _inputs, _batchProof) +} + +// ProveBlocks is a paid mutator transaction binding the contract method 0x440b6e18. +// +// Solidity: function proveBlocks(uint64[] _blockIds, bytes[] _inputs, bytes _batchProof) returns() +func (_TaikoL1 *TaikoL1Session) ProveBlocks(_blockIds []uint64, _inputs [][]byte, _batchProof []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProveBlocks(&_TaikoL1.TransactOpts, _blockIds, _inputs, _batchProof) +} + +// ProveBlocks is a paid mutator transaction binding the contract method 0x440b6e18. +// +// Solidity: function proveBlocks(uint64[] _blockIds, bytes[] _inputs, bytes _batchProof) returns() +func (_TaikoL1 *TaikoL1TransactorSession) ProveBlocks(_blockIds []uint64, _inputs [][]byte, _batchProof []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProveBlocks(&_TaikoL1.TransactOpts, _blockIds, _inputs, _batchProof) +} + // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() @@ -1159,25 +1456,25 @@ func (_TaikoL1 *TaikoL1TransactorSession) VerifyBlocks(_maxBlocksToVerify uint64 return _TaikoL1.Contract.VerifyBlocks(&_TaikoL1.TransactOpts, _maxBlocksToVerify) } -// Receive is a paid mutator transaction binding the contract receive function. +// WithdrawBond is a paid mutator transaction binding the contract method 0xc3daab96. // -// Solidity: receive() payable returns() -func (_TaikoL1 *TaikoL1Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TaikoL1.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +// Solidity: function withdrawBond(uint256 _amount) returns() +func (_TaikoL1 *TaikoL1Transactor) WithdrawBond(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "withdrawBond", _amount) } -// Receive is a paid mutator transaction binding the contract receive function. +// WithdrawBond is a paid mutator transaction binding the contract method 0xc3daab96. // -// Solidity: receive() payable returns() -func (_TaikoL1 *TaikoL1Session) Receive() (*types.Transaction, error) { - return _TaikoL1.Contract.Receive(&_TaikoL1.TransactOpts) +// Solidity: function withdrawBond(uint256 _amount) returns() +func (_TaikoL1 *TaikoL1Session) WithdrawBond(_amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.Contract.WithdrawBond(&_TaikoL1.TransactOpts, _amount) } -// Receive is a paid mutator transaction binding the contract receive function. +// WithdrawBond is a paid mutator transaction binding the contract method 0xc3daab96. // -// Solidity: receive() payable returns() -func (_TaikoL1 *TaikoL1TransactorSession) Receive() (*types.Transaction, error) { - return _TaikoL1.Contract.Receive(&_TaikoL1.TransactOpts) +// Solidity: function withdrawBond(uint256 _amount) returns() +func (_TaikoL1 *TaikoL1TransactorSession) WithdrawBond(_amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.Contract.WithdrawBond(&_TaikoL1.TransactOpts, _amount) } // TaikoL1AdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the TaikoL1 contract. @@ -1615,9 +1912,9 @@ func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed(log types.Log) (*TaikoL1Bloc return event, nil } -// TaikoL1BlockProposed0Iterator is returned from FilterBlockProposed0 and is used to iterate over the raw logs and unpacked data for BlockProposed0 events raised by the TaikoL1 contract. -type TaikoL1BlockProposed0Iterator struct { - Event *TaikoL1BlockProposed0 // Event containing the contract specifics and raw log +// TaikoL1BlockProposedV2Iterator is returned from FilterBlockProposedV2 and is used to iterate over the raw logs and unpacked data for BlockProposedV2 events raised by the TaikoL1 contract. +type TaikoL1BlockProposedV2Iterator struct { + Event *TaikoL1BlockProposedV2 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1631,7 +1928,7 @@ type TaikoL1BlockProposed0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockProposed0Iterator) Next() bool { +func (it *TaikoL1BlockProposedV2Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1640,7 +1937,7 @@ func (it *TaikoL1BlockProposed0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProposed0) + it.Event = new(TaikoL1BlockProposedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1655,7 +1952,7 @@ func (it *TaikoL1BlockProposed0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProposed0) + it.Event = new(TaikoL1BlockProposedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1671,63 +1968,52 @@ func (it *TaikoL1BlockProposed0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockProposed0Iterator) Error() error { +func (it *TaikoL1BlockProposedV2Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockProposed0Iterator) Close() error { +func (it *TaikoL1BlockProposedV2Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockProposed0 represents a BlockProposed0 event raised by the TaikoL1 contract. -type TaikoL1BlockProposed0 struct { - BlockId *big.Int - AssignedProver common.Address - LivenessBond *big.Int - Meta TaikoDataBlockMetadata - DepositsProcessed []TaikoDataEthDeposit - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlockProposedV2 represents a BlockProposedV2 event raised by the TaikoL1 contract. +type TaikoL1BlockProposedV2 struct { + BlockId *big.Int + Meta TaikoDataBlockMetadataV2 + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// FilterBlockProposedV2 is a free log retrieval operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposed0Iterator, error) { +// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposedV2(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1BlockProposedV2Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var assignedProverRule []interface{} - for _, assignedProverItem := range assignedProver { - assignedProverRule = append(assignedProverRule, assignedProverItem) - } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposedV2", blockIdRule) if err != nil { return nil, err } - return &TaikoL1BlockProposed0Iterator{contract: _TaikoL1.contract, event: "BlockProposed0", logs: logs, sub: sub}, nil + return &TaikoL1BlockProposedV2Iterator{contract: _TaikoL1.contract, event: "BlockProposedV2", logs: logs, sub: sub}, nil } -// WatchBlockProposed0 is a free log subscription operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// WatchBlockProposedV2 is a free log subscription operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed0, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { +// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposedV2(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposedV2, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var assignedProverRule []interface{} - for _, assignedProverItem := range assignedProver { - assignedProverRule = append(assignedProverRule, assignedProverItem) - } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposedV2", blockIdRule) if err != nil { return nil, err } @@ -1737,8 +2023,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockProposed0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed0", log); err != nil { + event := new(TaikoL1BlockProposedV2) + if err := _TaikoL1.contract.UnpackLog(event, "BlockProposedV2", log); err != nil { return err } event.Raw = log @@ -1759,12 +2045,12 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink }), nil } -// ParseBlockProposed0 is a log parse operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// ParseBlockProposedV2 is a log parse operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed0(log types.Log) (*TaikoL1BlockProposed0, error) { - event := new(TaikoL1BlockProposed0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed0", log); err != nil { +// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposedV2(log types.Log) (*TaikoL1BlockProposedV2, error) { + event := new(TaikoL1BlockProposedV2) + if err := _TaikoL1.contract.UnpackLog(event, "BlockProposedV2", log); err != nil { return nil, err } event.Raw = log @@ -2083,9 +2369,9 @@ func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified0(log types.Log) (*TaikoL1Blo return event, nil } -// TaikoL1InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL1 contract. -type TaikoL1InitializedIterator struct { - Event *TaikoL1Initialized // Event containing the contract specifics and raw log +// TaikoL1BlockVerifiedV2Iterator is returned from FilterBlockVerifiedV2 and is used to iterate over the raw logs and unpacked data for BlockVerifiedV2 events raised by the TaikoL1 contract. +type TaikoL1BlockVerifiedV2Iterator struct { + Event *TaikoL1BlockVerifiedV2 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2099,7 +2385,7 @@ type TaikoL1InitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1InitializedIterator) Next() bool { +func (it *TaikoL1BlockVerifiedV2Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2108,7 +2394,7 @@ func (it *TaikoL1InitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1Initialized) + it.Event = new(TaikoL1BlockVerifiedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2123,7 +2409,7 @@ func (it *TaikoL1InitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1Initialized) + it.Event = new(TaikoL1BlockVerifiedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2139,41 +2425,62 @@ func (it *TaikoL1InitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1InitializedIterator) Error() error { +func (it *TaikoL1BlockVerifiedV2Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1InitializedIterator) Close() error { +func (it *TaikoL1BlockVerifiedV2Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1Initialized represents a Initialized event raised by the TaikoL1 contract. -type TaikoL1Initialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlockVerifiedV2 represents a BlockVerifiedV2 event raised by the TaikoL1 contract. +type TaikoL1BlockVerifiedV2 struct { + BlockId *big.Int + Prover common.Address + BlockHash [32]byte + Tier uint16 + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// FilterBlockVerifiedV2 is a free log retrieval operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoL1InitializedIterator, error) { +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerifiedV2(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1BlockVerifiedV2Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Initialized") + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerifiedV2", blockIdRule, proverRule) if err != nil { return nil, err } - return &TaikoL1InitializedIterator{contract: _TaikoL1.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &TaikoL1BlockVerifiedV2Iterator{contract: _TaikoL1.contract, event: "BlockVerifiedV2", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// WatchBlockVerifiedV2 is a free log subscription operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoL1Initialized) (event.Subscription, error) { +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerifiedV2(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerifiedV2, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Initialized") + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerifiedV2", blockIdRule, proverRule) if err != nil { return nil, err } @@ -2183,8 +2490,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink cha select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1Initialized) - if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(TaikoL1BlockVerifiedV2) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerifiedV2", log); err != nil { return err } event.Raw = log @@ -2205,21 +2512,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink cha }), nil } -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// ParseBlockVerifiedV2 is a log parse operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) ParseInitialized(log types.Log) (*TaikoL1Initialized, error) { - event := new(TaikoL1Initialized) - if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerifiedV2(log types.Log) (*TaikoL1BlockVerifiedV2, error) { + event := new(TaikoL1BlockVerifiedV2) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerifiedV2", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1OwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the TaikoL1 contract. -type TaikoL1OwnershipTransferStartedIterator struct { - Event *TaikoL1OwnershipTransferStarted // Event containing the contract specifics and raw log +// TaikoL1BlockVerifiedV20Iterator is returned from FilterBlockVerifiedV20 and is used to iterate over the raw logs and unpacked data for BlockVerifiedV20 events raised by the TaikoL1 contract. +type TaikoL1BlockVerifiedV20Iterator struct { + Event *TaikoL1BlockVerifiedV20 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2233,7 +2540,7 @@ type TaikoL1OwnershipTransferStartedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1OwnershipTransferStartedIterator) Next() bool { +func (it *TaikoL1BlockVerifiedV20Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2242,7 +2549,7 @@ func (it *TaikoL1OwnershipTransferStartedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1OwnershipTransferStarted) + it.Event = new(TaikoL1BlockVerifiedV20) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2257,7 +2564,7 @@ func (it *TaikoL1OwnershipTransferStartedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1OwnershipTransferStarted) + it.Event = new(TaikoL1BlockVerifiedV20) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2273,36 +2580,760 @@ func (it *TaikoL1OwnershipTransferStartedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1OwnershipTransferStartedIterator) Error() error { +func (it *TaikoL1BlockVerifiedV20Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1OwnershipTransferStartedIterator) Close() error { +func (it *TaikoL1BlockVerifiedV20Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1OwnershipTransferStarted represents a OwnershipTransferStarted event raised by the TaikoL1 contract. -type TaikoL1OwnershipTransferStarted struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlockVerifiedV20 represents a BlockVerifiedV20 event raised by the TaikoL1 contract. +type TaikoL1BlockVerifiedV20 struct { + BlockId *big.Int + Prover common.Address + BlockHash [32]byte + Tier uint16 + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// FilterBlockVerifiedV20 is a free log retrieval operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. // -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferStartedIterator, error) { +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerifiedV20(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1BlockVerifiedV20Iterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerifiedV20", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return &TaikoL1BlockVerifiedV20Iterator{contract: _TaikoL1.contract, event: "BlockVerifiedV20", logs: logs, sub: sub}, nil +} + +// WatchBlockVerifiedV20 is a free log subscription operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerifiedV20(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerifiedV20, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerifiedV20", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1BlockVerifiedV20) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerifiedV20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockVerifiedV20 is a log parse operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerifiedV20(log types.Log) (*TaikoL1BlockVerifiedV20, error) { + event := new(TaikoL1BlockVerifiedV20) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerifiedV20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1BondCreditedIterator is returned from FilterBondCredited and is used to iterate over the raw logs and unpacked data for BondCredited events raised by the TaikoL1 contract. +type TaikoL1BondCreditedIterator struct { + Event *TaikoL1BondCredited // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1BondCreditedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1BondCredited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1BondCredited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1BondCreditedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1BondCreditedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1BondCredited represents a BondCredited event raised by the TaikoL1 contract. +type TaikoL1BondCredited struct { + User common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBondCredited is a free log retrieval operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// +// Solidity: event BondCredited(address indexed user, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterBondCredited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1BondCreditedIterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BondCredited", userRule) + if err != nil { + return nil, err + } + return &TaikoL1BondCreditedIterator{contract: _TaikoL1.contract, event: "BondCredited", logs: logs, sub: sub}, nil +} + +// WatchBondCredited is a free log subscription operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// +// Solidity: event BondCredited(address indexed user, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchBondCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1BondCredited, user []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BondCredited", userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1BondCredited) + if err := _TaikoL1.contract.UnpackLog(event, "BondCredited", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBondCredited is a log parse operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// +// Solidity: event BondCredited(address indexed user, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseBondCredited(log types.Log) (*TaikoL1BondCredited, error) { + event := new(TaikoL1BondCredited) + if err := _TaikoL1.contract.UnpackLog(event, "BondCredited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1BondDebitedIterator is returned from FilterBondDebited and is used to iterate over the raw logs and unpacked data for BondDebited events raised by the TaikoL1 contract. +type TaikoL1BondDebitedIterator struct { + Event *TaikoL1BondDebited // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1BondDebitedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1BondDebited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1BondDebited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1BondDebitedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1BondDebitedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1BondDebited represents a BondDebited event raised by the TaikoL1 contract. +type TaikoL1BondDebited struct { + User common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBondDebited is a free log retrieval operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// +// Solidity: event BondDebited(address indexed user, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterBondDebited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1BondDebitedIterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BondDebited", userRule) + if err != nil { + return nil, err + } + return &TaikoL1BondDebitedIterator{contract: _TaikoL1.contract, event: "BondDebited", logs: logs, sub: sub}, nil +} + +// WatchBondDebited is a free log subscription operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// +// Solidity: event BondDebited(address indexed user, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchBondDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1BondDebited, user []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BondDebited", userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1BondDebited) + if err := _TaikoL1.contract.UnpackLog(event, "BondDebited", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBondDebited is a log parse operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// +// Solidity: event BondDebited(address indexed user, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseBondDebited(log types.Log) (*TaikoL1BondDebited, error) { + event := new(TaikoL1BondDebited) + if err := _TaikoL1.contract.UnpackLog(event, "BondDebited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1CalldataTxListIterator is returned from FilterCalldataTxList and is used to iterate over the raw logs and unpacked data for CalldataTxList events raised by the TaikoL1 contract. +type TaikoL1CalldataTxListIterator struct { + Event *TaikoL1CalldataTxList // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1CalldataTxListIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1CalldataTxList) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1CalldataTxList) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1CalldataTxListIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1CalldataTxListIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1CalldataTxList represents a CalldataTxList event raised by the TaikoL1 contract. +type TaikoL1CalldataTxList struct { + BlockId *big.Int + TxList []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCalldataTxList is a free log retrieval operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. +// +// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList) +func (_TaikoL1 *TaikoL1Filterer) FilterCalldataTxList(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1CalldataTxListIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CalldataTxList", blockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1CalldataTxListIterator{contract: _TaikoL1.contract, event: "CalldataTxList", logs: logs, sub: sub}, nil +} + +// WatchCalldataTxList is a free log subscription operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. +// +// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList) +func (_TaikoL1 *TaikoL1Filterer) WatchCalldataTxList(opts *bind.WatchOpts, sink chan<- *TaikoL1CalldataTxList, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CalldataTxList", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1CalldataTxList) + if err := _TaikoL1.contract.UnpackLog(event, "CalldataTxList", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCalldataTxList is a log parse operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. +// +// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList) +func (_TaikoL1 *TaikoL1Filterer) ParseCalldataTxList(log types.Log) (*TaikoL1CalldataTxList, error) { + event := new(TaikoL1CalldataTxList) + if err := _TaikoL1.contract.UnpackLog(event, "CalldataTxList", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL1 contract. +type TaikoL1InitializedIterator struct { + Event *TaikoL1Initialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1InitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1Initialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1Initialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1InitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1InitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1Initialized represents a Initialized event raised by the TaikoL1 contract. +type TaikoL1Initialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoL1InitializedIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &TaikoL1InitializedIterator{contract: _TaikoL1.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoL1Initialized) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1Initialized) + if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) ParseInitialized(log types.Log) (*TaikoL1Initialized, error) { + event := new(TaikoL1Initialized) + if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1OwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferStartedIterator struct { + Event *TaikoL1OwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1OwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1OwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1OwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1OwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1OwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1OwnershipTransferStarted represents a OwnershipTransferStarted event raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) @@ -3207,9 +4238,9 @@ func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContested(log types.Log) (*Taiko return event, nil } -// TaikoL1TransitionContested0Iterator is returned from FilterTransitionContested0 and is used to iterate over the raw logs and unpacked data for TransitionContested0 events raised by the TaikoL1 contract. -type TaikoL1TransitionContested0Iterator struct { - Event *TaikoL1TransitionContested0 // Event containing the contract specifics and raw log +// TaikoL1TransitionContestedV2Iterator is returned from FilterTransitionContestedV2 and is used to iterate over the raw logs and unpacked data for TransitionContestedV2 events raised by the TaikoL1 contract. +type TaikoL1TransitionContestedV2Iterator struct { + Event *TaikoL1TransitionContestedV2 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3223,7 +4254,7 @@ type TaikoL1TransitionContested0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TransitionContested0Iterator) Next() bool { +func (it *TaikoL1TransitionContestedV2Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3232,7 +4263,7 @@ func (it *TaikoL1TransitionContested0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TransitionContested0) + it.Event = new(TaikoL1TransitionContestedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3247,7 +4278,7 @@ func (it *TaikoL1TransitionContested0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TransitionContested0) + it.Event = new(TaikoL1TransitionContestedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3263,55 +4294,56 @@ func (it *TaikoL1TransitionContested0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TransitionContested0Iterator) Error() error { +func (it *TaikoL1TransitionContestedV2Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TransitionContested0Iterator) Close() error { +func (it *TaikoL1TransitionContestedV2Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TransitionContested0 represents a TransitionContested0 event raised by the TaikoL1 contract. -type TaikoL1TransitionContested0 struct { +// TaikoL1TransitionContestedV2 represents a TransitionContestedV2 event raised by the TaikoL1 contract. +type TaikoL1TransitionContestedV2 struct { BlockId *big.Int Tran TaikoDataTransition Contester common.Address ContestBond *big.Int Tier uint16 + ProposedIn uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionContested0 is a free log retrieval operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// FilterTransitionContestedV2 is a free log retrieval operation binding the contract event 0x53b2379d5e9bcacdfe56b4a51c3fd92ebfff4b1e8e8638f7f7e85163260a6f99. // -// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) -func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionContested0Iterator, error) { +// Solidity: event TransitionContestedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier, uint64 proposedIn) +func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContestedV2(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionContestedV2Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionContested0", blockIdRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionContestedV2", blockIdRule) if err != nil { return nil, err } - return &TaikoL1TransitionContested0Iterator{contract: _TaikoL1.contract, event: "TransitionContested0", logs: logs, sub: sub}, nil + return &TaikoL1TransitionContestedV2Iterator{contract: _TaikoL1.contract, event: "TransitionContestedV2", logs: logs, sub: sub}, nil } -// WatchTransitionContested0 is a free log subscription operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// WatchTransitionContestedV2 is a free log subscription operation binding the contract event 0x53b2379d5e9bcacdfe56b4a51c3fd92ebfff4b1e8e8638f7f7e85163260a6f99. // -// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) -func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested0(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionContested0, blockId []*big.Int) (event.Subscription, error) { +// Solidity: event TransitionContestedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier, uint64 proposedIn) +func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContestedV2(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionContestedV2, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionContested0", blockIdRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionContestedV2", blockIdRule) if err != nil { return nil, err } @@ -3321,8 +4353,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested0(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TransitionContested0) - if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested0", log); err != nil { + event := new(TaikoL1TransitionContestedV2) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionContestedV2", log); err != nil { return err } event.Raw = log @@ -3343,12 +4375,12 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested0(opts *bind.WatchOpts, }), nil } -// ParseTransitionContested0 is a log parse operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// ParseTransitionContestedV2 is a log parse operation binding the contract event 0x53b2379d5e9bcacdfe56b4a51c3fd92ebfff4b1e8e8638f7f7e85163260a6f99. // -// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) -func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContested0(log types.Log) (*TaikoL1TransitionContested0, error) { - event := new(TaikoL1TransitionContested0) - if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested0", log); err != nil { +// Solidity: event TransitionContestedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier, uint64 proposedIn) +func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContestedV2(log types.Log) (*TaikoL1TransitionContestedV2, error) { + event := new(TaikoL1TransitionContestedV2) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionContestedV2", log); err != nil { return nil, err } event.Raw = log @@ -3503,9 +4535,9 @@ func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved(log types.Log) (*TaikoL1T return event, nil } -// TaikoL1TransitionProved0Iterator is returned from FilterTransitionProved0 and is used to iterate over the raw logs and unpacked data for TransitionProved0 events raised by the TaikoL1 contract. -type TaikoL1TransitionProved0Iterator struct { - Event *TaikoL1TransitionProved0 // Event containing the contract specifics and raw log +// TaikoL1TransitionProvedV2Iterator is returned from FilterTransitionProvedV2 and is used to iterate over the raw logs and unpacked data for TransitionProvedV2 events raised by the TaikoL1 contract. +type TaikoL1TransitionProvedV2Iterator struct { + Event *TaikoL1TransitionProvedV2 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3519,7 +4551,7 @@ type TaikoL1TransitionProved0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TransitionProved0Iterator) Next() bool { +func (it *TaikoL1TransitionProvedV2Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3528,7 +4560,7 @@ func (it *TaikoL1TransitionProved0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TransitionProved0) + it.Event = new(TaikoL1TransitionProvedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3543,7 +4575,7 @@ func (it *TaikoL1TransitionProved0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TransitionProved0) + it.Event = new(TaikoL1TransitionProvedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3559,55 +4591,56 @@ func (it *TaikoL1TransitionProved0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TransitionProved0Iterator) Error() error { +func (it *TaikoL1TransitionProvedV2Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TransitionProved0Iterator) Close() error { +func (it *TaikoL1TransitionProvedV2Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TransitionProved0 represents a TransitionProved0 event raised by the TaikoL1 contract. -type TaikoL1TransitionProved0 struct { +// TaikoL1TransitionProvedV2 represents a TransitionProvedV2 event raised by the TaikoL1 contract. +type TaikoL1TransitionProvedV2 struct { BlockId *big.Int Tran TaikoDataTransition Prover common.Address ValidityBond *big.Int Tier uint16 + ProposedIn uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionProved0 is a free log retrieval operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// FilterTransitionProvedV2 is a free log retrieval operation binding the contract event 0x11a9112e5724f21b226e2535a95a264a80c9626ed4c0923faaa9fa6556467488. // -// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) -func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionProved0Iterator, error) { +// Solidity: event TransitionProvedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier, uint64 proposedIn) +func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProvedV2(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionProvedV2Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionProved0", blockIdRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionProvedV2", blockIdRule) if err != nil { return nil, err } - return &TaikoL1TransitionProved0Iterator{contract: _TaikoL1.contract, event: "TransitionProved0", logs: logs, sub: sub}, nil + return &TaikoL1TransitionProvedV2Iterator{contract: _TaikoL1.contract, event: "TransitionProvedV2", logs: logs, sub: sub}, nil } -// WatchTransitionProved0 is a free log subscription operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// WatchTransitionProvedV2 is a free log subscription operation binding the contract event 0x11a9112e5724f21b226e2535a95a264a80c9626ed4c0923faaa9fa6556467488. // -// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) -func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved0(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionProved0, blockId []*big.Int) (event.Subscription, error) { +// Solidity: event TransitionProvedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier, uint64 proposedIn) +func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProvedV2(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionProvedV2, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionProved0", blockIdRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionProvedV2", blockIdRule) if err != nil { return nil, err } @@ -3617,8 +4650,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved0(opts *bind.WatchOpts, si select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TransitionProved0) - if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved0", log); err != nil { + event := new(TaikoL1TransitionProvedV2) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionProvedV2", log); err != nil { return err } event.Raw = log @@ -3639,12 +4672,12 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved0(opts *bind.WatchOpts, si }), nil } -// ParseTransitionProved0 is a log parse operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// ParseTransitionProvedV2 is a log parse operation binding the contract event 0x11a9112e5724f21b226e2535a95a264a80c9626ed4c0923faaa9fa6556467488. // -// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) -func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved0(log types.Log) (*TaikoL1TransitionProved0, error) { - event := new(TaikoL1TransitionProved0) - if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved0", log); err != nil { +// Solidity: event TransitionProvedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier, uint64 proposedIn) +func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProvedV2(log types.Log) (*TaikoL1TransitionProvedV2, error) { + event := new(TaikoL1TransitionProvedV2) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionProvedV2", log); err != nil { return nil, err } event.Raw = log diff --git a/packages/eventindexer/contracts/taikotoken/TaikoToken.go b/packages/eventindexer/contracts/taikotoken/TaikoToken.go index 02d6bf56a90..cd9c9694c8b 100644 --- a/packages/eventindexer/contracts/taikotoken/TaikoToken.go +++ b/packages/eventindexer/contracts/taikotoken/TaikoToken.go @@ -37,7 +37,7 @@ type ERC20VotesUpgradeableCheckpoint struct { // TaikoTokenMetaData contains all meta data concerning the TaikoToken contract. var TaikoTokenMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchTransfer\",\"inputs\":[{\"name\":\"recipients\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20VotesUpgradeable.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchTransfer\",\"inputs\":[{\"name\":\"recipients\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20VotesUpgradeable.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoTokenABI is the input ABI used to generate the binding from. diff --git a/packages/eventindexer/scripts/abigen.sh b/packages/eventindexer/scripts/abigen.sh index c49c3e49565..5addfeb0427 100755 --- a/packages/eventindexer/scripts/abigen.sh +++ b/packages/eventindexer/scripts/abigen.sh @@ -1,11 +1,11 @@ -#!/bin/sh +#!/bin/bash if [ ! -d "../protocol/out" ]; then echo "ABI not generated in protocol package yet. Please run npm install && pnpm run compile in ../protocol" exit 1 fi -paths=("TaikoL1.sol" "Bridge.sol" "SgxVerifier.sol" "TaikoToken.sol") +paths=("layer1/TaikoL1.sol" "layer1/Bridge.sol" "layer1/SgxVerifier.sol" "layer1/TaikoToken.sol") names=("TaikoL1" "Bridge" "SgxVerifier" "TaikoToken") diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3bd097c118f..9e4bd3b8d3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -10,10 +10,10 @@ importers: devDependencies: lefthook: specifier: ^1.6.10 - version: 1.6.10 + version: 1.6.18 prettier: specifier: ^3.2.5 - version: 3.2.5 + version: 3.3.2 packages/blobstorage: {} @@ -21,62 +21,62 @@ importers: dependencies: '@moralisweb3/common-evm-utils': specifier: ^2.26.1 - version: 2.26.1(debug@4.3.4) + version: 2.26.7(debug@4.3.5) '@wagmi/connectors': specifier: ^4.3.1 - version: 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + version: 4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) '@wagmi/core': specifier: ^2.8.1 - version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + version: 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) '@walletconnect/ethereum-provider': specifier: ^2.12.2 - version: 2.12.2(react@18.3.1) + version: 2.13.3(react@18.3.1) '@walletconnect/modal': specifier: ^2.6.2 version: 2.6.2(react@18.3.1) '@web3modal/wagmi': specifier: ^4.1.11 - version: 4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.9.31) + version: 4.2.3(@wagmi/connectors@4.3.10)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5) '@zerodevx/svelte-toast': specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.15) + version: 0.9.5(svelte@4.2.18) axios: specifier: ^1.6.7 - version: 1.6.8(debug@4.3.4) + version: 1.7.2(debug@4.3.5) buffer: specifier: ^6.0.3 version: 6.0.3 debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.5 events: specifier: ^3.3.0 version: 3.3.0 moralis: specifier: ^2.26.1 - version: 2.26.1(debug@4.3.4) + version: 2.26.7(debug@4.3.5) object-hash: specifier: ^3.0.0 version: 3.0.0 svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.15) + version: 4.0.0(svelte@4.2.18) viem: specifier: ^2.9.29 - version: 2.9.31(typescript@5.4.5) + version: 2.16.5(typescript@5.5.3)(zod@3.23.8) devDependencies: '@playwright/test': specifier: ^1.43.1 - version: 1.43.1 + version: 1.45.0 '@sveltejs/adapter-auto': specifier: ^3.2.0 - version: 3.2.0(@sveltejs/kit@2.5.22) + version: 3.2.2(@sveltejs/kit@2.5.24) '@sveltejs/kit': specifier: ^2.5.21 - version: 2.5.22(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) + version: 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.15)(vite@5.2.11) + version: 3.1.1(svelte@4.2.18)(vite@5.3.2) '@types/debug': specifier: ^4.1.12 version: 4.1.12 @@ -85,28 +85,28 @@ importers: version: 3.0.6 '@typescript-eslint/eslint-plugin': specifier: ^7.8.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^7.8.0 - version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) '@vitest/coverage-v8': specifier: ^1.4.0 version: 1.6.0(vitest@1.6.0) '@wagmi/cli': specifier: ^2.1.4 - version: 2.1.4(typescript@5.4.5) + version: 2.1.13(typescript@5.5.3) abitype: specifier: ^1.0.2 - version: 1.0.2(typescript@5.4.5) + version: 1.0.5(typescript@5.5.3)(zod@3.23.8) ajv: specifier: ^8.12.0 - version: 8.13.0 + version: 8.16.0 autoprefixer: specifier: ^10.4.18 - version: 10.4.19(postcss@8.4.38) + version: 10.4.19(postcss@8.4.39) daisyui: specifier: ^4.10.3 - version: 4.10.5(postcss@8.4.38) + version: 4.12.10(postcss@8.4.39) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -121,88 +121,88 @@ importers: version: 12.1.0(eslint@8.57.0) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.57.0)(svelte@4.2.15) + version: 2.41.0(eslint@8.57.0)(svelte@4.2.18) ethereum-address: specifier: ^0.0.4 version: 0.0.4 jsdom: specifier: ^24.0.0 - version: 24.0.0 + version: 24.1.0 lokijs: specifier: ^1.5.12 version: 1.5.12 postcss: specifier: ^8.4.38 - version: 8.4.38 + version: 8.4.39 prettier: specifier: ^3.2.5 - version: 3.2.5 + version: 3.3.2 prettier-plugin-svelte: specifier: ^3.2.3 - version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) + version: 3.2.5(prettier@3.3.2)(svelte@4.2.18) svelte: specifier: ^4.2.15 - version: 4.2.15 + version: 4.2.18 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.25.2)(postcss@8.4.38)(svelte@4.2.15) + version: 3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18) tailwindcss: specifier: ^3.4.3 - version: 3.4.3 + version: 3.4.4 ts-morph: specifier: ^19.0.0 version: 19.0.0 tslib: specifier: ^2.6.2 - version: 2.6.2 + version: 2.6.3 typescript: specifier: ^5.4.3 - version: 5.4.5 + version: 5.5.3 vite: specifier: ^5.2.10 - version: 5.2.11(@types/node@20.12.8) + version: 5.3.2(@types/node@20.14.9) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.5)(vite@5.2.11) + version: 4.3.2(typescript@5.5.3)(vite@5.3.2) vitest: specifier: ^1.5.3 - version: 1.6.0(jsdom@24.0.0) + version: 1.6.0(jsdom@24.1.0) vitest-fetch-mock: specifier: ^0.2.2 version: 0.2.2(vitest@1.6.0) vitest-mock-extended: specifier: 1.3.1 - version: 1.3.1(typescript@5.4.5)(vitest@1.6.0) + version: 1.3.1(typescript@5.5.3)(vitest@1.6.0) packages/docs-site: dependencies: '@astrojs/check': specifier: ^0.8.0 - version: 0.8.3(prettier@3.2.5)(typescript@5.4.5) + version: 0.8.3(prettier@3.3.2)(typescript@5.5.3) '@astrojs/starlight': specifier: ^0.25.0 - version: 0.25.3(astro@4.13.1) + version: 0.25.4(astro@4.13.3) astro: specifier: ^4.11.5 - version: 4.13.1(typescript@5.4.5) + version: 4.13.3(typescript@5.5.3) astro-og-canvas: specifier: ^0.5.0 - version: 0.5.0(astro@4.13.1) + version: 0.5.1(astro@4.13.3) canvaskit-wasm: specifier: ^0.39.1 version: 0.39.1 sharp: specifier: ^0.33.3 - version: 0.33.3 + version: 0.33.4 starlight-links-validator: specifier: ^0.8.0 - version: 0.8.0(@astrojs/starlight@0.25.3)(astro@4.13.1) + version: 0.8.0(@astrojs/starlight@0.25.4)(astro@4.13.3) starlight-openapi: specifier: ^0.6.3 - version: 0.6.3(@astrojs/markdown-remark@5.2.0)(@astrojs/starlight@0.25.3)(astro@4.13.1)(openapi-types@12.1.3) + version: 0.6.4(@astrojs/markdown-remark@5.2.0)(@astrojs/starlight@0.25.4)(astro@4.13.3)(openapi-types@12.1.3) typescript: specifier: ^5.4.5 - version: 5.4.5 + version: 5.5.3 packages/eventindexer: {} @@ -214,47 +214,47 @@ importers: dependencies: '@wagmi/core': specifier: ^2.8.0 - version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + version: 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) axios: specifier: ^1.6.7 - version: 1.6.8(debug@4.3.4) + version: 1.7.2(debug@4.3.5) debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.5 svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.15) + version: 4.0.0(svelte@4.2.18) viem: specifier: ^2.9.29 - version: 2.9.31(typescript@5.4.5) + version: 2.16.5(typescript@5.5.3)(zod@3.23.8) devDependencies: '@playwright/test': specifier: ^1.43.1 - version: 1.43.1 + version: 1.45.0 '@sveltejs/adapter-auto': specifier: ^3.2.0 - version: 3.2.0(@sveltejs/kit@2.5.22) + version: 3.2.2(@sveltejs/kit@2.5.24) '@sveltejs/kit': specifier: ^2.5.21 - version: 2.5.22(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3) + version: 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.15)(vite@4.5.3) + version: 3.1.1(svelte@4.2.18)(vite@4.5.3) '@tailwindcss/nesting': specifier: 0.0.0-insiders.565cd3e - version: 0.0.0-insiders.565cd3e(postcss@8.4.38) + version: 0.0.0-insiders.565cd3e(postcss@8.4.39) '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) autoprefixer: specifier: ^10.4.18 - version: 10.4.19(postcss@8.4.38) + version: 10.4.19(postcss@8.4.39) daisyui: specifier: ^4.10.1 - version: 4.10.5(postcss@8.4.38) + version: 4.12.10(postcss@8.4.39) eslint: specifier: ^8.56.0 version: 8.57.0 @@ -263,55 +263,55 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.57.0)(svelte@4.2.15) + version: 2.41.0(eslint@8.57.0)(svelte@4.2.18) postcss: specifier: ^8.4.38 - version: 8.4.38 + version: 8.4.39 postcss-import: specifier: ^16.1.0 - version: 16.1.0(postcss@8.4.38) + version: 16.1.0(postcss@8.4.39) postcss-nesting: specifier: ^12.1.0 - version: 12.1.2(postcss@8.4.38) + version: 12.1.5(postcss@8.4.39) prettier: specifier: ^3.2.5 - version: 3.2.5 + version: 3.3.2 prettier-plugin-svelte: specifier: ^3.2.2 - version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) + version: 3.2.5(prettier@3.3.2)(svelte@4.2.18) svelte: specifier: ^4.2.13 - version: 4.2.15 + version: 4.2.18 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.25.2)(postcss@8.4.38)(svelte@4.2.15) + version: 3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18) tailwindcss: specifier: ^3.4.3 - version: 3.4.3 + version: 3.4.4 tslib: specifier: ^2.6.2 - version: 2.6.2 + version: 2.6.3 typescript: specifier: ^5.4.3 - version: 5.4.5 + version: 5.5.3 vite: specifier: ^4.5.3 version: 4.5.3 vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.5)(vite@4.5.3) + version: 4.3.2(typescript@5.5.3)(vite@4.5.3) vitest: specifier: ^1.5.0 - version: 1.6.0(jsdom@24.0.0) + version: 1.6.0(jsdom@24.1.0) packages/nfts: dependencies: '@aws-sdk/client-s3': specifier: ^3.574.0 - version: 3.577.0 + version: 3.608.0 '@aws-sdk/lib-storage': specifier: ^3.574.0 - version: 3.578.0(@aws-sdk/client-s3@3.577.0) + version: 3.608.0(@aws-sdk/client-s3@3.608.0) '@openzeppelin/contracts': specifier: 5.0.2 version: 5.0.2 @@ -326,16 +326,16 @@ importers: version: link:../supplementary-contracts convert-csv-to-json: specifier: ^2.46.0 - version: 2.46.0 + version: 2.48.0 dotenv: specifier: ^16.4.5 version: 16.4.5 ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/beb836e33f9a207f4927abb7cd09ad0afe4b3f9f + version: github.com/foundry-rs/forge-std/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32 ipfs-http-client: specifier: ^60.0.1 version: 60.0.1 @@ -344,29 +344,29 @@ importers: version: 0.4.0 murky: specifier: github:dmfxyz/murky - version: https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d + version: github.com/dmfxyz/murky/5feccd1253d7da820f7cccccdedf64471025455d p256-verifier: specifier: github:taikoxyz/p256-verifier#v0.1.0 - version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da + version: github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da sharp: specifier: ^0.33.3 - version: 0.33.3 + version: 0.33.4 solady: specifier: github:Vectorized/solady#v0.0.167 - version: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d + version: github.com/Vectorized/solady/de0f336d2033d04e0f77c923d639c7fbffd48b6d solidity-stringutils: specifier: github:Arachnid/solidity-stringutils - version: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461 + version: github.com/Arachnid/solidity-stringutils/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461 devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.8 + version: 20.14.9 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) eslint: specifier: ^8.51.0 version: 8.57.0 @@ -375,19 +375,19 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0) + version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0) eslint-plugin-node: specifier: ^11.1.0 version: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.57.0) + version: 6.4.0(eslint@8.57.0) ethers: specifier: ^5.7.2 version: 5.7.2 @@ -396,13 +396,13 @@ importers: version: 0.8.24 solhint: specifier: ^4.5.4 - version: 4.5.4(typescript@5.4.5) + version: 4.5.4(typescript@5.5.3) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) + version: 10.9.2(@types/node@20.14.9)(typescript@5.5.3) typescript: specifier: ^5.2.2 - version: 5.4.5 + version: 5.5.3 packages/protocol: dependencies: @@ -414,38 +414,38 @@ importers: version: 4.9.6 ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std#v1.7.5 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 + version: github.com/foundry-rs/forge-std/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 merkletreejs: specifier: ^0.4.0 version: 0.4.0 optimism: specifier: github:ethereum-optimism/optimism#v1.8.0 - version: https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8 + version: github.com/ethereum-optimism/optimism/ab3a54febb36398539fd3b849c222b7e70169dc8 p256-verifier: specifier: github:taikoxyz/p256-verifier#v0.1.0 - version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da + version: github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da risc0-ethereum: specifier: github:risc0/risc0-ethereum#v1.0.0 - version: risc0-ethereum#v1.0.0@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900 + version: github.com/risc0/risc0-ethereum/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900 solady: specifier: github:Vectorized/solady#v0.0.231 - version: https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b + version: github.com/Vectorized/solady/a12a2575c899a328c1bafdada632dabbff27cf6b sp1-contracts: specifier: github:succinctlabs/sp1-contracts#v2.0.0 - version: sp1-contracts#v2.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb + version: github.com/succinctlabs/sp1-contracts/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.8 + version: 20.14.9 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) eslint: specifier: ^8.51.0 version: 8.57.0 @@ -454,19 +454,19 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0) + version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0) eslint-plugin-node: specifier: ^11.1.0 version: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.57.0) + version: 6.4.0(eslint@8.57.0) ethers: specifier: ^5.7.2 version: 5.7.2 @@ -475,13 +475,13 @@ importers: version: 0.8.24 solhint: specifier: ^5.0.3 - version: 5.0.3(typescript@5.4.5) + version: 5.0.3(typescript@5.5.3) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) + version: 10.9.2(@types/node@20.14.9)(typescript@5.5.3) typescript: specifier: ^5.2.2 - version: 5.4.5 + version: 5.5.3 packages/relayer: {} @@ -492,65 +492,65 @@ importers: version: 1.0.6 '@wagmi/cli': specifier: ^2.1.8 - version: 2.1.15(typescript@5.4.5) + version: 2.1.13(typescript@5.5.3) '@wagmi/connectors': specifier: ^5.0.6 - version: 5.1.2(@wagmi/core@2.13.1)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.18.8) + version: 5.0.21(@wagmi/core@2.11.6)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) '@wagmi/core': specifier: ^2.10.4 - version: 2.13.1(react@18.3.1)(typescript@5.4.5)(viem@2.18.8) + version: 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) '@web3modal/common': specifier: ^5.0.11 - version: 5.0.11 + version: 5.1.0 '@web3modal/ui': specifier: ^4.2.2 version: 4.2.3 '@web3modal/wagmi': specifier: ^4.2.2 - version: 4.2.3(@wagmi/connectors@5.1.2)(@wagmi/core@2.13.1)(react@18.3.1)(viem@2.18.8) + version: 4.2.3(@wagmi/connectors@5.0.21)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5) '@zerodevx/svelte-toast': specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.15) + version: 0.9.5(svelte@4.2.18) autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.38) + version: 10.4.19(postcss@8.4.39) daisyui: specifier: ^4.10.1 - version: 4.12.10(postcss@8.4.38) + version: 4.12.10(postcss@8.4.39) dayjs: specifier: ^1.11.10 version: 1.11.11 debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.5 minidenticons: specifier: ^4.2.1 version: 4.2.1 postcss: specifier: ^8.4.38 - version: 8.4.38 + version: 8.4.39 tailwindcss: specifier: ^3.4.3 - version: 3.4.3 + version: 3.4.4 viem: specifier: ^2.13.1 - version: 2.18.8(typescript@5.4.5)(zod@3.23.6) + version: 2.16.5(typescript@5.5.3)(zod@3.23.8) devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 - version: 1.6.1(react@18.3.1) + version: 1.6.0(react@18.3.1) '@playwright/test': specifier: ^1.28.1 - version: 1.43.1 + version: 1.45.0 '@sveltejs/adapter-auto': specifier: ^3.0.0 - version: 3.2.0(@sveltejs/kit@2.5.22) + version: 3.2.2(@sveltejs/kit@2.5.24) '@sveltejs/kit': specifier: ^2.5.21 - version: 2.5.22(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) + version: 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.1.0(svelte@4.2.15)(vite@5.2.11) + version: 3.1.1(svelte@4.2.18)(vite@5.3.2) '@taiko/ui-lib': specifier: workspace:* version: link:../ui-lib @@ -562,16 +562,16 @@ importers: version: 29.5.12 '@types/node': specifier: ^20.12.7 - version: 20.12.8 + version: 20.14.9 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^7.0.0 - version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) convert-csv-to-json: specifier: ^2.44.0 - version: 2.46.0 + version: 2.48.0 dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -586,55 +586,55 @@ importers: version: 12.1.0(eslint@8.57.0) eslint-plugin-storybook: specifier: ^0.8.0 - version: 0.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 0.8.0(eslint@8.57.0)(typescript@5.5.3) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.57.0)(svelte@4.2.15) + version: 2.41.0(eslint@8.57.0)(svelte@4.2.18) p-map: specifier: ^7.0.2 version: 7.0.2 prettier: specifier: ^3.1.1 - version: 3.2.5 + version: 3.3.2 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) + version: 3.2.5(prettier@3.3.2)(svelte@4.2.18) raw-body: specifier: ^2.5.2 version: 2.5.2 svelte: specifier: ^4.2.7 - version: 4.2.15 + version: 4.2.18 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.25.2)(postcss@8.4.38)(svelte@4.2.15) + version: 3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18) svelte-copy: specifier: ^1.4.2 - version: 1.4.2(svelte@4.2.15) + version: 1.4.2(svelte@4.2.18) svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.15) + version: 4.0.0(svelte@4.2.18) svelte-scrolling: specifier: ^1.4.0 - version: 1.4.0(svelte@4.2.15) + version: 1.4.0(svelte@4.2.18) tailwindcss-image-rendering: specifier: ^1.0.2 version: 1.0.2 tslib: specifier: ^2.4.1 - version: 2.6.2 + version: 2.6.3 typescript: specifier: ^5.0.0 - version: 5.4.5 + version: 5.5.3 vite: specifier: ^5.0.3 - version: 5.2.11(@types/node@20.12.8) + version: 5.3.2(@types/node@20.14.9) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.5)(vite@5.2.11) + version: 4.3.2(typescript@5.5.3)(vite@5.3.2) vitest: specifier: ^1.2.0 - version: 1.6.0(@types/node@20.12.8) + version: 1.6.0(@types/node@20.14.9) which: specifier: ^4.0.0 version: 4.0.0 @@ -649,29 +649,29 @@ importers: version: 4.9.6 ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std#v1.7.5 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 + version: github.com/foundry-rs/forge-std/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 merkletreejs: specifier: ^0.4.0 version: 0.4.0 p256-verifier: specifier: github:taikoxyz/p256-verifier#v0.1.0 - version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da + version: github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da solady: specifier: github:Vectorized/solady#v0.0.167 - version: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d + version: github.com/Vectorized/solady/de0f336d2033d04e0f77c923d639c7fbffd48b6d devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.8 + version: 20.14.9 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) eslint: specifier: ^8.51.0 version: 8.57.0 @@ -680,19 +680,19 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0) + version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0) eslint-plugin-node: specifier: ^11.1.0 version: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.57.0) + version: 6.4.0(eslint@8.57.0) ethers: specifier: ^5.7.2 version: 5.7.2 @@ -701,13 +701,13 @@ importers: version: 0.8.24 solhint: specifier: ^4.5.4 - version: 4.5.4(typescript@5.4.5) + version: 4.5.4(typescript@5.5.3) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) + version: 10.9.2(@types/node@20.14.9)(typescript@5.5.3) typescript: specifier: ^5.2.2 - version: 5.4.5 + version: 5.5.3 packages/taiko-client: {} @@ -721,65 +721,65 @@ importers: version: link:../ui-lib '@wagmi/cli': specifier: ^2.1.4 - version: 2.1.4(typescript@5.4.5) + version: 2.1.13(typescript@5.5.3) '@wagmi/connectors': specifier: ^4.1.18 - version: 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.18.8) + version: 4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) '@wagmi/core': specifier: ^2.8.0 - version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.18.8) + version: 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) '@web3modal/common': specifier: ^5.0.11 - version: 5.0.11 + version: 5.1.0 '@web3modal/ui': specifier: ^4.1.1 - version: 4.1.11 + version: 4.2.3 '@web3modal/wagmi': specifier: ^4.1.1 - version: 4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.18.8) + version: 4.2.3(@wagmi/connectors@4.3.10)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5) '@zerodevx/svelte-toast': specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.15) + version: 0.9.5(svelte@4.2.18) autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.38) + version: 10.4.19(postcss@8.4.39) daisyui: specifier: ^4.10.1 - version: 4.10.5(postcss@8.4.38) + version: 4.12.10(postcss@8.4.39) dayjs: specifier: ^1.11.10 version: 1.11.11 debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.5 minidenticons: specifier: ^4.2.1 version: 4.2.1 postcss: specifier: ^8.4.38 - version: 8.4.38 + version: 8.4.39 tailwindcss: specifier: ^3.4.3 - version: 3.4.3 + version: 3.4.4 viem: specifier: ^2.15.1 - version: 2.18.8(typescript@5.4.5)(zod@3.23.6) + version: 2.16.5(typescript@5.5.3)(zod@3.23.8) devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 - version: 1.3.3(react@18.3.1) + version: 1.6.0(react@18.3.1) '@playwright/test': specifier: ^1.28.1 - version: 1.43.1 + version: 1.45.0 '@sveltejs/adapter-auto': specifier: ^3.0.0 - version: 3.2.0(@sveltejs/kit@2.5.22) + version: 3.2.2(@sveltejs/kit@2.5.24) '@sveltejs/kit': specifier: ^2.5.21 - version: 2.5.22(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) + version: 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.15)(vite@5.2.11) + version: 3.1.1(svelte@4.2.18)(vite@5.3.2) '@types/eslint': specifier: ^8.56.0 version: 8.56.10 @@ -788,16 +788,16 @@ importers: version: 29.5.12 '@types/node': specifier: ^20.12.7 - version: 20.12.8 + version: 20.14.9 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^7.0.0 - version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) convert-csv-to-json: specifier: ^2.44.0 - version: 2.46.0 + version: 2.48.0 dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -812,55 +812,55 @@ importers: version: 12.1.0(eslint@8.57.0) eslint-plugin-storybook: specifier: ^0.8.0 - version: 0.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 0.8.0(eslint@8.57.0)(typescript@5.5.3) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.57.0)(svelte@4.2.15) + version: 2.41.0(eslint@8.57.0)(svelte@4.2.18) p-map: specifier: ^7.0.2 version: 7.0.2 prettier: specifier: ^3.1.1 - version: 3.2.5 + version: 3.3.2 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) + version: 3.2.5(prettier@3.3.2)(svelte@4.2.18) raw-body: specifier: ^2.5.2 version: 2.5.2 svelte: specifier: ^4.2.7 - version: 4.2.15 + version: 4.2.18 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.25.2)(postcss@8.4.38)(svelte@4.2.15) + version: 3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18) svelte-copy: specifier: ^1.4.2 - version: 1.4.2(svelte@4.2.15) + version: 1.4.2(svelte@4.2.18) svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.15) + version: 4.0.0(svelte@4.2.18) svelte-scrolling: specifier: ^1.4.0 - version: 1.4.0(svelte@4.2.15) + version: 1.4.0(svelte@4.2.18) tailwindcss-image-rendering: specifier: ^1.0.2 version: 1.0.2 tslib: specifier: ^2.4.1 - version: 2.6.2 + version: 2.6.3 typescript: specifier: ^5.0.0 - version: 5.4.5 + version: 5.5.3 vite: specifier: ^5.0.3 - version: 5.2.11(@types/node@20.12.8) + version: 5.3.2(@types/node@20.14.9) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.5)(vite@5.2.11) + version: 4.3.2(typescript@5.5.3)(vite@5.3.2) vitest: specifier: ^1.2.0 - version: 1.6.0(@types/node@20.12.8) + version: 1.6.0(@types/node@20.14.9) which: specifier: ^4.0.0 version: 4.0.0 @@ -876,55 +876,55 @@ importers: devDependencies: '@chromatic-com/storybook': specifier: ^1.3.4 - version: 1.6.1(react@18.3.1) + version: 1.6.0(react@18.3.1) '@playwright/test': specifier: ^1.28.1 - version: 1.43.1 + version: 1.45.0 '@storybook/addon-essentials': specifier: ^8.0.10 - version: 8.2.7(storybook@8.2.7) + version: 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) '@storybook/addon-interactions': specifier: ^8.0.10 - version: 8.2.7(storybook@8.2.7)(vitest@1.6.0) + version: 8.1.11(vitest@1.6.0) '@storybook/addon-links': specifier: ^8.0.10 - version: 8.2.7(react@18.3.1)(storybook@8.2.7) + version: 8.1.11(react@18.3.1) '@storybook/addon-themes': specifier: ^8.1.1 - version: 8.2.7(storybook@8.2.7) + version: 8.1.11 '@storybook/blocks': specifier: ^8.0.10 - version: 8.2.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.7) + version: 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) '@storybook/svelte': specifier: ^8.0.10 - version: 8.2.7(storybook@8.2.7)(svelte@4.2.15) + version: 8.1.11(prettier@3.3.2)(svelte@4.2.18) '@storybook/sveltekit': specifier: ^8.0.10 - version: 8.2.7(@babel/core@7.24.5)(@sveltejs/vite-plugin-svelte@3.1.0)(postcss@8.4.41)(storybook@8.2.7)(svelte@4.2.15)(typescript@5.4.5)(vite@5.2.11) + version: 8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2) '@storybook/test': specifier: ^8.0.10 - version: 8.2.7(storybook@8.2.7)(vitest@1.6.0) + version: 8.1.11(vitest@1.6.0) '@sveltejs/adapter-auto': specifier: ^3.0.0 - version: 3.2.0(@sveltejs/kit@2.5.22) + version: 3.2.2(@sveltejs/kit@2.5.24) '@sveltejs/kit': specifier: ^2.5.21 - version: 2.5.22(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) + version: 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) '@sveltejs/package': specifier: ^2.0.0 - version: 2.3.2(svelte@4.2.15)(typescript@5.4.5) + version: 2.3.2(svelte@4.2.18)(typescript@5.5.3) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.1.0(svelte@4.2.15)(vite@5.2.11) + version: 3.1.1(svelte@4.2.18)(vite@5.3.2) '@types/eslint': specifier: ^8.56.0 version: 8.56.10 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^7.0.0 - version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.41) @@ -936,81 +936,100 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-plugin-storybook: specifier: ^0.8.0 - version: 0.8.0(eslint@8.57.0)(typescript@5.4.5) + version: 0.8.0(eslint@8.57.0)(typescript@5.5.3) eslint-plugin-svelte: specifier: ^2.35.1 - version: 2.38.0(eslint@8.57.0)(svelte@4.2.15) + version: 2.41.0(eslint@8.57.0)(svelte@4.2.18) prettier: specifier: ^3.1.1 - version: 3.2.5 + version: 3.3.2 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) + version: 3.2.5(prettier@3.3.2)(svelte@4.2.18) publint: specifier: ^0.1.9 version: 0.1.16 storybook: specifier: ^8.0.10 - version: 8.2.7 + version: 8.1.11(react-dom@18.3.1)(react@18.3.1) svelte: specifier: ^4.2.7 - version: 4.2.15 + version: 4.2.18 svelte-check: specifier: ^3.6.0 - version: 3.7.1(@babel/core@7.24.5)(postcss@8.4.41)(svelte@4.2.15) + version: 3.8.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18) tailwindcss: specifier: ^3.4.3 - version: 3.4.3 + version: 3.4.4 tslib: specifier: ^2.4.1 - version: 2.6.2 + version: 2.6.3 typescript: specifier: ^5.0.0 - version: 5.4.5 + version: 5.5.3 vite: specifier: ^5.0.11 - version: 5.2.11(@types/node@20.12.8) + version: 5.3.2(@types/node@20.14.9) vitest: specifier: ^1.2.0 - version: 1.6.0(jsdom@24.0.0) + version: 1.6.0(jsdom@24.1.0) packages: - '@adobe/css-tools@4.4.0': + /@adobe/css-tools@4.4.0: resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} + dev: true - '@adraffy/ens-normalize@1.10.0': + /@adraffy/ens-normalize@1.10.0: resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} - '@alloc/quick-lru@5.2.0': + /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.3.0': + /@ampproject/remapping@2.3.0: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - '@apidevtools/openapi-schemas@2.1.0': + /@apidevtools/openapi-schemas@2.1.0: resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} engines: {node: '>=10'} + dev: false - '@apidevtools/swagger-methods@3.0.2': + /@apidevtools/swagger-methods@3.0.2: resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} + dev: false - '@astrojs/check@0.8.3': + /@astrojs/check@0.8.3(prettier@3.3.2)(typescript@5.5.3): resolution: {integrity: sha512-ajcSe+ezX5jCc3dreQlWzbknzXgSGnDETNe3C1mawUOtGpO4t5z2YGaD0y+wzB84lmgPWaWZa0fKSPwLq/wUHw==} hasBin: true peerDependencies: typescript: ^5.0.0 + dependencies: + '@astrojs/language-server': 2.13.2(prettier@3.3.2)(typescript@5.5.3) + chokidar: 3.6.0 + fast-glob: 3.3.2 + kleur: 4.1.5 + typescript: 5.5.3 + yargs: 17.7.2 + transitivePeerDependencies: + - prettier + - prettier-plugin-astro + dev: false - '@astrojs/compiler@2.10.1': - resolution: {integrity: sha512-XmM4j6BjvOVMag2xELq0JuG2yKOW8wgIu6dvb9BsjbGYmnvoStJn/pqEzVqc1EBszf2xYT7onIkftIOUz9AwrQ==} + /@astrojs/compiler@2.10.2: + resolution: {integrity: sha512-bvH+v8AirwpRWCkYJEyWYdc5Cs/BjG2ZTxIJzttHilXgfKJAdW2496KsUQKzf5j2tOHtaHXKKn9hb9WZiBGpEg==} + dev: false - '@astrojs/internal-helpers@0.4.1': + /@astrojs/internal-helpers@0.4.1: resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} + dev: false - '@astrojs/language-server@2.13.1': - resolution: {integrity: sha512-Cl9ynfnge6+MaCpehYn7w9WrAE+sVS7onhxhMzCdqzPtIt/Yo5zIaiGZdu4QgvmOV/mdNBZCZgaTpAIeGjWwsQ==} + /@astrojs/language-server@2.13.2(prettier@3.3.2)(typescript@5.5.3): + resolution: {integrity: sha512-l435EZLKjaUO/6iewJ7xqd3eHf3zAosVWG4woILbxluQcianBoNPepnnqAg7uUriZUaC44ae5v0Q+AfB8UI64g==} hasBin: true peerDependencies: prettier: ^3.0.0 @@ -1020,12346 +1039,2825 @@ packages: optional: true prettier-plugin-astro: optional: true + dependencies: + '@astrojs/compiler': 2.10.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@volar/kit': 2.4.0-alpha.18(typescript@5.5.3) + '@volar/language-core': 2.4.0-alpha.18 + '@volar/language-server': 2.4.0-alpha.18 + '@volar/language-service': 2.4.0-alpha.18 + '@volar/typescript': 2.4.0-alpha.18 + fast-glob: 3.3.2 + muggle-string: 0.4.1 + prettier: 3.3.2 + volar-service-css: 0.0.59(@volar/language-service@2.4.0-alpha.18) + volar-service-emmet: 0.0.59(@volar/language-service@2.4.0-alpha.18) + volar-service-html: 0.0.59(@volar/language-service@2.4.0-alpha.18) + volar-service-prettier: 0.0.59(@volar/language-service@2.4.0-alpha.18)(prettier@3.3.2) + volar-service-typescript: 0.0.59(@volar/language-service@2.4.0-alpha.18) + volar-service-typescript-twoslash-queries: 0.0.59(@volar/language-service@2.4.0-alpha.18) + vscode-html-languageservice: 5.3.0 + vscode-uri: 3.0.8 + transitivePeerDependencies: + - typescript + dev: false - '@astrojs/markdown-remark@5.2.0': + /@astrojs/markdown-remark@5.2.0: resolution: {integrity: sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==} + dependencies: + '@astrojs/prism': 3.1.0 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.1 + hast-util-to-text: 4.0.2 + import-meta-resolve: 4.1.0 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.0 + remark-gfm: 4.0.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.0 + remark-smartypants: 3.0.2 + shiki: 1.12.1 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.2 + transitivePeerDependencies: + - supports-color + dev: false - '@astrojs/mdx@3.1.3': + /@astrojs/mdx@3.1.3(astro@4.13.3): resolution: {integrity: sha512-hOM4dMM4RfJI254d3p/AnOZuk2VyKszRtuY5FBm+Xc4XdhIpGrR56OXMNEcWchtwz4HQyPe/eJSgvBjSROcQIQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} peerDependencies: astro: ^4.8.0 + dependencies: + '@astrojs/markdown-remark': 5.2.0 + '@mdx-js/mdx': 3.0.1 + acorn: 8.12.1 + astro: 4.13.3(typescript@5.5.3) + es-module-lexer: 1.5.4 + estree-util-visit: 2.0.0 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + hast-util-to-html: 9.0.1 + kleur: 4.1.5 + rehype-raw: 7.0.0 + remark-gfm: 4.0.0 + remark-smartypants: 3.0.2 + source-map: 0.7.4 + unist-util-visit: 5.0.0 + vfile: 6.0.2 + transitivePeerDependencies: + - supports-color + dev: false - '@astrojs/prism@3.1.0': + /@astrojs/prism@3.1.0: resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + dependencies: + prismjs: 1.29.0 + dev: false - '@astrojs/sitemap@3.1.6': + /@astrojs/sitemap@3.1.6: resolution: {integrity: sha512-1Qp2NvAzVImqA6y+LubKi1DVhve/hXXgFvB0szxiipzh7BvtuKe4oJJ9dXSqaubaTkt4nMa6dv6RCCAYeB6xaQ==} + dependencies: + sitemap: 7.1.2 + stream-replace-string: 2.0.0 + zod: 3.23.8 + dev: false - '@astrojs/starlight@0.25.3': - resolution: {integrity: sha512-XNpGbZ54ungtzen4wQkPXn50D1ZquB51paWrZftA0jWxUkj4b/pP8PijAFrGFypydhvu7Dhl0DjD07lrnSSUhQ==} + /@astrojs/starlight@0.25.4(astro@4.13.3): + resolution: {integrity: sha512-TRPgRsd5opi2tCXvh8rWizpLsJsRRXbYecULG5b/1x4BFyp40ZJVB77cLMjTj3lHwqWs0Sybtq5OBpOy6fuIEQ==} peerDependencies: astro: ^4.8.6 + dependencies: + '@astrojs/mdx': 3.1.3(astro@4.13.3) + '@astrojs/sitemap': 3.1.6 + '@pagefind/default-ui': 1.1.0 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + astro: 4.13.3(typescript@5.5.3) + astro-expressive-code: 0.35.6(astro@4.13.3) + bcp-47: 2.1.0 + hast-util-from-html: 2.0.1 + hast-util-select: 6.0.2 + hast-util-to-string: 3.0.0 + hastscript: 9.0.0 + mdast-util-directive: 3.0.0 + mdast-util-to-markdown: 2.1.0 + mdast-util-to-string: 4.0.0 + pagefind: 1.1.0 + rehype: 13.0.1 + rehype-format: 5.0.0 + remark-directive: 3.0.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.2 + transitivePeerDependencies: + - supports-color + dev: false - '@astrojs/telemetry@3.1.0': + /@astrojs/telemetry@3.1.0: resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + dependencies: + ci-info: 4.0.0 + debug: 4.3.6 + dlv: 1.1.3 + dset: 3.1.3 + is-docker: 3.0.0 + is-wsl: 3.1.0 + which-pm-runs: 1.1.0 + transitivePeerDependencies: + - supports-color + dev: false - '@aws-crypto/crc32@3.0.0': - resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} + /@aw-web-design/x-default-browser@1.4.126: + resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} + hasBin: true + dependencies: + default-browser-id: 3.0.0 + dev: true - '@aws-crypto/crc32c@3.0.0': - resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} + /@aws-crypto/crc32@5.2.0: + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.3 + dev: false - '@aws-crypto/ie11-detection@3.0.0': - resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + /@aws-crypto/crc32c@5.2.0: + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.3 + dev: false - '@aws-crypto/sha1-browser@3.0.0': - resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} + /@aws-crypto/sha1-browser@5.2.0: + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.3 + dev: false - '@aws-crypto/sha256-browser@3.0.0': - resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + /@aws-crypto/sha256-browser@5.2.0: + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.3 + dev: false - '@aws-crypto/sha256-js@3.0.0': - resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + /@aws-crypto/sha256-js@5.2.0: + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.3 + dev: false - '@aws-crypto/supports-web-crypto@3.0.0': - resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + /@aws-crypto/supports-web-crypto@5.2.0: + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + dependencies: + tslib: 2.6.3 + dev: false - '@aws-crypto/util@3.0.0': - resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + /@aws-crypto/util@5.2.0: + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/client-s3@3.577.0': - resolution: {integrity: sha512-mQYXwn6E4Rwggn6teF6EIWJtK8jsKcxnPj2QVETkSmD8QaFLm4g/DgLPdamDE97UI8k1k0cmWqXcTOLIaZ7wQg==} + /@aws-sdk/client-s3@3.608.0: + resolution: {integrity: sha512-la2R6QfUOmE4JMubxLD3OdnPTduAs5YekIvx68I5CbLudb5pbxkHDqnrWDhgK1lX4Cu19pXjgQXmS8oZMJPeLQ==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.606.0(@aws-sdk/client-sts@3.606.0) + '@aws-sdk/client-sts': 3.606.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0) + '@aws-sdk/middleware-bucket-endpoint': 3.598.0 + '@aws-sdk/middleware-expect-continue': 3.598.0 + '@aws-sdk/middleware-flexible-checksums': 3.598.0 + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-location-constraint': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-sdk-s3': 3.598.0 + '@aws-sdk/middleware-signing': 3.598.0 + '@aws-sdk/middleware-ssec': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/signature-v4-multi-region': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@aws-sdk/xml-builder': 3.598.0 + '@smithy/config-resolver': 3.0.4 + '@smithy/core': 2.2.4 + '@smithy/eventstream-serde-browser': 3.0.4 + '@smithy/eventstream-serde-config-resolver': 3.0.3 + '@smithy/eventstream-serde-node': 3.0.4 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/hash-blob-browser': 3.1.2 + '@smithy/hash-node': 3.0.3 + '@smithy/hash-stream-node': 3.1.2 + '@smithy/invalid-dependency': 3.0.3 + '@smithy/md5-js': 3.0.3 + '@smithy/middleware-content-length': 3.0.3 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-serde': 3.0.3 + '@smithy/middleware-stack': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/node-http-handler': 3.1.1 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.7 + '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-endpoints': 2.0.4 + '@smithy/util-retry': 3.0.3 + '@smithy/util-stream': 3.0.5 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.1.2 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false - '@aws-sdk/client-sso-oidc@3.577.0': - resolution: {integrity: sha512-njmKSPDWueWWYVFpFcZ2P3fI6/pdQVDa0FgCyYZhOnJLgEHZIcBBg1AsnkVWacBuLopp9XVt2m+7hO6ugY1/1g==} + /@aws-sdk/client-sso-oidc@3.606.0(@aws-sdk/client-sts@3.606.0): + resolution: {integrity: sha512-gL1FHPS6hwgMNS/A+Qh5bUyHOeRVOqdb7c6+i+9gR3wtGvt2lvoSm8w5DhS08Xiiacz2AqYRDEapp0xuyCrbBQ==} engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.606.0 + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.606.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0) + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.4 + '@smithy/core': 2.2.4 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/hash-node': 3.0.3 + '@smithy/invalid-dependency': 3.0.3 + '@smithy/middleware-content-length': 3.0.3 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-serde': 3.0.3 + '@smithy/middleware-stack': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/node-http-handler': 3.1.1 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.7 + '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-endpoints': 2.0.4 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.3 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false - '@aws-sdk/client-sso@3.577.0': - resolution: {integrity: sha512-BwujdXrydlk6UEyPmewm5GqG4nkQ6OVyRhS/SyZP/6UKSFv2/sf391Cmz0hN0itUTH1rR4XeLln8XCOtarkrzg==} + /@aws-sdk/client-sso@3.598.0: + resolution: {integrity: sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.4 + '@smithy/core': 2.2.4 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/hash-node': 3.0.3 + '@smithy/invalid-dependency': 3.0.3 + '@smithy/middleware-content-length': 3.0.3 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-serde': 3.0.3 + '@smithy/middleware-stack': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/node-http-handler': 3.1.1 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.7 + '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-endpoints': 2.0.4 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.3 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false - '@aws-sdk/client-sts@3.577.0': - resolution: {integrity: sha512-509Kklimva1XVlhGbpTpeX3kOP6ORpm44twJxDHpa9TURbmoaxj7veWlnLCbDorxDTrbsDghvYZshvcLsojVpg==} + /@aws-sdk/client-sts@3.606.0: + resolution: {integrity: sha512-b11mAhjrkm3MMiAPoMGcmd6vsaz2120lg8rHG/NZCo9vB1K6Kc7WP+a1Q05TRMseer2egTtpWJfn44aVO97VqA==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.606.0(@aws-sdk/client-sts@3.606.0) + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0) + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.4 + '@smithy/core': 2.2.4 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/hash-node': 3.0.3 + '@smithy/invalid-dependency': 3.0.3 + '@smithy/middleware-content-length': 3.0.3 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-serde': 3.0.3 + '@smithy/middleware-stack': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/node-http-handler': 3.1.1 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.7 + '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-endpoints': 2.0.4 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.3 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false - '@aws-sdk/core@3.576.0': - resolution: {integrity: sha512-KDvDlbeipSTIf+ffKtTg1m419TK7s9mZSWC8bvuZ9qx6/sjQFOXIKOVqyuli6DnfxGbvRcwoRuY99OcCH1N/0w==} + /@aws-sdk/core@3.598.0: + resolution: {integrity: sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==} engines: {node: '>=16.0.0'} + dependencies: + '@smithy/core': 2.2.4 + '@smithy/protocol-http': 4.0.3 + '@smithy/signature-v4': 3.1.2 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.3 + dev: false - '@aws-sdk/credential-provider-env@3.577.0': - resolution: {integrity: sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==} + /@aws-sdk/credential-provider-env@3.598.0: + resolution: {integrity: sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/credential-provider-http@3.577.0': - resolution: {integrity: sha512-n++yhCp67b9+ZRGEdY1jhamB5E/O+QsIDOPSuRmdaSGMCOd82oUEKPgIVEU1bkqxDsBxgiEWuvtfhK6sNiDS0A==} + /@aws-sdk/credential-provider-http@3.598.0: + resolution: {integrity: sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==} engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-ini@3.577.0': - resolution: {integrity: sha512-q7lHPtv6BjRvChUE3m0tIaEZKxPTaZ1B3lKxGYsFl3VLAu5N8yGCUKwuA1izf4ucT+LyKscVGqK6VDZx1ev3nw==} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/node-http-handler': 3.1.1 + '@smithy/property-provider': 3.1.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/util-stream': 3.0.5 + tslib: 2.6.3 + dev: false + + /@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0): + resolution: {integrity: sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.577.0 + '@aws-sdk/client-sts': ^3.598.0 + dependencies: + '@aws-sdk/client-sts': 3.606.0 + '@aws-sdk/credential-provider-env': 3.598.0 + '@aws-sdk/credential-provider-http': 3.598.0 + '@aws-sdk/credential-provider-process': 3.598.0 + '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.606.0) + '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.606.0) + '@aws-sdk/types': 3.598.0 + '@smithy/credential-provider-imds': 3.1.3 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false - '@aws-sdk/credential-provider-node@3.577.0': - resolution: {integrity: sha512-epZ1HOMsrXBNczc0HQpv0VMjqAEpc09DUA7Rg3gUJfn8umhML7A7bXnUyqPA+S54q397UYg1leQKdSn23OiwQQ==} + /@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0): + resolution: {integrity: sha512-1pC7MPMYD45J7yFjA90SxpR0yaSvy+yZiq23aXhAPZLYgJBAxHLu0s0mDCk/piWGPh8+UGur5K0bVdx4B1D5hw==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.598.0 + '@aws-sdk/credential-provider-http': 3.598.0 + '@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0) + '@aws-sdk/credential-provider-process': 3.598.0 + '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.606.0) + '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.606.0) + '@aws-sdk/types': 3.598.0 + '@smithy/credential-provider-imds': 3.1.3 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + dev: false - '@aws-sdk/credential-provider-process@3.577.0': - resolution: {integrity: sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==} + /@aws-sdk/credential-provider-process@3.598.0: + resolution: {integrity: sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/credential-provider-sso@3.577.0': - resolution: {integrity: sha512-iVm5SQvS7EgZTJsRaqUOmDQpBQPPPat42SCbWFvFQOLrl8qewq8OP94hFS5w2mP62zngeYzqhJnDel79HXbxew==} + /@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.606.0): + resolution: {integrity: sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/client-sso': 3.598.0 + '@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.606.0) + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false - '@aws-sdk/credential-provider-web-identity@3.577.0': - resolution: {integrity: sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==} + /@aws-sdk/credential-provider-web-identity@3.598.0(@aws-sdk/client-sts@3.606.0): + resolution: {integrity: sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.577.0 + '@aws-sdk/client-sts': ^3.598.0 + dependencies: + '@aws-sdk/client-sts': 3.606.0 + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/lib-storage@3.578.0': - resolution: {integrity: sha512-SluLJrA/fG82UnE83Albh+gv48McmXkz17kmAMhhNswOxqHsklb5Vu5d/G0DUDAQdeC30sS/9Vhu2zAiJokunw==} + /@aws-sdk/lib-storage@3.608.0(@aws-sdk/client-s3@3.608.0): + resolution: {integrity: sha512-A6RXgkXYf+eY2POxi382nhMdo7x7QpVfgeehvOqpK5c7LgXjwsPTfjSPqLV1fIZuPLn3NG6uNd12Gs6x/466tQ==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-s3': ^3.577.0 + '@aws-sdk/client-s3': ^3.608.0 + dependencies: + '@aws-sdk/client-s3': 3.608.0 + '@smithy/abort-controller': 3.1.1 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/smithy-client': 3.1.5 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/middleware-bucket-endpoint@3.577.0': - resolution: {integrity: sha512-twlkNX2VofM6kHXzDEiJOiYCc9tVABe5cbyxMArRWscIsCWG9mamPhC77ezG4XsN9dFEwVdxEYD5Crpm/5EUiw==} + /@aws-sdk/middleware-bucket-endpoint@3.598.0: + resolution: {integrity: sha512-PM7BcFfGUSkmkT6+LU9TyJiB4S8yI7dfuKQDwK5ZR3P7MKaK4Uj4yyDiv0oe5xvkF6+O2+rShj+eh8YuWkOZ/Q==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/middleware-expect-continue@3.577.0': - resolution: {integrity: sha512-6dPp8Tv4F0of4un5IAyG6q++GrRrNQQ4P2NAMB1W0VO4JoEu1C8GievbbDLi88TFIFmtKpnHB0ODCzwnoe8JsA==} + /@aws-sdk/middleware-expect-continue@3.598.0: + resolution: {integrity: sha512-ZuHW18kaeHR8TQyhEOYMr8VwiIh0bMvF7J1OTqXHxDteQIavJWA3CbfZ9sgS4XGtrBZDyHJhjZKeCfLhN2rq3w==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/middleware-flexible-checksums@3.577.0': - resolution: {integrity: sha512-IHAUEipIfagjw92LV8SOSBiCF7ZnqfHcw14IkcZW2/mfrCy1Fh/k40MoS/t3Tro2tQ91rgQPwUoSgB/QCi2Org==} + /@aws-sdk/middleware-flexible-checksums@3.598.0: + resolution: {integrity: sha512-xukAzds0GQXvMEY9G6qt+CzwVzTx8NyKKh04O2Q+nOch6QQ8Rs+2kTRy3Z4wQmXq2pK9hlOWb5nXA7HWpmz6Ng==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-sdk/types': 3.598.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/middleware-host-header@3.577.0': - resolution: {integrity: sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==} + /@aws-sdk/middleware-host-header@3.598.0: + resolution: {integrity: sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/middleware-location-constraint@3.577.0': - resolution: {integrity: sha512-DKPTD2D2s+t2QUo/IXYtVa/6Un8GZ+phSTBkyBNx2kfZz4Kwavhl/JJzSqTV3GfCXkVdFu7CrjoX7BZ6qWeTUA==} + /@aws-sdk/middleware-location-constraint@3.598.0: + resolution: {integrity: sha512-8oybQxN3F1ISOMULk7JKJz5DuAm5hCUcxMW9noWShbxTJuStNvuHf/WLUzXrf8oSITyYzIHPtf8VPlKR7I3orQ==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/middleware-logger@3.577.0': - resolution: {integrity: sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==} + /@aws-sdk/middleware-logger@3.598.0: + resolution: {integrity: sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/middleware-recursion-detection@3.577.0': - resolution: {integrity: sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==} + /@aws-sdk/middleware-recursion-detection@3.598.0: + resolution: {integrity: sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/middleware-sdk-s3@3.577.0': - resolution: {integrity: sha512-/t8Shvy6lGIRdTEKG6hA8xy+oon/CDF5H8Ksms/cd/uvIy/MYbNjOJ/Arwk8H5W6LB4DP/1O+tOzOpGx1MCufA==} + /@aws-sdk/middleware-sdk-s3@3.598.0: + resolution: {integrity: sha512-5AGtLAh9wyK6ANPYfaKTqJY1IFJyePIxsEbxa7zS6REheAqyVmgJFaGu3oQ5XlxfGr5Uq59tFTRkyx26G1HkHA==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/signature-v4': 3.1.2 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/middleware-signing@3.577.0': - resolution: {integrity: sha512-QS/dh3+NqZbXtY0j/DZ867ogP413pG5cFGqBy9OeOhDMsolcwLrQbi0S0c621dc1QNq+er9ffaMhZ/aPkyXXIg==} + /@aws-sdk/middleware-signing@3.598.0: + resolution: {integrity: sha512-XKb05DYx/aBPqz6iCapsCbIl8aD8EihTuPCs51p75QsVfbQoVr4TlFfIl5AooMSITzojdAQqxt021YtvxjtxIQ==} engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-ssec@3.577.0': - resolution: {integrity: sha512-i2BPJR+rp8xmRVIGc0h1kDRFcM2J9GnClqqpc+NLSjmYadlcg4mPklisz9HzwFVcRPJ5XcGf3U4BYs5G8+iTyg==} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/signature-v4': 3.1.2 + '@smithy/types': 3.3.0 + '@smithy/util-middleware': 3.0.3 + tslib: 2.6.3 + dev: false + + /@aws-sdk/middleware-ssec@3.598.0: + resolution: {integrity: sha512-f0p2xP8IC1uJ5e/tND1l81QxRtRFywEdnbtKCE0H6RSn4UIt2W3Dohe1qQDbnh27okF0PkNW6BJGdSAz3p7qbA==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/middleware-user-agent@3.577.0': - resolution: {integrity: sha512-P55HAXgwmiHHpFx5JEPvOnAbfhN7v6sWv9PBQs+z2tC7QiBcPS0cdJR6PfV7J1n4VPK52/OnrK3l9VxdQ7Ms0g==} + /@aws-sdk/middleware-user-agent@3.598.0: + resolution: {integrity: sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/region-config-resolver@3.577.0': - resolution: {integrity: sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==} + /@aws-sdk/region-config-resolver@3.598.0: + resolution: {integrity: sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/types': 3.3.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.3 + tslib: 2.6.3 + dev: false - '@aws-sdk/signature-v4-multi-region@3.577.0': - resolution: {integrity: sha512-mMykGRFBYmlDcMhdbhNM0z1JFUaYYZ8r9WV7Dd0T2PWELv2brSAjDAOBHdJLHObDMYRnM6H0/Y974qTl3icEcQ==} + /@aws-sdk/signature-v4-multi-region@3.598.0: + resolution: {integrity: sha512-1r/EyTrO1gSa1FirnR8V7mabr7gk+l+HkyTI0fcTSr8ucB7gmYyW6WjkY8JCz13VYHFK62usCEDS7yoJoJOzTA==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/signature-v4': 3.1.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/token-providers@3.577.0': - resolution: {integrity: sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==} + /@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.606.0): + resolution: {integrity: sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.577.0 + '@aws-sdk/client-sso-oidc': ^3.598.0 + dependencies: + '@aws-sdk/client-sso-oidc': 3.606.0(@aws-sdk/client-sts@3.606.0) + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/types@3.577.0': - resolution: {integrity: sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==} + /@aws-sdk/types@3.598.0: + resolution: {integrity: sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==} engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/util-arn-parser@3.568.0': + /@aws-sdk/util-arn-parser@3.568.0: resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.6.3 + dev: false - '@aws-sdk/util-endpoints@3.577.0': - resolution: {integrity: sha512-FjuUz1Kdy4Zly2q/c58tpdqHd6z7iOdU/caYzoc8jwgAHBDBbIJNQLCU9hXJnPV2M8pWxQDyIZsoVwtmvErPzw==} + /@aws-sdk/util-endpoints@3.598.0: + resolution: {integrity: sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==} engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.3.0 + '@smithy/util-endpoints': 2.0.4 + tslib: 2.6.3 + dev: false - '@aws-sdk/util-locate-window@3.568.0': + /@aws-sdk/util-locate-window@3.568.0: resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.6.3 + dev: false - '@aws-sdk/util-user-agent-browser@3.577.0': - resolution: {integrity: sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==} + /@aws-sdk/util-user-agent-browser@3.598.0: + resolution: {integrity: sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==} + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.3.0 + bowser: 2.11.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/util-user-agent-node@3.577.0': - resolution: {integrity: sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==} + /@aws-sdk/util-user-agent-node@3.598.0: + resolution: {integrity: sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==} engines: {node: '>=16.0.0'} peerDependencies: aws-crt: '>=1.0.0' peerDependenciesMeta: aws-crt: optional: true + dependencies: + '@aws-sdk/types': 3.598.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@aws-sdk/util-utf8-browser@3.259.0': - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - - '@aws-sdk/xml-builder@3.575.0': - resolution: {integrity: sha512-cWgAwmbFYNCFzPwxL705+lWps0F3ZvOckufd2KKoEZUmtpVw9/txUXNrPySUXSmRTSRhoatIMABNfStWR043bQ==} + /@aws-sdk/xml-builder@3.598.0: + resolution: {integrity: sha512-ZIa2RK7CHFTZ4gwK77WRtsZ6vF7xwRXxJ8KQIxK2duhoTVcn0xYxpFLdW9WZZZvdP9GIF3Loqvf8DRdeU5Jc7Q==} engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@babel/code-frame@7.24.2': - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} - - '@babel/code-frame@7.24.7': + /@babel/code-frame@7.24.7: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 - '@babel/compat-data@7.24.4': - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + /@babel/compat-data@7.24.7: + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': + /@babel/compat-data@7.25.2: resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.5': - resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} + /@babel/core@7.24.7: + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + convert-source-map: 2.0.0 + debug: 4.3.5 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/core@7.25.2': + /@babel/core@7.25.2: resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/generator@7.24.5': - resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} + /@babel/generator@7.24.7: + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 - '@babel/generator@7.25.0': + /@babel/generator@7.25.0: resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 - '@babel/helper-annotate-as-pure@7.22.5': - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.24.7': + /@babel/helper-annotate-as-pure@7.24.7: resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.24.7: + resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-compilation-targets@7.23.6': - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + /@babel/helper-compilation-targets@7.24.7: + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.1 + lru-cache: 5.1.1 + semver: 6.3.1 - '@babel/helper-compilation-targets@7.25.2': + /@babel/helper-compilation-targets@7.25.2: resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.1 + lru-cache: 5.1.1 + semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.5': - resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} + /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true - '@babel/helper-create-regexp-features-plugin@7.22.15': - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + /@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: false + + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.7): + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + debug: 4.3.5 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/helper-define-polyfill-provider@0.6.2': + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2): resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + debug: 4.3.5 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-environment-visitor@7.22.20': - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 - '@babel/helper-function-name@7.23.0': - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + /@babel/helper-function-name@7.24.7: + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + /@babel/helper-hoist-variables@7.24.7: + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 - '@babel/helper-member-expression-to-functions@7.24.5': - resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} + /@babel/helper-member-expression-to-functions@7.24.7: + resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-module-imports@7.24.3': - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/helper-module-transforms@7.24.5': - resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} + /@babel/helper-module-transforms@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-module-transforms@7.25.2': + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color - '@babel/helper-optimise-call-expression@7.22.5': - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + /@babel/helper-optimise-call-expression@7.24.7: + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 - '@babel/helper-plugin-utils@7.24.5': - resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} + /@babel/helper-plugin-utils@7.24.7: + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.8': + /@babel/helper-plugin-utils@7.24.8: resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helper-remap-async-to-generator@7.22.20': - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + /@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-wrap-function': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/helper-replace-supers@7.24.1': - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + /@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-wrap-function': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-simple-access@7.24.5': - resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} + /@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + /@babel/helper-replace-supers@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-split-export-declaration@7.24.5': - resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} + /@babel/helper-skip-transparent-expression-wrappers@7.24.7: + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-string-parser@7.24.1': - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 - '@babel/helper-string-parser@7.24.8': - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + /@babel/helper-string-parser@7.24.7: + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.5': - resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': + /@babel/helper-validator-identifier@7.24.7: resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.23.5': - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + /@babel/helper-validator-option@7.24.7: + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.8': + /@babel/helper-validator-option@7.24.8: resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.24.5': - resolution: {integrity: sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==} + /@babel/helper-wrap-function@7.24.7: + resolution: {integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helpers@7.24.5': - resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} + /@babel/helpers@7.24.7: + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + dev: true - '@babel/helpers@7.25.0': + /@babel/helpers@7.25.0: resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 - '@babel/highlight@7.24.5': - resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.24.7': + /@babel/highlight@7.24.7: resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 - '@babel/parser@7.24.5': - resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} + /@babel/parser@7.24.7: + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.24.7 - '@babel/parser@7.25.3': + /@babel/parser@7.25.3: resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.25.2 + + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true + + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5': - resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': - resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': - resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': - resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-proposal-async-generator-functions@7.20.7': + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.2): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-proposal-class-properties@7.18.6': + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-proposal-export-default-from@7.24.1': - resolution: {integrity: sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg==} + /@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) + dev: false - '@babel/plugin-proposal-logical-assignment-operators@7.20.7': + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.2): resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + dev: false - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + dev: false - '@babel/plugin-proposal-numeric-separator@7.18.6': + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.2): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + dev: false - '@babel/plugin-proposal-object-rest-spread@7.20.7': + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + dev: false - '@babel/plugin-proposal-optional-catch-binding@7.18.6': + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.2): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + dev: false - '@babel/plugin-proposal-optional-chaining@7.21.0': + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + dev: true - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + dev: false - '@babel/plugin-syntax-async-generators@7.8.4': + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-syntax-export-default-from@7.24.1': - resolution: {integrity: sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA==} + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.7): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-syntax-flow@7.24.1': - resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.7): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-import-assertions@7.24.1': - resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-syntax-import-attributes@7.24.1': - resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + /@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: false - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.7): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-syntax-jsx@7.24.1': - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-jsx@7.24.7': - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + /@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + /@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + /@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + /@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-syntax-typescript@7.24.1': - resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-arrow-functions@7.24.1': - resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-async-generator-functions@7.24.3': - resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-async-to-generator@7.24.1': - resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-block-scoped-functions@7.24.1': - resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-block-scoping@7.24.5': - resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-class-properties@7.24.1': - resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-class-static-block@7.24.4': - resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: - '@babel/core': ^7.12.0 + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-classes@7.24.5': - resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-computed-properties@7.24.1': - resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-destructuring@7.24.5': - resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-dotall-regex@7.24.1': - resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-duplicate-keys@7.24.1': - resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-dynamic-import@7.24.1': - resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-exponentiation-operator@7.24.1': - resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-export-namespace-from@7.24.1': - resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-flow-strip-types@7.24.1': - resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-for-of@7.24.1': - resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-function-name@7.24.1': - resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-json-strings@7.24.1': - resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.7): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-literals@7.24.1': - resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-logical-assignment-operators@7.24.1': - resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-member-expression-literals@7.24.1': - resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-modules-amd@7.24.1': - resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} + /@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-modules-commonjs@7.24.1': - resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + /@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-modules-systemjs@7.24.1': - resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} + /@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-modules-umd@7.24.1': - resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} + /@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + /@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-new-target@7.24.1': - resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} + /@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': - resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} + /@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-numeric-separator@7.24.1': - resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} + /@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-object-rest-spread@7.24.5': - resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==} + /@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-object-super@7.24.1': - resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} + /@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-optional-catch-binding@7.24.1': - resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} + /@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-optional-chaining@7.24.5': - resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==} + /@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-parameters@7.24.5': - resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==} + /@babel/plugin-transform-classes@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) + '@babel/helper-split-export-declaration': 7.24.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-private-methods@7.24.1': - resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} + /@babel/plugin-transform-classes@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.2) + '@babel/helper-split-export-declaration': 7.24.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-private-property-in-object@7.24.5': - resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==} + /@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/template': 7.24.7 + dev: true - '@babel/plugin-transform-property-literals@7.24.1': - resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} + /@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/template': 7.24.7 + dev: false - '@babel/plugin-transform-react-display-name@7.24.1': - resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} + /@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-react-jsx-self@7.24.5': - resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==} + /@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-react-jsx-source@7.24.1': - resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} + /@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-react-jsx@7.25.2': - resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + /@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-regenerator@7.24.1': - resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + /@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-reserved-words@7.24.1': - resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + /@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-runtime@7.24.3': - resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} + /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) + dev: true - '@babel/plugin-transform-shorthand-properties@7.24.1': - resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} + /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + dev: false - '@babel/plugin-transform-spread@7.24.1': - resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} + /@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-sticky-regex@7.24.1': - resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} + /@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-template-literals@7.24.1': - resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} + /@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) + dev: true - '@babel/plugin-transform-typeof-symbol@7.24.5': - resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==} + /@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + dev: false - '@babel/plugin-transform-typescript@7.24.5': - resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==} + /@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.7) + dev: true - '@babel/plugin-transform-unicode-escapes@7.24.1': - resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} + /@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + dev: false - '@babel/plugin-transform-unicode-property-regex@7.24.1': - resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} + /@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-unicode-regex@7.24.1': - resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} + /@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-unicode-sets-regex@7.24.1': - resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} + /@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/preset-env@7.24.5': - resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} + /@babel/plugin-transform-function-name@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/preset-flow@7.24.1': - resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} + /@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) + dev: true - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + /@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + dev: false - '@babel/preset-typescript@7.24.1': - resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} + /@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/register@7.23.7': - resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} + /@babel/plugin-transform-literals@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/regjsgen@0.8.0': - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - - '@babel/runtime@7.24.5': - resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} + /@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + dev: true - '@babel/template@7.24.0': - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + /@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + dev: false - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + /@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/traverse@7.24.5': - resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} + /@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + /@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/types@7.24.5': - resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} + /@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/types@7.25.2': - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@chainsafe/is-ip@2.0.2': - resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==} - - '@chainsafe/netmask@2.0.0': - resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} - - '@changesets/apply-release-plan@7.0.4': - resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} - - '@changesets/assemble-release-plan@6.0.3': - resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==} - - '@changesets/changelog-git@0.2.0': - resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} - - '@changesets/cli@2.27.7': - resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==} - hasBin: true - - '@changesets/config@3.0.2': - resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==} - - '@changesets/errors@0.2.0': - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - - '@changesets/get-dependents-graph@2.1.1': - resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==} - - '@changesets/get-release-plan@4.0.3': - resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==} - - '@changesets/get-version-range-type@0.4.0': - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - - '@changesets/git@3.0.0': - resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} - - '@changesets/logger@0.1.0': - resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} - - '@changesets/parse@0.4.0': - resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} - - '@changesets/pre@2.0.0': - resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} - - '@changesets/read@0.6.0': - resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} - - '@changesets/should-skip-package@0.1.0': - resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==} - - '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - - '@changesets/types@6.0.0': - resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - - '@changesets/write@0.3.1': - resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} - - '@chromatic-com/storybook@1.3.3': - resolution: {integrity: sha512-1y9r691T5vVGDZ0HY3YrCXUnvtrT2YrhDuvDZSvYSNUVpM/Imz6i1dnNMKb3eoI1qRsH55mI4zCt+Iq94NLedQ==} - engines: {node: '>=16.0.0', yarn: '>=1.22.18'} - - '@chromatic-com/storybook@1.6.1': - resolution: {integrity: sha512-x1x1NB3j4xpfeSWKr96emc+7ZvfsvH+/WVb3XCjkB24PPbT8VZXb3mJSAQMrSzuQ8+eQE9kDogYHH9Fj3tb/Cw==} - engines: {node: '>=16.0.0', yarn: '>=1.22.18'} - - '@coinbase/wallet-sdk@3.9.1': - resolution: {integrity: sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA==} - - '@coinbase/wallet-sdk@3.9.3': - resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} - - '@coinbase/wallet-sdk@4.0.4': - resolution: {integrity: sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA==} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@csstools/selector-resolve-nested@1.1.0': - resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss-selector-parser: ^6.0.13 - - '@csstools/selector-specificity@3.0.3': - resolution: {integrity: sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss-selector-parser: ^6.0.13 - - '@ctrl/tinycolor@4.1.0': - resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} - engines: {node: '>=14'} - - '@emmetio/abbreviation@2.3.3': - resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} - - '@emmetio/css-abbreviation@2.1.8': - resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} - - '@emmetio/css-parser@0.4.0': - resolution: {integrity: sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==} - - '@emmetio/html-matcher@1.3.0': - resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} - - '@emmetio/scanner@1.0.4': - resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} - - '@emmetio/stream-reader-utils@0.1.0': - resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} - - '@emmetio/stream-reader@2.2.0': - resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} - - '@emnapi/runtime@1.1.1': - resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==} - - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.21.3': - resolution: {integrity: sha512-yTgnwQpFVYfvvo4SvRFB0SwrW8YjOxEoT7wfMT7Ol5v7v5LDNvSGo67aExmxOb87nQNeWPVvaGBNfQ7BXcrZ9w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.21.3': - resolution: {integrity: sha512-c+ty9necz3zB1Y+d/N+mC6KVVkGUUOcm4ZmT5i/Fk5arOaY3i6CA3P5wo/7+XzV8cb4GrI/Zjp8NuOQ9Lfsosw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.21.3': - resolution: {integrity: sha512-bviJOLMgurLJtF1/mAoJLxDZDL6oU5/ztMHnJQRejbJrSc9FFu0QoUoFhvi6qSKJEw9y5oGyvr9fuDtzJ30rNQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.21.3': - resolution: {integrity: sha512-JReHfYCRK3FVX4Ra+y5EBH1b9e16TV2OxrPAvzMsGeES0X2Ndm9ImQRI4Ket757vhc5XBOuGperw63upesclRw==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.21.3': - resolution: {integrity: sha512-U3fuQ0xNiAkXOmQ6w5dKpEvXQRSpHOnbw7gEfHCRXPeTKW9sBzVck6C5Yneb8LfJm0l6le4NQfkNPnWMSlTFUQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.21.3': - resolution: {integrity: sha512-3m1CEB7F07s19wmaMNI2KANLcnaqryJxO1fXHUV5j1rWn+wMxdUYoPyO2TnAbfRZdi7ADRwJClmOwgT13qlP3Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.21.3': - resolution: {integrity: sha512-fsNAAl5pU6wmKHq91cHWQT0Fz0vtyE1JauMzKotrwqIKAswwP5cpHUCxZNSTuA/JlqtScq20/5KZ+TxQdovU/g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.21.3': - resolution: {integrity: sha512-tci+UJ4zP5EGF4rp8XlZIdq1q1a/1h9XuronfxTMCNBslpCtmk97Q/5qqy1Mu4zIc0yswN/yP/BLX+NTUC1bXA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.21.3': - resolution: {integrity: sha512-vvG6R5g5ieB4eCJBQevyDMb31LMHthLpXTc2IGkFnPWS/GzIFDnaYFp558O+XybTmYrVjxnryru7QRleJvmZ6Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.21.3': - resolution: {integrity: sha512-f6kz2QpSuyHHg01cDawj0vkyMwuIvN62UAguQfnNVzbge2uWLhA7TCXOn83DT0ZvyJmBI943MItgTovUob36SQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.21.3': - resolution: {integrity: sha512-HjCWhH7K96Na+66TacDLJmOI9R8iDWDDiqe17C7znGvvE4sW1ECt9ly0AJ3dJH62jHyVqW9xpxZEU1jKdt+29A==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.21.3': - resolution: {integrity: sha512-BGpimEccmHBZRcAhdlRIxMp7x9PyJxUtj7apL2IuoG9VxvU/l/v1z015nFs7Si7tXUwEsvjc1rOJdZCn4QTU+Q==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.18.20': - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.21.3': - resolution: {integrity: sha512-5rMOWkp7FQGtAH3QJddP4w3s47iT20hwftqdm7b+loe95o8JU8ro3qZbhgMRy0VuFU0DizymF1pBKkn3YHWtsw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.18.20': - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.21.3': - resolution: {integrity: sha512-h0zj1ldel89V5sjPLo5H1SyMzp4VrgN1tPkN29TmjvO1/r0MuMRwJxL8QY05SmfsZRs6TF0c/IDH3u7XYYmbAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.18.20': - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.21.3': - resolution: {integrity: sha512-dkAKcTsTJ+CRX6bnO17qDJbLoW37npd5gSNtSzjYQr0svghLJYGYB0NF1SNcU1vDcjXLYS5pO4qOW4YbFama4A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.18.20': - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.21.3': - resolution: {integrity: sha512-vnD1YUkovEdnZWEuMmy2X2JmzsHQqPpZElXx6dxENcIwTu+Cu5ERax6+Ke1QsE814Zf3c6rxCfwQdCTQ7tPuXA==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.18.20': - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.21.3': - resolution: {integrity: sha512-IOXOIm9WaK7plL2gMhsWJd+l2bfrhfilv0uPTptoRoSb2p09RghhQQp9YY6ZJhk/kqmeRt6siRdMSLLwzuT0KQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.18.20': - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.21.3': - resolution: {integrity: sha512-uTgCwsvQ5+vCQnqM//EfDSuomo2LhdWhFPS8VL8xKf+PKTCrcT/2kPPoWMTs22aB63MLdGMJiE3f1PHvCDmUOw==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.18.20': - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.21.3': - resolution: {integrity: sha512-vNAkR17Ub2MgEud2Wag/OE4HTSI6zlb291UYzHez/psiKarp0J8PKGDnAhMBcHFoOHMXHfExzmjMojJNbAStrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.18.20': - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.21.3': - resolution: {integrity: sha512-W8H9jlGiSBomkgmouaRoTXo49j4w4Kfbl6I1bIdO/vT0+0u4f20ko3ELzV3hPI6XV6JNBVX+8BC+ajHkvffIJA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.18.20': - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.21.3': - resolution: {integrity: sha512-EjEomwyLSCg8Ag3LDILIqYCZAq/y3diJ04PnqGRgq8/4O3VNlXyMd54j/saShaN4h5o5mivOjAzmU6C3X4v0xw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.18.20': - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.21.3': - resolution: {integrity: sha512-WGiE/GgbsEwR33++5rzjiYsKyHywE8QSZPF7Rfx9EBfK3Qn3xyR6IjyCr5Uk38Kg8fG4/2phN7sXp4NPWd3fcw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.18.20': - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.21.3': - resolution: {integrity: sha512-xRxC0jaJWDLYvcUvjQmHCJSfMrgmUuvsoXgDeU/wTorQ1ngDdUBuFtgY3W1Pc5sprGAvZBtWdJX7RPg/iZZUqA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/eslintrc@1.4.1': - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@ethereumjs/common@3.2.0': - resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} - - '@ethereumjs/rlp@4.0.1': - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - - '@ethereumjs/tx@4.2.0': - resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} - engines: {node: '>=14'} - - '@ethereumjs/util@8.1.0': - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} - - '@ethersproject/abi@5.7.0': - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} - - '@ethersproject/abstract-provider@5.7.0': - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} - - '@ethersproject/abstract-signer@5.7.0': - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - - '@ethersproject/address@5.7.0': - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - - '@ethersproject/base64@5.7.0': - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - - '@ethersproject/basex@5.7.0': - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - - '@ethersproject/bignumber@5.7.0': - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - - '@ethersproject/bytes@5.7.0': - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - - '@ethersproject/constants@5.7.0': - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - - '@ethersproject/contracts@5.7.0': - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} - - '@ethersproject/hash@5.7.0': - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - - '@ethersproject/hdnode@5.7.0': - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} - - '@ethersproject/json-wallets@5.7.0': - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} - - '@ethersproject/keccak256@5.7.0': - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} - - '@ethersproject/logger@5.7.0': - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - - '@ethersproject/networks@5.7.1': - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} - - '@ethersproject/pbkdf2@5.7.0': - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} - - '@ethersproject/properties@5.7.0': - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} - - '@ethersproject/providers@5.7.2': - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} - - '@ethersproject/random@5.7.0': - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} - - '@ethersproject/rlp@5.7.0': - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} - - '@ethersproject/sha2@5.7.0': - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - - '@ethersproject/signing-key@5.7.0': - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} - - '@ethersproject/solidity@5.7.0': - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} - - '@ethersproject/strings@5.7.0': - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} - - '@ethersproject/transactions@5.7.0': - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} - - '@ethersproject/units@5.7.0': - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} - - '@ethersproject/wallet@5.7.0': - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} - - '@ethersproject/web@5.7.1': - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - - '@ethersproject/wordlists@5.7.0': - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} - - '@expressive-code/core@0.35.3': - resolution: {integrity: sha512-SYamcarAjufYhbuK/kfvJSvAXLsfnM7DKc78R7Dq4B73R5bKQK2m5zR0l57tXr4yp2C5Z8lu5xZncdwWxcmPdg==} - - '@expressive-code/plugin-frames@0.35.3': - resolution: {integrity: sha512-QYytMq6IsaHgTofQ5b6d+CnbxkqLdikSF2hC+IL/ZZwPYHYZoUlmjIwmJZhY4/hHqJGELrtZsyVdlt06RntgmA==} - - '@expressive-code/plugin-shiki@0.35.3': - resolution: {integrity: sha512-aFQBPepv0zhVXqJFAvfQ4vXYv/meJKiqmEEKSxdjAfwXllIV49PDlnGEXmbGYjR4hUQQjbfDgzAbrbfePc3YVQ==} - - '@expressive-code/plugin-text-markers@0.35.3': - resolution: {integrity: sha512-gDdnQrfDRXw5Y+PKHJDkpAUdf2pthYOthGcgy3JB8GOTQ3EL1h+755Ct/bGc4MR6jn+dgnQP47uHMWQaccvN6Q==} - - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - - '@formatjs/ecma402-abstract@1.18.2': - resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==} - - '@formatjs/fast-memoize@2.2.0': - resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} - - '@formatjs/icu-messageformat-parser@2.7.6': - resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==} - - '@formatjs/icu-skeleton-parser@1.8.0': - resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==} - - '@formatjs/intl-localematcher@0.5.4': - resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} - - '@hapi/hoek@9.3.0': - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - - '@hapi/topo@5.1.0': - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - - '@humanwhocodes/config-array@0.9.5': - resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/momoa@2.0.4': - resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} - engines: {node: '>=10.10.0'} - - '@humanwhocodes/object-schema@1.2.1': - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - deprecated: Use @eslint/object-schema instead - - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - - '@img/sharp-darwin-arm64@0.33.3': - resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-x64@0.33.3': - resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.0.2': - resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.0.2': - resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.0.2': - resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linux-arm@1.0.2': - resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - - '@img/sharp-libvips-linux-s390x@1.0.2': - resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - - '@img/sharp-libvips-linux-x64@1.0.2': - resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': - resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-x64@1.0.2': - resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-linux-arm64@0.33.3': - resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-linux-arm@0.33.3': - resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - - '@img/sharp-linux-s390x@0.33.3': - resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - - '@img/sharp-linux-x64@0.33.3': - resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-linuxmusl-arm64@0.33.3': - resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-linuxmusl-x64@0.33.3': - resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-wasm32@0.33.3': - resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [wasm32] - - '@img/sharp-win32-ia32@0.33.3': - resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.33.3': - resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [win32] - - '@ipld/dag-cbor@9.2.0': - resolution: {integrity: sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@ipld/dag-json@10.2.0': - resolution: {integrity: sha512-O9YLUrl3d3WbVz7v1WkajFkyfOLEe2Fep+wor4fgVe0ywxzrivrj437NiPcVyB+2EDdFn/Q7tCHFf8YVhDf8ZA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@ipld/dag-pb@4.1.0': - resolution: {integrity: sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@isaacs/ttlcache@1.4.1': - resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} - engines: {node: '>=12'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/create-cache-key-function@29.7.0': - resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@26.6.2': - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@jsdevtools/ono@7.1.3': - resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - - '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - - '@libp2p/interface-connection@4.0.0': - resolution: {integrity: sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@libp2p/interface-keychain@2.0.5': - resolution: {integrity: sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@libp2p/interface-peer-id@2.0.2': - resolution: {integrity: sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@libp2p/interface-peer-info@1.0.10': - resolution: {integrity: sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@libp2p/interface-pubsub@3.0.7': - resolution: {integrity: sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@libp2p/interface@1.3.1': - resolution: {integrity: sha512-KJoYP6biAgIHUU3pxaixaaYCvIHZshzXetxfoNigadAZ3hCGuwpdFhk7IABEaI3RgadOOYUwW3MXPbL+cxnXVQ==} - - '@libp2p/interfaces@3.3.2': - resolution: {integrity: sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@libp2p/logger@2.1.1': - resolution: {integrity: sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@libp2p/peer-id@2.0.4': - resolution: {integrity: sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@lit-labs/ssr-dom-shim@1.2.0': - resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} - - '@lit/reactive-element@1.6.3': - resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} - - '@lit/reactive-element@2.0.4': - resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} - - '@manypkg/find-root@1.1.0': - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - - '@manypkg/get-packages@1.1.3': - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - - '@mdx-js/mdx@3.0.1': - resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} - - '@mdx-js/react@3.0.1': - resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - - '@metamask/eth-json-rpc-provider@1.0.1': - resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} - engines: {node: '>=14.0.0'} - - '@metamask/json-rpc-engine@7.3.3': - resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} - engines: {node: '>=16.0.0'} - - '@metamask/json-rpc-engine@8.0.2': - resolution: {integrity: sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==} - engines: {node: '>=16.0.0'} - - '@metamask/json-rpc-middleware-stream@6.0.2': - resolution: {integrity: sha512-jtyx3PRfc1kqoLpYveIVQNwsxYKefc64/LCl9h9Da1m3nUKEvypbYuXSIwi237qvOjKmNHQKsDOZg6f4uBf62Q==} - engines: {node: '>=16.0.0'} - - '@metamask/json-rpc-middleware-stream@7.0.2': - resolution: {integrity: sha512-yUdzsJK04Ev98Ck4D7lmRNQ8FPioXYhEUZOMS01LXW8qTvPGiRVXmVltj2p4wrLkh0vW7u6nv0mNl5xzC5Qmfg==} - engines: {node: '>=16.0.0'} - - '@metamask/object-multiplex@2.0.0': - resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} - engines: {node: ^16.20 || ^18.16 || >=20} - - '@metamask/onboarding@1.0.1': - resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} - - '@metamask/providers@15.0.0': - resolution: {integrity: sha512-FXvL1NQNl6I7fMOJTfQYcBlBZ33vSlm6w80cMpmn8sJh0Lb7wcBpe02UwBsNlARnI+Qsr26XeDs6WHUHQh8CuA==} - engines: {node: ^18.18 || >=20} - - '@metamask/providers@16.1.0': - resolution: {integrity: sha512-znVCvux30+3SaUwcUGaSf+pUckzT5ukPRpcBmy+muBLC0yaWnBcvDqGfcsw6CBIenUdFrVoAFa8B6jsuCY/a+g==} - engines: {node: ^18.18 || >=20} - - '@metamask/rpc-errors@6.2.1': - resolution: {integrity: sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw==} - engines: {node: '>=16.0.0'} - - '@metamask/safe-event-emitter@2.0.0': - resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} - - '@metamask/safe-event-emitter@3.1.1': - resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} - engines: {node: '>=12.0.0'} - - '@metamask/sdk-communication-layer@0.18.5': - resolution: {integrity: sha512-WMf9oJa3rAimjCXMAaaRVFPD0Q6dfZR0r9037KCpD5g9SlVh+TeMISfdQCEKAyhXP3d4CGxmp/Kib8C3mn2YLw==} - peerDependencies: - cross-fetch: ^3.1.5 - eciesjs: ^0.3.16 - eventemitter2: ^6.4.7 - readable-stream: ^3.6.2 - socket.io-client: ^4.5.1 - - '@metamask/sdk-communication-layer@0.27.0': - resolution: {integrity: sha512-G9LCaQzIqp5WmUmvHN6UUdjWrBh67MbRobmbbs5fcc2+9XFhj3vBgtyleUYjun91jSlPHoZeo+f/Pj4/WoPIJg==} - peerDependencies: - cross-fetch: ^4.0.0 - eciesjs: ^0.3.16 - eventemitter2: ^6.4.7 - readable-stream: ^3.6.2 - socket.io-client: ^4.5.1 - - '@metamask/sdk-install-modal-web@0.18.5': - resolution: {integrity: sha512-Wygc0dgr1PwIA/Sg9WW9QWAsQr4G2GV6iveXt2xw8VKW/9cRORWqYukH1NZLr71hBKzi9AKYBU54Tk5Dfg41zg==} - peerDependencies: - i18next: 22.5.1 - react: ^18.2.0 - react-dom: ^18.2.0 - react-i18next: ^13.2.2 - react-native: '*' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - react-native: - optional: true - - '@metamask/sdk-install-modal-web@0.26.5': - resolution: {integrity: sha512-qVA9Nk+NorGx5hXyODy5wskptE8R7RNYTYt49VbQpJogqbbVe1dnJ98+KaA43PBN4XYMCXmcIhULNiEHGsLynA==} - peerDependencies: - i18next: 23.11.5 - react: ^18.2.0 - react-dom: ^18.2.0 - react-native: '*' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - react-native: - optional: true - - '@metamask/sdk@0.18.6': - resolution: {integrity: sha512-ZT8e4BrcWrm44apLb412WR0fDsgeaS8UlI1c0wKRUPu1w/UntpXuUVO+EaY8WDlnOPAiAsjyqWKey64/DfvbXQ==} - peerDependencies: - '@react-native-async-storage/async-storage': ^1.19.6 - react: ^18.2.0 - react-dom: ^18.2.0 - react-native: '*' - peerDependenciesMeta: - '@react-native-async-storage/async-storage': - optional: true - react: - optional: true - react-dom: - optional: true - react-native: - optional: true - - '@metamask/sdk@0.27.0': - resolution: {integrity: sha512-6sMjr/0qR700X1svPGEQ4rBdtccidBLeTC27fYQc7r9ROgSixB1DUUAyu/LoySVqt3Hu/Zm7NnAHXuT228ht7A==} - peerDependencies: - react: ^18.2.0 - react-dom: ^18.2.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@metamask/utils@5.0.2': - resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} - engines: {node: '>=14.0.0'} - - '@metamask/utils@8.4.0': - resolution: {integrity: sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg==} - engines: {node: '>=16.0.0'} - - '@moralisweb3/api-utils@2.26.1': - resolution: {integrity: sha512-xG2rEvv7MEGiLwz6YkHeWnRToP9xiwtzdesgpYcbOMfEhO0dOF5NMhey9F4NS3l4p+ei8liLQAmFRUehyojbWg==} - - '@moralisweb3/aptos-api@2.26.1': - resolution: {integrity: sha512-LClXb88MtC8kAkuWgJ5PlvjBnY9wCd3fBMa+FbOvIlKgMDHjNizDzFCVAX/f6lF884/XBzpxq0QyoFcvYx0RFQ==} - - '@moralisweb3/auth@2.26.1': - resolution: {integrity: sha512-PUIm67hPOI0ThyUJ851Bq0i1Y0A7cFSR7wILwM0Ye1W1IOoygAI2Ls7Zyy9HK9aRUV3J1Sqek49azjNfmXQ0QA==} - - '@moralisweb3/common-aptos-utils@2.26.1': - resolution: {integrity: sha512-02c4zgksBzlM9zZgeDLvPQ/+yDjVAWRnkbXP2Hnow19PSIqUJb/RkHclqm3+623tH4JJwgbqei3wrQZigNQAWg==} - - '@moralisweb3/common-auth-utils@2.26.1': - resolution: {integrity: sha512-g2FrjZKqjxitd4aDbJjdIwLXDYYa8a3sMRL31jynyblIfz2OTXJ5YZj86n8aENY+1t8BOcLwixzsRHRDiHnbog==} - - '@moralisweb3/common-core@2.26.1': - resolution: {integrity: sha512-HbsSjBZuicoKyJxlWNl0YV6YolGQ0bWT2jbPwMGvLrtbeeRTT3rE2IrIh9nSe7z9pWVvXfU3t+4oXkisY+8dJg==} - - '@moralisweb3/common-evm-utils@2.26.1': - resolution: {integrity: sha512-Gr4qJmGhr5ixSeysg4CjZBZexeTzHqPYPE1YuaGAmD4dmW2OMpN2mRwXYnJmKNtML45XfTy4bCfeoTER7xBCWA==} - - '@moralisweb3/common-sol-utils@2.26.1': - resolution: {integrity: sha512-68VaTLpTvWljzaWsb7bHd7IOPHraT5pqfQG/rs5pOZQ846/nWe8bWzCT619aKAiS54WEhkg3lgqE58mISiTmCw==} - - '@moralisweb3/common-streams-utils@2.26.1': - resolution: {integrity: sha512-dhUrGoeBW1xfokQNRhr7AfejEBA/jOwIp3uyaw19M1eQcw0v+ekhgWvglSEDp0Fp3AouZFUAgkX1pOz/BziuCw==} - - '@moralisweb3/evm-api@2.26.1': - resolution: {integrity: sha512-1A92tQsM/K9wMVpciziPmy8s258en+KN9CIIBNj+6AqXS+yjvd6Fbh//0ZGpKmsBu862ULfb8EnrmeYQBoSEbw==} - - '@moralisweb3/sol-api@2.26.1': - resolution: {integrity: sha512-Wvpg8soLyb5DRR2R/v3ociFVI4I4EH1SsCU7Ah53tfmX/gDl5qs9FFdOMR/gYhS0vZXFN0f2jW+6I9ml1A9bDw==} - - '@moralisweb3/streams-typings@1.0.7': - resolution: {integrity: sha512-ShbVqil0KLOTyTjO6z9JewPcVVE3S6kzkQFnW2flGBRsGdKucpkUdOx1HijOLoaikz/9gH92n+lzTvRFIj0AoA==} - - '@moralisweb3/streams@2.26.1': - resolution: {integrity: sha512-YyF3w8jKYw06ihKSi7LsG2L7FmOXDZarufQdYFhFFlNflprJG+ENorAp8NX9CfSoPzbLkF5NTDug22lehNqWTA==} - - '@motionone/animation@10.17.0': - resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} - - '@motionone/dom@10.17.0': - resolution: {integrity: sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==} - - '@motionone/easing@10.17.0': - resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} - - '@motionone/generators@10.17.0': - resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} - - '@motionone/svelte@10.16.4': - resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} - - '@motionone/types@10.17.0': - resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} - - '@motionone/utils@10.17.0': - resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} - - '@motionone/vue@10.16.4': - resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} - deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion - - '@multiformats/dns@1.0.6': - resolution: {integrity: sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==} - - '@multiformats/multiaddr-to-uri@9.0.8': - resolution: {integrity: sha512-4eiN5iEiQfy2A98BxekUfW410L/ivg0sgjYSgSqmklnrBhK+QyMz4yqgfkub8xDTXOc7O5jp4+LVyM3ZqMeWNw==} - - '@multiformats/multiaddr@11.6.1': - resolution: {integrity: sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@multiformats/multiaddr@12.2.3': - resolution: {integrity: sha512-qUP24ZgYXnyZs0lpYBvPg8Jyn3KFOJFH3a3tAcupulYIVQpR+3/fbaAZp4dYUJxBIDTOfEIpvPKm0DOFxbCDKw==} - - '@noble/curves@1.2.0': - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} - - '@noble/curves@1.3.0': - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} - - '@noble/curves@1.4.0': - resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} - - '@noble/hashes@1.2.0': - resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - - '@noble/hashes@1.3.2': - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - - '@noble/hashes@1.3.3': - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} - engines: {node: '>= 16'} - - '@noble/hashes@1.4.0': - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - - '@noble/secp256k1@1.7.1': - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@openzeppelin/contracts-upgradeable@4.9.6': - resolution: {integrity: sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==} - - '@openzeppelin/contracts-upgradeable@5.0.2': - resolution: {integrity: sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==} - peerDependencies: - '@openzeppelin/contracts': 5.0.2 - - '@openzeppelin/contracts@4.9.6': - resolution: {integrity: sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==} - - '@openzeppelin/contracts@5.0.2': - resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} - - '@openzeppelin/merkle-tree@1.0.6': - resolution: {integrity: sha512-cGWOb2WBWbJhqvupzxjnKAwGLxxAEYPg51sk76yZ5nVe5D03mw7Vx5yo8llaIEqYhP5O39M8QlrNWclgLfKVrA==} - - '@pagefind/darwin-arm64@1.1.0': - resolution: {integrity: sha512-SLsXNLtSilGZjvqis8sX42fBWsWAVkcDh1oerxwqbac84HbiwxpxOC2jm8hRwcR0Z55HPZPWO77XeRix/8GwTg==} - cpu: [arm64] - os: [darwin] - - '@pagefind/darwin-x64@1.1.0': - resolution: {integrity: sha512-QjQSE/L5oS1C8N8GdljGaWtjCBMgMtfrPAoiCmINTu9Y9dp0ggAyXvF8K7Qg3VyIMYJ6v8vg2PN7Z3b+AaAqUA==} - cpu: [x64] - os: [darwin] - - '@pagefind/default-ui@1.1.0': - resolution: {integrity: sha512-+XiAJAK++C64nQcD7s3Prdmd5S92lT05fwjOxm0L1jj80jbL+tmvcqkkFnPpoqhnicIPgcAX/Y5W0HRZnBt35w==} - - '@pagefind/linux-arm64@1.1.0': - resolution: {integrity: sha512-8zjYCa2BtNEL7KnXtysPtBELCyv5DSQ4yHeK/nsEq6w4ToAMTBl0K06khqxdSGgjMSwwrxvLzq3so0LC5Q14dA==} - cpu: [arm64] - os: [linux] - - '@pagefind/linux-x64@1.1.0': - resolution: {integrity: sha512-4lsg6VB7A6PWTwaP8oSmXV4O9H0IHX7AlwTDcfyT+YJo/sPXOVjqycD5cdBgqNLfUk8B9bkWcTDCRmJbHrKeCw==} - cpu: [x64] - os: [linux] - - '@pagefind/windows-x64@1.1.0': - resolution: {integrity: sha512-OboCM76BcMKT9IoSfZuFhiqMRgTde8x4qDDvKulFmycgiJrlL5WnIqBHJLQxZq+o2KyZpoHF97iwsGAm8c32sQ==} - cpu: [x64] - os: [win32] - - '@parcel/watcher-android-arm64@2.4.1': - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.4.1': - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.4.1': - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.4.1': - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.4.1': - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm64-glibc@2.4.1': - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-arm64-musl@2.4.1': - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-x64-glibc@2.4.1': - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-linux-x64-musl@2.4.1': - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-wasm@2.4.1': - resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} - engines: {node: '>= 10.0.0'} - bundledDependencies: - - napi-wasm - - '@parcel/watcher-win32-arm64@2.4.1': - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.4.1': - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.4.1': - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.4.1': - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} - engines: {node: '>= 10.0.0'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - - '@playwright/test@1.43.1': - resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} - engines: {node: '>=16'} - hasBin: true - - '@pnpm/config.env-replace@1.1.0': - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} - engines: {node: '>=12.22.0'} - - '@pnpm/network.ca-file@1.0.2': - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} - engines: {node: '>=12.22.0'} - - '@pnpm/npm-conf@2.2.2': - resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} - engines: {node: '>=12'} - - '@polka/url@1.0.0-next.25': - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - - '@react-native-community/cli-clean@13.6.6': - resolution: {integrity: sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==} - - '@react-native-community/cli-config@13.6.6': - resolution: {integrity: sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==} - - '@react-native-community/cli-debugger-ui@13.6.6': - resolution: {integrity: sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==} - - '@react-native-community/cli-doctor@13.6.6': - resolution: {integrity: sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==} - - '@react-native-community/cli-hermes@13.6.6': - resolution: {integrity: sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==} - - '@react-native-community/cli-platform-android@13.6.6': - resolution: {integrity: sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==} - - '@react-native-community/cli-platform-apple@13.6.6': - resolution: {integrity: sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==} - - '@react-native-community/cli-platform-ios@13.6.6': - resolution: {integrity: sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==} - - '@react-native-community/cli-server-api@13.6.6': - resolution: {integrity: sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==} - - '@react-native-community/cli-tools@13.6.6': - resolution: {integrity: sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==} - - '@react-native-community/cli-types@13.6.6': - resolution: {integrity: sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==} - - '@react-native-community/cli@13.6.6': - resolution: {integrity: sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==} - engines: {node: '>=18'} - hasBin: true - - '@react-native/assets-registry@0.74.83': - resolution: {integrity: sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==} - engines: {node: '>=18'} - - '@react-native/babel-plugin-codegen@0.74.83': - resolution: {integrity: sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==} - engines: {node: '>=18'} - - '@react-native/babel-preset@0.74.83': - resolution: {integrity: sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - - '@react-native/codegen@0.74.83': - resolution: {integrity: sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 - - '@react-native/community-cli-plugin@0.74.83': - resolution: {integrity: sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==} - engines: {node: '>=18'} - - '@react-native/debugger-frontend@0.74.83': - resolution: {integrity: sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==} - engines: {node: '>=18'} - - '@react-native/dev-middleware@0.74.83': - resolution: {integrity: sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==} - engines: {node: '>=18'} - - '@react-native/gradle-plugin@0.74.83': - resolution: {integrity: sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==} - engines: {node: '>=18'} - - '@react-native/js-polyfills@0.74.83': - resolution: {integrity: sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==} - engines: {node: '>=18'} - - '@react-native/metro-babel-transformer@0.74.83': - resolution: {integrity: sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - - '@react-native/normalize-colors@0.74.83': - resolution: {integrity: sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==} - - '@react-native/virtualized-lists@0.74.83': - resolution: {integrity: sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==} - engines: {node: '>=18'} - peerDependencies: - '@types/react': ^18.2.6 - react: '*' - react-native: '*' - peerDependenciesMeta: - '@types/react': - optional: true - - '@readme/better-ajv-errors@1.6.0': - resolution: {integrity: sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==} - engines: {node: '>=14'} - peerDependencies: - ajv: 4.11.8 - 8 - - '@readme/json-schema-ref-parser@1.2.0': - resolution: {integrity: sha512-Bt3QVovFSua4QmHa65EHUmh2xS0XJ3rgTEUPH998f4OW4VVJke3BuS16f+kM0ZLOGdvIrzrPRqwihuv5BAjtrA==} - - '@readme/openapi-parser@2.5.0': - resolution: {integrity: sha512-IbymbOqRuUzoIgxfAAR7XJt2FWl6n2yqN09fF5adacGm7W03siA3bj1Emql0X9D2T+RpBYz3x9zDsMhuoMP62A==} - engines: {node: '>=14'} - peerDependencies: - openapi-types: '>=7' - - '@rnx-kit/chromium-edge-launcher@1.0.0': - resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} - engines: {node: '>=14.15'} - - '@rollup/rollup-android-arm-eabi@4.17.2': - resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.17.2': - resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.17.2': - resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.17.2': - resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.17.2': - resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.17.2': - resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.17.2': - resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.17.2': - resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': - resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.17.2': - resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.17.2': - resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.17.2': - resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.17.2': - resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.17.2': - resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.17.2': - resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.17.2': - resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} - cpu: [x64] - os: [win32] - - '@safe-global/safe-apps-provider@0.18.1': - resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} - - '@safe-global/safe-apps-provider@0.18.3': - resolution: {integrity: sha512-f/0cNv3S4v7p8rowAjj0hDCg8Q8P/wBjp5twkNWeBdvd0RDr7BuRBPPk74LCqmjQ82P+1ltLlkmVFSmxTIT7XQ==} - - '@safe-global/safe-apps-sdk@8.1.0': - resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} - - '@safe-global/safe-apps-sdk@9.1.0': - resolution: {integrity: sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==} - - '@safe-global/safe-gateway-typescript-sdk@3.21.1': - resolution: {integrity: sha512-7nakIjcRSs6781LkizYpIfXh1DYlkUDqyALciqz/BjFU/S97sVjZdL4cuKsG9NEarytE+f6p0Qbq2Bo1aocVUA==} - engines: {node: '>=16'} - - '@scure/base@1.1.6': - resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} - - '@scure/bip32@1.1.5': - resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} - - '@scure/bip32@1.3.2': - resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} - - '@scure/bip32@1.3.3': - resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} - - '@scure/bip32@1.4.0': - resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} - - '@scure/bip39@1.1.1': - resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} - - '@scure/bip39@1.2.1': - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} - - '@scure/bip39@1.2.2': - resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} - - '@scure/bip39@1.3.0': - resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} - - '@shikijs/core@1.12.1': - resolution: {integrity: sha512-biCz/mnkMktImI6hMfMX3H9kOeqsInxWEyCHbSlL8C/2TR1FqfmGxTLRNwYCKsyCyxWLbB8rEqXRVZuyxuLFmA==} - - '@shikijs/core@1.5.2': - resolution: {integrity: sha512-wSAOgaz48GmhILFElMCeQypSZmj6Ru6DttOOtl3KNkdJ17ApQuGNCfzpk4cClasVrnIu45++2DBwG4LNMQAfaA==} - - '@sideway/address@4.1.5': - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - - '@sideway/formula@3.0.1': - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - - '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sindresorhus/is@5.6.0': - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - - '@smithy/abort-controller@3.0.0': - resolution: {integrity: sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==} - engines: {node: '>=16.0.0'} - - '@smithy/chunked-blob-reader-native@3.0.0': - resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} - - '@smithy/chunked-blob-reader@3.0.0': - resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} - - '@smithy/config-resolver@3.0.0': - resolution: {integrity: sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==} - engines: {node: '>=16.0.0'} - - '@smithy/core@2.0.1': - resolution: {integrity: sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==} - engines: {node: '>=16.0.0'} - - '@smithy/credential-provider-imds@3.0.0': - resolution: {integrity: sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==} - engines: {node: '>=16.0.0'} - - '@smithy/eventstream-codec@3.0.0': - resolution: {integrity: sha512-PUtyEA0Oik50SaEFCZ0WPVtF9tz/teze2fDptW6WRXl+RrEenH8UbEjudOz8iakiMl3lE3lCVqYf2Y+znL8QFQ==} - - '@smithy/eventstream-serde-browser@3.0.0': - resolution: {integrity: sha512-NB7AFiPN4NxP/YCAnrvYR18z2/ZsiHiF7VtG30gshO9GbFrIb1rC8ep4NGpJSWrz6P64uhPXeo4M0UsCLnZKqw==} - engines: {node: '>=16.0.0'} - - '@smithy/eventstream-serde-config-resolver@3.0.0': - resolution: {integrity: sha512-RUQG3vQ3LX7peqqHAbmayhgrF5aTilPnazinaSGF1P0+tgM3vvIRWPHmlLIz2qFqB9LqFIxditxc8O2Z6psrRw==} - engines: {node: '>=16.0.0'} - - '@smithy/eventstream-serde-node@3.0.0': - resolution: {integrity: sha512-baRPdMBDMBExZXIUAoPGm/hntixjt/VFpU6+VmCyiYJYzRHRxoaI1MN+5XE+hIS8AJ2GCHLMFEIOLzq9xx1EgQ==} - engines: {node: '>=16.0.0'} - - '@smithy/eventstream-serde-universal@3.0.0': - resolution: {integrity: sha512-HNFfShmotWGeAoW4ujP8meV9BZavcpmerDbPIjkJbxKbN8RsUcpRQ/2OyIxWNxXNH2GWCAxuSB7ynmIGJlQ3Dw==} - engines: {node: '>=16.0.0'} - - '@smithy/fetch-http-handler@3.0.1': - resolution: {integrity: sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==} - - '@smithy/hash-blob-browser@3.0.0': - resolution: {integrity: sha512-/Wbpdg+bwJvW7lxR/zpWAc1/x/YkcqguuF2bAzkJrvXriZu1vm8r+PUdE4syiVwQg7PPR2dXpi3CLBb9qRDaVQ==} - - '@smithy/hash-node@3.0.0': - resolution: {integrity: sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==} - engines: {node: '>=16.0.0'} - - '@smithy/hash-stream-node@3.0.0': - resolution: {integrity: sha512-J0i7de+EgXDEGITD4fxzmMX8CyCNETTIRXlxjMiNUvvu76Xn3GJ31wQR85ynlPk2wI1lqoknAFJaD1fiNDlbIA==} - engines: {node: '>=16.0.0'} - - '@smithy/invalid-dependency@3.0.0': - resolution: {integrity: sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==} - - '@smithy/is-array-buffer@3.0.0': - resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} - engines: {node: '>=16.0.0'} - - '@smithy/md5-js@3.0.0': - resolution: {integrity: sha512-Tm0vrrVzjlD+6RCQTx7D3Ls58S3FUH1ZCtU1MIh/qQmaOo1H9lMN2as6CikcEwgattnA9SURSdoJJ27xMcEfMA==} - - '@smithy/middleware-content-length@3.0.0': - resolution: {integrity: sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-endpoint@3.0.0': - resolution: {integrity: sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-retry@3.0.1': - resolution: {integrity: sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-serde@3.0.0': - resolution: {integrity: sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-stack@3.0.0': - resolution: {integrity: sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==} - engines: {node: '>=16.0.0'} - - '@smithy/node-config-provider@3.0.0': - resolution: {integrity: sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==} - engines: {node: '>=16.0.0'} - - '@smithy/node-http-handler@3.0.0': - resolution: {integrity: sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==} - engines: {node: '>=16.0.0'} - - '@smithy/property-provider@3.0.0': - resolution: {integrity: sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==} - engines: {node: '>=16.0.0'} - - '@smithy/protocol-http@4.0.0': - resolution: {integrity: sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==} - engines: {node: '>=16.0.0'} - - '@smithy/querystring-builder@3.0.0': - resolution: {integrity: sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==} - engines: {node: '>=16.0.0'} - - '@smithy/querystring-parser@3.0.0': - resolution: {integrity: sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==} - engines: {node: '>=16.0.0'} - - '@smithy/service-error-classification@3.0.0': - resolution: {integrity: sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==} - engines: {node: '>=16.0.0'} - - '@smithy/shared-ini-file-loader@3.0.0': - resolution: {integrity: sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==} - engines: {node: '>=16.0.0'} - - '@smithy/signature-v4@3.0.0': - resolution: {integrity: sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==} - engines: {node: '>=16.0.0'} - - '@smithy/smithy-client@3.0.1': - resolution: {integrity: sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==} - engines: {node: '>=16.0.0'} - - '@smithy/types@3.0.0': - resolution: {integrity: sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==} - engines: {node: '>=16.0.0'} - - '@smithy/url-parser@3.0.0': - resolution: {integrity: sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==} - - '@smithy/util-base64@3.0.0': - resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-body-length-browser@3.0.0': - resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} - - '@smithy/util-body-length-node@3.0.0': - resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-buffer-from@3.0.0': - resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-config-provider@3.0.0': - resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-defaults-mode-browser@3.0.1': - resolution: {integrity: sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-defaults-mode-node@3.0.1': - resolution: {integrity: sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-endpoints@2.0.0': - resolution: {integrity: sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-hex-encoding@3.0.0': - resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-middleware@3.0.0': - resolution: {integrity: sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-retry@3.0.0': - resolution: {integrity: sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==} - engines: {node: '>=16.0.0'} - - '@smithy/util-stream@3.0.1': - resolution: {integrity: sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-uri-escape@3.0.0': - resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} - engines: {node: '>=16.0.0'} - - '@smithy/util-utf8@3.0.0': - resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-waiter@3.0.0': - resolution: {integrity: sha512-+fEXJxGDLCoqRKVSmo0auGxaqbiCo+8oph+4auefYjaNxjOLKSY2MxVQfRzo65PaZv4fr+5lWg+au7vSuJJ/zw==} - engines: {node: '>=16.0.0'} - - '@socket.io/component-emitter@3.1.2': - resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - - '@solidity-parser/parser@0.18.0': - resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} - - '@stablelib/aead@1.0.1': - resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} - - '@stablelib/binary@1.0.1': - resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} - - '@stablelib/bytes@1.0.1': - resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} - - '@stablelib/chacha20poly1305@1.0.1': - resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} - - '@stablelib/chacha@1.0.1': - resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} - - '@stablelib/constant-time@1.0.1': - resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} - - '@stablelib/ed25519@1.0.3': - resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} - - '@stablelib/hash@1.0.1': - resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} - - '@stablelib/hkdf@1.0.1': - resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} - - '@stablelib/hmac@1.0.1': - resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} - - '@stablelib/int@1.0.1': - resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} - - '@stablelib/keyagreement@1.0.1': - resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} - - '@stablelib/poly1305@1.0.1': - resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} - - '@stablelib/random@1.0.2': - resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} - - '@stablelib/sha256@1.0.1': - resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} - - '@stablelib/sha512@1.0.1': - resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} - - '@stablelib/wipe@1.0.1': - resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} - - '@stablelib/x25519@1.0.3': - resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} - - '@storybook/addon-actions@8.2.7': - resolution: {integrity: sha512-wDnMGGmaogAForkNncfCx8BEDiwxeK8zC0lj8HkRPUuH6vTr81U5RIb12Wa2TnnNKLKMFAtyPSnofHf3OAfzZQ==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-backgrounds@8.2.7': - resolution: {integrity: sha512-kEL3kzYB0qNfpznchlGBnQm4iydyzdTYDPlCFsKUAxfUmJFnpz2H52Sl5lB+qJC/4OREp1Usltag7cUjeuyzMQ==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-controls@8.2.7': - resolution: {integrity: sha512-u3MruX0Zh6l1iNkoJdXwx+zPVqpDKypVrC0YdN3qQ3+mtTwqt35rgetYqtOkDnJ8mXKxo8A5giERKPIyzH9iBA==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-docs@8.2.7': - resolution: {integrity: sha512-icLbvUWp95WUxq2sY+0xgJ49MaQ2HqtWY9RUJUZswJ/ZPJTCCpIoa6HP/NOB9A90Oec9n8sW+1CdDL4CxfxfZg==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-essentials@8.2.7': - resolution: {integrity: sha512-5qe7La9B2Z4Y9Fet3C35y8zOZwKgrqduNk8yAUmPRAOwopdo8SGKYpnFTnAtTfTCVk6Y+AZlRfQq0yLUk0Wl3g==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-highlight@8.2.7': - resolution: {integrity: sha512-YhiLtyJ3NBNV3FQoQo8RFjj59QGSmmeSwRvCjoac6No2DY5vkMW5a8mW6ORr6QYd7ratRNtd3AsPqksZIehRwQ==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-interactions@8.2.7': - resolution: {integrity: sha512-WZXlwpBNLE483uKuR70A7nm+ZbcZNEmuVz/J1/u7dbi0BUWzmJUa9YIgVeQ/1KTwW8KTkxvB0TuUUH3aA4ZKlA==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-links@8.2.7': - resolution: {integrity: sha512-BJdR+vdj7S6Rtx8XqBNQzLsRGH/FYHJ6B6BPWGp0awVx0jNWJnxepINQov8i+GAddUVQGCNG+r4LI3QSD3tNAA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.7 - peerDependenciesMeta: - react: - optional: true - - '@storybook/addon-measure@8.2.7': - resolution: {integrity: sha512-cS5njwlzrgrUjigUKjhbgJMT8bhPmVDK3FwrQqGhw6xYP4cd9/YBJ4RLNPWhOgGJ+EUTz7eFZ/Rkli5mNrhYcQ==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-outline@8.2.7': - resolution: {integrity: sha512-oFSo3o5eEUSsdGUSPV22pGoJ5lL0PGcqjcee2hyl0Rc60ovsnB1BEGOoaGk7/bmkywMxRZm8D6j85V8HftA/kg==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-themes@8.2.7': - resolution: {integrity: sha512-LlQFHfC5CicQ7urPMOjhqGyKN8Tm+4mVw4mI7+FGnPkUUcBwxw85OcbtdXQgzfU4AlRauBkIz0CW/tbhSR8R/A==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-toolbars@8.2.7': - resolution: {integrity: sha512-lEq0/uiogQSxS8pM5AqIexPiG2mudHUxgBiVWSspbTQDUbGBUxB64VYeYERat50N/GyS2iCymlfSkC+OUXaYLQ==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/addon-viewport@8.2.7': - resolution: {integrity: sha512-d4+klwM/duTukNED1WCeBgIMqL5Jvm/iUs2rUc5HI1FGMEDYnoLVR2ztjivQs+6f1cJWuGwWZD/toB5pKHuR/A==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/blocks@8.2.7': - resolution: {integrity: sha512-lZB4EzmY4ftgubkf7hmkALEhmfMhRkDRD5QjrgTZLRpdVXPzFUyljgLlTBhv34YTN+ZLYK618/4uSVJBpgoKeQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.7 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/builder-vite@8.2.7': - resolution: {integrity: sha512-CoEQjsfAQdZeAavfh1sBTMmC453kUFLKHr1zs6MZAlkejxky+U21t1Zb1qEU+IsEr/AlzvJr60pxUNL/dy6PVQ==} - peerDependencies: - '@preact/preset-vite': '*' - storybook: ^8.2.7 - typescript: '>= 4.3.x' - vite: ^4.0.0 || ^5.0.0 - vite-plugin-glimmerx: '*' - peerDependenciesMeta: - '@preact/preset-vite': - optional: true - typescript: - optional: true - vite-plugin-glimmerx: - optional: true - - '@storybook/codemod@8.2.7': - resolution: {integrity: sha512-D2sJcZMUO6Y7DNja4LvdT6uBee4bZbQKB904kEG9Kpr0XF20IHAP9BbkfG8HEFaS0GbJwvGvE03Sg+S1y+vO6Q==} - - '@storybook/components@8.2.7': - resolution: {integrity: sha512-FXhnoHl9S+tKSFc62iUG3EWplQP9ojGQaSMhqP4QTus6xmo53oSsPzuTPQilKVHkGxFQW8eGgKKsfHw3G2NT2g==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/core@8.2.7': - resolution: {integrity: sha512-vgw5MYN9Bq2/ZsObCOEHbBHwi4RpbYCHPFtKkr4kTnWID++FCSiSVd7jY3xPvcNxWqCxOyH6dThpBi+SsB/ZAA==} - - '@storybook/csf-plugin@8.2.7': - resolution: {integrity: sha512-rBdplL6xcVJcuq+uM0eidomMQ5BtAlVAejYrOTNiqBk/zVh5JSvchYzYG9n6Fo2PdKLLKdlZ874zhsVuNriNBQ==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/csf@0.0.1': - resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} - - '@storybook/csf@0.1.11': - resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} - - '@storybook/global@5.0.0': - resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - - '@storybook/icons@1.2.10': - resolution: {integrity: sha512-310apKdDcjbbX2VSLWPwhEwAgjxTzVagrwucVZIdGPErwiAppX8KvBuWZgPo+rQLVrtH8S+pw1dbUwjcE6d7og==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/instrumenter@8.2.7': - resolution: {integrity: sha512-Zm6Ty4uWFTNchKUviuJ9vfcMb7+qU8eyrFXVY80XRpr62JEWkYj4eCwx4OG8GzlQahTh9aSv9+hzV6p/5Ld4mw==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/manager-api@8.2.7': - resolution: {integrity: sha512-BXjz6eNl1GyFcMwzRQTIokslcIY71AYblJUscPcy03X93oqI0GjFVa1xuSMwYw/oXWn7SHhKmqtqEG19lvBGRQ==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/preview-api@8.2.7': - resolution: {integrity: sha512-lNZBTjZaYNSwBY8dEcDZdkOBvq1/JoVWpuvqDEKvGmp5usTe77xAOwGyncEb96Cx1BbXXkMiDrqbV5G23PFRYA==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/react-dom-shim@8.2.7': - resolution: {integrity: sha512-9VI+NrC09DAr0QQZsFmU5Fd9eqdJp/1AHK+sm9BOZretGGGJwn22xS7UXhHIiFpfXJQnr3TNcYWRzXFyuaE/Sw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.7 - - '@storybook/svelte-vite@8.2.7': - resolution: {integrity: sha512-K9GC0hYLTV6M1PrRG9uXChKMlcZUT/a8wNs9wDib1IS1/VSp7rDi1WSM06nSdiN7GmPrKnAs8tL3JxxvT+z0rA==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^2.0.0 || ^3.0.0 - storybook: ^8.2.7 - svelte: ^4.0.0 || ^5.0.0-next.65 - vite: ^4.0.0 || ^5.0.0 - - '@storybook/svelte@8.2.7': - resolution: {integrity: sha512-2ynotfcsCdLS0thWXSr8uaqia9S4XQ89EwaEaZRvnd41BxwOm2Zon9+B+ZxbT5+I7RebbWrxvONAiNo/Pvdmog==} - engines: {node: '>=18.0.0'} - peerDependencies: - storybook: ^8.2.7 - svelte: ^4.0.0 || ^5.0.0-next.65 - - '@storybook/sveltekit@8.2.7': - resolution: {integrity: sha512-2mHHBu8XMVDP++qr9NnRC9fb/SrI2kNtz1OjHOocVenfIINga5QajVZPqmM00KGzzPmYeHR+tKNwSPC1oh70Ww==} - engines: {node: '>=18.0.0'} - peerDependencies: - storybook: ^8.2.7 - svelte: ^4.0.0 || ^5.0.0-next.65 - vite: ^4.0.0 || ^5.0.0 - - '@storybook/test@8.2.7': - resolution: {integrity: sha512-7xypGR0zjJaM5MkxIz513SYiGs5vDJZL1bbkG1YKeBMff+ZRpa8y8VDYn/WDWuDw76KcFEXoPsPzKwktGhvnpw==} - peerDependencies: - storybook: ^8.2.7 - - '@storybook/theming@8.2.7': - resolution: {integrity: sha512-+iqm0GfRkshrjjNSOzwl7AD2m+LtJGXJCr93ke1huDK497WUKbX1hbbw51h5E1tEkx0c2wIqUlaqCM+7XMYcpw==} - peerDependencies: - storybook: ^8.2.7 - - '@sveltejs/adapter-auto@3.2.0': - resolution: {integrity: sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==} - peerDependencies: - '@sveltejs/kit': ^2.0.0 - - '@sveltejs/kit@2.5.22': - resolution: {integrity: sha512-PQ98baF2WzvG5yiO4cZKJZJG60XjHTZD1jyho3u9Kmthx2ytdGYyVPPvKXgKXpKSq4wwctD9dl0d2blSbJMcOg==} - engines: {node: '>=18.13'} - hasBin: true - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 - - '@sveltejs/package@2.3.2': - resolution: {integrity: sha512-6M8/Te7iXRG7SiH92wugqfyoJpuepjn78L433LnXicUeMso9M/N4vdL9DPK3MfTkVVY4klhNRptVqme3p4oZWA==} - engines: {node: ^16.14 || >=18} - hasBin: true - peerDependencies: - svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0': - resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - - '@sveltejs/vite-plugin-svelte@3.1.0': - resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - - '@szmarczak/http-timer@5.0.1': - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} - - '@tailwindcss/nesting@0.0.0-insiders.565cd3e': - resolution: {integrity: sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==} - peerDependencies: - postcss: ^8.2.15 - - '@testing-library/dom@10.1.0': - resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} - engines: {node: '>=18'} - - '@testing-library/jest-dom@6.4.5': - resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/bun': latest - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/bun': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true - - '@testing-library/user-event@14.5.2': - resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' - - '@ts-morph/common@0.20.0': - resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/acorn@4.0.6': - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.5': - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} - - '@types/bn.js@5.1.5': - resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} - - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - - '@types/cross-spawn@6.0.6': - resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/dns-packet@5.6.5': - resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} - - '@types/dom-screen-wake-lock@1.0.3': - resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} - - '@types/emscripten@1.39.13': - resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} - - '@types/eslint@8.56.10': - resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} - - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/express-serve-static-core@4.19.5': - resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} - - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - - '@types/find-cache-dir@3.2.1': - resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/http-cache-semantics@4.0.4': - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/jest@29.5.12': - resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/lodash@4.17.7': - resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/mdx@2.0.13': - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - - '@types/minimatch@3.0.5': - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/nlcst@2.0.3': - resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - - '@types/node@18.19.31': - resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} - - '@types/node@20.12.8': - resolution: {integrity: sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==} - - '@types/object-hash@3.0.6': - resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} - - '@types/pbkdf2@3.1.2': - resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} - - '@types/prop-types@15.7.12': - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - - '@types/pug@2.0.10': - resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - - '@types/qs@6.9.15': - resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - - '@types/sax@1.2.7': - resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - - '@types/secp256k1@4.0.6': - resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - - '@types/unist@2.0.10': - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - - '@types/unist@3.0.2': - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - - '@types/uuid@9.0.8': - resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@15.0.19': - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} - - '@types/yargs@17.0.32': - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - - '@typescript-eslint/eslint-plugin@7.8.0': - resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.8.0': - resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@5.62.0': - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@typescript-eslint/scope-manager@7.8.0': - resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/type-utils@7.8.0': - resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@5.62.0': - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@typescript-eslint/types@7.8.0': - resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/typescript-estree@5.62.0': - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@7.8.0': - resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@5.62.0': - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@typescript-eslint/utils@7.8.0': - resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/visitor-keys@5.62.0': - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@typescript-eslint/visitor-keys@7.8.0': - resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@vitest/coverage-v8@1.6.0': - resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} - peerDependencies: - vitest: 1.6.0 - - '@vitest/expect@1.6.0': - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - - '@vitest/runner@1.6.0': - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - - '@vitest/snapshot@1.6.0': - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - - '@vitest/spy@1.6.0': - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - - '@vitest/utils@1.6.0': - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - - '@volar/kit@2.4.0-alpha.18': - resolution: {integrity: sha512-dZMSNhesh23lhd61ax2l04IgIcYofAjm8M+5BKAmX47ROweyc8RrrslszCFUJynlmXx6JS1PoHqvo8+E0aAYQQ==} - peerDependencies: - typescript: '*' - - '@volar/language-core@2.4.0-alpha.18': - resolution: {integrity: sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==} - - '@volar/language-server@2.4.0-alpha.18': - resolution: {integrity: sha512-dciHEE/R5kzI0bY71QfkoCVQ3cQI6g9MHfA4oIP6UhnJy0CdleUalWSygOXoD3Nq7Yk6wn2BRrb1PP5MsadY/Q==} - - '@volar/language-service@2.4.0-alpha.18': - resolution: {integrity: sha512-EuetrtbEtudi9buinWAG5U3Jam5dY27zXd/7GYnx542kBwanWOBM8i4DAQd0z7M11fOxXgybxPA933uaSyaOog==} - - '@volar/snapshot-document@2.4.0-alpha.18': - resolution: {integrity: sha512-JAeclEly/wnILhR4Pu9MpgBLInZJH49O1zoy8fU+pk5I+zpv7JIEby5z2UFAS60+sIDnxBdAGd7rZ5VibE70vg==} - - '@volar/source-map@2.4.0-alpha.18': - resolution: {integrity: sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==} - - '@volar/typescript@2.4.0-alpha.18': - resolution: {integrity: sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==} - - '@vscode/emmet-helper@2.9.3': - resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==} - - '@vscode/l10n@0.0.18': - resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - - '@wagmi/cli@2.1.15': - resolution: {integrity: sha512-mtTxbuCDRRSd/2tPAklM+4vFOq5E/0zS5OfLE3Ax2KcUWciOnjLJ0m6BAQ6HzqY9YfWo8DXa7UqxzUBkvPYltg==} - hasBin: true - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - '@wagmi/cli@2.1.4': - resolution: {integrity: sha512-vamvEo/GeBjFxb5oZCvby4YZDOrK/RqD+tcWb5X0pqmJDyWbN2Mkv9DYTtVB+OtfVUzFKciN/8Vhw8luMtOJbw==} - hasBin: true - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - '@wagmi/connectors@4.3.3': - resolution: {integrity: sha512-6u/HbWlIS2MI5lxBYbsqNZIQT4sBleFt8rhzH7mJBrHH6v95LmeZZ3qZFpWdopx4bQ6maNEZOIJnCLhv7k37DQ==} - peerDependencies: - '@wagmi/core': 2.9.1 - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - typescript: - optional: true - - '@wagmi/connectors@5.1.2': - resolution: {integrity: sha512-UX5LqDdGXrTdHBpL9wrJbcjK7/rtpOjx6YSIkO26TdPp6UyxQvEmY2XY6hdgBwHVx9xPaiVNIrWoexa5pRJUNA==} - peerDependencies: - '@wagmi/core': 2.13.1 - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - typescript: - optional: true - - '@wagmi/core@2.13.1': - resolution: {integrity: sha512-6ZdgI6dYfpa+IZPU0DZ3XQEQVzs003tKCERzSUNkxmt5cwSMg0XB1kvF5vU9MuPP96K6IcGkqSwAtgCmM5uy2w==} - peerDependencies: - '@tanstack/query-core': '>=5.0.0' - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - '@tanstack/query-core': - optional: true - typescript: - optional: true - - '@wagmi/core@2.9.1': - resolution: {integrity: sha512-VUILlj0qFmZEa9XpNsYhIaQe3jsJdFGSRSbn+xsvGBo+yZpNxQXuaLo3+ntuv1kTFdw8Qzk17fLGy2U9a0XFdA==} - peerDependencies: - '@tanstack/query-core': '>=5.0.0' - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - '@tanstack/query-core': - optional: true - typescript: - optional: true - - '@walletconnect/core@2.11.2': - resolution: {integrity: sha512-bB4SiXX8hX3/hyBfVPC5gwZCXCl+OPj+/EDVM71iAO3TDsh78KPbrVAbDnnsbHzZVHlsMohtXX3j5XVsheN3+g==} - - '@walletconnect/core@2.12.2': - resolution: {integrity: sha512-7Adv/b3pp9F42BkvReaaM4KS8NEvlkS7AMtwO3uF/o6aRMKtcfTJq9/jgWdKJh4RP8pPRTRFjCw6XQ/RZtT4aQ==} - - '@walletconnect/core@2.13.0': - resolution: {integrity: sha512-blDuZxQenjeXcVJvHxPznTNl6c/2DO4VNrFnus+qHmO6OtT5lZRowdMtlCaCNb1q0OxzgrmBDcTOCbFcCpio/g==} - - '@walletconnect/core@2.14.0': - resolution: {integrity: sha512-E/dgBM9q3judXnTfZQ5ILvDpeSdDpabBLsXtYXa3Nyc26cfNplfLJ2nXm9FgtTdhM1nZ7yx4+zDPiXawBRZl2g==} - - '@walletconnect/environment@1.0.1': - resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} - - '@walletconnect/ethereum-provider@2.11.2': - resolution: {integrity: sha512-BUDqee0Uy2rCZVkW5Ao3q6Ado/3fePYnFdryVF+YL6bPhj+xQZ5OfKodl+uvs7Rwq++O5wTX2RqOTzpW7+v+Mg==} - - '@walletconnect/ethereum-provider@2.12.2': - resolution: {integrity: sha512-vBl2zCnNm2iPaomJdr5YT16cT7aa8cH2WFs6879XPngU5i7HXS3bU6TamhyhKKl13sdIfifmCkCC+RWn5GdPMw==} - - '@walletconnect/ethereum-provider@2.13.0': - resolution: {integrity: sha512-dnpW8mmLpWl1AZUYGYZpaAfGw1HFkL0WSlhk5xekx3IJJKn4pLacX2QeIOo0iNkzNQxZfux1AK4Grl1DvtzZEA==} - - '@walletconnect/ethereum-provider@2.14.0': - resolution: {integrity: sha512-Cc2/DCn85VciA10BrsNWFM//3VC1D8yjwrjfUKjGndLPDz0YIdAxTgYZViIlMjE0lzQC/DMvPYEAnGfW0O1Bwg==} - - '@walletconnect/events@1.0.1': - resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} - - '@walletconnect/heartbeat@1.2.1': - resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} - - '@walletconnect/heartbeat@1.2.2': - resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} - - '@walletconnect/jsonrpc-http-connection@1.0.7': - resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} - - '@walletconnect/jsonrpc-http-connection@1.0.8': - resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} - - '@walletconnect/jsonrpc-provider@1.0.13': - resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} - - '@walletconnect/jsonrpc-provider@1.0.14': - resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} - - '@walletconnect/jsonrpc-types@1.0.3': - resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} - - '@walletconnect/jsonrpc-types@1.0.4': - resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} - - '@walletconnect/jsonrpc-utils@1.0.8': - resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} - - '@walletconnect/jsonrpc-ws-connection@1.0.14': - resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} - - '@walletconnect/keyvaluestorage@1.1.1': - resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} - peerDependencies: - '@react-native-async-storage/async-storage': 1.x - peerDependenciesMeta: - '@react-native-async-storage/async-storage': - optional: true - - '@walletconnect/logger@2.1.2': - resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} - - '@walletconnect/modal-core@2.6.2': - resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} - - '@walletconnect/modal-ui@2.6.2': - resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} - - '@walletconnect/modal@2.6.2': - resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} - - '@walletconnect/relay-api@1.0.10': - resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} - - '@walletconnect/relay-auth@1.0.4': - resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} - - '@walletconnect/safe-json@1.0.2': - resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} - - '@walletconnect/sign-client@2.11.2': - resolution: {integrity: sha512-MfBcuSz2GmMH+P7MrCP46mVE5qhP0ZyWA0FyIH6/WuxQ6G+MgKsGfaITqakpRPsykWOJq8tXMs3XvUPDU413OQ==} - - '@walletconnect/sign-client@2.12.2': - resolution: {integrity: sha512-cM0ualXj6nVvLqS4BDNRk+ZWR+lubcsz/IHreH+3wYrQ2sV+C0fN6ctrd7MMGZss0C0qacWCx0pm62ZBuoKvqA==} - - '@walletconnect/sign-client@2.13.0': - resolution: {integrity: sha512-En7KSvNUlQFx20IsYGsFgkNJ2lpvDvRsSFOT5PTdGskwCkUfOpB33SQJ6nCrN19gyoKPNvWg80Cy6MJI0TjNYA==} - - '@walletconnect/sign-client@2.14.0': - resolution: {integrity: sha512-UrB3S3eLjPYfBLCN3WJ5u7+WcZ8kFMe/QIDqLf76Jk6TaLwkSUy563LvnSw4KW/kA+/cY1KBSdUDfX1tzYJJXg==} - - '@walletconnect/time@1.0.2': - resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} - - '@walletconnect/types@2.11.2': - resolution: {integrity: sha512-p632MFB+lJbip2cvtXPBQslpUdiw1sDtQ5y855bOlAGquay+6fZ4h1DcDePeKQDQM3P77ax2a9aNPZxV6y/h1Q==} - - '@walletconnect/types@2.12.0': - resolution: {integrity: sha512-uhB3waGmujQVJcPgJvGOpB8RalgYSBT+HpmVbfl4Qe0xJyqpRUo4bPjQa0UYkrHaW20xIw94OuP4+FMLYdeemg==} - - '@walletconnect/types@2.12.2': - resolution: {integrity: sha512-9CmwTlPbrFTzayTL9q7xM7s3KTJkS6kYFtH2m1/fHFgALs6pIUjf1qAx1TF2E4tv7SEzLAIzU4NqgYUt2vWXTg==} - - '@walletconnect/types@2.13.0': - resolution: {integrity: sha512-MWaVT0FkZwzYbD3tvk8F+2qpPlz1LUSWHuqbINUtMXnSzJtXN49Y99fR7FuBhNFtDalfuWsEK17GrNA+KnAsPQ==} - - '@walletconnect/types@2.14.0': - resolution: {integrity: sha512-vevMi4jZLJ55vLuFOicQFmBBbLyb+S0sZS4IsaBdZkQflfGIq34HkN13c/KPl4Ye0aoR4/cUcUSitmGIzEQM5g==} - - '@walletconnect/universal-provider@2.11.2': - resolution: {integrity: sha512-cNtIn5AVoDxKAJ4PmB8m5adnf5mYQMUamEUPKMVvOPscfGtIMQEh9peKsh2AN5xcRVDbgluC01Id545evFyymw==} - - '@walletconnect/universal-provider@2.12.2': - resolution: {integrity: sha512-0k5ZgSkABopQLVhkiwl2gRGG7dAP4SWiI915pIlyN5sRvWV+qX1ALhWAmRcdv0TXWlKHDcDgPJw/q2sCSAHuMQ==} - - '@walletconnect/universal-provider@2.13.0': - resolution: {integrity: sha512-B5QvO8pnk5Bqn4aIt0OukGEQn2Auk9VbHfhQb9cGwgmSCd1GlprX/Qblu4gyT5+TjHMb1Gz5UssUaZWTWbDhBg==} - - '@walletconnect/universal-provider@2.14.0': - resolution: {integrity: sha512-Mr8uoTmD6H0+Hh+3gxBu4l3T2uP/nNPR02sVtwEujNum++F727mMk+ifPRIpkVo21V/bvXFEy8sHTs5hqyq5iA==} - - '@walletconnect/utils@2.11.2': - resolution: {integrity: sha512-LyfdmrnZY6dWqlF4eDrx5jpUwsB2bEPjoqR5Z6rXPiHJKUOdJt7az+mNOn5KTSOlRpd1DmozrBrWr+G9fFLYVw==} - - '@walletconnect/utils@2.12.0': - resolution: {integrity: sha512-GIpfHUe1Bjp1Tjda0SkJEizKOT2biuv7VPFnKsOLT1T+8QxEP9NruC+K2UUEvijS1Qr/LKH9P5004RYNgrch+w==} - - '@walletconnect/utils@2.12.2': - resolution: {integrity: sha512-zf50HeS3SfoLv1N9GPl2IXTZ9TsXfet4usVAsZmX9P6/Xzq7d/7QakjVQCHH/Wk1O9XkcsfeoZoUhRxoMJ5uJw==} - - '@walletconnect/utils@2.13.0': - resolution: {integrity: sha512-q1eDCsRHj5iLe7fF8RroGoPZpdo2CYMZzQSrw1iqL+2+GOeqapxxuJ1vaJkmDUkwgklfB22ufqG6KQnz78sD4w==} - - '@walletconnect/utils@2.14.0': - resolution: {integrity: sha512-vRVomYQEtEAyCK2c5bzzEvtgxaGGITF8mWuIL+WYSAMyEJLY97mirP2urDucNwcUczwxUgI+no9RiNFbUHreQQ==} - - '@walletconnect/window-getters@1.0.1': - resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} - - '@walletconnect/window-metadata@1.0.1': - resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} - - '@web3modal/common@4.1.11': - resolution: {integrity: sha512-zcoaixcI3dLC/D0QlhpT8MNCd717O1/3r1AemC5/9Wbk2F+YKXkzJZHmWlXoTvlTw9DH07rJzs9YTPxFyn855w==} - - '@web3modal/common@4.2.3': - resolution: {integrity: sha512-n0lvhoRjViqxmkgpy+iEM6E3HBylUgdxUDJU4hUxGmmrbGZGEP7USBRnQOEgXLqLCtWvxKjUAO33JBV/De+Osw==} - - '@web3modal/common@5.0.11': - resolution: {integrity: sha512-xI6FKrk4/TofM27e0R5F0e7OWMa0YECJshITgFVrX57ZPbgw0O8bTTgLa0yxYG3A5xMnuz6dOYjAAQV+EXrr9w==} - - '@web3modal/core@4.1.11': - resolution: {integrity: sha512-e475IIWywEtgH1CCB2Pl1C/wgPu0NzAvtTMOPSGNoHsw1ID2n6j/o4CURQb2HJjOoYQjTKKVkzXa44vFh2p9xw==} - - '@web3modal/core@4.2.3': - resolution: {integrity: sha512-UykKZTELBpb6ey+IV6fkHWsLkjrIdILmRYzhlznyTPbm9qX5pOR9tH0Z3QGUo7YPFmUqMRH1tC9Irsr3SgIbbw==} - - '@web3modal/polyfills@4.1.11': - resolution: {integrity: sha512-+aMmjGrLCKLo4gVAdWgFdOX2ZjExciSLw/YlZ01wLO8Yj3bZbCZ7sjBc9xndHOVMK0QyUzBtpCOpYMJzi+59jg==} - - '@web3modal/polyfills@4.2.3': - resolution: {integrity: sha512-RiGxh2hMLSD1s2aTjoejNK/UL377CJhGf5tzmdF1m5xsYHpil+Dnulpio8Yojnm27cOqQD+QiaYUKnHOxErLjQ==} - - '@web3modal/scaffold-react@4.1.11': - resolution: {integrity: sha512-vouJHj77ZNKvR/Uyb3Hfc2UFSA4ZrrHmA0vbioCbgIh+V1rYT5XcAZDEu4AAo1qJ5NBRU1pkClVwAmQuWGY43w==} - peerDependencies: - react: '>=17' - react-dom: '>=17' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@web3modal/scaffold-react@4.2.3': - resolution: {integrity: sha512-WRA244mO3qa9wnJtRa+mfXHkfW92VEkEt+HagLQuUcSRTQJH0Q95UF+EXZZ/r1mKbqdqIbpguewuF0dRtL/YrQ==} - peerDependencies: - react: '>=17' - react-dom: '>=17' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@web3modal/scaffold-utils@4.1.11': - resolution: {integrity: sha512-nsS9yK5tp1N/VfecLLPc8H/dGJCzn0jElWjRS92VfGPhOSiEh5PIrPyCl9o6wUZsp4fH1YUsoSY2EFpPsuCWgw==} - - '@web3modal/scaffold-utils@4.2.3': - resolution: {integrity: sha512-z6t0ggYg1/8hpaKHUm77z2VyacjIZEZTI8IHSQYmHuRFGu5oDPJeAr1thr475JXdoGLYr08hwquZyed/ZINAvw==} - - '@web3modal/scaffold-vue@4.1.11': - resolution: {integrity: sha512-PmIfD2TlKkZZa6V0sqwDtZ7t62BEk5JjCHd380QaZwGTbPEwS99leTWLKBTaxAPShK2p7+aj2Txss63wIXLRFg==} - peerDependencies: - vue: '>=3' - peerDependenciesMeta: - vue: - optional: true - - '@web3modal/scaffold-vue@4.2.3': - resolution: {integrity: sha512-0mlx/t0A7srcuFcxP3xuUt2ACFUUcAhyRIsNImtQHPq7QHx7i5zvabQ38iplDsWS0TA7j83hW5gxHycppa5PXg==} - peerDependencies: - vue: '>=3' - peerDependenciesMeta: - vue: - optional: true - - '@web3modal/scaffold@4.1.11': - resolution: {integrity: sha512-n8bP3cJNQxV8OD3s8bSj8QDbZvjn8a1Ui81jo2a3rIxOUAlD/cKRM8ivmNxiUdBMae8GP5CLiWtkIptmSLw40Q==} - - '@web3modal/scaffold@4.2.3': - resolution: {integrity: sha512-8K+IV+luDUvppKgmlgdA+RbQGT2STdRrgHVHFRsAqsORFoLiIYvlrpQlxvV7J5Xc1bgKEn3KvEXC+BH2NMqF4w==} - - '@web3modal/siwe@4.1.11': - resolution: {integrity: sha512-gndcNA351mkAR0wUsO4dLS9CbpcFo+AQ2CUXF0Jx83DwaBStCVsX3yllfnYKh/gpVetF3B48mRUt9TTTJJ79dA==} - - '@web3modal/siwe@4.2.3': - resolution: {integrity: sha512-uPma0U/OxAy3LwnF7pCYYX8tn+ONBYNcssuVZxEGsusJD1kF4ueS8lK7eyQogyK5nXqOGdNESOjY1NImNNjMVw==} - - '@web3modal/ui@4.1.11': - resolution: {integrity: sha512-lentHZvUpNjVasvNI8/jrVPIAV1M5zJKZ4Q4AeYwUJdEtlRon1uq10MRylmvlZAjWb98U130uJy245Fz87Th/w==} - - '@web3modal/ui@4.2.3': - resolution: {integrity: sha512-QPPgE0hii1gpAldTdnrP63D/ryI78Ohz99zRBp8vi81lawot7rbdUbryMoX13hMPCW9vW7JYyvX+jJN7uO3QwA==} - - '@web3modal/wagmi@4.1.11': - resolution: {integrity: sha512-VoXV9idD0yV7jx0F2Xk722VXqQNCDKqDc+LR8WsuOU64TiTLJx9UDQpNcoigbC3bYCi/4Cpw41iSGgs7utbgyQ==} - peerDependencies: - '@wagmi/connectors': '>=4.0.0' - '@wagmi/core': '>=2.0.0' - react: '>=17' - react-dom: '>=17' - viem: '>=2.0.0' - vue: '>=3' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - vue: - optional: true - - '@web3modal/wagmi@4.2.3': - resolution: {integrity: sha512-oisBCMrOYn8TBgNaSPrumvMmTGox6+3Ii92zxQJalW5U/K9iBTxoejHT033Ss7mFEFybilcfXBAvGNFXfQmtkA==} - peerDependencies: - '@wagmi/connectors': '>=4' - '@wagmi/core': '>=2.0.0' - react: '>=17' - react-dom: '>=17' - viem: '>=2.0.0' - vue: '>=3' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - vue: - optional: true - - '@web3modal/wallet@4.1.11': - resolution: {integrity: sha512-6eJSpNcrBxufJFEQu9+ZOMUZxPqa8438RvfYKCU9nLXwoBtweo6ecpQw2yhXDlrfG+uJZhFabtPxROabn2M8Kg==} - - '@web3modal/wallet@4.2.3': - resolution: {integrity: sha512-V+VpwmhQl9qeJMpzNkjpAaxercAsrr1O9oGRjrjD+c0q72NfdcbTalWSbjSQmqabI1M6N06Hw94FkAQuEfVGsg==} - - '@webgpu/types@0.1.21': - resolution: {integrity: sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==} - - '@yarnpkg/fslib@2.10.3': - resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - - '@yarnpkg/libzip@2.3.0': - resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - - '@zerodevx/svelte-toast@0.9.5': - resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} - peerDependencies: - svelte: ^3.57.0 || ^4.0.0 - - abitype@0.9.10: - resolution: {integrity: sha512-FIS7U4n7qwAT58KibwYig5iFG4K61rbhAqaQh/UWj8v1Y8mjX3F8TC9gd8cz9yT1TYel9f8nS5NO5kZp2RW0jQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abitype@0.9.8: - resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abitype@1.0.0: - resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abitype@1.0.2: - resolution: {integrity: sha512-aFt4k2H+eiAKy/zxtnORa9iIb10BMBeWL18l8v4+QuwYEBXPxxjSB1bFZCzQmKPoj8m7j68K705l3uY+E2gAjg==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abitype@1.0.5: - resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - - aes-js@3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - - agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} - - ajv-draft-04@1.0.0: - resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} - peerDependencies: - ajv: ^8.5.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.13.0: - resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} - - anser@1.4.10: - resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-fragments@0.2.1: - resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} - - ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - antlr4@4.13.1-patch-1: - resolution: {integrity: sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==} - engines: {node: '>=16'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - any-signal@3.0.1: - resolution: {integrity: sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - appdirsjs@1.2.7: - resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - - array-iterate@2.0.1: - resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - ast-parents@0.0.1: - resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} - - ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} - - ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} - - astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - - astring@1.8.6: - resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} - hasBin: true - - astro-expressive-code@0.35.3: - resolution: {integrity: sha512-f1L1m3J3EzZHDEox6TXmuKo5fTSbaNxE/HU0S0UQmvlCowtOKnU/LOsoDwsbQSYGKz+fdLRPsCjFMiKqEoyfcw==} - peerDependencies: - astro: ^4.0.0-beta || ^3.3.0 - - astro-og-canvas@0.5.0: - resolution: {integrity: sha512-nrwZpFL9d6tVJRKV5OLZa3xSSh+Cbaaoay/R9jAgHCrJ79WNyN2rgRT/+wtP1O/bCQ+wVP3GC3mBQN7vogImvg==} - engines: {node: '>=18.14.1'} - peerDependencies: - astro: ^3.0.0 || ^4.0.0 - - astro@4.13.1: - resolution: {integrity: sha512-VnMjAc+ykFsIVjgbu9Mt/EA1fMIcPMXbU89h3ATwGOzSIKDsQH72bDgfJkWiwk6u0OE90GeP5EPhAT28Twf9oA==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} - hasBin: true - - async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - - async-mutex@0.2.6: - resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - - autoprefixer@10.4.19: - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - axios@1.6.8: - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} - - axobject-query@4.0.0: - resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} - - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - - babel-core@7.0.0-bridge.0: - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-polyfill-corejs2@0.4.11: - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.10.4: - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.2: - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-transform-flow-enums@0.0.2: - resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-64@1.0.0: - resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} - - base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} - - base-x@4.0.0: - resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bcp-47-match@2.0.3: - resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} - - bcp-47@2.1.0: - resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} - - bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - bl@5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - - blakejs@1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - - blob-to-it@2.0.6: - resolution: {integrity: sha512-xveo/z3QNilIJgCZAjzvx2uWWVHE4JzOy7eMp45zkuBsmwZMgjfhn2h/+BsZPaByVFa3u1W/OBUleNiqgMtVpQ==} - - bn.js@4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - - bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - - boxen@7.1.1: - resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} - engines: {node: '>=14.16'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - browser-assert@1.2.1: - resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - - browser-readablestream-to-it@1.0.3: - resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} - - browser-readablestream-to-it@2.0.7: - resolution: {integrity: sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg==} - - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - bs58@5.0.0: - resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} - - bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer-reverse@1.0.1: - resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} - - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - - buffer@5.6.0: - resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - - builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} - - bundle-require@4.1.0: - resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' - - bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} - - cacheable-request@10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} - engines: {node: '>=14.16'} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} - - caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} - - caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} - - callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - - caniuse-lite@1.0.30001615: - resolution: {integrity: sha512-1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ==} - - caniuse-lite@1.0.30001649: - resolution: {integrity: sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==} - - canvaskit-wasm@0.39.1: - resolution: {integrity: sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==} - - capital-case@1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} - - cborg@4.2.0: - resolution: {integrity: sha512-q6cFW5m3KxfP/9xGI3yGLaC1l5DP6DWM9IvjiJojnIwohL5CQDl02EXViPV852mOfQo+7PJGPN01MI87vFGzyA==} - hasBin: true - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - change-case@4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} - - change-case@5.4.4: - resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - chromatic@11.3.0: - resolution: {integrity: sha512-q1ZtJDJrjLGnz60ivpC16gmd7KFzcaA4eTb7gcytCqbaKqlHhCFr1xQmcUDsm14CK7JsqdkFU6S+JQdOd2ZNJg==} - hasBin: true - peerDependencies: - '@chromatic-com/cypress': ^0.*.* || ^1.0.0 - '@chromatic-com/playwright': ^0.*.* || ^1.0.0 - peerDependenciesMeta: - '@chromatic-com/cypress': - optional: true - '@chromatic-com/playwright': - optional: true - - chromatic@11.7.0: - resolution: {integrity: sha512-Afblm4MWK6GXutxHPJVWKoY1PxCD98Uw0S3/f1a2wu4VTQy97g4+G8vPVqutSMpZFGzG5NjH9QdzKPFMmZczpw==} - hasBin: true - peerDependencies: - '@chromatic-com/cypress': ^0.*.* || ^1.0.0 - '@chromatic-com/playwright': ^0.*.* || ^1.0.0 - peerDependenciesMeta: - '@chromatic-com/cypress': - optional: true - '@chromatic-com/playwright': - optional: true - - chrome-launcher@0.15.2: - resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} - engines: {node: '>=12.13.0'} - hasBin: true - - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - ci-info@4.0.0: - resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} - engines: {node: '>=8'} - - cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - - cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - - cli-color@2.0.4: - resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} - engines: {node: '>=0.10'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - clipboardy@4.0.0: - resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} - engines: {node: '>=18'} - - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - code-block-writer@12.0.0: - resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} - - code-error-fragment@0.0.230: - resolution: {integrity: sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==} - engines: {node: '>= 4'} - - code-red@1.0.4: - resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} - - collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - - colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - - common-ancestor-path@1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - - config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - - connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} - - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - - constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - convert-csv-to-json@2.46.0: - resolution: {integrity: sha512-Q7PjRjhECa5nBUEGbsKXvB8YaygVUesF/sYnaoCPTWoiwJEDCbLd2CcFDE1y80Q347IaTQukCQSCP2fR5IW+5g==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie-es@1.1.0: - resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} - - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - - core-js-compat@3.37.0: - resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - - cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} - - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - crossws@0.2.4: - resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} - peerDependencies: - uWebSockets.js: '*' - peerDependenciesMeta: - uWebSockets.js: - optional: true - - crypto-js@3.3.0: - resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} - - crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - - crypto-random-string@4.0.0: - resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} - engines: {node: '>=12'} - - css-selector-parser@3.0.5: - resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} - - css-selector-tokenizer@0.8.0: - resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssstyle@4.0.1: - resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} - engines: {node: '>=18'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - culori@3.3.0: - resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} - - dag-jose@4.0.0: - resolution: {integrity: sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA==} - - daisyui@4.10.5: - resolution: {integrity: sha512-eOFUo5yEg0WV+3VK2C/+/XN1WH/OhFV4HzrMG5etAzcnB2hPg3aoR7gF1ZUpIv+b5MglLuAVMgub0rv660EgZg==} - engines: {node: '>=16.9.0'} - - daisyui@4.12.10: - resolution: {integrity: sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==} - engines: {node: '>=16.9.0'} - - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} - - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - - date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} - - dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - - dayjs@1.11.11: - resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - dedent-js@1.0.1: - resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} - - dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - denodeify@1.2.1: - resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detect-browser@5.3.0: - resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - - deterministic-object-hash@2.0.2: - resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} - engines: {node: '>=18'} - - devalue@5.0.0: - resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - dijkstrajs@1.0.3: - resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - direction@2.0.1: - resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} - hasBin: true - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - dns-over-http-resolver@2.1.3: - resolution: {integrity: sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==} - - dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - - dom-accessibility-api@0.6.3: - resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@3.3.0: - resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} - engines: {node: '>= 4'} - - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - - dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} - - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - - ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: - resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} - name: ds-test - version: 1.0.0 - - dset@3.1.3: - resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} - engines: {node: '>=4'} - - duplexify@4.1.3: - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - eciesjs@0.3.18: - resolution: {integrity: sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - electron-fetch@1.9.1: - resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} - engines: {node: '>=6'} - - electron-to-chromium@1.4.756: - resolution: {integrity: sha512-RJKZ9+vEBMeiPAvKNWyZjuYyUqMndcP1f335oHqn3BEQbs2NFtVrnK5+6Xg5wSM9TknNNpWghGDUCKGYF+xWXw==} - - electron-to-chromium@1.5.5: - resolution: {integrity: sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==} - - elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - - elliptic@6.5.5: - resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} - - emmet@2.4.7: - resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} - - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - encode-utf8@1.0.3: - resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - engine.io-client@6.5.3: - resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} - - engine.io-parser@5.2.2: - resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} - engines: {node: '>=10.0.0'} - - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - - err-code@3.0.1: - resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - - errorhandler@1.5.1: - resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} - engines: {node: '>= 0.8'} - - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.5.2: - resolution: {integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==} - - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - - es6-promise@3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - - es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} - - es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} - - esbuild-register@3.6.0: - resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} - peerDependencies: - esbuild: '>=0.12 <1' - - esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.21.3: - resolution: {integrity: sha512-Kgq0/ZsAPzKrbOjCQcjoSmPoWhlcVnGAUo7jvaLHoxW1Drto0KGkR1xBNg2Cp43b9ImvxmPEJZ9xkfcnqPsfBw==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - eslint-compat-utils@0.5.0: - resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - - eslint-config-prettier@9.1.0: - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-config-standard@17.1.0: - resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-module-utils@2.8.1: - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-es-x@7.6.0: - resolution: {integrity: sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' - - eslint-plugin-es@3.0.1: - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' - - eslint-plugin-import@2.29.1: - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-n@16.6.2: - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - eslint: '>=7.0.0' - - eslint-plugin-node@11.1.0: - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' - - eslint-plugin-prettier@5.1.3: - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - - eslint-plugin-promise@6.1.1: - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - - eslint-plugin-simple-import-sort@12.1.0: - resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} - peerDependencies: - eslint: '>=5.0.0' - - eslint-plugin-storybook@0.8.0: - resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} - engines: {node: '>= 18'} - peerDependencies: - eslint: '>=6' - - eslint-plugin-svelte@2.38.0: - resolution: {integrity: sha512-IwwxhHzitx3dr0/xo0z4jjDlb2AAHBPKt+juMyKKGTLlKi1rZfA4qixMwnveU20/JTHyipM6keX4Vr7LZFYc9g==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 - peerDependenciesMeta: - svelte: - optional: true - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - - eslint-utils@3.0.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - - eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint@8.4.1: - resolution: {integrity: sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - esm-env@1.0.0: - resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} - - esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} - - espree@9.2.0: - resolution: {integrity: sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - - estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - eth-block-tracker@7.1.0: - resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} - engines: {node: '>=14.0.0'} - - eth-json-rpc-filters@6.0.1: - resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} - engines: {node: '>=14.0.0'} - - eth-query@2.1.2: - resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} - - eth-rpc-errors@4.0.3: - resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} - - ethereum-address@0.0.4: - resolution: {integrity: sha512-3Vwr2CikFLezh/zLAPBV6C51jC0fFnf6vjhkoIWsDms/W5MLgAZNhh9nZUxPmg899K8cVFbklrYQBxcD4JmfrA==} - engines: {node: '>= 4.3.0', npm: '>= 3.7.0'} - - ethereum-bloom-filters@1.1.0: - resolution: {integrity: sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==} - - ethereum-cryptography@0.1.3: - resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} - - ethereum-cryptography@1.2.0: - resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} - - ethereum-cryptography@2.1.3: - resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} - - ethereumjs-util@7.1.5: - resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} - engines: {node: '>=10.0.0'} - - ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} - - ethjs-unit@0.1.6: - resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} - engines: {node: '>=6.5.0', npm: '>=3'} - - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - eventemitter2@6.4.9: - resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} - engines: {node: '>= 0.10.0'} - - expressive-code@0.35.3: - resolution: {integrity: sha512-XjWWUCxS4uQjPoRM98R7SNWWIYlFEaOeHm1piWv+c7coHCekuWno81thsc3g/UJ+DajNtOEsIQIAAcsBQZ8LMg==} - - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - - extension-port-stream@3.0.0: - resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} - engines: {node: '>=12.0.0'} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - - fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - - fast-xml-parser@4.2.5: - resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} - hasBin: true - - fast-xml-parser@4.3.6: - resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} - hasBin: true - - fastparse@1.1.2: - resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - fd-package-json@1.2.0: - resolution: {integrity: sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==} - - fdir@6.2.0: - resolution: {integrity: sha512-9XaWcDl0riOX5j2kYfy0kKdg7skw3IY6kA4LFT8Tk2yF9UdrADUy8D6AJuBLtf7ISm/MksumwAHE3WVbMRyCLw==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - filesize@10.1.1: - resolution: {integrity: sha512-L0cdwZrKlwZQkMSFnCflJ6J2Y+5egO/p3vgRSDQGxQt++QbUZe5gMbRO6kg6gzwQDPvq2Fk9AmoxUNfZ5gdqaQ==} - engines: {node: '>= 10.4.0'} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - - finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} - - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} - - find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - - find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - - find-up-simple@1.0.0: - resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} - engines: {node: '>=18'} - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flat@4.1.1: - resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} - hasBin: true - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - flattie@1.1.1: - resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} - engines: {node: '>=8'} - - flow-enums-runtime@0.0.6: - resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - - flow-parser@0.235.1: - resolution: {integrity: sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ==} - engines: {node: '>=0.4.0'} - - follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3} - name: forge-std - version: 1.7.5 - - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/beb836e33f9a207f4927abb7cd09ad0afe4b3f9f: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/beb836e33f9a207f4927abb7cd09ad0afe4b3f9f} - name: forge-std - version: 1.9.2 - - form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - - functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - futoin-hkdf@1.5.3: - resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} - engines: {node: '>=8'} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-east-asian-width@1.2.0: - resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} - engines: {node: '>=18'} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - get-iterator@1.0.2: - resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} - - get-port-please@3.1.2: - resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.7.3: - resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} - - giget@1.2.3: - resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} - hasBin: true - - github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - got@12.6.1: - resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} - engines: {node: '>=14.16'} - - graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - - h3@1.11.1: - resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - - hashlru@2.3.0: - resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-util-embedded@3.0.0: - resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} - - hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} - - hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} - - hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} - - hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} - - hast-util-is-body-ok-link@3.0.0: - resolution: {integrity: sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==} - - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-phrasing@3.0.1: - resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} - - hast-util-raw@9.0.3: - resolution: {integrity: sha512-ICWvVOF2fq4+7CMmtCPD5CM4QKjPbHpPotE6+8tDooV0ZuyJVUzHsrNX+O5NaRbieTf0F7FfeBOMAwi6Td0+yQ==} - - hast-util-select@6.0.2: - resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} - - hast-util-to-estree@3.1.0: - resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} - - hast-util-to-html@9.0.1: - resolution: {integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==} - - hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} - - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - - hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} - - hast-util-to-text@4.0.2: - resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - - hastscript@9.0.0: - resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} - - header-case@2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} - - hermes-estree@0.19.1: - resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} - - hermes-estree@0.20.1: - resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} - - hermes-parser@0.19.1: - resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} - - hermes-parser@0.20.1: - resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} - - hermes-profile-transformer@0.0.6: - resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} - engines: {node: '>=8'} - - hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - html-escaper@3.0.3: - resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} - - html-parse-stringify@3.0.1: - resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - html-whitespace-sensitive-tag-names@3.0.0: - resolution: {integrity: sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==} - - htmlparser2-svelte@4.1.0: - resolution: {integrity: sha512-+4f4RBFz7Rj2Hp0ZbFbXC+Kzbd6S9PgjiuFtdT76VMNgKogrEZy0pG2UrPycPbrZzVEIM5lAT3lAdkSTCHLPjg==} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - - http-shutdown@1.2.2: - resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} - - https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} - engines: {node: '>= 14'} - - human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - i18next-browser-languagedetector@7.1.0: - resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} - - i18next@22.5.1: - resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} - - i18next@23.11.5: - resolution: {integrity: sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - idb-keyval@6.2.1: - resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore-walk@5.0.1: - resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - image-size@1.1.1: - resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} - engines: {node: '>=16.x'} - hasBin: true - - import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - - inline-style-parser@0.2.3: - resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} - - interface-datastore@7.0.4: - resolution: {integrity: sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - interface-datastore@8.2.11: - resolution: {integrity: sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA==} - - interface-store@3.0.4: - resolution: {integrity: sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - interface-store@5.1.8: - resolution: {integrity: sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==} - - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - - intl-messageformat@10.5.11: - resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - ipfs-core-types@0.14.1: - resolution: {integrity: sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details - - ipfs-core-utils@0.18.1: - resolution: {integrity: sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details - - ipfs-http-client@60.0.1: - resolution: {integrity: sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details - - ipfs-unixfs@9.0.1: - resolution: {integrity: sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - ipfs-utils@9.0.14: - resolution: {integrity: sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - iron-webcrypto@1.1.1: - resolution: {integrity: sha512-5xGwQUWHQSy039rFr+5q/zOmj7GP0Ypzvo34Ep+61bPIhaLduEDp/PvLGlU3awD2mzWUR0weN2vJ1mILydFPEg==} - - is-absolute-url@4.0.1: - resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - - is-electron@2.2.2: - resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} - - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - - is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - is-unicode-supported@2.0.0: - resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} - engines: {node: '>=18'} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - - is64bit@2.0.0: - resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} - engines: {node: '>=18'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - - iso-url@1.2.1: - resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} - engines: {node: '>=12'} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} - - isows@1.0.3: - resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} - peerDependencies: - ws: '*' - - isows@1.0.4: - resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} - peerDependencies: - ws: '*' - - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@5.0.4: - resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - it-all@1.0.6: - resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} - - it-all@2.0.1: - resolution: {integrity: sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-first@2.0.1: - resolution: {integrity: sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-glob@1.0.2: - resolution: {integrity: sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==} - - it-last@2.0.1: - resolution: {integrity: sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-map@2.0.1: - resolution: {integrity: sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-peekable@2.0.1: - resolution: {integrity: sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-pushable@3.2.3: - resolution: {integrity: sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==} - - it-stream-types@1.0.5: - resolution: {integrity: sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-stream-types@2.0.1: - resolution: {integrity: sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - it-to-stream@1.0.0: - resolution: {integrity: sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==} - - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - - joi@17.13.1: - resolution: {integrity: sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==} - - js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsc-android@250231.0.0: - resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - - jsc-safe-url@0.2.4: - resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - - jscodeshift@0.14.0: - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - - jscodeshift@0.15.2: - resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - peerDependenciesMeta: - '@babel/preset-env': - optional: true - - jsdom@24.0.0: - resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true - - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-rpc-engine@6.1.0: - resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} - engines: {node: '>=10.0.0'} - - json-rpc-random-id@1.0.1: - resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json-to-ast@2.1.0: - resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} - engines: {node: '>= 4'} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-parser@2.3.1: - resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - - keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - keyvaluestorage-interface@1.0.0: - resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - known-css-properties@0.30.0: - resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} - - latest-version@7.0.0: - resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} - engines: {node: '>=14.16'} - - lefthook-darwin-arm64@1.6.10: - resolution: {integrity: sha512-Hh11OkoKG7FEOByS1dcgNV7ETq45VmwBbw0VPTiBznyfOG4k+pi0fIdc1qbmbxvYqNE0r420QR/Q3bimaa4Kxg==} - cpu: [arm64] - os: [darwin] - - lefthook-darwin-x64@1.6.10: - resolution: {integrity: sha512-FiOB0t5OBcQ8OnG/LSdfUYj736SJdlLjWuOZ4wTlJ7EUrHditieap6VNAxwMmFVyQN0X2ZwKWytwY35y+Hflhw==} - cpu: [x64] - os: [darwin] - - lefthook-freebsd-arm64@1.6.10: - resolution: {integrity: sha512-IxGgS3RrNwk3Kr83o5SQhGxqppQi7fu2t//nsp6ocgnJeStrTtXZJOrel2VohzrFxpzQdJVXBGgUGLXtY8t8qw==} - cpu: [arm64] - os: [freebsd] - - lefthook-freebsd-x64@1.6.10: - resolution: {integrity: sha512-sFSe+dGLa4iBblWAhAGTP9moarcbFtFAH6aaCeyqSX51O6p9VPdGjqNtcE8aGbGAk4lO6v1ScRjk5ogMSinJwQ==} - cpu: [x64] - os: [freebsd] - - lefthook-linux-arm64@1.6.10: - resolution: {integrity: sha512-fXnKiNdRIW+FRvc1keVrvWX5EqIhVFfPjcy+PbsKdxiWRXgjtidi6LPmQ8eosH0DC9PxZ0mpdCMf40FHEZLbQA==} - cpu: [arm64] - os: [linux] - - lefthook-linux-x64@1.6.10: - resolution: {integrity: sha512-bm6l2GOFnmYreZxmHb47QeOiFAItttOOxvCEX1okIRD7JbUC+lGC9evW5GJv/ltjZBoTDYEtQAUa+BpHTGuY2A==} - cpu: [x64] - os: [linux] - - lefthook-windows-arm64@1.6.10: - resolution: {integrity: sha512-pFxT8KbOMzGxj6cz4glHYwQSNC7XCuy9RDqIO0AxPlpATsCpapkF4ngDxBT1iFv2VhdeweMa7RXUDsMAGQA4Qw==} - cpu: [arm64] - os: [win32] - - lefthook-windows-x64@1.6.10: - resolution: {integrity: sha512-fcDnUSTv95AdLvm0NIrn3jBWXuRq8SlbDDjkkB5OHLiSmjz4eOr6wyD7xceDp33zZgZmWFzHebJngxxcIaUuHw==} - cpu: [x64] - os: [win32] - - lefthook@1.6.10: - resolution: {integrity: sha512-HeVjsDCrHLe9htQHbLuQJu2YdLK6Tl5bh36fOpmXqckEXTI0BDR0Y5JYc7G5Inj4YXQsc51a9dUDZMeniSnSag==} - hasBin: true - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lighthouse-logger@1.4.2: - resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - listhen@1.7.2: - resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} - hasBin: true - - lit-element@3.3.3: - resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} - - lit-element@4.0.5: - resolution: {integrity: sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==} - - lit-html@2.8.0: - resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} - - lit-html@3.1.3: - resolution: {integrity: sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==} - - lit@2.8.0: - resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} - - lit@3.1.0: - resolution: {integrity: sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==} - - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - - locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - - lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - log-symbols@5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} - - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - - logkitty@0.7.1: - resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} - hasBin: true - - lokijs@1.5.12: - resolution: {integrity: sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==} - - long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - - lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} - engines: {node: 14 || >=16.14} - - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} - - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - - magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - - magicast@0.3.4: - resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} - - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - - map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - - markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - - markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - - markdown-to-jsx@7.4.7: - resolution: {integrity: sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==} - engines: {node: '>= 10'} - peerDependencies: - react: '>= 0.14.0' - - marky@1.2.5: - resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - - mdast-util-definitions@6.0.0: - resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} - - mdast-util-directive@3.0.0: - resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} - - mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - - mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} - - mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} - - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - - mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} - - mdast-util-mdx-jsx@3.1.2: - resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} - - mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@13.1.0: - resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} - - mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - - memoizee@0.4.15: - resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} - - memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - - memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - - merge-options@3.0.4: - resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} - engines: {node: '>=10'} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - merkletreejs@0.4.0: - resolution: {integrity: sha512-a48Ta5kWiVNBgeEbZVMm6FB1hBlp6vEuou/XnZdlkmd2zq6NZR6Sh2j+kR1B0iOZIXrTMcigBYzZ39MLdYhm1g==} - engines: {node: '>= 7.6.0'} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - metro-babel-transformer@0.80.9: - resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} - engines: {node: '>=18'} - - metro-cache-key@0.80.9: - resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} - engines: {node: '>=18'} - - metro-cache@0.80.9: - resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} - engines: {node: '>=18'} - - metro-config@0.80.9: - resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} - engines: {node: '>=18'} - - metro-core@0.80.9: - resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} - engines: {node: '>=18'} - - metro-file-map@0.80.9: - resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} - engines: {node: '>=18'} - - metro-minify-terser@0.80.9: - resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} - engines: {node: '>=18'} - - metro-resolver@0.80.9: - resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} - engines: {node: '>=18'} - - metro-runtime@0.80.9: - resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} - engines: {node: '>=18'} - - metro-source-map@0.80.9: - resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} - engines: {node: '>=18'} - - metro-symbolicate@0.80.9: - resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} - engines: {node: '>=18'} - hasBin: true - - metro-transform-plugins@0.80.9: - resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} - engines: {node: '>=18'} - - metro-transform-worker@0.80.9: - resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} - engines: {node: '>=18'} - - metro@0.80.9: - resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} - engines: {node: '>=18'} - hasBin: true - - micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - - micromark-core-commonmark@2.0.1: - resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} - - micromark-extension-directive@3.0.0: - resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} - - micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} - - micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} - - micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} - - micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-extension-mdx-expression@3.0.0: - resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} - - micromark-extension-mdx-jsx@3.0.0: - resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} - - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - - micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} - - micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - - micromark-factory-mdx-expression@2.0.1: - resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} - - micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} - - micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} - - micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} - - micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} - - micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} - - micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} - - micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} - - micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} - - micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} - - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - - micromark-util-events-to-acorn@2.0.2: - resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} - - micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - - micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} - - micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - - micromark-util-subtokenize@2.0.1: - resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} - - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - - micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - mimic-response@4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minidenticons@4.2.1: - resolution: {integrity: sha512-oWfFivA0lOx/V/bO/YIJbthB26lV8JXYvhnv9zM2hNd3fzsHTXQ6c6bWZPcvhD3nnOB+lQk/D9lF43BXixrN8g==} - engines: {node: '>=15.14.0'} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.1.0: - resolution: {integrity: sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mipd@0.0.5: - resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - mipd@0.0.7: - resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mkdirp@2.1.6: - resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} - engines: {node: '>=10'} - hasBin: true - - mlly@1.7.0: - resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} - - mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} - - moralis@2.26.1: - resolution: {integrity: sha512-6aY1D/ZJwpys3H1tKhxbuRvnHXTOK07uqPrBQS2OPbCyxYjW33NFJPJXiLRXsmpDjFM+xq6vYRKrQSy5Zf4yog==} - - motion@10.16.2: - resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - - multiformats@11.0.2: - resolution: {integrity: sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - multiformats@12.1.3: - resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - multiformats@13.1.0: - resolution: {integrity: sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==} - - multiformats@9.9.0: - resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} - - murky@https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d: - resolution: {tarball: https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d} - name: murky - version: 0.0.0 - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanoid@4.0.2: - resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} - engines: {node: ^14 || ^16 || >=18} - hasBin: true - - napi-wasm@1.1.0: - resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} - - native-fetch@3.0.0: - resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} - peerDependencies: - node-fetch: '*' - - native-fetch@4.0.2: - resolution: {integrity: sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==} - peerDependencies: - undici: '*' - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - - nlcst-to-string@4.0.0: - resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} - - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - - nocache@3.0.4: - resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} - engines: {node: '>=12.0.0'} - - node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - - node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - - node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - - node-addon-api@7.1.0: - resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} - engines: {node: ^16 || ^18 || >= 20} - - node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - - node-gyp-build@4.8.1: - resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} - hasBin: true - - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - - node-stream-zip@1.15.0: - resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} - engines: {node: '>=0.12.0'} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - normalize-url@8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} - engines: {node: '>=14.16'} - - not@0.1.0: - resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} - - npm-bundled@2.0.1: - resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - npm-normalize-package-bin@2.0.0: - resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - npm-packlist@5.1.3: - resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - - number-to-bn@1.7.0: - resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} - engines: {node: '>=6.5.0', npm: '>=3'} - - nwsapi@2.2.9: - resolution: {integrity: sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==} - - nypm@0.3.9: - resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - - ob1@0.80.9: - resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} - engines: {node: '>=18'} - - obj-multiplex@1.0.0: - resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - - ofetch@1.3.4: - resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} - - ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - - on-exit-leak-free@0.2.0: - resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} - - on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} - - open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - openapi-types@12.1.3: - resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - - optimism@https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8: - resolution: {tarball: https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8} - name: optimism - version: 1.0.0 - engines: {node: '>=16', pnpm: '>=9'} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - ora@6.3.1: - resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - ora@8.0.1: - resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} - engines: {node: '>=18'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - - p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - - p-defer@3.0.0: - resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} - engines: {node: '>=8'} - - p-defer@4.0.1: - resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} - engines: {node: '>=12'} - - p-fifo@1.0.0: - resolution: {integrity: sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==} - - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - - p-limit@6.1.0: - resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} - engines: {node: '>=18'} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - - p-map@7.0.2: - resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} - engines: {node: '>=18'} - - p-queue@8.0.1: - resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} - engines: {node: '>=18'} - - p-timeout@6.1.2: - resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} - engines: {node: '>=14.16'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da: - resolution: {tarball: https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da} - name: p256-verifier#v0.1.0 - version: 0.0.0 - - package-json@8.1.1: - resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} - engines: {node: '>=14.16'} - - pagefind@1.1.0: - resolution: {integrity: sha512-1nmj0/vfYcMxNEQj0YDRp6bTVv9hI7HLdPhK/vBBYlrnwjATndQvHyicj5Y7pUHrpCFZpFnLVQXIF829tpFmaw==} - hasBin: true - - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-duration@1.1.0: - resolution: {integrity: sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==} - - parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - - parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-latin@7.0.0: - resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-case@3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} - - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - - path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - - periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@3.0.1: - resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} - engines: {node: '>=10'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - - pino-abstract-transport@0.5.0: - resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} - - pino-std-serializers@4.0.0: - resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} - - pino@7.11.0: - resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} - hasBin: true - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-types@1.1.0: - resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} - - pkg-types@1.1.3: - resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} - - playwright-core@1.43.1: - resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} - engines: {node: '>=16'} - hasBin: true - - playwright@1.43.1: - resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} - engines: {node: '>=16'} - hasBin: true - - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - - pngjs@5.0.0: - resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} - engines: {node: '>=10.13.0'} - - polished@4.3.1: - resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} - engines: {node: '>=10'} - - pony-cause@2.1.11: - resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} - engines: {node: '>=12.0.0'} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-import@16.1.0: - resolution: {integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==} - engines: {node: '>=18.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@5.0.6: - resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-nesting@12.1.2: - resolution: {integrity: sha512-FUmTHGDNundodutB4PUBxt/EPuhgtpk8FJGRsBhOuy+6FnkR2A8RZWIsyyy6XmhvX2DZQQWIkvu+HB4IbJm+Ew==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.4 - - postcss-safe-parser@6.0.0: - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.3.3 - - postcss-scss@4.0.9: - resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.4.29 - - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.41: - resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} - engines: {node: ^10 || ^12 || >=14} - - preact@10.21.0: - resolution: {integrity: sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg==} - - preferred-pm@3.1.3: - resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} - engines: {node: '>=10'} - - preferred-pm@4.0.0: - resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==} - engines: {node: '>=18.12'} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier-plugin-svelte@3.2.3: - resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} - peerDependencies: - prettier: ^3.0.0 - svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - - pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} - - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process-warning@1.0.0: - resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - progress-events@1.0.0: - resolution: {integrity: sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - - protobufjs@7.3.0: - resolution: {integrity: sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==} - engines: {node: '>=12.0.0'} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - proxy-compare@2.5.1: - resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - - psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - - publint@0.1.16: - resolution: {integrity: sha512-wJgk7HnXDT5Ap0DjFYbGz78kPkN44iQvDiaq8P63IEEyNU9mYXvaMd2cAyIM6OgqXM/IA3CK6XWIsRq+wjNpgw==} - engines: {node: '>=16'} - hasBin: true - - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - qr-code-styling@1.6.0-rc.1: - resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} - - qrcode-generator@1.4.4: - resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} - - qrcode-terminal-nooctal@0.12.1: - resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} - hasBin: true - - qrcode@1.5.3: - resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} - engines: {node: '>=10.13.0'} - hasBin: true - - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - - query-string@7.1.3: - resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} - engines: {node: '>=6'} - - querystring@0.2.1: - resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - - quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - - quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - - radix3@1.1.2: - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - react-colorful@5.6.1: - resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - react-confetti@6.1.0: - resolution: {integrity: sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==} - engines: {node: '>=10.18'} - peerDependencies: - react: ^16.3.0 || ^17.0.1 || ^18.0.0 - - react-devtools-core@5.1.0: - resolution: {integrity: sha512-NRtLBqYVLrIY+lOa2oTpFiAhI7Hru0AUXI0tP9neCyaPPAzlZyeH0i+VZ0shIyRTJbpvyqbD/uCsewA2hpfZHw==} - - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-i18next@13.5.0: - resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} - peerDependencies: - i18next: '>= 23.2.3' - react: '>= 16.8.0' - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - react-native-fetch-api@3.0.0: - resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} - - react-native-webview@11.26.1: - resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} - peerDependencies: - react: '*' - react-native: '*' - - react-native@0.74.1: - resolution: {integrity: sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@types/react': ^18.2.6 - react: 18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - - react-shallow-renderer@16.15.0: - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - - real-require@0.1.0: - resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} - engines: {node: '>= 12.13.0'} - - recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} - - recast@0.23.9: - resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} - engines: {node: '>= 4'} - - receptacle@1.3.2: - resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - - regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - - regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} - - registry-auth-token@5.0.2: - resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} - engines: {node: '>=14'} - - registry-url@6.0.1: - resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} - engines: {node: '>=12'} - - regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - - rehype-expressive-code@0.35.3: - resolution: {integrity: sha512-kj43Rg+WzYUs8RRr6XyBr60pnrIZEgbmn9yJoV6qka1UDpcx7r8icn6Q2uSAgaLtlEUy+HCPgQJraOZrA53LOQ==} - - rehype-external-links@3.0.0: - resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} - - rehype-format@5.0.0: - resolution: {integrity: sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==} - - rehype-minify-whitespace@6.0.0: - resolution: {integrity: sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==} - - rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} - - rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} - - rehype@13.0.1: - resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} - - remark-directive@3.0.0: - resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} - - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - - remark-mdx@3.0.1: - resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.1.0: - resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} - - remark-smartypants@3.0.2: - resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} - engines: {node: '>=16.0.0'} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - request-light@0.7.0: - resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - requireindex@1.2.0: - resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} - engines: {node: '>=0.10.5'} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - - resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - retext-latin@4.0.0: - resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} - - retext-smartypants@6.1.0: - resolution: {integrity: sha512-LDPXg95346bqFZnDMHo0S7Rq5p64+B+N8Vz733+wPMDtwb9rCOs9LIdIEhrUOU+TAywX9St+ocQWJt8wrzivcQ==} - - retext-stringify@4.0.0: - resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} - - retext@9.0.0: - resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} - - retimer@3.0.0: - resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - - risc0-ethereum#v1.0.0@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900: - resolution: {tarball: https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900} - name: risc0-ethereum#v1.0.0 - version: 0.0.0 - - rlp@2.2.7: - resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} - hasBin: true - - rollup-plugin-visualizer@5.12.0: - resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rollup: - optional: true - - rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.17.2: - resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - - safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sander@0.5.1: - resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} - - sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} - - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} - - scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - - secp256k1@4.0.3: - resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} - engines: {node: '>=10.0.0'} - - secp256k1@5.0.0: - resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} - engines: {node: '>=14.0.0'} - - section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - - sentence-case@3.0.4: - resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} - - serialize-error@2.1.0: - resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} - engines: {node: '>=0.10.0'} - - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - - sharp@0.33.3: - resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==} - engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - - shiki@1.12.1: - resolution: {integrity: sha512-nwmjbHKnOYYAe1aaQyEBHvQymJgfm86ZSS7fT8OaPRr4sbAcBNz7PbfAikMEFSDQ6se2j2zobkXvVKcBOm0ysg==} - - shiki@1.5.2: - resolution: {integrity: sha512-fpPbuSaatinmdGijE7VYUD3hxLozR3ZZ+iAx8Iy2X6REmJGyF5hQl94SgmiUNTospq346nXUVZx0035dyGvIVw==} - - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - sitemap@7.1.2: - resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} - hasBin: true - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} - - slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - - socket.io-client@4.7.5: - resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} - engines: {node: '>=10.0.0'} - - socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} - engines: {node: '>=10.0.0'} - - solady@https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b: - resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b} - name: solady - version: 0.0.231 - - solady@https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d: - resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d} - name: solady - version: 0.0.167 - - solc@0.8.24: - resolution: {integrity: sha512-G5yUqjTUPc8Np74sCFwfsevhBPlUifUOfhYrgyu6CmYlC6feSw0YS6eZW47XDT23k3JYdKx5nJ+Q7whCEmNcoA==} - engines: {node: '>=10.0.0'} - hasBin: true - - solhint@4.5.4: - resolution: {integrity: sha512-Cu1XiJXub2q1eCr9kkJ9VPv1sGcmj3V7Zb76B0CoezDOB9bu3DxKIFFH7ggCl9fWpEPD6xBmRLfZrYijkVmujQ==} - hasBin: true - - solhint@5.0.3: - resolution: {integrity: sha512-OLCH6qm/mZTCpplTXzXTJGId1zrtNuDYP5c2e6snIv/hdRVxPfBBz/bAlL91bY/Accavkayp2Zp2BaDSrLVXTQ==} - hasBin: true - - solidity-stringutils@https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: - resolution: {tarball: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461} - name: solidity-stringutils - version: 0.0.0 - - sonic-boom@2.8.0: - resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} - - sorcery@0.11.0: - resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} - hasBin: true - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - - sp1-contracts#v2.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb: - resolution: {tarball: https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb} - name: sp1-contracts#v2.0.0 - version: 0.0.0 - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - - split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - starlight-links-validator@0.8.0: - resolution: {integrity: sha512-FYZ5cfV7jSL4wOsWmIkpR+9dH0Z8fxslSQl8IiAv5URfkxLgsaFzjx51FBeSaaS5uVmO5WgfkUjx3N52Jl1/TQ==} - engines: {node: '>=18.14.1'} - peerDependencies: - '@astrojs/starlight': '>=0.15.0' - astro: '>=4.0.0' - - starlight-openapi@0.6.3: - resolution: {integrity: sha512-AHTbCJeGHzzhwVVi7UMgFgNKkvio2bbi9zQVtcI7CrMXVdd4jqL/L+R7MUxtr/DtzWG7PCCRsKPriwYubJ1ZPQ==} - engines: {node: '>=18.14.1'} - peerDependencies: - '@astrojs/markdown-remark': '>=4.2.0' - '@astrojs/starlight': '>=0.19.0' - astro: '>=4.2.7' - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - - stdin-discarder@0.1.0: - resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - - storybook@8.2.7: - resolution: {integrity: sha512-Jb9DXue1sr3tKkpuq66VP5ItOKTpxL6t99ze1wXDbjCvPiInTdPA5AyFEjBuKjOBIh28bayYoOZa6/xbMJV+Wg==} - hasBin: true - - stream-browserify@3.0.0: - resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} - - stream-replace-string@2.0.0: - resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} - - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - - stream-to-it@0.2.4: - resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} - - strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - - strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-hex-prefix@1.0.0: - resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} - engines: {node: '>=6.5.0', npm: '>=3'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - - style-to-object@0.4.4: - resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - - style-to-object@1.0.6: - resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - sudo-prompt@9.2.1: - resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} - - superstruct@1.0.4: - resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} - engines: {node: '>=14.0.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svelte-check@3.7.1: - resolution: {integrity: sha512-U4uJoLCzmz2o2U33c7mPDJNhRYX/DNFV11XTUDlFxaKLsO7P+40gvJHMPpoRfa24jqZfST4/G9fGNcUGMO8NAQ==} - hasBin: true - peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - - svelte-copy@1.4.2: - resolution: {integrity: sha512-Q99JvWDzB58JlbVWX2VxjHX/CQ5ayDLUGGJgL2EqU1+3c9CDOtxLrKFZx5CVN5bN/DDl62nxtazz0j3nGX1Xew==} - peerDependencies: - svelte: ^3.55.0 || ^4.0.0 - - svelte-eslint-parser@0.35.0: - resolution: {integrity: sha512-CtbPseajW0gjwEvHiuzYJkPDjAcHz2FaHt540j6RVYrZgnE6xWkzUBodQ4I3nV+G5AS0Svt8K6aIA/CIU9xT2Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 - peerDependenciesMeta: - svelte: - optional: true - - svelte-hmr@0.16.0: - resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - - svelte-i18n@4.0.0: - resolution: {integrity: sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==} - engines: {node: '>= 16'} - hasBin: true - peerDependencies: - svelte: ^3 || ^4 - - svelte-preprocess@5.1.4: - resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} - engines: {node: '>= 16.0.0'} - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true - - svelte-scrolling@1.4.0: - resolution: {integrity: sha512-1721UrmTODAIhybCR5p/l6lQNSmuk66VgtgxdAEdQiGuYU1wCcKB/9kba0VXlxIeh5vhEaoODAOCizRRtHKQoQ==} - peerDependencies: - svelte: ^3 || ^4 - - svelte2tsx@0.7.15: - resolution: {integrity: sha512-91RbLJI448FR1UEZqXSS3ucVMERuWo8ACOhxfkBPK1CL2ocGMOC5bwc8tzFvb/Ji8NqZ7wmSGfvRebcUsiauKA==} - peerDependencies: - svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 - typescript: ^4.9.4 || ^5.0.0 - - svelte@4.2.15: - resolution: {integrity: sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg==} - engines: {node: '>=16'} - - sveltedoc-parser@4.2.1: - resolution: {integrity: sha512-sWJRa4qOfRdSORSVw9GhfDEwsbsYsegnDzBevUCF6k/Eis/QqCu9lJ6I0+d/E2wOWCjOhlcJ3+jl/Iur+5mmCw==} - engines: {node: '>=10.0.0'} - - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} - - system-architecture@0.1.0: - resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} - engines: {node: '>=18'} - - table@6.8.2: - resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} - engines: {node: '>=10.0.0'} - - tailwindcss-image-rendering@1.0.2: - resolution: {integrity: sha512-WC3hJd2RbHBYIqtJxwpQ5z94wUNyBrJn1eFz3J/jR7OGrQB8WYbJGvJQ9scNNVzoHEYGoNdZbUI90l9YgpBCwg==} - - tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} - engines: {node: '>=14.0.0'} - hasBin: true - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - telejson@7.2.0: - resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} - - temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - - temp-dir@3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} - engines: {node: '>=14.16'} - - temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - - tempy@3.1.0: - resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} - engines: {node: '>=14.16'} - - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - - terser@5.31.0: - resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} - engines: {node: '>=10'} - hasBin: true - - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - thread-stream@0.15.2: - resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} - - throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - - timeout-abort-controller@3.0.0: - resolution: {integrity: sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==} - - timers-ext@0.1.7: - resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} - - tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - - tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} - engines: {node: '>=18'} - - treeify@1.1.0: - resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} - engines: {node: '>=0.6'} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - - ts-essentials@9.4.2: - resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} - peerDependencies: - typescript: '>=4.1.0' - peerDependenciesMeta: - typescript: - optional: true - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-morph@19.0.0: - resolution: {integrity: sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==} - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsconfck@3.0.3: - resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - - tsconfck@3.1.1: - resolution: {integrity: sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - - tween-functions@1.2.0: - resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - type@2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - - typesafe-path@0.2.2: - resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} - - typescript-auto-import-cache@0.3.3: - resolution: {integrity: sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==} - - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - - uint8-varint@2.0.4: - resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} - - uint8arraylist@2.4.8: - resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} - - uint8arrays@3.1.0: - resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} - - uint8arrays@3.1.1: - resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} - - uint8arrays@4.0.10: - resolution: {integrity: sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==} - - uint8arrays@5.1.0: - resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} - engines: {node: '>=14.0'} - - unenv@1.9.0: - resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} - - unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unique-string@3.0.0: - resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} - engines: {node: '>=12'} - - unist-util-find-after@5.0.0: - resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-modify-children@4.0.0: - resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} - - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-children@3.0.0: - resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - unplugin@1.12.0: - resolution: {integrity: sha512-KeczzHl2sATPQUx1gzo+EnUkmN4VmGBYRRVOZSGvGITE9rGHRDGqft6ONceP3vgXcyJ2XjX5axG5jMWUwNCYLw==} - engines: {node: '>=14.0.0'} - - unstorage@1.10.2: - resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} - peerDependencies: - '@azure/app-configuration': ^1.5.0 - '@azure/cosmos': ^4.0.0 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^4.0.1 - '@azure/keyvault-secrets': ^4.8.0 - '@azure/storage-blob': ^12.17.0 - '@capacitor/preferences': ^5.0.7 - '@netlify/blobs': ^6.5.0 || ^7.0.0 - '@planetscale/database': ^1.16.0 - '@upstash/redis': ^1.28.4 - '@vercel/kv': ^1.0.1 - idb-keyval: ^6.2.1 - ioredis: ^5.3.2 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/kv': - optional: true - idb-keyval: - optional: true - ioredis: - optional: true - - untun@0.1.3: - resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} - hasBin: true - - update-browserslist-db@1.0.15: - resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - upper-case-first@2.0.2: - resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} - - upper-case@2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} - - uqr@0.1.2: - resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - use-sync-external-store@1.2.0: - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - utf-8-validate@6.0.3: - resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} - engines: {node: '>=6.14.2'} - - utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - v8-compile-cache@2.4.0: - resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - - valtio@1.11.2: - resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=16.8' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - - varint@6.0.0: - resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - - vfile@6.0.2: - resolution: {integrity: sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==} - - viem@1.21.4: - resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - viem@2.18.8: - resolution: {integrity: sha512-Fi5d9fd/LBiVtJ5eV2c99yrdt4dJH5Vbkf2JajwCqHYuV4ErSk/sm+L6Ru3rzT67rfRHSOQibTZxByEBua/WLw==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - viem@2.9.31: - resolution: {integrity: sha512-8aJ8Dm/591Czwb/nRayo0z8Ls5KxqC4QYE33fmHwhx2tDUWC/hHcPZqjLRSTWFtAfi0aZKvP7BeB6UZ3ZkTRhQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - vite-node@1.6.0: - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite-tsconfig-paths@4.3.2: - resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true - - vite@4.5.3: - resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vite@5.2.11: - resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vite@5.3.5: - resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitefu@0.2.5: - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true - - vitest-fetch-mock@0.2.2: - resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} - engines: {node: '>=14.14.0'} - peerDependencies: - vitest: '>=0.16.0' - - vitest-mock-extended@1.3.1: - resolution: {integrity: sha512-OpghYjh4BDuQ/Mzs3lFMQ1QRk9D8/2O9T47MLUA5eLn7K4RWIy+MfIivYOWEyxjTENjsBnzgMihDjyNalN/K0Q==} - peerDependencies: - typescript: 3.x || 4.x || 5.x - vitest: '>=0.31.1' - - vitest@1.6.0: - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vlq@1.0.1: - resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - - void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} - - volar-service-css@0.0.59: - resolution: {integrity: sha512-gLNjJnECbalPvQB7qeJjhkDN8sR5M3ItbVYjnyio61aHaWptIiXm/HfDahcQ2ApwmvWidkMWWegjGq5L0BENDA==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-emmet@0.0.59: - resolution: {integrity: sha512-6EynHcuMwMBETpK29TbZvIMmvzdVG+Tkokk9VWfZeI+SwDptk2tgdhEqiXXvIkqYNgbuu73Itp66lpH76cAU+Q==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-html@0.0.59: - resolution: {integrity: sha512-hEXOsYpILDlITZxnqRLV9OepVWD63GZBsyjMxszwdzlxvGZjzbGcBBinJGGJRwFIV8djdJwnt91bkdg1V5tj6Q==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-prettier@0.0.59: - resolution: {integrity: sha512-FmBR4lsgFRGR3V0LnxZZal0WqdOJjuLL6mQSj4p57M15APtQwuocG/FiF+ONGFnwRXMOIBDBTCARdth+TKgL3A==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - prettier: ^2.2 || ^3.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - prettier: - optional: true - - volar-service-typescript-twoslash-queries@0.0.59: - resolution: {integrity: sha512-skm8e6yhCIkqLwJB6S9MqT5lO9LNFuMD3dYxKpmOZs1CKbXmCZZTmLfEaD5VkJae1xdleEDZFFTHl2O5HLjOGQ==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-typescript@0.0.59: - resolution: {integrity: sha512-VCOpfiu+lUo5lapWLB5L5vmQGtwzmNWn5MueV915eku7blpphmE+Z7hCNcL1NApn7AetXWhiblv8ZhmUx/dGIA==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - vscode-css-languageservice@6.3.0: - resolution: {integrity: sha512-nU92imtkgzpCL0xikrIb8WvedV553F2BENzgz23wFuok/HLN5BeQmroMy26pUwFxV2eV8oNRmYCUv8iO7kSMhw==} - - vscode-html-languageservice@5.2.0: - resolution: {integrity: sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==} - - vscode-html-languageservice@5.3.0: - resolution: {integrity: sha512-C4Z3KsP5Ih+fjHpiBc5jxmvCl+4iEwvXegIrzu2F5pktbWvQaBT3YkVPk8N+QlSSMk8oCG6PKtZ/Sq2YHb5e8g==} - - vscode-jsonrpc@8.2.0: - resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} - engines: {node: '>=14.0.0'} - - vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - - vscode-languageserver-textdocument@1.0.11: - resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} - - vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - - vscode-languageserver@9.0.1: - resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} - hasBin: true - - vscode-nls@5.2.0: - resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - - vscode-uri@2.1.2: - resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} - - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - - w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} - - walk-up-path@3.0.1: - resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - web3-eth-abi@1.10.4: - resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} - engines: {node: '>=8.0.0'} - - web3-utils@1.10.4: - resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} - engines: {node: '>=8.0.0'} - - webauthn-p256@0.0.5: - resolution: {integrity: sha512-drMGNWKdaixZNobeORVIqq7k5DsRC9FnG201K2QjeOoQLmtSDaSsVZdkg6n5jUALJKcAG++zBPJXmv6hy0nWFg==} - - webextension-polyfill@0.10.0: - resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - - whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} - engines: {node: '>=18'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which-pm-runs@1.1.0: - resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} - engines: {node: '>=4'} - - which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - - which-pm@3.0.0: - resolution: {integrity: sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==} - engines: {node: '>=18.12'} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - - widest-line@4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - - ws@6.2.2: - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.17.0: - resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - - xmlhttprequest-ssl@2.0.0: - resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} - engines: {node: '>=0.4.0'} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yaml@2.4.2: - resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - - zod-to-json-schema@3.23.2: - resolution: {integrity: sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==} - peerDependencies: - zod: ^3.23.3 - - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - - zod@3.23.6: - resolution: {integrity: sha512-RTHJlZhsRbuA8Hmp/iNL7jnfc4nZishjsanDAfEY1QpDQZCahUp3xDzl+zfweE9BklxMUcgBgS1b7Lvie/ZVwA==} - - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - - zustand@4.4.1: - resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@adobe/css-tools@4.4.0': {} - - '@adraffy/ens-normalize@1.10.0': {} - - '@alloc/quick-lru@5.2.0': {} - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@apidevtools/openapi-schemas@2.1.0': {} - - '@apidevtools/swagger-methods@3.0.2': {} - - '@astrojs/check@0.8.3(prettier@3.2.5)(typescript@5.4.5)': - dependencies: - '@astrojs/language-server': 2.13.1(prettier@3.2.5)(typescript@5.4.5) - chokidar: 3.6.0 - fast-glob: 3.3.2 - kleur: 4.1.5 - typescript: 5.4.5 - yargs: 17.7.2 - transitivePeerDependencies: - - prettier - - prettier-plugin-astro - - '@astrojs/compiler@2.10.1': {} - - '@astrojs/internal-helpers@0.4.1': {} - - '@astrojs/language-server@2.13.1(prettier@3.2.5)(typescript@5.4.5)': - dependencies: - '@astrojs/compiler': 2.10.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@volar/kit': 2.4.0-alpha.18(typescript@5.4.5) - '@volar/language-core': 2.4.0-alpha.18 - '@volar/language-server': 2.4.0-alpha.18 - '@volar/language-service': 2.4.0-alpha.18 - '@volar/typescript': 2.4.0-alpha.18 - fast-glob: 3.3.2 - muggle-string: 0.4.1 - prettier: 3.2.5 - volar-service-css: 0.0.59(@volar/language-service@2.4.0-alpha.18) - volar-service-emmet: 0.0.59(@volar/language-service@2.4.0-alpha.18) - volar-service-html: 0.0.59(@volar/language-service@2.4.0-alpha.18) - volar-service-prettier: 0.0.59(@volar/language-service@2.4.0-alpha.18)(prettier@3.2.5) - volar-service-typescript: 0.0.59(@volar/language-service@2.4.0-alpha.18) - volar-service-typescript-twoslash-queries: 0.0.59(@volar/language-service@2.4.0-alpha.18) - vscode-html-languageservice: 5.2.0 - vscode-uri: 3.0.8 - transitivePeerDependencies: - - typescript - - '@astrojs/markdown-remark@5.2.0': - dependencies: - '@astrojs/prism': 3.1.0 - github-slugger: 2.0.0 - hast-util-from-html: 2.0.1 - hast-util-to-text: 4.0.2 - import-meta-resolve: 4.1.0 - mdast-util-definitions: 6.0.0 - rehype-raw: 7.0.0 - rehype-stringify: 10.0.0 - remark-gfm: 4.0.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.0 - remark-smartypants: 3.0.2 - shiki: 1.12.1 - unified: 11.0.5 - unist-util-remove-position: 5.0.0 - unist-util-visit: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile: 6.0.2 - transitivePeerDependencies: - - supports-color - - '@astrojs/mdx@3.1.3(astro@4.13.1)': - dependencies: - '@astrojs/markdown-remark': 5.2.0 - '@mdx-js/mdx': 3.0.1 - acorn: 8.12.1 - astro: 4.13.1(typescript@5.4.5) - es-module-lexer: 1.5.4 - estree-util-visit: 2.0.0 - github-slugger: 2.0.0 - gray-matter: 4.0.3 - hast-util-to-html: 9.0.1 - kleur: 4.1.5 - rehype-raw: 7.0.0 - remark-gfm: 4.0.0 - remark-smartypants: 3.0.2 - source-map: 0.7.4 - unist-util-visit: 5.0.0 - vfile: 6.0.2 - transitivePeerDependencies: - - supports-color - - '@astrojs/prism@3.1.0': - dependencies: - prismjs: 1.29.0 - - '@astrojs/sitemap@3.1.6': - dependencies: - sitemap: 7.1.2 - stream-replace-string: 2.0.0 - zod: 3.23.8 - - '@astrojs/starlight@0.25.3(astro@4.13.1)': - dependencies: - '@astrojs/mdx': 3.1.3(astro@4.13.1) - '@astrojs/sitemap': 3.1.6 - '@pagefind/default-ui': 1.1.0 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - astro: 4.13.1(typescript@5.4.5) - astro-expressive-code: 0.35.3(astro@4.13.1) - bcp-47: 2.1.0 - hast-util-from-html: 2.0.1 - hast-util-select: 6.0.2 - hast-util-to-string: 3.0.0 - hastscript: 9.0.0 - mdast-util-directive: 3.0.0 - mdast-util-to-markdown: 2.1.0 - mdast-util-to-string: 4.0.0 - pagefind: 1.1.0 - rehype: 13.0.1 - rehype-format: 5.0.0 - remark-directive: 3.0.0 - unified: 11.0.4 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - transitivePeerDependencies: - - supports-color - - '@astrojs/telemetry@3.1.0': - dependencies: - ci-info: 4.0.0 - debug: 4.3.6 - dlv: 1.1.3 - dset: 3.1.3 - is-docker: 3.0.0 - is-wsl: 3.1.0 - which-pm-runs: 1.1.0 - transitivePeerDependencies: - - supports-color - - '@aws-crypto/crc32@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - tslib: 1.14.1 - - '@aws-crypto/crc32c@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - tslib: 1.14.1 - - '@aws-crypto/ie11-detection@3.0.0': - dependencies: - tslib: 1.14.1 - - '@aws-crypto/sha1-browser@3.0.0': - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-locate-window': 3.568.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-crypto/sha256-browser@3.0.0': - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-locate-window': 3.568.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-crypto/sha256-js@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - tslib: 1.14.1 - - '@aws-crypto/supports-web-crypto@3.0.0': - dependencies: - tslib: 1.14.1 - - '@aws-crypto/util@3.0.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-sdk/client-s3@3.577.0': - dependencies: - '@aws-crypto/sha1-browser': 3.0.0 - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.577.0(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/client-sts': 3.577.0 - '@aws-sdk/core': 3.576.0 - '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/middleware-bucket-endpoint': 3.577.0 - '@aws-sdk/middleware-expect-continue': 3.577.0 - '@aws-sdk/middleware-flexible-checksums': 3.577.0 - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-location-constraint': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-sdk-s3': 3.577.0 - '@aws-sdk/middleware-signing': 3.577.0 - '@aws-sdk/middleware-ssec': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.577.0 - '@aws-sdk/region-config-resolver': 3.577.0 - '@aws-sdk/signature-v4-multi-region': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.577.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.577.0 - '@aws-sdk/xml-builder': 3.575.0 - '@smithy/config-resolver': 3.0.0 - '@smithy/core': 2.0.1 - '@smithy/eventstream-serde-browser': 3.0.0 - '@smithy/eventstream-serde-config-resolver': 3.0.0 - '@smithy/eventstream-serde-node': 3.0.0 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-blob-browser': 3.0.0 - '@smithy/hash-node': 3.0.0 - '@smithy/hash-stream-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/md5-js': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.1 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.1 - '@smithy/util-defaults-mode-node': 3.0.1 - '@smithy/util-endpoints': 2.0.0 - '@smithy/util-retry': 3.0.0 - '@smithy/util-stream': 3.0.1 - '@smithy/util-utf8': 3.0.0 - '@smithy/util-waiter': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0)': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.577.0 - '@aws-sdk/core': 3.576.0 - '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.577.0 - '@aws-sdk/region-config-resolver': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.577.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.577.0 - '@smithy/config-resolver': 3.0.0 - '@smithy/core': 2.0.1 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.1 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.1 - '@smithy/util-defaults-mode-node': 3.0.1 - '@smithy/util-endpoints': 2.0.0 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sts' - - aws-crt - - '@aws-sdk/client-sso@3.577.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.576.0 - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.577.0 - '@aws-sdk/region-config-resolver': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.577.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.577.0 - '@smithy/config-resolver': 3.0.0 - '@smithy/core': 2.0.1 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.1 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.1 - '@smithy/util-defaults-mode-node': 3.0.1 - '@smithy/util-endpoints': 2.0.0 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sts@3.577.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.577.0(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/core': 3.576.0 - '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.577.0 - '@aws-sdk/region-config-resolver': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.577.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.577.0 - '@smithy/config-resolver': 3.0.0 - '@smithy/core': 2.0.1 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.1 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.1 - '@smithy/util-defaults-mode-node': 3.0.1 - '@smithy/util-endpoints': 2.0.0 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/core@3.576.0': - dependencies: - '@smithy/core': 2.0.1 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-env@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-http@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/node-http-handler': 3.0.0 - '@smithy/property-provider': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/util-stream': 3.0.1 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-ini@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0)': - dependencies: - '@aws-sdk/client-sts': 3.577.0 - '@aws-sdk/credential-provider-env': 3.577.0 - '@aws-sdk/credential-provider-process': 3.577.0 - '@aws-sdk/credential-provider-sso': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) - '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/types': 3.577.0 - '@smithy/credential-provider-imds': 3.0.0 - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - - '@aws-sdk/credential-provider-node@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0)': - dependencies: - '@aws-sdk/credential-provider-env': 3.577.0 - '@aws-sdk/credential-provider-http': 3.577.0 - '@aws-sdk/credential-provider-ini': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/credential-provider-process': 3.577.0 - '@aws-sdk/credential-provider-sso': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) - '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/types': 3.577.0 - '@smithy/credential-provider-imds': 3.0.0 - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - '@aws-sdk/client-sts' - - aws-crt - - '@aws-sdk/credential-provider-process@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-sso@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)': - dependencies: - '@aws-sdk/client-sso': 3.577.0 - '@aws-sdk/token-providers': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - - '@aws-sdk/credential-provider-web-identity@3.577.0(@aws-sdk/client-sts@3.577.0)': - dependencies: - '@aws-sdk/client-sts': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/lib-storage@3.578.0(@aws-sdk/client-s3@3.577.0)': - dependencies: - '@aws-sdk/client-s3': 3.577.0 - '@smithy/abort-controller': 3.0.0 - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/smithy-client': 3.0.1 - buffer: 5.6.0 - events: 3.3.0 - stream-browserify: 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-bucket-endpoint@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-config-provider': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-expect-continue@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-flexible-checksums@3.577.0': - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/types': 3.577.0 - '@smithy/is-array-buffer': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-host-header@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-location-constraint@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-logger@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-recursion-detection@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-sdk-s3@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/util-config-provider': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-signing@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-middleware': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-ssec@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-user-agent@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/region-config-resolver@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/signature-v4-multi-region@3.577.0': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/token-providers@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)': - dependencies: - '@aws-sdk/client-sso-oidc': 3.577.0(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/types@3.577.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/util-arn-parser@3.568.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/util-endpoints@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - '@smithy/util-endpoints': 2.0.0 - tslib: 2.6.2 - - '@aws-sdk/util-locate-window@3.568.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-browser@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-node@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/util-utf8-browser@3.259.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/xml-builder@3.575.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@babel/code-frame@7.24.2': - dependencies: - '@babel/highlight': 7.24.5 - picocolors: 1.0.0 - - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.0.0 - - '@babel/compat-data@7.24.4': {} - - '@babel/compat-data@7.25.2': {} - - '@babel/core@7.24.5': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helpers': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.25.2': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - convert-source-map: 2.0.0 - debug: 4.3.6 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.24.5': - dependencies: - '@babel/types': 7.24.5 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/generator@7.25.0': - dependencies: - '@babel/types': 7.25.2 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/helper-annotate-as-pure@7.22.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-annotate-as-pure@7.24.7': - dependencies: - '@babel/types': 7.25.2 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-compilation-targets@7.23.6': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-compilation-targets@7.25.2': - dependencies: - '@babel/compat-data': 7.25.2 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-environment-visitor@7.22.20': {} - - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-member-expression-to-functions@7.24.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-module-imports@7.24.3': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-module-imports@7.24.7': - dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - - '@babel/helper-module-transforms@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.22.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-plugin-utils@7.24.5': {} - - '@babel/helper-plugin-utils@7.24.8': {} - - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.24.5 - - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.24.5 - - '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - - '@babel/helper-replace-supers@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - - '@babel/helper-simple-access@7.24.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-simple-access@7.24.7': - dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-split-export-declaration@7.24.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-string-parser@7.24.1': {} - - '@babel/helper-string-parser@7.24.8': {} - - '@babel/helper-validator-identifier@7.24.5': {} - - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/helper-validator-option@7.23.5': {} - - '@babel/helper-validator-option@7.24.8': {} - - '@babel/helper-wrap-function@7.24.5': - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - - '@babel/helpers@7.24.5': - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.25.0': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - - '@babel/highlight@7.24.5': - dependencies: - '@babel/helper-validator-identifier': 7.24.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - - '@babel/parser@7.24.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/parser@7.25.3': - dependencies: - '@babel/types': 7.25.2 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.25.2) - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.25.2) - - '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2)': - dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.25.2) - - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-flow@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - - '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - - '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - - '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2) - - '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - - '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - - '@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-split-export-declaration': 7.24.5 - globals: 11.12.0 - - '@babel/plugin-transform-classes@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.25.2) - '@babel/helper-split-export-declaration': 7.24.5 - globals: 11.12.0 - - '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/template': 7.24.0 - - '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/template': 7.24.0 - - '@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - - '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - - '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) - - '@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.25.2) - - '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - - '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-literals@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - - '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-simple-access': 7.24.5 - - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-simple-access': 7.24.5 - - '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5)': + /@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.25.2)': + /@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + dev: true - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + dev: false - '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + dev: true - '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + dev: false - '@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5)': + /@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) + dev: true - '@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.25.2)': + /@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + dev: false - '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) + dev: true - '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + dev: false - '@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5)': + /@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.25.2)': + /@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5)': + /@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-parameters@7.24.5(@babel/core@7.25.2)': + /@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5)': + /@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.25.2)': + /@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: false - '@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.25.2)': + /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: false - '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: false - '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': + /@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 @@ -13369,30 +3867,55 @@ snapshots: '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color + dev: false - '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 regenerator-transform: 0.15.2 + dev: true - '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 regenerator-transform: 0.15.2 + dev: false - '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.25.2)': + /@babel/plugin-transform-runtime@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 @@ -13403,227 +3926,345 @@ snapshots: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: false - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-spread@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5)': + /@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.25.2)': + /@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5)': + /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-typescript@7.24.5(@babel/core@7.25.2)': + /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.25.2) + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + dev: false - '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5)': + /@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + dev: true - '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.25.2)': + /@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/preset-env@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) - core-js-compat: 3.37.0 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + dev: false + + /@babel/preset-env@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typeof-symbol': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.24.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.7) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.7) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.7) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.7) + core-js-compat: 3.37.1 semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true - '@babel/preset-env@7.24.5(@babel/core@7.25.2)': + /@babel/preset-env@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.24.4 + '@babel/compat-data': 7.24.7 '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.25.2) + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.25.2) '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.25.2) + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) @@ -13635,119 +4276,161 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-typeof-symbol': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.25.2) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.0 + core-js-compat: 3.37.1 semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: false - '@babel/preset-flow@7.24.1(@babel/core@7.24.5)': + /@babel/preset-flow@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.24.7) + dev: true - '@babel/preset-flow@7.24.1(@babel/core@7.25.2)': + /@babel/preset-flow@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.25.2) + dev: false - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5)': + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/types': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/types': 7.24.7 esutils: 2.0.3 + dev: true - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/types': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/types': 7.24.7 esutils: 2.0.3 + dev: false - '@babel/preset-typescript@7.24.1(@babel/core@7.24.5)': + /@babel/preset-typescript@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/preset-typescript@7.24.1(@babel/core@7.25.2)': + /@babel/preset-typescript@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/register@7.23.7(@babel/core@7.24.5)': + /@babel/register@7.24.6(@babel/core@7.24.7): + resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 pirates: 4.0.6 source-map-support: 0.5.21 + dev: true - '@babel/register@7.23.7(@babel/core@7.25.2)': + /@babel/register@7.24.6(@babel/core@7.25.2): + resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 clone-deep: 4.0.1 @@ -13755,41 +4438,53 @@ snapshots: make-dir: 2.1.0 pirates: 4.0.6 source-map-support: 0.5.21 + dev: false - '@babel/regjsgen@0.8.0': {} + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime@7.24.5': + /@babel/runtime@7.24.7: + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} + engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.24.0': + /@babel/template@7.24.7: + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 - '@babel/template@7.25.0': + /@babel/template@7.25.0: + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - '@babel/traverse@7.24.5': - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - debug: 4.3.4 + /@babel/traverse@7.24.7: + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/traverse@7.25.3': + /@babel/traverse@7.25.3: + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.7 '@babel/generator': 7.25.0 @@ -13801,29 +4496,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.24.5': + /@babel/types@7.24.7: + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@babel/types@7.25.2': + /@babel/types@7.25.2: + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@bcoe/v8-coverage@0.2.3': {} + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true - '@chainsafe/is-ip@2.0.2': {} + /@chainsafe/is-ip@2.0.2: + resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==} + dev: false - '@chainsafe/netmask@2.0.0': + /@chainsafe/netmask@2.0.0: + resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} dependencies: '@chainsafe/is-ip': 2.0.2 + dev: false - '@changesets/apply-release-plan@7.0.4': + /@changesets/apply-release-plan@7.0.4: + resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@changesets/config': 3.0.2 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.0 @@ -13837,24 +4543,31 @@ snapshots: prettier: 2.8.8 resolve-from: 5.0.0 semver: 7.6.3 + dev: false - '@changesets/assemble-release-plan@6.0.3': + /@changesets/assemble-release-plan@6.0.3: + resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.1 '@changesets/should-skip-package': 0.1.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 semver: 7.6.3 + dev: false - '@changesets/changelog-git@0.2.0': + /@changesets/changelog-git@0.2.0: + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} dependencies: '@changesets/types': 6.0.0 + dev: false - '@changesets/cli@2.27.7': + /@changesets/cli@2.27.7: + resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==} + hasBin: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@changesets/apply-release-plan': 7.0.4 '@changesets/assemble-release-plan': 6.0.3 '@changesets/changelog-git': 0.2.0 @@ -13883,11 +4596,13 @@ snapshots: p-limit: 2.3.0 preferred-pm: 3.1.3 resolve-from: 5.0.0 - semver: 7.6.3 + semver: 7.6.2 spawndamnit: 2.0.0 term-size: 2.2.1 + dev: false - '@changesets/config@3.0.2': + /@changesets/config@3.0.2: + resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==} dependencies: '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.1 @@ -13895,62 +4610,80 @@ snapshots: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - micromatch: 4.0.5 + micromatch: 4.0.7 + dev: false - '@changesets/errors@0.2.0': + /@changesets/errors@0.2.0: + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} dependencies: extendable-error: 0.1.7 + dev: false - '@changesets/get-dependents-graph@2.1.1': + /@changesets/get-dependents-graph@2.1.1: + resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==} dependencies: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 semver: 7.6.3 + dev: false - '@changesets/get-release-plan@4.0.3': + /@changesets/get-release-plan@4.0.3: + resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@changesets/assemble-release-plan': 6.0.3 '@changesets/config': 3.0.2 '@changesets/pre': 2.0.0 '@changesets/read': 0.6.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 + dev: false - '@changesets/get-version-range-type@0.4.0': {} + /@changesets/get-version-range-type@0.4.0: + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + dev: false - '@changesets/git@3.0.0': + /@changesets/git@3.0.0: + resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 - micromatch: 4.0.5 + micromatch: 4.0.7 spawndamnit: 2.0.0 + dev: false - '@changesets/logger@0.1.0': + /@changesets/logger@0.1.0: + resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} dependencies: chalk: 2.4.2 + dev: false - '@changesets/parse@0.4.0': + /@changesets/parse@0.4.0: + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} dependencies: '@changesets/types': 6.0.0 js-yaml: 3.14.1 + dev: false - '@changesets/pre@2.0.0': + /@changesets/pre@2.0.0: + resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 + dev: false - '@changesets/read@0.6.0': + /@changesets/read@0.6.0: + resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/parse': 0.4.0 @@ -13958,41 +4691,40 @@ snapshots: chalk: 2.4.2 fs-extra: 7.0.1 p-filter: 2.1.0 + dev: false - '@changesets/should-skip-package@0.1.0': + /@changesets/should-skip-package@0.1.0: + resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 + dev: false - '@changesets/types@4.1.0': {} + /@changesets/types@4.1.0: + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + dev: false - '@changesets/types@6.0.0': {} + /@changesets/types@6.0.0: + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + dev: false - '@changesets/write@0.3.1': + /@changesets/write@0.3.1: + resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 + dev: false - '@chromatic-com/storybook@1.3.3(react@18.3.1)': - dependencies: - chromatic: 11.3.0 - filesize: 10.1.1 - jsonfile: 6.1.0 - react-confetti: 6.1.0(react@18.3.1) - strip-ansi: 7.1.0 - transitivePeerDependencies: - - '@chromatic-com/cypress' - - '@chromatic-com/playwright' - - react - - '@chromatic-com/storybook@1.6.1(react@18.3.1)': + /@chromatic-com/storybook@1.6.0(react@18.3.1): + resolution: {integrity: sha512-6sHj0l194KMBIZ0D5SeJ+Ys+zslehKHcC2d6Hd/YEn4cCl7p9mLuxrZjvf8xharGKy8vf9Q1tKrU2YdldzUBoQ==} + engines: {node: '>=16.0.0', yarn: '>=1.22.18'} dependencies: - chromatic: 11.7.0 - filesize: 10.1.1 + chromatic: 11.5.4 + filesize: 10.1.2 jsonfile: 6.1.0 react-confetti: 6.1.0(react@18.3.1) strip-ansi: 7.1.0 @@ -14000,8 +4732,10 @@ snapshots: - '@chromatic-com/cypress' - '@chromatic-com/playwright' - react + dev: true - '@coinbase/wallet-sdk@3.9.1': + /@coinbase/wallet-sdk@3.9.1: + resolution: {integrity: sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA==} dependencies: bn.js: 5.2.1 buffer: 6.0.3 @@ -14010,12 +4744,14 @@ snapshots: eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.21.0 + preact: 10.22.1 sha.js: 2.4.11 transitivePeerDependencies: - supports-color + dev: false - '@coinbase/wallet-sdk@3.9.3': + /@coinbase/wallet-sdk@3.9.3: + resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} dependencies: bn.js: 5.2.1 buffer: 6.0.3 @@ -14024,415 +4760,912 @@ snapshots: eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.21.0 + preact: 10.22.1 sha.js: 2.4.11 transitivePeerDependencies: - supports-color + dev: false - '@coinbase/wallet-sdk@4.0.4': + /@coinbase/wallet-sdk@4.0.4: + resolution: {integrity: sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA==} dependencies: buffer: 6.0.3 clsx: 1.2.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.21.0 + preact: 10.22.1 sha.js: 2.4.11 + dev: false - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16)': - dependencies: - postcss-selector-parser: 6.0.16 - - '@csstools/selector-specificity@3.0.3(postcss-selector-parser@6.0.16)': - dependencies: - postcss-selector-parser: 6.0.16 - - '@ctrl/tinycolor@4.1.0': {} - - '@emmetio/abbreviation@2.3.3': - dependencies: - '@emmetio/scanner': 1.0.4 - - '@emmetio/css-abbreviation@2.1.8': - dependencies: - '@emmetio/scanner': 1.0.4 + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: true + optional: true - '@emmetio/css-parser@0.4.0': + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} dependencies: - '@emmetio/stream-reader': 2.2.0 - '@emmetio/stream-reader-utils': 0.1.0 + '@jridgewell/trace-mapping': 0.3.9 + dev: true - '@emmetio/html-matcher@1.3.0': + /@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.1.0): + resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 dependencies: - '@emmetio/scanner': 1.0.4 - - '@emmetio/scanner@1.0.4': {} + postcss-selector-parser: 6.1.0 + dev: true - '@emmetio/stream-reader-utils@0.1.0': {} - - '@emmetio/stream-reader@2.2.0': {} - - '@emnapi/runtime@1.1.1': + /@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.0): + resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 dependencies: - tslib: 2.6.2 - optional: true - - '@esbuild/aix-ppc64@0.19.12': - optional: true - - '@esbuild/aix-ppc64@0.20.2': - optional: true - - '@esbuild/aix-ppc64@0.21.3': - optional: true - - '@esbuild/aix-ppc64@0.21.5': - optional: true - - '@esbuild/android-arm64@0.18.20': - optional: true - - '@esbuild/android-arm64@0.19.12': - optional: true - - '@esbuild/android-arm64@0.20.2': - optional: true + postcss-selector-parser: 6.1.0 + dev: true - '@esbuild/android-arm64@0.21.3': - optional: true - - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm@0.18.20': - optional: true - - '@esbuild/android-arm@0.19.12': - optional: true - - '@esbuild/android-arm@0.20.2': - optional: true - - '@esbuild/android-arm@0.21.3': - optional: true + /@ctrl/tinycolor@4.1.0: + resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} + engines: {node: '>=14'} + dev: false - '@esbuild/android-arm@0.21.5': - optional: true + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: true - '@esbuild/android-x64@0.18.20': - optional: true + /@emmetio/abbreviation@2.3.3: + resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} + dependencies: + '@emmetio/scanner': 1.0.4 + dev: false - '@esbuild/android-x64@0.19.12': - optional: true + /@emmetio/css-abbreviation@2.1.8: + resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} + dependencies: + '@emmetio/scanner': 1.0.4 + dev: false - '@esbuild/android-x64@0.20.2': - optional: true + /@emmetio/css-parser@0.4.0: + resolution: {integrity: sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==} + dependencies: + '@emmetio/stream-reader': 2.2.0 + '@emmetio/stream-reader-utils': 0.1.0 + dev: false - '@esbuild/android-x64@0.21.3': - optional: true + /@emmetio/html-matcher@1.3.0: + resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} + dependencies: + '@emmetio/scanner': 1.0.4 + dev: false - '@esbuild/android-x64@0.21.5': - optional: true + /@emmetio/scanner@1.0.4: + resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + dev: false - '@esbuild/darwin-arm64@0.18.20': - optional: true + /@emmetio/stream-reader-utils@0.1.0: + resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} + dev: false - '@esbuild/darwin-arm64@0.19.12': - optional: true + /@emmetio/stream-reader@2.2.0: + resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} + dev: false - '@esbuild/darwin-arm64@0.20.2': + /@emnapi/runtime@1.2.0: + resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + requiresBuild: true + dependencies: + tslib: 2.6.3 + dev: false optional: true - '@esbuild/darwin-arm64@0.21.3': - optional: true + /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.3.1): + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.3.1 + dev: true - '@esbuild/darwin-arm64@0.21.5': + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true optional: true - '@esbuild/darwin-x64@0.18.20': + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true optional: true - '@esbuild/darwin-x64@0.19.12': + /@esbuild/aix-ppc64@0.21.5: + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true optional: true - '@esbuild/darwin-x64@0.20.2': + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true optional: true - '@esbuild/darwin-x64@0.21.3': + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true optional: true - '@esbuild/darwin-x64@0.21.5': + /@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-arm64@0.18.20': + /@esbuild/android-arm64@0.21.5: + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true optional: true - '@esbuild/freebsd-arm64@0.19.12': + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-arm64@0.20.2': + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true optional: true - '@esbuild/freebsd-arm64@0.21.3': + /@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-arm64@0.21.5': + /@esbuild/android-arm@0.21.5: + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true optional: true - '@esbuild/freebsd-x64@0.18.20': + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-x64@0.19.12': + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true optional: true - '@esbuild/freebsd-x64@0.20.2': + /@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-x64@0.21.3': + /@esbuild/android-x64@0.21.5: + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true optional: true - '@esbuild/freebsd-x64@0.21.5': + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm64@0.18.20': + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true - '@esbuild/linux-arm64@0.19.12': + /@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm64@0.20.2': + /@esbuild/darwin-arm64@0.21.5: + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true - '@esbuild/linux-arm64@0.21.3': + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm64@0.21.5': + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true - '@esbuild/linux-arm@0.18.20': + /@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm@0.19.12': + /@esbuild/darwin-x64@0.21.5: + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true - '@esbuild/linux-arm@0.20.2': + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm@0.21.3': + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true optional: true - '@esbuild/linux-arm@0.21.5': + /@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ia32@0.18.20': + /@esbuild/freebsd-arm64@0.21.5: + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true optional: true - '@esbuild/linux-ia32@0.19.12': + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ia32@0.20.2': + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true optional: true - '@esbuild/linux-ia32@0.21.3': + /@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ia32@0.21.5': + /@esbuild/freebsd-x64@0.21.5: + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true optional: true - '@esbuild/linux-loong64@0.18.20': + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-loong64@0.19.12': + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-loong64@0.20.2': + /@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-loong64@0.21.3': + /@esbuild/linux-arm64@0.21.5: + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-loong64@0.21.5': + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-mips64el@0.18.20': + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-mips64el@0.19.12': + /@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-mips64el@0.20.2': + /@esbuild/linux-arm@0.21.5: + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-mips64el@0.21.3': + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-mips64el@0.21.5': + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-ppc64@0.18.20': + /@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ppc64@0.19.12': + /@esbuild/linux-ia32@0.21.5: + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-ppc64@0.20.2': + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ppc64@0.21.3': + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-ppc64@0.21.5': + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-riscv64@0.18.20': + /@esbuild/linux-loong64@0.21.5: + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-riscv64@0.19.12': + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-riscv64@0.20.2': + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-riscv64@0.21.3': + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-riscv64@0.21.5': + /@esbuild/linux-mips64el@0.21.5: + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-s390x@0.18.20': + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-s390x@0.19.12': + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-s390x@0.20.2': + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-s390x@0.21.3': + /@esbuild/linux-ppc64@0.21.5: + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-s390x@0.21.5': + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-x64@0.18.20': + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-x64@0.19.12': + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-x64@0.20.2': + /@esbuild/linux-riscv64@0.21.5: + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-x64@0.21.3': + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-x64@0.21.5': + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true optional: true - '@esbuild/netbsd-x64@0.18.20': + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/netbsd-x64@0.19.12': + /@esbuild/linux-s390x@0.21.5: + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true optional: true - '@esbuild/netbsd-x64@0.20.2': + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/netbsd-x64@0.21.3': + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/netbsd-x64@0.21.5': + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/openbsd-x64@0.18.20': + /@esbuild/linux-x64@0.21.5: + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/openbsd-x64@0.19.12': + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/openbsd-x64@0.20.2': + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true optional: true - '@esbuild/openbsd-x64@0.21.3': + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/openbsd-x64@0.21.5': + /@esbuild/netbsd-x64@0.21.5: + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true optional: true - '@esbuild/sunos-x64@0.18.20': + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/sunos-x64@0.19.12': + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true optional: true - '@esbuild/sunos-x64@0.20.2': + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/sunos-x64@0.21.3': + /@esbuild/openbsd-x64@0.21.5: + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true optional: true - '@esbuild/sunos-x64@0.21.5': + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-arm64@0.18.20': + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true optional: true - '@esbuild/win32-arm64@0.19.12': + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-arm64@0.20.2': + /@esbuild/sunos-x64@0.21.5: + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true optional: true - '@esbuild/win32-arm64@0.21.3': + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-arm64@0.21.5': + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true - '@esbuild/win32-ia32@0.18.20': + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-ia32@0.19.12': + /@esbuild/win32-arm64@0.21.5: + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true - '@esbuild/win32-ia32@0.20.2': + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-ia32@0.21.3': + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true - '@esbuild/win32-ia32@0.21.5': + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-x64@0.18.20': + /@esbuild/win32-ia32@0.21.5: + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true - '@esbuild/win32-x64@0.19.12': + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-x64@0.20.2': + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true optional: true - '@esbuild/win32-x64@0.21.3': + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-x64@0.21.5': + /@esbuild/win32-x64@0.21.5: + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 + dev: true - '@eslint-community/regexpp@4.10.0': {} + /@eslint-community/regexpp@4.11.0: + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true - '@eslint/eslintrc@1.4.1': + /@eslint/eslintrc@1.4.1: + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.5 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -14442,11 +5675,14 @@ snapshots: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + dev: true - '@eslint/eslintrc@2.1.4': + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.5 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -14456,30 +5692,47 @@ snapshots: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + dev: true - '@eslint/js@8.57.0': {} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - '@ethereumjs/common@3.2.0': + /@ethereumjs/common@3.2.0: + resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} dependencies: '@ethereumjs/util': 8.1.0 crc-32: 1.2.2 + dev: false - '@ethereumjs/rlp@4.0.1': {} + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: false - '@ethereumjs/tx@4.2.0': + /@ethereumjs/tx@4.2.0: + resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} + engines: {node: '>=14'} dependencies: '@ethereumjs/common': 3.2.0 '@ethereumjs/rlp': 4.0.1 '@ethereumjs/util': 8.1.0 - ethereum-cryptography: 2.1.3 + ethereum-cryptography: 2.2.1 + dev: false - '@ethereumjs/util@8.1.0': + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} dependencies: '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.1.3 + ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 + dev: false - '@ethersproject/abi@5.7.0': + /@ethersproject/abi@5.7.0: + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -14491,7 +5744,8 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - '@ethersproject/abstract-provider@5.7.0': + /@ethersproject/abstract-provider@5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -14501,7 +5755,8 @@ snapshots: '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 - '@ethersproject/abstract-signer@5.7.0': + /@ethersproject/abstract-signer@5.7.0: + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -14509,7 +5764,8 @@ snapshots: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/address@5.7.0': + /@ethersproject/address@5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -14517,30 +5773,37 @@ snapshots: '@ethersproject/logger': 5.7.0 '@ethersproject/rlp': 5.7.0 - '@ethersproject/base64@5.7.0': + /@ethersproject/base64@5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} dependencies: '@ethersproject/bytes': 5.7.0 - '@ethersproject/basex@5.7.0': + /@ethersproject/basex@5.7.0: + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/properties': 5.7.0 + dev: true - '@ethersproject/bignumber@5.7.0': + /@ethersproject/bignumber@5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 bn.js: 5.2.1 - '@ethersproject/bytes@5.7.0': + /@ethersproject/bytes@5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} dependencies: '@ethersproject/logger': 5.7.0 - '@ethersproject/constants@5.7.0': + /@ethersproject/constants@5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} dependencies: '@ethersproject/bignumber': 5.7.0 - '@ethersproject/contracts@5.7.0': + /@ethersproject/contracts@5.7.0: + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -14552,8 +5815,10 @@ snapshots: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 + dev: true - '@ethersproject/hash@5.7.0': + /@ethersproject/hash@5.7.0: + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -14565,7 +5830,8 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - '@ethersproject/hdnode@5.7.0': + /@ethersproject/hdnode@5.7.0: + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/basex': 5.7.0 @@ -14579,8 +5845,10 @@ snapshots: '@ethersproject/strings': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 + dev: true - '@ethersproject/json-wallets@5.7.0': + /@ethersproject/json-wallets@5.7.0: + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -14595,28 +5863,36 @@ snapshots: '@ethersproject/transactions': 5.7.0 aes-js: 3.0.0 scrypt-js: 3.0.1 + dev: true - '@ethersproject/keccak256@5.7.0': + /@ethersproject/keccak256@5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} dependencies: '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 - '@ethersproject/logger@5.7.0': {} + /@ethersproject/logger@5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - '@ethersproject/networks@5.7.1': + /@ethersproject/networks@5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} dependencies: '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2@5.7.0': + /@ethersproject/pbkdf2@5.7.0: + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/sha2': 5.7.0 + dev: true - '@ethersproject/properties@5.7.0': + /@ethersproject/properties@5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} dependencies: '@ethersproject/logger': 5.7.0 - '@ethersproject/providers@5.7.2': + /@ethersproject/providers@5.7.2: + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -14641,24 +5917,30 @@ snapshots: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: true - '@ethersproject/random@5.7.0': + /@ethersproject/random@5.7.0: + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 + dev: true - '@ethersproject/rlp@5.7.0': + /@ethersproject/rlp@5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - '@ethersproject/sha2@5.7.0': + /@ethersproject/sha2@5.7.0: + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - '@ethersproject/signing-key@5.7.0': + /@ethersproject/signing-key@5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 @@ -14667,7 +5949,8 @@ snapshots: elliptic: 6.5.4 hash.js: 1.1.7 - '@ethersproject/solidity@5.7.0': + /@ethersproject/solidity@5.7.0: + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -14675,14 +5958,17 @@ snapshots: '@ethersproject/logger': 5.7.0 '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 + dev: true - '@ethersproject/strings@5.7.0': + /@ethersproject/strings@5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - '@ethersproject/transactions@5.7.0': + /@ethersproject/transactions@5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -14694,13 +5980,16 @@ snapshots: '@ethersproject/rlp': 5.7.0 '@ethersproject/signing-key': 5.7.0 - '@ethersproject/units@5.7.0': + /@ethersproject/units@5.7.0: + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 + dev: true - '@ethersproject/wallet@5.7.0': + /@ethersproject/wallet@5.7.0: + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -14717,8 +6006,10 @@ snapshots: '@ethersproject/signing-key': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 + dev: true - '@ethersproject/web@5.7.1': + /@ethersproject/web@5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} dependencies: '@ethersproject/base64': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -14726,360 +6017,609 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - '@ethersproject/wordlists@5.7.0': + /@ethersproject/wordlists@5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 + dev: true - '@expressive-code/core@0.35.3': + /@expressive-code/core@0.35.6: + resolution: {integrity: sha512-xGqCkmfkgT7lr/rvmfnYdDSeTdCSp1otAHgoFS6wNEeO7wGDPpxdosVqYiIcQ8CfWUABh/pGqWG90q+MV3824A==} dependencies: '@ctrl/tinycolor': 4.1.0 hast-util-select: 6.0.2 hast-util-to-html: 9.0.1 hast-util-to-text: 4.0.2 hastscript: 9.0.0 - postcss: 8.4.38 - postcss-nested: 6.0.1(postcss@8.4.38) + postcss: 8.4.39 + postcss-nested: 6.0.1(postcss@8.4.39) unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 + dev: false - '@expressive-code/plugin-frames@0.35.3': + /@expressive-code/plugin-frames@0.35.6: + resolution: {integrity: sha512-CqjSWjDJ3wabMJZfL9ZAzH5UAGKg7KWsf1TBzr4xvUbZvWoBtLA/TboBML0U1Ls8h/4TRCIvR4VEb8dv5+QG3w==} dependencies: - '@expressive-code/core': 0.35.3 + '@expressive-code/core': 0.35.6 + dev: false - '@expressive-code/plugin-shiki@0.35.3': + /@expressive-code/plugin-shiki@0.35.6: + resolution: {integrity: sha512-xm+hzi9BsmhkDUGuyAWIydOAWer7Cs9cj8FM0t4HXaQ+qCubprT6wJZSKUxuvFJIUsIOqk1xXFaJzGJGnWtKMg==} dependencies: - '@expressive-code/core': 0.35.3 - shiki: 1.5.2 + '@expressive-code/core': 0.35.6 + shiki: 1.10.0 + dev: false - '@expressive-code/plugin-text-markers@0.35.3': + /@expressive-code/plugin-text-markers@0.35.6: + resolution: {integrity: sha512-/k9eWVZSCs+uEKHR++22Uu6eIbHWEciVHbIuD8frT8DlqTtHYaaiwHPncO6KFWnGDz5i/gL7oyl6XmOi/E6GVg==} dependencies: - '@expressive-code/core': 0.35.3 + '@expressive-code/core': 0.35.6 + dev: false + + /@fal-works/esbuild-plugin-global-externals@2.1.2: + resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} + dev: true - '@fastify/busboy@2.1.1': {} + /@fastify/busboy@2.1.1: + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + dev: false - '@formatjs/ecma402-abstract@1.18.2': + /@formatjs/ecma402-abstract@2.0.0: + resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} dependencies: '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.2 + tslib: 2.6.3 - '@formatjs/fast-memoize@2.2.0': + /@formatjs/fast-memoize@2.2.0: + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - '@formatjs/icu-messageformat-parser@2.7.6': + /@formatjs/icu-messageformat-parser@2.7.8: + resolution: {integrity: sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==} dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - '@formatjs/icu-skeleton-parser': 1.8.0 - tslib: 2.6.2 + '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/icu-skeleton-parser': 1.8.2 + tslib: 2.6.3 - '@formatjs/icu-skeleton-parser@1.8.0': + /@formatjs/icu-skeleton-parser@1.8.2: + resolution: {integrity: sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==} dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - tslib: 2.6.2 + '@formatjs/ecma402-abstract': 2.0.0 + tslib: 2.6.3 - '@formatjs/intl-localematcher@0.5.4': + /@formatjs/intl-localematcher@0.5.4: + resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - '@hapi/hoek@9.3.0': {} + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: false - '@hapi/topo@5.1.0': + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} dependencies: '@hapi/hoek': 9.3.0 + dev: false - '@humanwhocodes/config-array@0.11.14': + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 + debug: 4.3.5 minimatch: 3.1.2 transitivePeerDependencies: - supports-color + dev: true - '@humanwhocodes/config-array@0.9.5': + /@humanwhocodes/config-array@0.9.5: + resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.5 minimatch: 3.1.2 transitivePeerDependencies: - supports-color + dev: true - '@humanwhocodes/module-importer@1.0.1': {} + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true - '@humanwhocodes/momoa@2.0.4': {} + /@humanwhocodes/momoa@2.0.4: + resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} + engines: {node: '>=10.10.0'} + dev: false - '@humanwhocodes/object-schema@1.2.1': {} + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + deprecated: Use @eslint/object-schema instead + dev: true - '@humanwhocodes/object-schema@2.0.3': {} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + dev: true - '@img/sharp-darwin-arm64@0.33.3': + /@img/sharp-darwin-arm64@0.33.4: + resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.2 + dev: false optional: true - '@img/sharp-darwin-x64@0.33.3': + /@img/sharp-darwin-x64@0.33.4: + resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.0.2 + dev: false optional: true - '@img/sharp-libvips-darwin-arm64@1.0.2': + /@img/sharp-libvips-darwin-arm64@1.0.2: + resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} + engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@img/sharp-libvips-darwin-x64@1.0.2': + /@img/sharp-libvips-darwin-x64@1.0.2: + resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} + engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@img/sharp-libvips-linux-arm64@1.0.2': + /@img/sharp-libvips-linux-arm64@1.0.2: + resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@img/sharp-libvips-linux-arm@1.0.2': + /@img/sharp-libvips-linux-arm@1.0.2: + resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true - '@img/sharp-libvips-linux-s390x@1.0.2': + /@img/sharp-libvips-linux-s390x@1.0.2: + resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false optional: true - '@img/sharp-libvips-linux-x64@1.0.2': + /@img/sharp-libvips-linux-x64@1.0.2: + resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + /@img/sharp-libvips-linuxmusl-arm64@1.0.2: + resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.2': + /@img/sharp-libvips-linuxmusl-x64@1.0.2: + resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@img/sharp-linux-arm64@0.33.3': + /@img/sharp-linux-arm64@0.33.4: + resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.0.2 + dev: false optional: true - '@img/sharp-linux-arm@0.33.3': + /@img/sharp-linux-arm@0.33.4: + resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + requiresBuild: true optionalDependencies: '@img/sharp-libvips-linux-arm': 1.0.2 + dev: false optional: true - '@img/sharp-linux-s390x@0.33.3': + /@img/sharp-linux-s390x@0.33.4: + resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} + engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + requiresBuild: true optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.0.2 + dev: false optional: true - '@img/sharp-linux-x64@0.33.3': + /@img/sharp-linux-x64@0.33.4: + resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true optionalDependencies: '@img/sharp-libvips-linux-x64': 1.0.2 + dev: false optional: true - '@img/sharp-linuxmusl-arm64@0.33.3': + /@img/sharp-linuxmusl-arm64@0.33.4: + resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + dev: false optional: true - '@img/sharp-linuxmusl-x64@0.33.3': + /@img/sharp-linuxmusl-x64@0.33.4: + resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + dev: false optional: true - '@img/sharp-wasm32@0.33.3': + /@img/sharp-wasm32@0.33.4: + resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [wasm32] + requiresBuild: true dependencies: - '@emnapi/runtime': 1.1.1 + '@emnapi/runtime': 1.2.0 + dev: false optional: true - '@img/sharp-win32-ia32@0.33.3': + /@img/sharp-win32-ia32@0.33.4: + resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false optional: true - '@img/sharp-win32-x64@0.33.3': + /@img/sharp-win32-x64@0.33.4: + resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@ipld/dag-cbor@9.2.0': + /@ipld/dag-cbor@9.2.1: + resolution: {integrity: sha512-nyY48yE7r3dnJVlxrdaimrbloh4RokQaNRdI//btfTkcTEZbpmSrbYcBQ4VKTf8ZxXAOUJy4VsRpkJo+y9RTnA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - cborg: 4.2.0 - multiformats: 13.1.0 + cborg: 4.2.2 + multiformats: 13.1.3 + dev: false - '@ipld/dag-json@10.2.0': + /@ipld/dag-json@10.2.2: + resolution: {integrity: sha512-NnU8HdHKwAoGyrW3S09NMa8aZw0tImLRyR64hoafpLpDpAbA9g1+fb24JsdlugbL4sXUQVwDVA+qK4Ud8V83lA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - cborg: 4.2.0 - multiformats: 13.1.0 + cborg: 4.2.2 + multiformats: 13.1.3 + dev: false - '@ipld/dag-pb@4.1.0': + /@ipld/dag-pb@4.1.2: + resolution: {integrity: sha512-BSztO4l3C+ya9HjCaQot26Y4AVsqIKtnn6+23ubc1usucnf6yoTBme18oCCdM6gKBMxuPqju5ye3lh9WEJsdeQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - multiformats: 13.1.0 + multiformats: 13.1.3 + dev: false - '@isaacs/cliui@8.0.2': + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 + string-width-cjs: /string-width@4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 + strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 - '@isaacs/ttlcache@1.4.1': {} + /@isaacs/ttlcache@1.4.1: + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + dev: false - '@istanbuljs/schema@0.1.3': {} + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true - '@jest/create-cache-key-function@29.7.0': + /@jest/create-cache-key-function@29.7.0: + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 + dev: false - '@jest/environment@29.7.0': + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.14.9 jest-mock: 29.7.0 + dev: false - '@jest/expect-utils@29.7.0': + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 + dev: true - '@jest/fake-timers@29.7.0': + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.12.8 + '@types/node': 20.14.9 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 + dev: false - '@jest/schemas@29.6.3': + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 - '@jest/types@26.6.2': + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.8 + '@types/node': 20.14.9 '@types/yargs': 15.0.19 chalk: 4.1.2 + dev: false - '@jest/types@29.6.3': + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.8 + '@types/node': 20.14.9 '@types/yargs': 17.0.32 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.5': + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.2': {} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': {} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.6': + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + dev: false - '@jridgewell/sourcemap-codec@1.4.15': {} + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - '@jridgewell/sourcemap-codec@1.5.0': {} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/trace-mapping@0.3.25': + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping@0.3.9': + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 + dev: true - '@jsdevtools/ono@7.1.3': {} + /@jsdevtools/ono@7.1.3: + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + dev: false - '@leichtgewicht/ip-codec@2.0.5': {} + /@leichtgewicht/ip-codec@2.0.5: + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + dev: false - '@libp2p/interface-connection@4.0.0': + /@libp2p/interface-connection@4.0.0: + resolution: {integrity: sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.2 - '@multiformats/multiaddr': 12.2.3 + '@multiformats/multiaddr': 12.3.0 it-stream-types: 1.0.5 uint8arraylist: 2.4.8 + dev: false - '@libp2p/interface-keychain@2.0.5': + /@libp2p/interface-keychain@2.0.5: + resolution: {integrity: sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: '@libp2p/interface-peer-id': 2.0.2 multiformats: 11.0.2 + dev: false - '@libp2p/interface-peer-id@2.0.2': + /@libp2p/interface-peer-id@2.0.2: + resolution: {integrity: sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: multiformats: 11.0.2 + dev: false - '@libp2p/interface-peer-info@1.0.10': + /@libp2p/interface-peer-info@1.0.10: + resolution: {integrity: sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: '@libp2p/interface-peer-id': 2.0.2 - '@multiformats/multiaddr': 12.2.3 + '@multiformats/multiaddr': 12.3.0 + dev: false - '@libp2p/interface-pubsub@3.0.7': + /@libp2p/interface-pubsub@3.0.7: + resolution: {integrity: sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: '@libp2p/interface-connection': 4.0.0 '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.2 it-pushable: 3.2.3 uint8arraylist: 2.4.8 + dev: false - '@libp2p/interface@1.3.1': + /@libp2p/interface@1.5.0: + resolution: {integrity: sha512-SivVvZ+7r7Vgnv+Y88nGZTpG449PYZAPgfLhVqTXn6T4NAFt47InzC7UMFnVqSQuT21YmI9DoeaVXH73CsHNrg==} dependencies: - '@multiformats/multiaddr': 12.2.3 + '@multiformats/multiaddr': 12.3.0 it-pushable: 3.2.3 it-stream-types: 2.0.1 - multiformats: 13.1.0 + multiformats: 13.1.3 progress-events: 1.0.0 uint8arraylist: 2.4.8 + dev: false - '@libp2p/interfaces@3.3.2': {} + /@libp2p/interfaces@3.3.2: + resolution: {integrity: sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - '@libp2p/logger@2.1.1': + /@libp2p/logger@2.1.1: + resolution: {integrity: sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: '@libp2p/interface-peer-id': 2.0.2 - '@multiformats/multiaddr': 12.2.3 - debug: 4.3.4 + '@multiformats/multiaddr': 12.3.0 + debug: 4.3.5 interface-datastore: 8.2.11 multiformats: 11.0.2 transitivePeerDependencies: - supports-color + dev: false - '@libp2p/peer-id@2.0.4': + /@libp2p/peer-id@2.0.4: + resolution: {integrity: sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.2 multiformats: 11.0.2 uint8arrays: 4.0.10 + dev: false - '@lit-labs/ssr-dom-shim@1.2.0': {} + /@lit-labs/ssr-dom-shim@1.2.0: + resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + dev: false - '@lit/reactive-element@1.6.3': + /@lit/reactive-element@1.6.3: + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 + dev: false - '@lit/reactive-element@2.0.4': + /@lit/reactive-element@2.0.4: + resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 + dev: false - '@manypkg/find-root@1.1.0': + /@manypkg/find-root@1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 + dev: false - '@manypkg/get-packages@1.1.3': + /@manypkg/get-packages@1.1.3: + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 + dev: false - '@mdx-js/mdx@3.0.1': + /@mdx-js/mdx@3.0.1: + resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} dependencies: '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.5 @@ -15099,96 +6639,84 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.0 source-map: 0.7.4 - unified: 11.0.4 + unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 unist-util-visit: 5.0.0 vfile: 6.0.2 transitivePeerDependencies: - supports-color + dev: false - '@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1)': + /@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' dependencies: '@types/mdx': 2.0.13 '@types/react': 18.3.3 react: 18.3.1 + dev: true - '@metamask/eth-json-rpc-provider@1.0.1': + /@metamask/eth-json-rpc-provider@1.0.1: + resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} + engines: {node: '>=14.0.0'} dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 5.0.2 transitivePeerDependencies: - supports-color + dev: false - '@metamask/json-rpc-engine@7.3.3': - dependencies: - '@metamask/rpc-errors': 6.2.1 - '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.4.0 - transitivePeerDependencies: - - supports-color - - '@metamask/json-rpc-engine@8.0.2': + /@metamask/json-rpc-engine@7.3.3: + resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} + engines: {node: '>=16.0.0'} dependencies: - '@metamask/rpc-errors': 6.2.1 + '@metamask/rpc-errors': 6.3.0 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.4.0 + '@metamask/utils': 8.5.0 transitivePeerDependencies: - supports-color + dev: false - '@metamask/json-rpc-middleware-stream@6.0.2': + /@metamask/json-rpc-middleware-stream@6.0.2: + resolution: {integrity: sha512-jtyx3PRfc1kqoLpYveIVQNwsxYKefc64/LCl9h9Da1m3nUKEvypbYuXSIwi237qvOjKmNHQKsDOZg6f4uBf62Q==} + engines: {node: '>=16.0.0'} dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.4.0 - readable-stream: 3.6.2 - transitivePeerDependencies: - - supports-color - - '@metamask/json-rpc-middleware-stream@7.0.2': - dependencies: - '@metamask/json-rpc-engine': 8.0.2 - '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.4.0 + '@metamask/utils': 8.5.0 readable-stream: 3.6.2 transitivePeerDependencies: - supports-color + dev: false - '@metamask/object-multiplex@2.0.0': + /@metamask/object-multiplex@2.0.0: + resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} + engines: {node: ^16.20 || ^18.16 || >=20} dependencies: once: 1.4.0 readable-stream: 3.6.2 + dev: false - '@metamask/onboarding@1.0.1': + /@metamask/onboarding@1.0.1: + resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} dependencies: bowser: 2.11.0 + dev: false - '@metamask/providers@15.0.0': + /@metamask/providers@15.0.0: + resolution: {integrity: sha512-FXvL1NQNl6I7fMOJTfQYcBlBZ33vSlm6w80cMpmn8sJh0Lb7wcBpe02UwBsNlARnI+Qsr26XeDs6WHUHQh8CuA==} + engines: {node: ^18.18 || >=20} dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/json-rpc-middleware-stream': 6.0.2 '@metamask/object-multiplex': 2.0.0 - '@metamask/rpc-errors': 6.2.1 - '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.4.0 - detect-browser: 5.3.0 - extension-port-stream: 3.0.0 - fast-deep-equal: 3.1.3 - is-stream: 2.0.1 - readable-stream: 3.6.2 - webextension-polyfill: 0.10.0 - transitivePeerDependencies: - - supports-color - - '@metamask/providers@16.1.0': - dependencies: - '@metamask/json-rpc-engine': 8.0.2 - '@metamask/json-rpc-middleware-stream': 7.0.2 - '@metamask/object-multiplex': 2.0.0 - '@metamask/rpc-errors': 6.2.1 + '@metamask/rpc-errors': 6.3.0 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.4.0 + '@metamask/utils': 8.5.0 detect-browser: 5.3.0 extension-port-stream: 3.0.0 fast-deep-equal: 3.1.3 @@ -15197,40 +6725,64 @@ snapshots: webextension-polyfill: 0.10.0 transitivePeerDependencies: - supports-color + dev: false - '@metamask/rpc-errors@6.2.1': + /@metamask/rpc-errors@6.3.0: + resolution: {integrity: sha512-B1UIG/0xWkaDs/d6xrxsRf7kmFLdk8YE0HUToaFumjwQM36AjBsqEzVyemPTQv0SIrAPFnSmkLt053JOWcu5iw==} + engines: {node: '>=16.0.0'} dependencies: - '@metamask/utils': 8.4.0 + '@metamask/utils': 8.5.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color + dev: false - '@metamask/safe-event-emitter@2.0.0': {} + /@metamask/safe-event-emitter@2.0.0: + resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + dev: false - '@metamask/safe-event-emitter@3.1.1': {} + /@metamask/safe-event-emitter@3.1.1: + resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} + engines: {node: '>=12.0.0'} + dev: false - '@metamask/sdk-communication-layer@0.18.5(cross-fetch@4.0.0)(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5)': + /@metamask/sdk-communication-layer@0.20.2(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5): + resolution: {integrity: sha512-TN+whYbCClFSkx52Ild1RcjoRyz8YZgwNvZeooIcZIvCfBM6U9W5273KGiY7WLc/oO4KKmFk17d7vMO4gNvhhw==} + peerDependencies: + cross-fetch: ^3.1.5 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 dependencies: bufferutil: 4.0.8 cross-fetch: 4.0.0 date-fns: 2.30.0 - debug: 4.3.4 - eciesjs: 0.3.18 + debug: 4.3.5 + eciesjs: 0.3.19 eventemitter2: 6.4.9 readable-stream: 3.6.2 socket.io-client: 4.7.5 - utf-8-validate: 6.0.3 + utf-8-validate: 6.0.4 uuid: 8.3.2 transitivePeerDependencies: - supports-color + dev: false - '@metamask/sdk-communication-layer@0.27.0(cross-fetch@4.0.0)(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5)': + /@metamask/sdk-communication-layer@0.26.4(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5): + resolution: {integrity: sha512-+X4GEc5mV1gWK4moSswVlKsUh+RsA48qPlkxBLTUxQODSnyBe0TRMxE6mH+bSrfponnTzvBkGUXyEjvDwDjDHw==} + peerDependencies: + cross-fetch: ^4.0.0 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 dependencies: bufferutil: 4.0.8 cross-fetch: 4.0.0 date-fns: 2.30.0 - debug: 4.3.4 - eciesjs: 0.3.18 + debug: 4.3.5 + eciesjs: 0.3.19 eventemitter2: 6.4.9 readable-stream: 3.6.2 socket.io-client: 4.7.5 @@ -15238,33 +6790,72 @@ snapshots: uuid: 8.3.2 transitivePeerDependencies: - supports-color + dev: false - '@metamask/sdk-install-modal-web@0.18.5(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)': + /@metamask/sdk-install-modal-web@0.20.2(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1): + resolution: {integrity: sha512-0QiaZhV15AGdN1zU2jfTI32eC3YkwEpzDfR9+oiZ9bd2G72c6lYBhTsmDGUd01aP6A+bqJR5PjI8Wh2AWtoLeA==} + peerDependencies: + i18next: 22.5.1 + react: ^18.2.0 + react-dom: ^18.2.0 + react-i18next: ^13.2.2 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true dependencies: i18next: 22.5.1 qr-code-styling: 1.6.0-rc.1 react: 18.3.1 - react-i18next: 13.5.0(i18next@22.5.1)(react-native@0.74.1)(react@18.3.1) - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.24.5)(react@18.3.1) + react-i18next: 13.5.0(i18next@22.5.1)(react-native@0.74.3)(react@18.3.1) + react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) + dev: false - '@metamask/sdk-install-modal-web@0.26.5(i18next@23.11.5)(react-native@0.74.1)(react@18.3.1)': + /@metamask/sdk-install-modal-web@0.26.4(i18next@23.11.5)(react-native@0.74.3)(react@18.3.1): + resolution: {integrity: sha512-7Cx7ZsaExbMwghlRrUWWI0Ksg0m7K60LtMjfuDpjvjWqoZa9MoPxitGDEXNbLaqvKn39ebPvNcPzQ6czA4ilTw==} + peerDependencies: + i18next: 23.2.3 + react: ^18.2.0 + react-dom: ^18.2.0 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true dependencies: i18next: 23.11.5 qr-code-styling: 1.6.0-rc.1 react: 18.3.1 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.24.5)(react@18.3.1) + react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) + dev: false - '@metamask/sdk@0.18.6(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)': + /@metamask/sdk@0.20.3(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1): + resolution: {integrity: sha512-HZ9NwA+LxiXzuy0YWbWsuD4xejQtp85bhcCAf8UgpA/0dOyF3RS4dKDdBBXSyRgk3RWPjeJgHxioaH4CmBmiRA==} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true dependencies: '@metamask/onboarding': 1.0.1 '@metamask/providers': 15.0.0 - '@metamask/sdk-communication-layer': 0.18.5(cross-fetch@4.0.0)(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5) - '@metamask/sdk-install-modal-web': 0.18.5(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1) + '@metamask/sdk-communication-layer': 0.20.2(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5) + '@metamask/sdk-install-modal-web': 0.20.2(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1) '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0 - debug: 4.3.4 - eciesjs: 0.3.18 + debug: 4.3.5 + eciesjs: 0.3.19 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 i18next: 22.5.1 @@ -15273,8 +6864,7 @@ snapshots: pump: 3.0.0 qrcode-terminal-nooctal: 0.12.1 react: 18.3.1 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.24.5)(react@18.3.1) - react-native-webview: 11.26.1(react-native@0.74.1)(react@18.3.1) + react-native-webview: 11.26.1(react-native@0.74.3)(react@18.3.1) readable-stream: 3.6.2 rollup-plugin-visualizer: 5.12.0 socket.io-client: 4.7.5 @@ -15284,21 +6874,32 @@ snapshots: - bufferutil - encoding - react-i18next + - react-native - rollup - supports-color - utf-8-validate + dev: false - '@metamask/sdk@0.27.0(react-native@0.74.1)(react@18.3.1)': + /@metamask/sdk@0.26.4(react-native@0.74.3)(react@18.3.1): + resolution: {integrity: sha512-9Yh41KJkD9RhW0lRijnQzPV0ptblLorLdTsf5GnAl3yE72QIfaPBtsDxzLtX+0QLppiFfj7o8vRBYvBApG9k+Q==} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true dependencies: '@metamask/onboarding': 1.0.1 - '@metamask/providers': 16.1.0 - '@metamask/sdk-communication-layer': 0.27.0(cross-fetch@4.0.0)(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5) - '@metamask/sdk-install-modal-web': 0.26.5(i18next@23.11.5)(react-native@0.74.1)(react@18.3.1) + '@metamask/providers': 15.0.0 + '@metamask/sdk-communication-layer': 0.26.4(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5) + '@metamask/sdk-install-modal-web': 0.26.4(i18next@23.11.5)(react-native@0.74.3)(react@18.3.1) '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0 - debug: 4.3.4 - eciesjs: 0.3.18 + debug: 4.3.5 + eciesjs: 0.3.19 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 i18next: 23.11.5 @@ -15307,7 +6908,7 @@ snapshots: pump: 3.0.0 qrcode-terminal-nooctal: 0.12.1 react: 18.3.1 - react-native-webview: 11.26.1(react-native@0.74.1)(react@18.3.1) + react-native-webview: 11.26.1(react-native@0.74.3)(react@18.3.1) readable-stream: 3.6.2 rollup-plugin-visualizer: 5.12.0 socket.io-client: 4.7.5 @@ -15320,190 +6921,246 @@ snapshots: - rollup - supports-color - utf-8-validate + dev: false - '@metamask/utils@5.0.2': + /@metamask/superstruct@3.1.0: + resolution: {integrity: sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==} + engines: {node: '>=16.0.0'} + dev: false + + /@metamask/utils@5.0.2: + resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} + engines: {node: '>=14.0.0'} dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.3.5 semver: 7.6.3 superstruct: 1.0.4 transitivePeerDependencies: - supports-color + dev: false - '@metamask/utils@8.4.0': + /@metamask/utils@8.5.0: + resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} + engines: {node: '>=16.0.0'} dependencies: '@ethereumjs/tx': 4.2.0 + '@metamask/superstruct': 3.1.0 '@noble/hashes': 1.4.0 - '@scure/base': 1.1.6 + '@scure/base': 1.1.7 '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.3.5 pony-cause: 2.1.11 semver: 7.6.3 - superstruct: 1.0.4 uuid: 9.0.1 transitivePeerDependencies: - supports-color + dev: false - '@moralisweb3/api-utils@2.26.1(debug@4.3.4)': + /@moralisweb3/api-utils@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-+CGUNNYgynrjRwkL1/+HeGawhz0JCRh1Zeugx4UfDx4ULI7gLFxrAQqzN7UaMTM5Ftw7jBG4k3bc7mvpJfuv3g==} dependencies: - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) - '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) - axios: 1.6.8(debug@4.3.4) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) + axios: 1.7.2(debug@4.3.5) transitivePeerDependencies: - debug + dev: false - '@moralisweb3/aptos-api@2.26.1(debug@4.3.4)': + /@moralisweb3/aptos-api@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-YNy/qLAHXz9KGOAiQVMzKJqAyGCxdnyvdR84/nwtU2PXHTydMxoxnL7EVL+HnpK3bjq5nXLMxofXYHoAXbdz3Q==} dependencies: - '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) transitivePeerDependencies: - debug + dev: false - '@moralisweb3/auth@2.26.1(debug@4.3.4)': + /@moralisweb3/auth@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-PdJzc2j4zxzwR5fzlHRNqmuhzJvD1E6ZKJPMOqiOPF4zGbVM3NbONdx4bR7W6kRQciXZzeO5oyW9/N9PF76jgw==} dependencies: - '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-auth-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) - '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-sol-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-auth-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-sol-utils': 2.26.7(debug@4.3.5) transitivePeerDependencies: - debug + dev: false - '@moralisweb3/common-aptos-utils@2.26.1(debug@4.3.4)': + /@moralisweb3/common-aptos-utils@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-hCGawLqv2J1X83RVNqHifh0E0NdezdOGs93KQa2vlkvj1OHPgKeHlBX8gNZ+Fx6cGyWyK2dU3AbFCJ4hkkmNYA==} dependencies: - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) '@noble/hashes': 1.4.0 transitivePeerDependencies: - debug + dev: false - '@moralisweb3/common-auth-utils@2.26.1(debug@4.3.4)': + /@moralisweb3/common-auth-utils@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-rANpdno9SbmW0GQ4uOAFJj4TbEyOIiWmzzgY9Jcd4ocjYH4Z3WrBl85vblce8EXoPpxPvRk3Xv6rQFCt17Dw8w==} dependencies: '@ethersproject/abi': 5.7.0 - '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) - '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-sol-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-sol-utils': 2.26.7(debug@4.3.5) '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug + dev: false - '@moralisweb3/common-core@2.26.1(debug@4.3.4)': + /@moralisweb3/common-core@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-6jRoS8hUAwcRx8xA7R5YlCrkHOIfX01iqdDn2I04lV/VH4bfKBtiOgBSMrc+Ucgtn44seaOVOb4iCSE5EP7SvQ==} dependencies: - axios: 1.6.8(debug@4.3.4) + axios: 1.7.2(debug@4.3.5) transitivePeerDependencies: - debug + dev: false - '@moralisweb3/common-evm-utils@2.26.1(debug@4.3.4)': + /@moralisweb3/common-evm-utils@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-hnoq1pil07dnxpgvBrKDPqsDYZY+2MRBwFINx7KgRMK6WmsOfaaTl6FzT2ruFSbX02fFZMrT0TG5qnx6U3FM5g==} dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/transactions': 5.7.0 - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) transitivePeerDependencies: - debug + dev: false - '@moralisweb3/common-sol-utils@2.26.1(debug@4.3.4)': + /@moralisweb3/common-sol-utils@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-egTzMx8ByIGEXjpC43iN9+q4BMv/G1EO7mLn5drAn32P1voC39TAA26MnrlFY4y2XREU/Imc737OIhPATrGD4A==} dependencies: - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) bn.js: 5.2.1 bs58: 5.0.0 buffer: 6.0.3 transitivePeerDependencies: - debug + dev: false - '@moralisweb3/common-streams-utils@2.26.1(debug@4.3.4)': + /@moralisweb3/common-streams-utils@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-FrwgSC8Y2Rp2RAq7nj4/LjIAk+RVrna5Yin4843plrvvi0WXZCxAHZBfZuHz56qJkQVsmdYgBevvCxipct1nTA==} dependencies: '@ethersproject/abi': 5.7.0 - '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) - '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug + dev: false - '@moralisweb3/evm-api@2.26.1(debug@4.3.4)': + /@moralisweb3/evm-api@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-eFcSnyeyBjrgX/1hjcDZ3BDaC3B7N6w+wRRQi5FSbp4tadh0LAd+zlUVwNhr0UsKUoT6rZRY+pDhHXM4HDHeEg==} dependencies: - '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) - '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) transitivePeerDependencies: - debug + dev: false - '@moralisweb3/sol-api@2.26.1(debug@4.3.4)': + /@moralisweb3/sol-api@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-7MMi52WeCyRKhT6KKRZa/k62fPuf6fx2waA+Jc5jo8+nDvn5wbqpl7KWx338rqT3C7M9xzhT1HfsCJ/TOD6jUw==} dependencies: - '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) - '@moralisweb3/common-sol-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/common-sol-utils': 2.26.7(debug@4.3.5) transitivePeerDependencies: - debug + dev: false - '@moralisweb3/streams-typings@1.0.7': {} + /@moralisweb3/streams-typings@1.0.7: + resolution: {integrity: sha512-ShbVqil0KLOTyTjO6z9JewPcVVE3S6kzkQFnW2flGBRsGdKucpkUdOx1HijOLoaikz/9gH92n+lzTvRFIj0AoA==} + dev: false - '@moralisweb3/streams@2.26.1(debug@4.3.4)': + /@moralisweb3/streams@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-xrLEuXL02GuK6Lio96wpDyPQUhFgBS8CHRq5BDhCXzXr93yyiXAt6P28mq/mUGR/uABSjutilfTaV2MyhwFkng==} dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/bignumber': 5.7.0 '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 - '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) - '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-streams-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-streams-utils': 2.26.7(debug@4.3.5) '@moralisweb3/streams-typings': 1.0.7 ethereumjs-util: 7.1.5 web3-eth-abi: 1.10.4 transitivePeerDependencies: - debug + dev: false - '@motionone/animation@10.17.0': + /@motionone/animation@10.18.0: + resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} dependencies: - '@motionone/easing': 10.17.0 - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 - tslib: 2.6.2 + '@motionone/easing': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.6.3 + dev: false - '@motionone/dom@10.17.0': + /@motionone/dom@10.18.0: + resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} dependencies: - '@motionone/animation': 10.17.0 - '@motionone/generators': 10.17.0 - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 + '@motionone/animation': 10.18.0 + '@motionone/generators': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 hey-listen: 1.0.8 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@motionone/easing@10.17.0': + /@motionone/easing@10.18.0: + resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} dependencies: - '@motionone/utils': 10.17.0 - tslib: 2.6.2 + '@motionone/utils': 10.18.0 + tslib: 2.6.3 + dev: false - '@motionone/generators@10.17.0': + /@motionone/generators@10.18.0: + resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} dependencies: - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 - tslib: 2.6.2 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.6.3 + dev: false - '@motionone/svelte@10.16.4': + /@motionone/svelte@10.16.4: + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} dependencies: - '@motionone/dom': 10.17.0 - tslib: 2.6.2 + '@motionone/dom': 10.18.0 + tslib: 2.6.3 + dev: false - '@motionone/types@10.17.0': {} + /@motionone/types@10.17.1: + resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} + dev: false - '@motionone/utils@10.17.0': + /@motionone/utils@10.18.0: + resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} dependencies: - '@motionone/types': 10.17.0 + '@motionone/types': 10.17.1 hey-listen: 1.0.8 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@motionone/vue@10.16.4': + /@motionone/vue@10.16.4: + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} + deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion dependencies: - '@motionone/dom': 10.17.0 - tslib: 2.6.2 + '@motionone/dom': 10.18.0 + tslib: 2.6.3 + dev: false - '@multiformats/dns@1.0.6': + /@multiformats/dns@1.0.6: + resolution: {integrity: sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==} dependencies: '@types/dns-packet': 5.6.5 buffer: 6.0.3 @@ -15512,12 +7169,17 @@ snapshots: p-queue: 8.0.1 progress-events: 1.0.0 uint8arrays: 5.1.0 + dev: false - '@multiformats/multiaddr-to-uri@9.0.8': + /@multiformats/multiaddr-to-uri@9.0.8: + resolution: {integrity: sha512-4eiN5iEiQfy2A98BxekUfW410L/ivg0sgjYSgSqmklnrBhK+QyMz4yqgfkub8xDTXOc7O5jp4+LVyM3ZqMeWNw==} dependencies: - '@multiformats/multiaddr': 12.2.3 + '@multiformats/multiaddr': 12.3.0 + dev: false - '@multiformats/multiaddr@11.6.1': + /@multiformats/multiaddr@11.6.1: + resolution: {integrity: sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: '@chainsafe/is-ip': 2.0.2 dns-over-http-resolver: 2.1.3 @@ -15527,130 +7189,277 @@ snapshots: varint: 6.0.0 transitivePeerDependencies: - supports-color + dev: false - '@multiformats/multiaddr@12.2.3': + /@multiformats/multiaddr@12.3.0: + resolution: {integrity: sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==} dependencies: '@chainsafe/is-ip': 2.0.2 '@chainsafe/netmask': 2.0.0 - '@libp2p/interface': 1.3.1 + '@libp2p/interface': 1.5.0 '@multiformats/dns': 1.0.6 - multiformats: 13.1.0 + multiformats: 13.1.3 uint8-varint: 2.0.4 uint8arrays: 5.1.0 + dev: false - '@noble/curves@1.2.0': + /@ndelangen/get-tarball@3.0.9: + resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} dependencies: - '@noble/hashes': 1.3.2 + gunzip-maybe: 1.4.2 + pump: 3.0.0 + tar-fs: 2.1.1 + dev: true - '@noble/curves@1.3.0': + /@noble/curves@1.2.0: + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} dependencies: - '@noble/hashes': 1.3.3 + '@noble/hashes': 1.3.2 + dev: false - '@noble/curves@1.4.0': + /@noble/curves@1.4.0: + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} dependencies: '@noble/hashes': 1.4.0 - '@noble/hashes@1.2.0': {} + /@noble/curves@1.4.2: + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + dependencies: + '@noble/hashes': 1.4.0 + dev: false - '@noble/hashes@1.3.2': {} + /@noble/hashes@1.2.0: + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + dev: false - '@noble/hashes@1.3.3': {} + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + dev: false - '@noble/hashes@1.4.0': {} + /@noble/hashes@1.4.0: + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} - '@noble/secp256k1@1.7.1': {} + /@noble/secp256k1@1.7.1: + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + dev: false - '@nodelib/fs.scandir@2.1.5': + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - '@nodelib/fs.stat@2.0.5': {} + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} - '@nodelib/fs.walk@1.2.8': + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@openzeppelin/contracts-upgradeable@4.9.6': {} + /@openzeppelin/contracts-upgradeable@4.9.6: + resolution: {integrity: sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==} + dev: false - '@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2)': + /@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2): + resolution: {integrity: sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==} + peerDependencies: + '@openzeppelin/contracts': 5.0.2 dependencies: '@openzeppelin/contracts': 5.0.2 + dev: false - '@openzeppelin/contracts@4.9.6': {} + /@openzeppelin/contracts@4.9.6: + resolution: {integrity: sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==} + dev: false - '@openzeppelin/contracts@5.0.2': {} + /@openzeppelin/contracts@5.0.2: + resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} + dev: false - '@openzeppelin/merkle-tree@1.0.6': + /@openzeppelin/merkle-tree@1.0.6: + resolution: {integrity: sha512-cGWOb2WBWbJhqvupzxjnKAwGLxxAEYPg51sk76yZ5nVe5D03mw7Vx5yo8llaIEqYhP5O39M8QlrNWclgLfKVrA==} dependencies: '@ethersproject/abi': 5.7.0 ethereum-cryptography: 1.2.0 + dev: false - '@pagefind/darwin-arm64@1.1.0': + /@pagefind/darwin-arm64@1.1.0: + resolution: {integrity: sha512-SLsXNLtSilGZjvqis8sX42fBWsWAVkcDh1oerxwqbac84HbiwxpxOC2jm8hRwcR0Z55HPZPWO77XeRix/8GwTg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@pagefind/darwin-x64@1.1.0': + /@pagefind/darwin-x64@1.1.0: + resolution: {integrity: sha512-QjQSE/L5oS1C8N8GdljGaWtjCBMgMtfrPAoiCmINTu9Y9dp0ggAyXvF8K7Qg3VyIMYJ6v8vg2PN7Z3b+AaAqUA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@pagefind/default-ui@1.1.0': {} + /@pagefind/default-ui@1.1.0: + resolution: {integrity: sha512-+XiAJAK++C64nQcD7s3Prdmd5S92lT05fwjOxm0L1jj80jbL+tmvcqkkFnPpoqhnicIPgcAX/Y5W0HRZnBt35w==} + dev: false - '@pagefind/linux-arm64@1.1.0': + /@pagefind/linux-arm64@1.1.0: + resolution: {integrity: sha512-8zjYCa2BtNEL7KnXtysPtBELCyv5DSQ4yHeK/nsEq6w4ToAMTBl0K06khqxdSGgjMSwwrxvLzq3so0LC5Q14dA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@pagefind/linux-x64@1.1.0': + /@pagefind/linux-x64@1.1.0: + resolution: {integrity: sha512-4lsg6VB7A6PWTwaP8oSmXV4O9H0IHX7AlwTDcfyT+YJo/sPXOVjqycD5cdBgqNLfUk8B9bkWcTDCRmJbHrKeCw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@pagefind/windows-x64@1.1.0': + /@pagefind/windows-x64@1.1.0: + resolution: {integrity: sha512-OboCM76BcMKT9IoSfZuFhiqMRgTde8x4qDDvKulFmycgiJrlL5WnIqBHJLQxZq+o2KyZpoHF97iwsGAm8c32sQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-android-arm64@2.4.1': + /@parcel/watcher-android-arm64@2.4.1: + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-darwin-arm64@2.4.1': + /@parcel/watcher-darwin-arm64@2.4.1: + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-darwin-x64@2.4.1': + /@parcel/watcher-darwin-x64@2.4.1: + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-freebsd-x64@2.4.1': + /@parcel/watcher-freebsd-x64@2.4.1: + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-arm-glibc@2.4.1': + /@parcel/watcher-linux-arm-glibc@2.4.1: + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-arm64-glibc@2.4.1': + /@parcel/watcher-linux-arm64-glibc@2.4.1: + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-arm64-musl@2.4.1': + /@parcel/watcher-linux-arm64-musl@2.4.1: + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-x64-glibc@2.4.1': + /@parcel/watcher-linux-x64-glibc@2.4.1: + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-x64-musl@2.4.1': + /@parcel/watcher-linux-x64-musl@2.4.1: + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-wasm@2.4.1': + /@parcel/watcher-wasm@2.4.1: + resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} + engines: {node: '>= 10.0.0'} dependencies: is-glob: 4.0.3 - micromatch: 4.0.5 + micromatch: 4.0.7 napi-wasm: 1.1.0 + dev: false + bundledDependencies: + - napi-wasm - '@parcel/watcher-win32-arm64@2.4.1': + /@parcel/watcher-win32-arm64@2.4.1: + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-win32-ia32@2.4.1': + /@parcel/watcher-win32-ia32@2.4.1: + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-win32-x64@2.4.1': + /@parcel/watcher-win32-x64@2.4.1: + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@parcel/watcher@2.4.1': + /@parcel/watcher@2.4.1: + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 - micromatch: 4.0.5 + micromatch: 4.0.7 node-addon-api: 7.1.0 optionalDependencies: '@parcel/watcher-android-arm64': 2.4.1 @@ -15665,86 +7474,395 @@ snapshots: '@parcel/watcher-win32-arm64': 2.4.1 '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 + dev: false - '@pkgjs/parseargs@0.11.0': + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true optional: true - '@pkgr/core@0.1.1': {} + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true - '@playwright/test@1.43.1': + /@playwright/test@1.45.0: + resolution: {integrity: sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==} + engines: {node: '>=18'} + hasBin: true dependencies: - playwright: 1.43.1 + playwright: 1.45.0 + dev: true - '@pnpm/config.env-replace@1.1.0': {} + /@pnpm/config.env-replace@1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + dev: true - '@pnpm/network.ca-file@1.0.2': + /@pnpm/network.ca-file@1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} dependencies: graceful-fs: 4.2.10 + dev: true - '@pnpm/npm-conf@2.2.2': + /@pnpm/npm-conf@2.2.2: + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + engines: {node: '>=12'} dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 + dev: true - '@polka/url@1.0.0-next.25': {} + /@polka/url@1.0.0-next.25: + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + dev: true - '@protobufjs/aspromise@1.1.2': {} + /@protobufjs/aspromise@1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + dev: false - '@protobufjs/base64@1.1.2': {} + /@protobufjs/base64@1.1.2: + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + dev: false - '@protobufjs/codegen@2.0.4': {} + /@protobufjs/codegen@2.0.4: + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + dev: false - '@protobufjs/eventemitter@1.1.0': {} + /@protobufjs/eventemitter@1.1.0: + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + dev: false - '@protobufjs/fetch@1.1.0': + /@protobufjs/fetch@1.1.0: + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/inquire': 1.1.0 + dev: false + + /@protobufjs/float@1.0.2: + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + dev: false + + /@protobufjs/inquire@1.1.0: + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + dev: false + + /@protobufjs/path@1.1.2: + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + dev: false + + /@protobufjs/pool@1.1.0: + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + dev: false + + /@protobufjs/utf8@1.1.0: + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + dev: false + + /@radix-ui/primitive@1.1.0: + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + dev: true + + /@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: true + + /@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: true + + /@radix-ui/react-dialog@1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) + dev: true + + /@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true + + /@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: true + + /@radix-ui/react-focus-scope@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true + + /@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + dev: true + + /@radix-ui/react-portal@1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true + + /@radix-ui/react-presence@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true + + /@radix-ui/react-primitive@2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true - '@protobufjs/float@1.0.2': {} + /@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + dev: true - '@protobufjs/inquire@1.1.0': {} + /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: true - '@protobufjs/path@1.1.2': {} + /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + dev: true - '@protobufjs/pool@1.1.0': {} + /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + dev: true - '@protobufjs/utf8@1.1.0': {} + /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: true - '@react-native-community/cli-clean@13.6.6': + /@react-native-community/cli-clean@13.6.9: + resolution: {integrity: sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==} dependencies: - '@react-native-community/cli-tools': 13.6.6 + '@react-native-community/cli-tools': 13.6.9 chalk: 4.1.2 execa: 5.1.1 fast-glob: 3.3.2 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-config@13.6.6': + /@react-native-community/cli-config@13.6.9: + resolution: {integrity: sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==} dependencies: - '@react-native-community/cli-tools': 13.6.6 + '@react-native-community/cli-tools': 13.6.9 chalk: 4.1.2 cosmiconfig: 5.2.1 deepmerge: 4.3.1 fast-glob: 3.3.2 - joi: 17.13.1 + joi: 17.13.3 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-debugger-ui@13.6.6': + /@react-native-community/cli-debugger-ui@13.6.9: + resolution: {integrity: sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==} dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color + dev: false - '@react-native-community/cli-doctor@13.6.6': + /@react-native-community/cli-doctor@13.6.9: + resolution: {integrity: sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==} dependencies: - '@react-native-community/cli-config': 13.6.6 - '@react-native-community/cli-platform-android': 13.6.6 - '@react-native-community/cli-platform-apple': 13.6.6 - '@react-native-community/cli-platform-ios': 13.6.6 - '@react-native-community/cli-tools': 13.6.6 + '@react-native-community/cli-config': 13.6.9 + '@react-native-community/cli-platform-android': 13.6.9 + '@react-native-community/cli-platform-apple': 13.6.9 + '@react-native-community/cli-platform-ios': 13.6.9 + '@react-native-community/cli-tools': 13.6.9 chalk: 4.1.2 command-exists: 1.2.9 deepmerge: 4.3.1 @@ -15756,65 +7874,77 @@ snapshots: semver: 7.6.3 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.4.2 + yaml: 2.4.5 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-hermes@13.6.6': + /@react-native-community/cli-hermes@13.6.9: + resolution: {integrity: sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==} dependencies: - '@react-native-community/cli-platform-android': 13.6.6 - '@react-native-community/cli-tools': 13.6.6 + '@react-native-community/cli-platform-android': 13.6.9 + '@react-native-community/cli-tools': 13.6.9 chalk: 4.1.2 hermes-profile-transformer: 0.0.6 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-platform-android@13.6.6': + /@react-native-community/cli-platform-android@13.6.9: + resolution: {integrity: sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==} dependencies: - '@react-native-community/cli-tools': 13.6.6 + '@react-native-community/cli-tools': 13.6.9 chalk: 4.1.2 execa: 5.1.1 fast-glob: 3.3.2 - fast-xml-parser: 4.3.6 + fast-xml-parser: 4.4.0 logkitty: 0.7.1 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-platform-apple@13.6.6': + /@react-native-community/cli-platform-apple@13.6.9: + resolution: {integrity: sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==} dependencies: - '@react-native-community/cli-tools': 13.6.6 + '@react-native-community/cli-tools': 13.6.9 chalk: 4.1.2 execa: 5.1.1 fast-glob: 3.3.2 - fast-xml-parser: 4.3.6 + fast-xml-parser: 4.4.0 ora: 5.4.1 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-platform-ios@13.6.6': + /@react-native-community/cli-platform-ios@13.6.9: + resolution: {integrity: sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==} dependencies: - '@react-native-community/cli-platform-apple': 13.6.6 + '@react-native-community/cli-platform-apple': 13.6.9 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-server-api@13.6.6': + /@react-native-community/cli-server-api@13.6.9: + resolution: {integrity: sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==} dependencies: - '@react-native-community/cli-debugger-ui': 13.6.6 - '@react-native-community/cli-tools': 13.6.6 + '@react-native-community/cli-debugger-ui': 13.6.9 + '@react-native-community/cli-tools': 13.6.9 compression: 1.7.4 connect: 3.7.0 errorhandler: 1.5.1 nocache: 3.0.4 pretty-format: 26.6.2 serve-static: 1.15.0 - ws: 6.2.2 + ws: 6.2.3 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate + dev: false - '@react-native-community/cli-tools@13.6.6': + /@react-native-community/cli-tools@13.6.9: + resolution: {integrity: sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==} dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 @@ -15829,21 +7959,27 @@ snapshots: sudo-prompt: 9.2.1 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-types@13.6.6': + /@react-native-community/cli-types@13.6.9: + resolution: {integrity: sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==} dependencies: - joi: 17.13.1 + joi: 17.13.3 + dev: false - '@react-native-community/cli@13.6.6': + /@react-native-community/cli@13.6.9: + resolution: {integrity: sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==} + engines: {node: '>=18'} + hasBin: true dependencies: - '@react-native-community/cli-clean': 13.6.6 - '@react-native-community/cli-config': 13.6.6 - '@react-native-community/cli-debugger-ui': 13.6.6 - '@react-native-community/cli-doctor': 13.6.6 - '@react-native-community/cli-hermes': 13.6.6 - '@react-native-community/cli-server-api': 13.6.6 - '@react-native-community/cli-tools': 13.6.6 - '@react-native-community/cli-types': 13.6.6 + '@react-native-community/cli-clean': 13.6.9 + '@react-native-community/cli-config': 13.6.9 + '@react-native-community/cli-debugger-ui': 13.6.9 + '@react-native-community/cli-doctor': 13.6.9 + '@react-native-community/cli-hermes': 13.6.9 + '@react-native-community/cli-server-api': 13.6.9 + '@react-native-community/cli-tools': 13.6.9 + '@react-native-community/cli-types': 13.6.9 chalk: 4.1.2 commander: 9.5.0 deepmerge: 4.3.1 @@ -15858,22 +7994,33 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - '@react-native/assets-registry@0.74.83': {} + /@react-native/assets-registry@0.74.85: + resolution: {integrity: sha512-59YmIQxfGDw4aP9S/nAM+sjSFdW8fUP6fsqczCcXgL2YVEjyER9XCaUT0J1K+PdHep8pi05KUgIKUds8P3jbmA==} + engines: {node: '>=18'} + dev: false - '@react-native/babel-plugin-codegen@0.74.83(@babel/preset-env@7.24.5)': + /@react-native/babel-plugin-codegen@0.74.85(@babel/preset-env@7.24.7): + resolution: {integrity: sha512-48TSDclRB5OMXiImiJkLxyCfRyLsqkCgI8buugCZzvXcYslfV7gCvcyFyQldtcOmerV+CK4RAj7QS4hmB5Mr8Q==} + engines: {node: '>=18'} dependencies: - '@react-native/codegen': 0.74.83(@babel/preset-env@7.24.5) + '@react-native/codegen': 0.74.85(@babel/preset-env@7.24.7) transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: false - '@react-native/babel-preset@0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.24.5)': + /@react-native/babel-preset@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7): + resolution: {integrity: sha512-yMHUlN8INbK5BBwiBuQMftdWkpm1IgCsoJTKcGD2OpSgZhwwm8RUSvGhdRMzB2w7bsqqBmaEMleGtW6aCR7B9w==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' dependencies: '@babel/core': 7.25.2 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.2) '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.25.2) + '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.25.2) '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.25.2) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.25.2) @@ -15881,61 +8028,69 @@ snapshots: '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.25.2) + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) '@babel/template': 7.25.0 - '@react-native/babel-plugin-codegen': 0.74.83(@babel/preset-env@7.24.5) + '@react-native/babel-plugin-codegen': 0.74.85(@babel/preset-env@7.24.7) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.25.2) react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: false - '@react-native/codegen@0.74.83(@babel/preset-env@7.24.5)': + /@react-native/codegen@0.74.85(@babel/preset-env@7.24.7): + resolution: {integrity: sha512-N7QwoS4Hq/uQmoH83Ewedy6D0M7xbQsOU3OMcQf0eY3ltQ7S2hd9/R4UTalQWRn1OUJfXR6OG12QJ4FStKgV6Q==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 dependencies: '@babel/parser': 7.25.3 - '@babel/preset-env': 7.24.5(@babel/core@7.25.2) + '@babel/preset-env': 7.24.7(@babel/core@7.25.2) glob: 7.2.3 hermes-parser: 0.19.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.24.5) + jscodeshift: 0.14.0(@babel/preset-env@7.24.7) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + dev: false - '@react-native/community-cli-plugin@0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.24.5)': + /@react-native/community-cli-plugin@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7): + resolution: {integrity: sha512-ODzND33eA2owAY3g9jgCdqB+BjAh8qJ7dvmSotXgrgDYr3MJMpd8gvHTIPe2fg4Kab+wk8uipRhrE0i0RYMwtQ==} + engines: {node: '>=18'} dependencies: - '@react-native-community/cli-server-api': 13.6.6 - '@react-native-community/cli-tools': 13.6.6 - '@react-native/dev-middleware': 0.74.83 - '@react-native/metro-babel-transformer': 0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.24.5) + '@react-native-community/cli-server-api': 13.6.9 + '@react-native-community/cli-tools': 13.6.9 + '@react-native/dev-middleware': 0.74.85 + '@react-native/metro-babel-transformer': 0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7) chalk: 4.1.2 execa: 5.1.1 metro: 0.80.9 @@ -15951,13 +8106,19 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - '@react-native/debugger-frontend@0.74.83': {} + /@react-native/debugger-frontend@0.74.85: + resolution: {integrity: sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==} + engines: {node: '>=18'} + dev: false - '@react-native/dev-middleware@0.74.83': + /@react-native/dev-middleware@0.74.85: + resolution: {integrity: sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==} + engines: {node: '>=18'} dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.74.83 + '@react-native/debugger-frontend': 0.74.85 '@rnx-kit/chromium-edge-launcher': 1.0.0 chrome-launcher: 0.15.2 connect: 3.7.0 @@ -15968,69 +8129,107 @@ snapshots: selfsigned: 2.4.1 serve-static: 1.15.0 temp-dir: 2.0.0 - ws: 6.2.2 + ws: 6.2.3 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate + dev: false - '@react-native/gradle-plugin@0.74.83': {} + /@react-native/gradle-plugin@0.74.85: + resolution: {integrity: sha512-1VQSLukJzaVMn1MYcs8Weo1nUW8xCas2XU1KuoV7OJPk6xPnEBFJmapmEGP5mWeEy7kcTXJmddEgy1wwW0tcig==} + engines: {node: '>=18'} + dev: false - '@react-native/js-polyfills@0.74.83': {} + /@react-native/js-polyfills@0.74.85: + resolution: {integrity: sha512-gp4Rg9le3lVZeW7Cie6qLfekvRKZuhJ3LKgi1SFB4N154z1wIclypAJXVXgWBsy8JKJfTwRI+sffC4qZDlvzrg==} + engines: {node: '>=18'} + dev: false - '@react-native/metro-babel-transformer@0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.24.5)': + /@react-native/metro-babel-transformer@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7): + resolution: {integrity: sha512-JIrXqEwhTvWPtGArgMptIPGstMdXQIkwSjKVYt+7VC4a9Pw1GurIWanIJheEW6ZuCVvTc0VZkwglFz9JVjzDjA==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' dependencies: '@babel/core': 7.25.2 - '@react-native/babel-preset': 0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.24.5) + '@react-native/babel-preset': 0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7) hermes-parser: 0.19.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: false - '@react-native/normalize-colors@0.74.83': {} + /@react-native/normalize-colors@0.74.85: + resolution: {integrity: sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==} + dev: false - '@react-native/virtualized-lists@0.74.83(react-native@0.74.1)(react@18.3.1)': + /@react-native/virtualized-lists@0.74.85(react-native@0.74.3)(react@18.3.1): + resolution: {integrity: sha512-jx2Zw0qlZteoQ+0KxRc7s4drsljLBEP534FaNZ950e9+CN9nVkLsV6rigcTjDR8wjKMSBWhKf0C0C3egYz7Ehg==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.6 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 18.3.1 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.24.5)(react@18.3.1) + react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) + dev: false - '@readme/better-ajv-errors@1.6.0(ajv@8.13.0)': + /@readme/better-ajv-errors@1.6.0(ajv@8.16.0): + resolution: {integrity: sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==} + engines: {node: '>=14'} + peerDependencies: + ajv: 4.11.8 - 8 dependencies: - '@babel/code-frame': 7.24.2 - '@babel/runtime': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/runtime': 7.24.7 '@humanwhocodes/momoa': 2.0.4 - ajv: 8.13.0 + ajv: 8.16.0 chalk: 4.1.2 json-to-ast: 2.1.0 jsonpointer: 5.0.1 leven: 3.1.0 + dev: false - '@readme/json-schema-ref-parser@1.2.0': + /@readme/json-schema-ref-parser@1.2.0: + resolution: {integrity: sha512-Bt3QVovFSua4QmHa65EHUmh2xS0XJ3rgTEUPH998f4OW4VVJke3BuS16f+kM0ZLOGdvIrzrPRqwihuv5BAjtrA==} dependencies: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 call-me-maybe: 1.0.2 js-yaml: 4.1.0 + dev: false - '@readme/openapi-parser@2.5.0(openapi-types@12.1.3)': + /@readme/openapi-parser@2.5.0(openapi-types@12.1.3): + resolution: {integrity: sha512-IbymbOqRuUzoIgxfAAR7XJt2FWl6n2yqN09fF5adacGm7W03siA3bj1Emql0X9D2T+RpBYz3x9zDsMhuoMP62A==} + engines: {node: '>=14'} + peerDependencies: + openapi-types: '>=7' dependencies: '@apidevtools/openapi-schemas': 2.1.0 '@apidevtools/swagger-methods': 3.0.2 '@jsdevtools/ono': 7.1.3 - '@readme/better-ajv-errors': 1.6.0(ajv@8.13.0) + '@readme/better-ajv-errors': 1.6.0(ajv@8.16.0) '@readme/json-schema-ref-parser': 1.2.0 - ajv: 8.13.0 - ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv: 8.16.0 + ajv-draft-04: 1.0.0(ajv@8.16.0) call-me-maybe: 1.0.2 openapi-types: 12.1.3 + dev: false - '@rnx-kit/chromium-edge-launcher@1.0.0': + /@rnx-kit/chromium-edge-launcher@1.0.0: + resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} + engines: {node: '>=14.15'} dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.39 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -16038,498 +8237,746 @@ snapshots: rimraf: 3.0.2 transitivePeerDependencies: - supports-color + dev: false - '@rollup/rollup-android-arm-eabi@4.17.2': - optional: true - - '@rollup/rollup-android-arm64@4.17.2': + /@rollup/rollup-android-arm-eabi@4.18.0: + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + cpu: [arm] + os: [android] + requiresBuild: true optional: true - '@rollup/rollup-darwin-arm64@4.17.2': + /@rollup/rollup-android-arm64@4.18.0: + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + cpu: [arm64] + os: [android] + requiresBuild: true optional: true - '@rollup/rollup-darwin-x64@4.17.2': + /@rollup/rollup-darwin-arm64@4.18.0: + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.17.2': + /@rollup/rollup-darwin-x64@4.18.0: + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true - '@rollup/rollup-linux-arm-musleabihf@4.17.2': + /@rollup/rollup-linux-arm-gnueabihf@4.18.0: + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-arm64-gnu@4.17.2': + /@rollup/rollup-linux-arm-musleabihf@4.18.0: + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-arm64-musl@4.17.2': + /@rollup/rollup-linux-arm64-gnu@4.18.0: + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': + /@rollup/rollup-linux-arm64-musl@4.18.0: + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-riscv64-gnu@4.17.2': + /@rollup/rollup-linux-powerpc64le-gnu@4.18.0: + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-s390x-gnu@4.17.2': + /@rollup/rollup-linux-riscv64-gnu@4.18.0: + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + cpu: [riscv64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-x64-gnu@4.17.2': + /@rollup/rollup-linux-s390x-gnu@4.18.0: + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + cpu: [s390x] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-linux-x64-musl@4.17.2': + /@rollup/rollup-linux-x64-gnu@4.18.0: + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-win32-arm64-msvc@4.17.2': + /@rollup/rollup-linux-x64-musl@4.18.0: + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@rollup/rollup-win32-ia32-msvc@4.17.2': + /@rollup/rollup-win32-arm64-msvc@4.18.0: + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true - '@rollup/rollup-win32-x64-msvc@4.17.2': + /@rollup/rollup-win32-ia32-msvc@4.18.0: + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true - '@safe-global/safe-apps-provider@0.18.1(typescript@5.4.5)': - dependencies: - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.5) - events: 3.3.0 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod + /@rollup/rollup-win32-x64-msvc@4.18.0: + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true - '@safe-global/safe-apps-provider@0.18.3(typescript@5.4.5)': + /@safe-global/safe-apps-provider@0.18.1(typescript@5.5.3): + resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(typescript@5.4.5) + '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.5.3) events: 3.3.0 transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod + dev: false - '@safe-global/safe-apps-sdk@8.1.0(typescript@5.4.5)': - dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.21.1 - viem: 1.21.4(typescript@5.4.5) - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod - - '@safe-global/safe-apps-sdk@9.1.0(typescript@5.4.5)': + /@safe-global/safe-apps-sdk@8.1.0(typescript@5.5.3): + resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.21.1 - viem: 2.18.8(typescript@5.4.5)(zod@3.23.6) + '@safe-global/safe-gateway-typescript-sdk': 3.21.8 + viem: 1.21.4(typescript@5.5.3) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod + dev: false - '@safe-global/safe-gateway-typescript-sdk@3.21.1': {} + /@safe-global/safe-gateway-typescript-sdk@3.21.8: + resolution: {integrity: sha512-n/fYgiqbuzAQuK0bgny6GBYvb585ETxKURa5Kb9hBV3fa47SvJo/dpGq275fJUn0e3Hh1YqETiLGj4HVJjHiTA==} + engines: {node: '>=16'} + dev: false - '@scure/base@1.1.6': {} + /@scure/base@1.1.7: + resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} - '@scure/bip32@1.1.5': + /@scure/bip32@1.1.5: + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.6 + '@scure/base': 1.1.7 + dev: false - '@scure/bip32@1.3.2': + /@scure/bip32@1.3.2: + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} dependencies: '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 - '@scure/base': 1.1.6 - - '@scure/bip32@1.3.3': - dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.6 + '@scure/base': 1.1.7 + dev: false - '@scure/bip32@1.4.0': + /@scure/bip32@1.4.0: + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} dependencies: '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 - '@scure/base': 1.1.6 + '@scure/base': 1.1.7 - '@scure/bip39@1.1.1': + /@scure/bip39@1.1.1: + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} dependencies: '@noble/hashes': 1.2.0 - '@scure/base': 1.1.6 + '@scure/base': 1.1.7 + dev: false - '@scure/bip39@1.2.1': + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: '@noble/hashes': 1.3.2 - '@scure/base': 1.1.6 - - '@scure/bip39@1.2.2': - dependencies: - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.6 + '@scure/base': 1.1.7 + dev: false - '@scure/bip39@1.3.0': + /@scure/bip39@1.3.0: + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} dependencies: '@noble/hashes': 1.4.0 - '@scure/base': 1.1.6 + '@scure/base': 1.1.7 - '@shikijs/core@1.12.1': + /@shikijs/core@1.10.0: + resolution: {integrity: sha512-BZcr6FCmPfP6TXaekvujZcnkFmJHZ/Yglu97r/9VjzVndQA56/F4WjUKtJRQUnK59Wi7p/UTAOekMfCJv7jnYg==} + dev: false + + /@shikijs/core@1.12.1: + resolution: {integrity: sha512-biCz/mnkMktImI6hMfMX3H9kOeqsInxWEyCHbSlL8C/2TR1FqfmGxTLRNwYCKsyCyxWLbB8rEqXRVZuyxuLFmA==} dependencies: '@types/hast': 3.0.4 + dev: false - '@shikijs/core@1.5.2': {} - - '@sideway/address@4.1.5': + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} dependencies: '@hapi/hoek': 9.3.0 + dev: false - '@sideway/formula@3.0.1': {} + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + dev: false - '@sideway/pinpoint@2.0.0': {} + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: false - '@sinclair/typebox@0.27.8': {} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@sindresorhus/is@5.6.0': {} + /@sindresorhus/is@5.6.0: + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + dev: true - '@sindresorhus/merge-streams@2.3.0': {} + /@sindresorhus/merge-streams@2.3.0: + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + dev: true - '@sinonjs/commons@3.0.1': + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} dependencies: type-detect: 4.0.8 + dev: false - '@sinonjs/fake-timers@10.3.0': + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: '@sinonjs/commons': 3.0.1 + dev: false - '@smithy/abort-controller@3.0.0': + /@smithy/abort-controller@3.1.1: + resolution: {integrity: sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/chunked-blob-reader-native@3.0.0': + /@smithy/chunked-blob-reader-native@3.0.0: + resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} dependencies: '@smithy/util-base64': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/chunked-blob-reader@3.0.0': + /@smithy/chunked-blob-reader@3.0.0: + resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/config-resolver@3.0.0': + /@smithy/config-resolver@3.0.4: + resolution: {integrity: sha512-VwiOk7TwXoE7NlNguV/aPq1hFH72tqkHCw8eWXbr2xHspRyyv9DLpLXhq+Ieje+NwoqXrY0xyQjPXdOE6cGcHA==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/node-config-provider': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/node-config-provider': 3.1.3 + '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.0 - tslib: 2.6.2 + '@smithy/util-middleware': 3.0.3 + tslib: 2.6.3 + dev: false - '@smithy/core@2.0.1': + /@smithy/core@2.2.4: + resolution: {integrity: sha512-qdY3LpMOUyLM/gfjjMQZui+UTNS7kBRDWlvyIhVOql5dn2J3isk9qUTBtQ1CbDH8MTugHis1zu3h4rH+Qmmh4g==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.1 - '@smithy/middleware-serde': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/util-middleware': 3.0.0 - tslib: 2.6.2 - - '@smithy/credential-provider-imds@3.0.0': + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-serde': 3.0.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/util-middleware': 3.0.3 + tslib: 2.6.3 + dev: false + + /@smithy/credential-provider-imds@3.1.3: + resolution: {integrity: sha512-U1Yrv6hx/mRK6k8AncuI6jLUx9rn0VVSd9NPEX6pyYFBfkSkChOc/n4zUb8alHUVg83TbI4OdZVo1X0Zfj3ijA==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/node-config-provider': 3.0.0 - '@smithy/property-provider': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - tslib: 2.6.2 + '@smithy/node-config-provider': 3.1.3 + '@smithy/property-provider': 3.1.3 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 + tslib: 2.6.3 + dev: false - '@smithy/eventstream-codec@3.0.0': + /@smithy/eventstream-codec@3.1.2: + resolution: {integrity: sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==} dependencies: - '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 3.0.0 + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 3.3.0 '@smithy/util-hex-encoding': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/eventstream-serde-browser@3.0.0': + /@smithy/eventstream-serde-browser@3.0.4: + resolution: {integrity: sha512-Eo4anLZX6ltGJTZ5yJMc80gZPYYwBn44g0h7oFq6et+TYr5dUsTpIcDbz2evsOKIZhZ7zBoFWHtBXQ4QQeb5xA==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/eventstream-serde-universal': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/eventstream-serde-universal': 3.0.4 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/eventstream-serde-config-resolver@3.0.0': + /@smithy/eventstream-serde-config-resolver@3.0.3: + resolution: {integrity: sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/eventstream-serde-node@3.0.0': + /@smithy/eventstream-serde-node@3.0.4: + resolution: {integrity: sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/eventstream-serde-universal': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/eventstream-serde-universal': 3.0.4 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/eventstream-serde-universal@3.0.0': + /@smithy/eventstream-serde-universal@3.0.4: + resolution: {integrity: sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/eventstream-codec': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/eventstream-codec': 3.1.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/fetch-http-handler@3.0.1': + /@smithy/fetch-http-handler@3.2.0: + resolution: {integrity: sha512-vFvDxMrc6sO5Atec8PaISckMcAwsCrRhYxwUylg97bRT2KZoumOF7qk5+6EVUtuM1IG9AJV5aqXnHln9ZdXHpg==} dependencies: - '@smithy/protocol-http': 4.0.0 - '@smithy/querystring-builder': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/protocol-http': 4.0.3 + '@smithy/querystring-builder': 3.0.3 + '@smithy/types': 3.3.0 '@smithy/util-base64': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/hash-blob-browser@3.0.0': + /@smithy/hash-blob-browser@3.1.2: + resolution: {integrity: sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==} dependencies: '@smithy/chunked-blob-reader': 3.0.0 '@smithy/chunked-blob-reader-native': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/hash-node@3.0.0': + /@smithy/hash-node@3.0.3: + resolution: {integrity: sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.3.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/hash-stream-node@3.0.0': + /@smithy/hash-stream-node@3.1.2: + resolution: {integrity: sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.3.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/invalid-dependency@3.0.0': + /@smithy/invalid-dependency@3.0.3: + resolution: {integrity: sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==} dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/is-array-buffer@3.0.0': + /@smithy/is-array-buffer@2.2.0: + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.3 + dev: false + + /@smithy/is-array-buffer@3.0.0: + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/md5-js@3.0.0': + /@smithy/md5-js@3.0.3: + resolution: {integrity: sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==} dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.3.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/middleware-content-length@3.0.0': - dependencies: - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/middleware-endpoint@3.0.0': - dependencies: - '@smithy/middleware-serde': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-middleware': 3.0.0 - tslib: 2.6.2 - - '@smithy/middleware-retry@3.0.1': - dependencies: - '@smithy/node-config-provider': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/service-error-classification': 3.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false + + /@smithy/middleware-content-length@3.0.3: + resolution: {integrity: sha512-Dbz2bzexReYIQDWMr+gZhpwBetNXzbhnEMhYKA6urqmojO14CsXjnsoPYO8UL/xxcawn8ZsuVU61ElkLSltIUQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false + + /@smithy/middleware-endpoint@3.0.4: + resolution: {integrity: sha512-whUJMEPwl3ANIbXjBXZVdJNgfV2ZU8ayln7xUM47rXL2txuenI7jQ/VFFwCzy5lCmXScjp6zYtptW5Evud8e9g==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/middleware-serde': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 + '@smithy/util-middleware': 3.0.3 + tslib: 2.6.3 + dev: false + + /@smithy/middleware-retry@3.0.7: + resolution: {integrity: sha512-f5q7Y09G+2h5ivkSx5CHvlAT4qRR3jBFEsfXyQ9nFNiWQlr8c48blnu5cmbTQ+p1xmIO14UXzKoF8d7Tm0Gsjw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/node-config-provider': 3.1.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/service-error-classification': 3.0.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.3 + tslib: 2.6.3 uuid: 9.0.1 + dev: false - '@smithy/middleware-serde@3.0.0': + /@smithy/middleware-serde@3.0.3: + resolution: {integrity: sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/middleware-stack@3.0.0': + /@smithy/middleware-stack@3.0.3: + resolution: {integrity: sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/node-config-provider@3.0.0': + /@smithy/node-config-provider@3.1.3: + resolution: {integrity: sha512-rxdpAZczzholz6CYZxtqDu/aKTxATD5DAUDVj7HoEulq+pDSQVWzbg0btZDlxeFfa6bb2b5tUvgdX5+k8jUqcg==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/node-http-handler@3.0.0': + /@smithy/node-http-handler@3.1.1: + resolution: {integrity: sha512-L71NLyPeP450r2J/mfu1jMc//Z1YnqJt2eSNw7uhiItaONnBLDA68J5jgxq8+MBDsYnFwNAIc7dBG1ImiWBiwg==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/abort-controller': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/querystring-builder': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/abort-controller': 3.1.1 + '@smithy/protocol-http': 4.0.3 + '@smithy/querystring-builder': 3.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/property-provider@3.0.0': + /@smithy/property-provider@3.1.3: + resolution: {integrity: sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/protocol-http@4.0.0': + /@smithy/protocol-http@4.0.3: + resolution: {integrity: sha512-x5jmrCWwQlx+Zv4jAtc33ijJ+vqqYN+c/ZkrnpvEe/uDas7AT7A/4Rc2CdfxgWv4WFGmEqODIrrUToPN6DDkGw==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/querystring-builder@3.0.0': + /@smithy/querystring-builder@3.0.3: + resolution: {integrity: sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.3.0 '@smithy/util-uri-escape': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/querystring-parser@3.0.0': + /@smithy/querystring-parser@3.0.3: + resolution: {integrity: sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/service-error-classification@3.0.0': + /@smithy/service-error-classification@3.0.3: + resolution: {integrity: sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.3.0 + dev: false - '@smithy/shared-ini-file-loader@3.0.0': + /@smithy/shared-ini-file-loader@3.1.3: + resolution: {integrity: sha512-Z8Y3+08vgoDgl4HENqNnnzSISAaGrF2RoKupoC47u2wiMp+Z8P/8mDh1CL8+8ujfi2U5naNvopSBmP/BUj8b5w==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/signature-v4@3.0.0': + /@smithy/signature-v4@3.1.2: + resolution: {integrity: sha512-3BcPylEsYtD0esM4Hoyml/+s7WP2LFhcM3J2AGdcL2vx9O60TtfpDOL72gjb4lU8NeRPeKAwR77YNyyGvMbuEA==} + engines: {node: '>=16.0.0'} dependencies: '@smithy/is-array-buffer': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/types': 3.3.0 '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-middleware': 3.0.0 + '@smithy/util-middleware': 3.0.3 '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/smithy-client@3.0.1': + /@smithy/smithy-client@3.1.5: + resolution: {integrity: sha512-x9bL9Mx2CT2P1OiUlHM+ZNpbVU6TgT32f9CmTRzqIHA7M4vYrROCWEoC3o4xHNJASoGd4Opos3cXYPgh+/m4Ww==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-stream': 3.0.1 - tslib: 2.6.2 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-stack': 3.0.3 + '@smithy/protocol-http': 4.0.3 + '@smithy/types': 3.3.0 + '@smithy/util-stream': 3.0.5 + tslib: 2.6.3 + dev: false - '@smithy/types@3.0.0': + /@smithy/types@3.3.0: + resolution: {integrity: sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==} + engines: {node: '>=16.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/url-parser@3.0.0': + /@smithy/url-parser@3.0.3: + resolution: {integrity: sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==} dependencies: - '@smithy/querystring-parser': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/querystring-parser': 3.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/util-base64@3.0.0': + /@smithy/util-base64@3.0.0: + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} dependencies: '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/util-body-length-browser@3.0.0': + /@smithy/util-body-length-browser@3.0.0: + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + dependencies: + tslib: 2.6.3 + dev: false + + /@smithy/util-body-length-node@3.0.0: + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/util-body-length-node@3.0.0': + /@smithy/util-buffer-from@2.2.0: + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} dependencies: - tslib: 2.6.2 + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.6.3 + dev: false - '@smithy/util-buffer-from@3.0.0': + /@smithy/util-buffer-from@3.0.0: + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} dependencies: '@smithy/is-array-buffer': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/util-config-provider@3.0.0': + /@smithy/util-config-provider@3.0.0: + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/util-defaults-mode-browser@3.0.1': + /@smithy/util-defaults-mode-browser@3.0.7: + resolution: {integrity: sha512-Q2txLyvQyGfmjsaDbVV7Sg8psefpFcrnlGapDzXGFRPFKRBeEg6OvFK8FljqjeHSaCZ6/UuzQExUPqBR/2qlDA==} + engines: {node: '>= 10.0.0'} dependencies: - '@smithy/property-provider': 3.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 + '@smithy/property-provider': 3.1.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 bowser: 2.11.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/util-defaults-mode-node@3.0.1': + /@smithy/util-defaults-mode-node@3.0.7: + resolution: {integrity: sha512-F4Qcj1fG6MGi2BSWCslfsMSwllws/WzYONBGtLybyY+halAcXdWhcew+mej8M5SKd5hqPYp4f7b+ABQEaeytgg==} + engines: {node: '>= 10.0.0'} dependencies: - '@smithy/config-resolver': 3.0.0 - '@smithy/credential-provider-imds': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/property-provider': 3.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-endpoints@2.0.0': + '@smithy/config-resolver': 3.0.4 + '@smithy/credential-provider-imds': 3.1.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/property-provider': 3.1.3 + '@smithy/smithy-client': 3.1.5 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false + + /@smithy/util-endpoints@2.0.4: + resolution: {integrity: sha512-ZAtNf+vXAsgzgRutDDiklU09ZzZiiV/nATyqde4Um4priTmasDH+eLpp3tspL0hS2dEootyFMhu1Y6Y+tzpWBQ==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/node-config-provider': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/node-config-provider': 3.1.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/util-hex-encoding@3.0.0': + /@smithy/util-hex-encoding@3.0.0: + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/util-middleware@3.0.0': + /@smithy/util-middleware@3.0.3: + resolution: {integrity: sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/util-retry@3.0.0': + /@smithy/util-retry@3.0.3: + resolution: {integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/service-error-classification': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/service-error-classification': 3.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@smithy/util-stream@3.0.1': + /@smithy/util-stream@3.0.5: + resolution: {integrity: sha512-xC3L5PKMAT/Bh8fmHNXP9sdQ4+4aKVUU3EEJ2CF/lLk7R+wtMJM+v/1B4en7jO++Wa5spGzFDBCl0QxgbUc5Ug==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/node-http-handler': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/fetch-http-handler': 3.2.0 + '@smithy/node-http-handler': 3.1.1 + '@smithy/types': 3.3.0 '@smithy/util-base64': 3.0.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false + + /@smithy/util-uri-escape@3.0.0: + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.6.3 + dev: false - '@smithy/util-uri-escape@3.0.0': + /@smithy/util-utf8@2.3.0: + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} dependencies: - tslib: 2.6.2 + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.6.3 + dev: false - '@smithy/util-utf8@3.0.0': + /@smithy/util-utf8@3.0.0: + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} dependencies: '@smithy/util-buffer-from': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - '@smithy/util-waiter@3.0.0': + /@smithy/util-waiter@3.1.2: + resolution: {integrity: sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/abort-controller': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 + '@smithy/abort-controller': 3.1.1 + '@smithy/types': 3.3.0 + tslib: 2.6.3 + dev: false - '@socket.io/component-emitter@3.1.2': {} + /@socket.io/component-emitter@3.1.2: + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + dev: false - '@solidity-parser/parser@0.18.0': {} + /@solidity-parser/parser@0.18.0: + resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} + dev: true - '@stablelib/aead@1.0.1': {} + /@stablelib/aead@1.0.1: + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + dev: false - '@stablelib/binary@1.0.1': + /@stablelib/binary@1.0.1: + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} dependencies: '@stablelib/int': 1.0.1 + dev: false - '@stablelib/bytes@1.0.1': {} + /@stablelib/bytes@1.0.1: + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + dev: false - '@stablelib/chacha20poly1305@1.0.1': + /@stablelib/chacha20poly1305@1.0.1: + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} dependencies: '@stablelib/aead': 1.0.1 '@stablelib/binary': 1.0.1 @@ -16537,140 +8984,206 @@ snapshots: '@stablelib/constant-time': 1.0.1 '@stablelib/poly1305': 1.0.1 '@stablelib/wipe': 1.0.1 + dev: false - '@stablelib/chacha@1.0.1': + /@stablelib/chacha@1.0.1: + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} dependencies: '@stablelib/binary': 1.0.1 '@stablelib/wipe': 1.0.1 + dev: false - '@stablelib/constant-time@1.0.1': {} + /@stablelib/constant-time@1.0.1: + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + dev: false - '@stablelib/ed25519@1.0.3': + /@stablelib/ed25519@1.0.3: + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} dependencies: '@stablelib/random': 1.0.2 '@stablelib/sha512': 1.0.1 '@stablelib/wipe': 1.0.1 + dev: false - '@stablelib/hash@1.0.1': {} + /@stablelib/hash@1.0.1: + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + dev: false - '@stablelib/hkdf@1.0.1': + /@stablelib/hkdf@1.0.1: + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} dependencies: '@stablelib/hash': 1.0.1 '@stablelib/hmac': 1.0.1 '@stablelib/wipe': 1.0.1 + dev: false - '@stablelib/hmac@1.0.1': + /@stablelib/hmac@1.0.1: + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} dependencies: '@stablelib/constant-time': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 + dev: false - '@stablelib/int@1.0.1': {} + /@stablelib/int@1.0.1: + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + dev: false - '@stablelib/keyagreement@1.0.1': + /@stablelib/keyagreement@1.0.1: + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} dependencies: '@stablelib/bytes': 1.0.1 + dev: false - '@stablelib/poly1305@1.0.1': + /@stablelib/poly1305@1.0.1: + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} dependencies: '@stablelib/constant-time': 1.0.1 '@stablelib/wipe': 1.0.1 + dev: false - '@stablelib/random@1.0.2': + /@stablelib/random@1.0.2: + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} dependencies: '@stablelib/binary': 1.0.1 '@stablelib/wipe': 1.0.1 + dev: false - '@stablelib/sha256@1.0.1': + /@stablelib/sha256@1.0.1: + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} dependencies: '@stablelib/binary': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 + dev: false - '@stablelib/sha512@1.0.1': + /@stablelib/sha512@1.0.1: + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} dependencies: '@stablelib/binary': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 + dev: false - '@stablelib/wipe@1.0.1': {} + /@stablelib/wipe@1.0.1: + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + dev: false - '@stablelib/x25519@1.0.3': + /@stablelib/x25519@1.0.3: + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} dependencies: '@stablelib/keyagreement': 1.0.1 '@stablelib/random': 1.0.2 '@stablelib/wipe': 1.0.1 + dev: false - '@storybook/addon-actions@8.2.7(storybook@8.2.7)': + /@storybook/addon-actions@8.1.11: + resolution: {integrity: sha512-jqYXgBgOVInStOCk//AA+dGkrfN8R7rDXA4lyu82zM59kvICtG9iqgmkSRDn0Z3zUkM+lIHZGoz0aLVQ8pxsgw==} dependencies: + '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 8.2.7 uuid: 9.0.1 + dev: true - '@storybook/addon-backgrounds@8.2.7(storybook@8.2.7)': + /@storybook/addon-backgrounds@8.1.11: + resolution: {integrity: sha512-naGf1ovmsU2pSWb270yRO1IidnO+0YCZ5Tcb8I4rPhZ0vsdXNURYKS1LPSk1OZkvaUXdeB4Im9HhHfUBJOW9oQ==} dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 8.2.7 ts-dedent: 2.2.0 + dev: true - '@storybook/addon-controls@8.2.7(storybook@8.2.7)': + /@storybook/addon-controls@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-q/Vt4meNVlFlBWIMCJhx6r+bqiiYocCta2RoUK5nyIZUiLzHncKHX6JnCU36EmJzRyah9zkwjfCb2G1r9cjnoQ==} dependencies: + '@storybook/blocks': 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) dequal: 2.0.3 lodash: 4.17.21 - storybook: 8.2.7 ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - encoding + - prettier + - react + - react-dom + - supports-color + dev: true - '@storybook/addon-docs@8.2.7(storybook@8.2.7)': + /@storybook/addon-docs@8.1.11(prettier@3.3.2): + resolution: {integrity: sha512-69dv+CE4R5wFU7xnJmhuyEbLN2PEVDV3N/BbgJqeucIYPmm6zDV83Q66teCHKYtRln3BFUqPH5mxsjiHobxfJQ==} dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1) - '@storybook/blocks': 8.2.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.7) - '@storybook/csf-plugin': 8.2.7(storybook@8.2.7) + '@storybook/blocks': 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) + '@storybook/client-logger': 8.1.11 + '@storybook/components': 8.1.11(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@storybook/csf-plugin': 8.1.11 + '@storybook/csf-tools': 8.1.11 '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 8.2.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.7) + '@storybook/node-logger': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@storybook/react-dom-shim': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/theming': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/types': 8.1.11 '@types/react': 18.3.3 fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) rehype-external-links: 3.0.0 rehype-slug: 6.0.0 - storybook: 8.2.7 ts-dedent: 2.2.0 transitivePeerDependencies: + - '@types/react-dom' + - encoding + - prettier - supports-color - - '@storybook/addon-essentials@8.2.7(storybook@8.2.7)': - dependencies: - '@storybook/addon-actions': 8.2.7(storybook@8.2.7) - '@storybook/addon-backgrounds': 8.2.7(storybook@8.2.7) - '@storybook/addon-controls': 8.2.7(storybook@8.2.7) - '@storybook/addon-docs': 8.2.7(storybook@8.2.7) - '@storybook/addon-highlight': 8.2.7(storybook@8.2.7) - '@storybook/addon-measure': 8.2.7(storybook@8.2.7) - '@storybook/addon-outline': 8.2.7(storybook@8.2.7) - '@storybook/addon-toolbars': 8.2.7(storybook@8.2.7) - '@storybook/addon-viewport': 8.2.7(storybook@8.2.7) - storybook: 8.2.7 + dev: true + + /@storybook/addon-essentials@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-uRTpcIZQnflML8H+2onicUNIIssKfuviW8Lyrs/KFwSZ1rMcYzhwzCNbGlIbAv04tgHe5NqEyNhb+DVQcZQBzg==} + dependencies: + '@storybook/addon-actions': 8.1.11 + '@storybook/addon-backgrounds': 8.1.11 + '@storybook/addon-controls': 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) + '@storybook/addon-docs': 8.1.11(prettier@3.3.2) + '@storybook/addon-highlight': 8.1.11 + '@storybook/addon-measure': 8.1.11 + '@storybook/addon-outline': 8.1.11 + '@storybook/addon-toolbars': 8.1.11 + '@storybook/addon-viewport': 8.1.11 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/manager-api': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/node-logger': 8.1.11 + '@storybook/preview-api': 8.1.11 ts-dedent: 2.2.0 transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - encoding + - prettier + - react + - react-dom - supports-color + dev: true - '@storybook/addon-highlight@8.2.7(storybook@8.2.7)': + /@storybook/addon-highlight@8.1.11: + resolution: {integrity: sha512-Iu8FCAd4ETsB6QF4xDE/OLLZY3HOFopuLM5KE0f58jnccF5zAVGr1Rj/54p6TeK0PEou0tLRPFuZs+LPlEzrSw==} dependencies: '@storybook/global': 5.0.0 - storybook: 8.2.7 + dev: true - '@storybook/addon-interactions@8.2.7(storybook@8.2.7)(vitest@1.6.0)': + /@storybook/addon-interactions@8.1.11(vitest@1.6.0): + resolution: {integrity: sha512-nkc01z61mYM1kxf0ncBQLlFnnwW4RAVPfRSxK9BdbFN3AAvFiHCwVZdn71mi+C3L8oTqYR6o32e0RlXk+AjhHA==} dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.2.7(storybook@8.2.7) - '@storybook/test': 8.2.7(storybook@8.2.7)(vitest@1.6.0) + '@storybook/instrumenter': 8.1.11 + '@storybook/test': 8.1.11(vitest@1.6.0) + '@storybook/types': 8.1.11 polished: 4.3.1 - storybook: 8.2.7 ts-dedent: 2.2.0 transitivePeerDependencies: - '@jest/globals' @@ -16678,180 +9191,564 @@ snapshots: - '@types/jest' - jest - vitest + dev: true - '@storybook/addon-links@8.2.7(react@18.3.1)(storybook@8.2.7)': + /@storybook/addon-links@8.1.11(react@18.3.1): + resolution: {integrity: sha512-HlV2RQSrZyi+55W1B1a9eWNuJdNpWx0g3j7s2arNlNmbd6/kfWAp84axBstI1tL0nW4svut7bWlCsMSOIden+A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + peerDependenciesMeta: + react: + optional: true dependencies: - '@storybook/csf': 0.1.11 + '@storybook/csf': 0.1.9 '@storybook/global': 5.0.0 react: 18.3.1 - storybook: 8.2.7 ts-dedent: 2.2.0 + dev: true - '@storybook/addon-measure@8.2.7(storybook@8.2.7)': + /@storybook/addon-measure@8.1.11: + resolution: {integrity: sha512-LkQD3SiLWaWt53aLB3EnmhD9Im8EOO+HKSUE+XGnIJRUcHHRqHfvDkN9KX7T1DCWbfRE5WzMHF5o23b3UiAANw==} dependencies: '@storybook/global': 5.0.0 - storybook: 8.2.7 tiny-invariant: 1.3.3 + dev: true - '@storybook/addon-outline@8.2.7(storybook@8.2.7)': + /@storybook/addon-outline@8.1.11: + resolution: {integrity: sha512-vco3RLVjkcS25dNtj1lxmjq4fC0Nq08KNLMS5cbNPVJWNTuSUi/2EthSTQQCdpfMV/p6u+D5uF20A9Pl0xJFXw==} dependencies: '@storybook/global': 5.0.0 - storybook: 8.2.7 ts-dedent: 2.2.0 + dev: true - '@storybook/addon-themes@8.2.7(storybook@8.2.7)': + /@storybook/addon-themes@8.1.11: + resolution: {integrity: sha512-tEOzNiLSAz0/kQKkqV85V7olkJpinCaKpxRpUQpFYut/yQVl+fUchgkfCKrQZuQuvSrebhMmQQ8fbqZq8nf2pw==} dependencies: - storybook: 8.2.7 ts-dedent: 2.2.0 + dev: true - '@storybook/addon-toolbars@8.2.7(storybook@8.2.7)': - dependencies: - storybook: 8.2.7 + /@storybook/addon-toolbars@8.1.11: + resolution: {integrity: sha512-reIKB0+JTiP+GNzynlDcRf4xmv9+j/DQ94qiXl2ZG5+ufKilH8DiRZpVA/i0x+4+TxdGdOJr1/pOf8tAmhNEoQ==} + dev: true - '@storybook/addon-viewport@8.2.7(storybook@8.2.7)': + /@storybook/addon-viewport@8.1.11: + resolution: {integrity: sha512-qk4IcGnAgiAUQxt8l5PIQ293Za+w6wxlJQIpxr7+QM8OVkADPzXY0MmQfYWU9EQplrxAC2MSx3/C1gZeq+MDOQ==} dependencies: memoizerific: 1.11.3 - storybook: 8.2.7 + dev: true - '@storybook/blocks@8.2.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.7)': + /@storybook/blocks@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-eMed7PpL/hAVM6tBS7h70bEAyzbiSU9I/kye4jZ7DkCbAsrX6OKmC7pcHSDn712WTcf3vVqxy5jOKUmOXpc0eg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true dependencies: - '@storybook/csf': 0.1.11 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/components': 8.1.11(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@storybook/core-events': 8.1.11 + '@storybook/csf': 0.1.9 + '@storybook/docs-tools': 8.1.11(prettier@3.3.2) '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.10(react-dom@18.3.1)(react@18.3.1) - '@types/lodash': 4.17.7 + '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1) + '@storybook/manager-api': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/preview-api': 8.1.11 + '@storybook/theming': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/types': 8.1.11 + '@types/lodash': 4.17.6 color-convert: 2.0.1 dequal: 2.0.3 lodash: 4.17.21 - markdown-to-jsx: 7.4.7(react@18.3.1) + markdown-to-jsx: 7.3.2(react@18.3.1) + memoizerific: 1.11.3 + polished: 4.3.1 + react: 18.3.1 + react-colorful: 5.6.1(react-dom@18.3.1)(react@18.3.1) + react-dom: 18.3.1(react@18.3.1) + telejson: 7.2.0 + tocbot: 4.28.2 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - encoding + - prettier + - supports-color + dev: true + + /@storybook/builder-manager@8.1.11(prettier@3.3.2): + resolution: {integrity: sha512-U7bmed4Ayg+OlJ8HPmLeGxLTHzDY7rxmxM4aAs4YL01fufYfBcjkIP9kFhJm+GJOvGm+YJEUAPe5mbM1P/bn0Q==} + dependencies: + '@fal-works/esbuild-plugin-global-externals': 2.1.2 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/manager': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@types/ejs': 3.1.5 + '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.20.2) + browser-assert: 1.2.1 + ejs: 3.1.10 + esbuild: 0.20.2 + esbuild-plugin-alias: 0.2.1 + express: 4.19.2 + fs-extra: 11.2.0 + process: 0.11.10 + util: 0.12.5 + transitivePeerDependencies: + - encoding + - prettier + - supports-color + dev: true + + /@storybook/builder-vite@8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2): + resolution: {integrity: sha512-hG4eoNMCPgjZ2Ai+zSmk69zjsyEihe75XbJXtYfGRqjMWtz2+SAUFO54fLc2BD5svcUiTeN+ukWcTrwApyPsKg==} + peerDependencies: + '@preact/preset-vite': '*' + typescript: '>= 4.3.x' + vite: ^4.0.0 || ^5.0.0 + vite-plugin-glimmerx: '*' + peerDependenciesMeta: + '@preact/preset-vite': + optional: true + typescript: + optional: true + vite-plugin-glimmerx: + optional: true + dependencies: + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/csf-plugin': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/preview': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@storybook/types': 8.1.11 + '@types/find-cache-dir': 3.2.1 + browser-assert: 1.2.1 + es-module-lexer: 1.5.4 + express: 4.19.2 + find-cache-dir: 3.3.2 + fs-extra: 11.2.0 + magic-string: 0.30.10 + ts-dedent: 2.2.0 + typescript: 5.5.3 + vite: 5.3.2(@types/node@20.14.9) + transitivePeerDependencies: + - encoding + - prettier + - supports-color + dev: true + + /@storybook/channels@8.1.11: + resolution: {integrity: sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA==} + dependencies: + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 + '@storybook/global': 5.0.0 + telejson: 7.2.0 + tiny-invariant: 1.3.3 + dev: true + + /@storybook/cli@8.1.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-4U48w9C7mVEKrykcPcfHwJkRyCqJ28XipbElACbjIIkQEqaHaOVtP3GeKIrgkoOXe/HK3O4zKWRP2SqlVS0r4A==} + hasBin: true + dependencies: + '@babel/core': 7.24.7 + '@babel/types': 7.24.7 + '@ndelangen/get-tarball': 3.0.9 + '@storybook/codemod': 8.1.11 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/core-server': 8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) + '@storybook/csf-tools': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/telemetry': 8.1.11(prettier@3.3.2) + '@storybook/types': 8.1.11 + '@types/semver': 7.5.8 + '@yarnpkg/fslib': 2.10.3 + '@yarnpkg/libzip': 2.3.0 + chalk: 4.1.2 + commander: 6.2.1 + cross-spawn: 7.0.3 + detect-indent: 6.1.0 + envinfo: 7.13.0 + execa: 5.1.1 + find-up: 5.0.0 + fs-extra: 11.2.0 + get-npm-tarball-url: 2.1.0 + giget: 1.2.3 + globby: 14.0.2 + jscodeshift: 0.15.2(@babel/preset-env@7.24.7) + leven: 3.1.0 + ora: 5.4.1 + prettier: 3.3.2 + prompts: 2.4.2 + read-pkg-up: 7.0.1 + semver: 7.6.2 + strip-json-comments: 3.1.1 + tempy: 3.1.0 + tiny-invariant: 1.3.3 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@babel/preset-env' + - bufferutil + - encoding + - react + - react-dom + - supports-color + - utf-8-validate + dev: true + + /@storybook/client-logger@8.1.11: + resolution: {integrity: sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA==} + dependencies: + '@storybook/global': 5.0.0 + dev: true + + /@storybook/codemod@8.1.11: + resolution: {integrity: sha512-/LCozjH1IQ1TOs9UQV59BE0X6UZ9q+C0NEUz7qmJZPrwAii3FkW4l7D/fwxblpMExaoxv0oE8NQfUz49U/5Ymg==} + dependencies: + '@babel/core': 7.24.7 + '@babel/preset-env': 7.24.7(@babel/core@7.24.7) + '@babel/types': 7.24.7 + '@storybook/csf': 0.1.9 + '@storybook/csf-tools': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/types': 8.1.11 + '@types/cross-spawn': 6.0.6 + cross-spawn: 7.0.3 + globby: 14.0.2 + jscodeshift: 0.15.2(@babel/preset-env@7.24.7) + lodash: 4.17.21 + prettier: 3.3.2 + recast: 0.23.9 + tiny-invariant: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@storybook/components@8.1.11(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-iXKsNu7VmrLBtjMfPj7S4yJ6T13GU6joKcVcrcw8wfrQJGlPFp4YaURPBUEDxvCt1XWi5JkaqJBvb48kIrROEQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + dependencies: + '@radix-ui/react-dialog': 1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@storybook/client-logger': 8.1.11 + '@storybook/csf': 0.1.9 + '@storybook/global': 5.0.0 + '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1) + '@storybook/theming': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/types': 8.1.11 memoizerific: 1.11.3 - polished: 4.3.1 react: 18.3.1 - react-colorful: 5.6.1(react-dom@18.3.1)(react@18.3.1) react-dom: 18.3.1(react@18.3.1) - storybook: 8.2.7 - telejson: 7.2.0 - ts-dedent: 2.2.0 util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + dev: true - '@storybook/builder-vite@8.2.7(storybook@8.2.7)(typescript@5.4.5)(vite@5.2.11)': + /@storybook/core-common@8.1.11(prettier@3.3.2): + resolution: {integrity: sha512-Ix0nplD4I4DrV2t9B+62jaw1baKES9UbR/Jz9LVKFF9nsua3ON0aVe73dOjMxFWBngpzBYWe+zYBTZ7aQtDH4Q==} + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true dependencies: - '@storybook/csf-plugin': 8.2.7(storybook@8.2.7) - '@types/find-cache-dir': 3.2.1 - browser-assert: 1.2.1 - es-module-lexer: 1.5.2 - express: 4.19.2 + '@storybook/core-events': 8.1.11 + '@storybook/csf-tools': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/types': 8.1.11 + '@yarnpkg/fslib': 2.10.3 + '@yarnpkg/libzip': 2.3.0 + chalk: 4.1.2 + cross-spawn: 7.0.3 + esbuild: 0.20.2 + esbuild-register: 3.5.0(esbuild@0.20.2) + execa: 5.1.1 + file-system-cache: 2.3.0 find-cache-dir: 3.3.2 + find-up: 5.0.0 fs-extra: 11.2.0 - magic-string: 0.30.10 - storybook: 8.2.7 + glob: 10.4.2 + handlebars: 4.7.8 + lazy-universal-dotenv: 4.0.0 + node-fetch: 2.7.0 + picomatch: 2.3.1 + pkg-dir: 5.0.0 + prettier: 3.3.2 + prettier-fallback: /prettier@3.3.2 + pretty-hrtime: 1.0.3 + resolve-from: 5.0.0 + semver: 7.6.2 + tempy: 3.1.0 + tiny-invariant: 1.3.3 ts-dedent: 2.2.0 - typescript: 5.4.5 - vite: 5.2.11(@types/node@20.12.8) + util: 0.12.5 transitivePeerDependencies: + - encoding - supports-color + dev: true - '@storybook/codemod@8.2.7': + /@storybook/core-events@8.1.11: + resolution: {integrity: sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A==} dependencies: - '@babel/core': 7.24.5 - '@babel/preset-env': 7.24.5(@babel/core@7.24.5) - '@babel/types': 7.24.5 - '@storybook/core': 8.2.7 - '@storybook/csf': 0.1.11 - '@types/cross-spawn': 6.0.6 - cross-spawn: 7.0.3 + '@storybook/csf': 0.1.9 + ts-dedent: 2.2.0 + dev: true + + /@storybook/core-server@8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-L6dzQTmR0np/kagNONvvlm6lSvF1FNc9js3vxsEEPnEypLbhx8bDZaHmuhmBpYUzKyUMpRVQTE/WgjHLuBBuxA==} + dependencies: + '@aw-web-design/x-default-browser': 1.4.126 + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-manager': 8.1.11(prettier@3.3.2) + '@storybook/channels': 8.1.11 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/csf': 0.1.9 + '@storybook/csf-tools': 8.1.11 + '@storybook/docs-mdx': 3.1.0-next.0 + '@storybook/global': 5.0.0 + '@storybook/manager': 8.1.11 + '@storybook/manager-api': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/node-logger': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@storybook/telemetry': 8.1.11(prettier@3.3.2) + '@storybook/types': 8.1.11 + '@types/detect-port': 1.3.5 + '@types/diff': 5.2.1 + '@types/node': 18.19.39 + '@types/pretty-hrtime': 1.0.3 + '@types/semver': 7.5.8 + better-opn: 3.0.2 + chalk: 4.1.2 + cli-table3: 0.6.5 + compression: 1.7.4 + detect-port: 1.6.1 + diff: 5.2.0 + express: 4.19.2 + fs-extra: 11.2.0 globby: 14.0.2 - jscodeshift: 0.15.2(@babel/preset-env@7.24.5) lodash: 4.17.21 - prettier: 3.2.5 - recast: 0.23.9 + open: 8.4.2 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + read-pkg-up: 7.0.1 + semver: 7.6.3 + telejson: 7.2.0 tiny-invariant: 1.3.3 + ts-dedent: 2.2.0 + util: 0.12.5 + util-deprecate: 1.0.2 + watchpack: 2.4.1 + ws: 8.17.1 transitivePeerDependencies: - bufferutil + - encoding + - prettier + - react + - react-dom - supports-color - utf-8-validate + dev: true - '@storybook/components@8.2.7(storybook@8.2.7)': + /@storybook/csf-plugin@8.1.11: + resolution: {integrity: sha512-hkA8gjFtSN/tabG0cuvmEqanMXtxPr3qTkp4UNSt1R6jBEgFHRG2y/KYLl367kDwOSFTT987ZgRfJJruU66Fvw==} dependencies: - storybook: 8.2.7 + '@storybook/csf-tools': 8.1.11 + unplugin: 1.11.0 + transitivePeerDependencies: + - supports-color + dev: true - '@storybook/core@8.2.7': + /@storybook/csf-tools@8.1.11: + resolution: {integrity: sha512-6qMWAg/dBwCVIHzANM9lSHoirwqSS+wWmv+NwAs0t9S94M75IttHYxD3IyzwaSYCC5llp0EQFvtXXAuSfFbibg==} dependencies: - '@storybook/csf': 0.1.11 - '@types/express': 4.17.21 - '@types/node': 18.19.31 - browser-assert: 1.2.1 - esbuild: 0.21.3 - esbuild-register: 3.6.0(esbuild@0.21.3) - express: 4.19.2 - process: 0.11.10 + '@babel/generator': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + '@storybook/csf': 0.1.9 + '@storybook/types': 8.1.11 + fs-extra: 11.2.0 recast: 0.23.9 - util: 0.12.5 - ws: 8.17.0 + ts-dedent: 2.2.0 transitivePeerDependencies: - - bufferutil - supports-color - - utf-8-validate + dev: true - '@storybook/csf-plugin@8.2.7(storybook@8.2.7)': - dependencies: - storybook: 8.2.7 - unplugin: 1.12.0 - - '@storybook/csf@0.0.1': + /@storybook/csf@0.0.1: + resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} dependencies: lodash: 4.17.21 + dev: true - '@storybook/csf@0.1.11': + /@storybook/csf@0.1.9: + resolution: {integrity: sha512-JlZ6v/iFn+iKohKGpYXnMeNeTiiAMeFoDhYnPLIC8GnyyIWqEI9wJYrOK9i9rxlJ8NZAH/ojGC/u/xVC41qSgQ==} dependencies: type-fest: 2.19.0 + dev: true + + /@storybook/docs-mdx@3.1.0-next.0: + resolution: {integrity: sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ==} + dev: true + + /@storybook/docs-tools@8.1.11(prettier@3.3.2): + resolution: {integrity: sha512-mEXtR9rS7Y+OdKtT/QG6JBGYR1L41mcDhIqhnk7RmYl9qJstVAegrCKWR53sPKFdTVOHU7dmu6k+BD+TqHpyyw==} + dependencies: + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@storybook/types': 8.1.11 + '@types/doctrine': 0.0.3 + assert: 2.1.0 + doctrine: 3.0.0 + lodash: 4.17.21 + transitivePeerDependencies: + - encoding + - prettier + - supports-color + dev: true - '@storybook/global@5.0.0': {} + /@storybook/global@5.0.0: + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + dev: true - '@storybook/icons@1.2.10(react-dom@18.3.1)(react@18.3.1)': + /@storybook/icons@1.2.9(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + dev: true - '@storybook/instrumenter@8.2.7(storybook@8.2.7)': + /@storybook/instrumenter@8.1.11: + resolution: {integrity: sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ==} dependencies: + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 + '@storybook/preview-api': 8.1.11 '@vitest/utils': 1.6.0 - storybook: 8.2.7 util: 0.12.5 + dev: true - '@storybook/manager-api@8.2.7(storybook@8.2.7)': + /@storybook/manager-api@8.1.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-QSgwKfAw01K9YvvZj30iGBMgQ4YaCT3vojmttuqdH5ukyXkiO7pENLJj4Y+alwUeSi0g+SJeadCI3PXySBHOGg==} dependencies: - storybook: 8.2.7 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 + '@storybook/csf': 0.1.9 + '@storybook/global': 5.0.0 + '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1) + '@storybook/router': 8.1.11 + '@storybook/theming': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/types': 8.1.11 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + store2: 2.14.3 + telejson: 7.2.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /@storybook/manager@8.1.11: + resolution: {integrity: sha512-e02y9dmxowo7cTKYm9am7UO6NOHoHy6Xi7xZf/UA932qLwFZUtk5pnwIEFaZWI3OQsRUCGhP+FL5zizU7uVZeg==} + dev: true + + /@storybook/node-logger@8.1.11: + resolution: {integrity: sha512-wdzFo7B2naGhS52L3n1qBkt5BfvQjs8uax6B741yKRpiGgeAN8nz8+qelkD25MbSukxvbPgDot7WJvsMU/iCzg==} + dev: true - '@storybook/preview-api@8.2.7(storybook@8.2.7)': + /@storybook/preview-api@8.1.11: + resolution: {integrity: sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ==} dependencies: - storybook: 8.2.7 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 + '@storybook/csf': 0.1.9 + '@storybook/global': 5.0.0 + '@storybook/types': 8.1.11 + '@types/qs': 6.9.15 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.12.2 + tiny-invariant: 1.3.3 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true - '@storybook/react-dom-shim@8.2.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.7)': + /@storybook/preview@8.1.11: + resolution: {integrity: sha512-K/9NZmjnL0D1BROkTNWNoPqgL2UaocALRSqCARmkBLgU2Rn/FuZgEclHkWlYo6pUrmLNK+bZ+XzpNMu12iTbpg==} + dev: true + + /@storybook/react-dom-shim@8.1.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-KVDSuipqkFjpGfldoRM5xR/N1/RNmbr+sVXqMmelr0zV2jGnexEZnoa7wRHk7IuXuivLWe8BxMxzvQWqjIa4GA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.2.7 + dev: true - '@storybook/svelte-vite@8.2.7(@babel/core@7.24.5)(@sveltejs/vite-plugin-svelte@3.1.0)(postcss@8.4.41)(storybook@8.2.7)(svelte@4.2.15)(typescript@5.4.5)(vite@5.2.11)': + /@storybook/router@8.1.11: + resolution: {integrity: sha512-nU5lsBvy0L8wBYOkjagh29ztZicDATpZNYrHuavlhQ2jznmmHdJvXKYk+VrMAbthjQ6ZBqfeeMNPR1UlnqR5Rw==} + dependencies: + '@storybook/client-logger': 8.1.11 + memoizerific: 1.11.3 + qs: 6.12.2 + dev: true + + /@storybook/svelte-vite@8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2): + resolution: {integrity: sha512-wjUDKVt98RXmbA84TtSuiSX7/lyKKrTNZgNnfrbxcArsJAwotmrG5BEMLGd1VulREriYqrYbW7fYX2jBucTgxg==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^2.0.0 || ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.65 + vite: ^4.0.0 || ^5.0.0 dependencies: - '@storybook/builder-vite': 8.2.7(storybook@8.2.7)(typescript@5.4.5)(vite@5.2.11) - '@storybook/svelte': 8.2.7(storybook@8.2.7)(svelte@4.2.15) - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11) + '@storybook/builder-vite': 8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2) + '@storybook/node-logger': 8.1.11 + '@storybook/svelte': 8.1.11(prettier@3.3.2)(svelte@4.2.18) + '@storybook/types': 8.1.11 + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.2) magic-string: 0.30.10 - storybook: 8.2.7 - svelte: 4.2.15 - svelte-preprocess: 5.1.4(@babel/core@7.24.5)(postcss@8.4.41)(svelte@4.2.15)(typescript@5.4.5) + svelte: 4.2.18 + svelte-preprocess: 5.1.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.3) sveltedoc-parser: 4.2.1 ts-dedent: 2.2.0 - vite: 5.2.11(@types/node@20.12.8) + vite: 5.3.2(@types/node@20.14.9) transitivePeerDependencies: - '@babel/core' - '@preact/preset-vite' - coffeescript + - encoding - less - postcss - postcss-load-config + - prettier - pug - sass - stylus @@ -16859,39 +9756,54 @@ snapshots: - supports-color - typescript - vite-plugin-glimmerx + dev: true - '@storybook/svelte@8.2.7(storybook@8.2.7)(svelte@4.2.15)': + /@storybook/svelte@8.1.11(prettier@3.3.2)(svelte@4.2.18): + resolution: {integrity: sha512-/xlfPj6q7EmIS+M0V1naI5NWGsK9iwHAHD1fuKmO8KTCqDAmq9bssCZBsaMcZHA7AL3tzpnWxLC52n4wjzaxhw==} + engines: {node: '>=18.0.0'} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.65 dependencies: - '@storybook/components': 8.2.7(storybook@8.2.7) + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 + '@storybook/docs-tools': 8.1.11(prettier@3.3.2) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.2.7(storybook@8.2.7) - '@storybook/preview-api': 8.2.7(storybook@8.2.7) - '@storybook/theming': 8.2.7(storybook@8.2.7) - storybook: 8.2.7 - svelte: 4.2.15 + '@storybook/preview-api': 8.1.11 + '@storybook/types': 8.1.11 + svelte: 4.2.18 sveltedoc-parser: 4.2.1 ts-dedent: 2.2.0 type-fest: 2.19.0 transitivePeerDependencies: + - encoding + - prettier - supports-color + dev: true - '@storybook/sveltekit@8.2.7(@babel/core@7.24.5)(@sveltejs/vite-plugin-svelte@3.1.0)(postcss@8.4.41)(storybook@8.2.7)(svelte@4.2.15)(typescript@5.4.5)(vite@5.2.11)': + /@storybook/sveltekit@8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2): + resolution: {integrity: sha512-fP3mR9d1TAaSMYLqwjU4YHODoisf7EE0/oheaY8IAx6pbsZbbnLCBKlvH2+i74u8NmLKHS5aFZePd9XiHlowwg==} + engines: {node: '>=18.0.0'} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.65 + vite: ^4.0.0 || ^5.0.0 dependencies: - '@storybook/addon-actions': 8.2.7(storybook@8.2.7) - '@storybook/builder-vite': 8.2.7(storybook@8.2.7)(typescript@5.4.5)(vite@5.2.11) - '@storybook/svelte': 8.2.7(storybook@8.2.7)(svelte@4.2.15) - '@storybook/svelte-vite': 8.2.7(@babel/core@7.24.5)(@sveltejs/vite-plugin-svelte@3.1.0)(postcss@8.4.41)(storybook@8.2.7)(svelte@4.2.15)(typescript@5.4.5)(vite@5.2.11) - storybook: 8.2.7 - svelte: 4.2.15 - vite: 5.2.11(@types/node@20.12.8) + '@storybook/addon-actions': 8.1.11 + '@storybook/builder-vite': 8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2) + '@storybook/svelte': 8.1.11(prettier@3.3.2)(svelte@4.2.18) + '@storybook/svelte-vite': 8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2) + '@storybook/types': 8.1.11 + svelte: 4.2.18 + vite: 5.3.2(@types/node@20.14.9) transitivePeerDependencies: - '@babel/core' - '@preact/preset-vite' - '@sveltejs/vite-plugin-svelte' - coffeescript + - encoding - less - postcss - postcss-load-config + - prettier - pug - sass - stylus @@ -16899,17 +9811,37 @@ snapshots: - supports-color - typescript - vite-plugin-glimmerx + dev: true + + /@storybook/telemetry@8.1.11(prettier@3.3.2): + resolution: {integrity: sha512-Jqvm7HcZismKzPuebhyLECO6KjGiSk4ycbca1WUM/TUvifxCXqgoUPlHHQEEfaRdHS63/MSqtMNjLsQRLC/vNQ==} + dependencies: + '@storybook/client-logger': 8.1.11 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/csf-tools': 8.1.11 + chalk: 4.1.2 + detect-package-manager: 2.0.1 + fetch-retry: 5.0.6 + fs-extra: 11.2.0 + read-pkg-up: 7.0.1 + transitivePeerDependencies: + - encoding + - prettier + - supports-color + dev: true - '@storybook/test@8.2.7(storybook@8.2.7)(vitest@1.6.0)': + /@storybook/test@8.1.11(vitest@1.6.0): + resolution: {integrity: sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ==} dependencies: - '@storybook/csf': 0.1.11 - '@storybook/instrumenter': 8.2.7(storybook@8.2.7) + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 + '@storybook/instrumenter': 8.1.11 + '@storybook/preview-api': 8.1.11 '@testing-library/dom': 10.1.0 '@testing-library/jest-dom': 6.4.5(vitest@1.6.0) '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) '@vitest/expect': 1.6.0 '@vitest/spy': 1.6.0 - storybook: 8.2.7 util: 0.12.5 transitivePeerDependencies: - '@jest/globals' @@ -16917,19 +9849,55 @@ snapshots: - '@types/jest' - jest - vitest + dev: true + + /@storybook/theming@8.1.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Chn/opjO6Rl1isNobutYqAH2PjKNkj09YBw/8noomk6gElSa3JbUTyaG/+JCHA6OG/9kUsqoKDb5cZmAKNq/jA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) + '@storybook/client-logger': 8.1.11 + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true - '@storybook/theming@8.2.7(storybook@8.2.7)': + /@storybook/types@8.1.11: + resolution: {integrity: sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw==} dependencies: - storybook: 8.2.7 + '@storybook/channels': 8.1.11 + '@types/express': 4.17.21 + file-system-cache: 2.3.0 + dev: true - '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.22)': + /@sveltejs/adapter-auto@3.2.2(@sveltejs/kit@2.5.24): + resolution: {integrity: sha512-Mso5xPCA8zgcKrv+QioVlqMZkyUQ5MjDJiEPuG/Z7cV/5tmwV7LmcVWk5tZ+H0NCOV1x12AsoSpt/CwFwuVXMA==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 dependencies: - '@sveltejs/kit': 2.5.22(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) + '@sveltejs/kit': 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) import-meta-resolve: 4.1.0 + dev: true - '@sveltejs/kit@2.5.22(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3)': + /@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3): + resolution: {integrity: sha512-Nr2oxsCsDfEkdS/zzQQQbsPYTbu692Qs3/iE3L7VHzCVjG2+WujF9oMUozWI7GuX98KxYSoPMlAsfmDLSg44hQ==} + engines: {node: '>=18.13'} + hasBin: true + requiresBuild: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@4.5.3) + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@4.5.3) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 @@ -16941,13 +9909,22 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 4.2.15 + svelte: 4.2.18 tiny-glob: 0.2.9 vite: 4.5.3 + dev: true - '@sveltejs/kit@2.5.22(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11)': + /@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2): + resolution: {integrity: sha512-Nr2oxsCsDfEkdS/zzQQQbsPYTbu692Qs3/iE3L7VHzCVjG2+WujF9oMUozWI7GuX98KxYSoPMlAsfmDLSg44hQ==} + engines: {node: '>=18.13'} + hasBin: true + requiresBuild: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11) + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.2) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 @@ -16959,510 +9936,808 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 4.2.15 + svelte: 4.2.18 tiny-glob: 0.2.9 - vite: 5.2.11(@types/node@20.12.8) + vite: 5.3.2(@types/node@20.14.9) + dev: true - '@sveltejs/package@2.3.2(svelte@4.2.15)(typescript@5.4.5)': + /@sveltejs/package@2.3.2(svelte@4.2.18)(typescript@5.5.3): + resolution: {integrity: sha512-6M8/Te7iXRG7SiH92wugqfyoJpuepjn78L433LnXicUeMso9M/N4vdL9DPK3MfTkVVY4klhNRptVqme3p4oZWA==} + engines: {node: ^16.14 || >=18} + hasBin: true + peerDependencies: + svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 dependencies: chokidar: 3.6.0 kleur: 4.1.5 sade: 1.8.1 semver: 7.6.2 - svelte: 4.2.15 - svelte2tsx: 0.7.15(svelte@4.2.15)(typescript@5.4.5) + svelte: 4.2.18 + svelte2tsx: 0.7.13(svelte@4.2.18)(typescript@5.5.3) transitivePeerDependencies: - typescript + dev: true - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3)': + /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3): + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@4.5.3) - debug: 4.3.4 - svelte: 4.2.15 + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@4.5.3) + debug: 4.3.5 + svelte: 4.2.18 vite: 4.5.3 transitivePeerDependencies: - supports-color + dev: true - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11)': + /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2): + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11) - debug: 4.3.4 - svelte: 4.2.15 - vite: 5.2.11(@types/node@20.12.8) + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.2) + debug: 4.3.5 + svelte: 4.2.18 + vite: 5.3.2(@types/node@20.14.9) transitivePeerDependencies: - supports-color + dev: true - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@4.5.3)': + /@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@4.5.3): + resolution: {integrity: sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3) - debug: 4.3.4 + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3) + debug: 4.3.5 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.10 - svelte: 4.2.15 - svelte-hmr: 0.16.0(svelte@4.2.15) + svelte: 4.2.18 + svelte-hmr: 0.16.0(svelte@4.2.18) vite: 4.5.3 vitefu: 0.2.5(vite@4.5.3) transitivePeerDependencies: - supports-color + dev: true - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11)': + /@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.2): + resolution: {integrity: sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) - debug: 4.3.4 + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) + debug: 4.3.5 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.10 - svelte: 4.2.15 - svelte-hmr: 0.16.0(svelte@4.2.15) - vite: 5.2.11(@types/node@20.12.8) - vitefu: 0.2.5(vite@5.2.11) + svelte: 4.2.18 + svelte-hmr: 0.16.0(svelte@4.2.18) + vite: 5.3.2(@types/node@20.14.9) + vitefu: 0.2.5(vite@5.3.2) transitivePeerDependencies: - supports-color + dev: true - '@szmarczak/http-timer@5.0.1': + /@szmarczak/http-timer@5.0.1: + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} dependencies: defer-to-connect: 2.0.1 + dev: true - '@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.4.38)': + /@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.4.39): + resolution: {integrity: sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.38 - postcss-nested: 5.0.6(postcss@8.4.38) + postcss: 8.4.39 + postcss-nested: 5.0.6(postcss@8.4.39) + dev: true - '@testing-library/dom@10.1.0': + /@testing-library/dom@10.1.0: + resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} + engines: {node: '>=18'} dependencies: - '@babel/code-frame': 7.24.2 - '@babel/runtime': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/runtime': 7.24.7 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 + dev: true - '@testing-library/jest-dom@6.4.5(vitest@1.6.0)': + /@testing-library/jest-dom@6.4.5(vitest@1.6.0): + resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true dependencies: '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - vitest: 1.6.0(jsdom@24.0.0) + vitest: 1.6.0(jsdom@24.1.0) + dev: true - '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)': + /@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0): + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' dependencies: '@testing-library/dom': 10.1.0 + dev: true - '@ts-morph/common@0.20.0': + /@ts-morph/common@0.20.0: + resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} dependencies: fast-glob: 3.3.2 minimatch: 7.4.6 mkdirp: 2.1.6 path-browserify: 1.0.1 + dev: true - '@tsconfig/node10@1.0.11': {} + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + dev: true - '@tsconfig/node12@1.0.11': {} + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true - '@tsconfig/node14@1.0.3': {} + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true - '@tsconfig/node16@1.0.4': {} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true - '@types/acorn@4.0.6': + /@types/acorn@4.0.6: + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: '@types/estree': 1.0.5 + dev: false - '@types/aria-query@5.0.4': {} + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true - '@types/babel__core@7.20.5': + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 + '@types/babel__traverse': 7.20.6 + dev: false - '@types/babel__generator@7.6.8': + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: '@babel/types': 7.25.2 + dev: false - '@types/babel__template@7.4.4': + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 + dev: false - '@types/babel__traverse@7.20.5': + /@types/babel__traverse@7.20.6: + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} dependencies: '@babel/types': 7.25.2 + dev: false - '@types/bn.js@5.1.5': + /@types/bn.js@5.1.5: + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 + dev: false - '@types/body-parser@1.19.5': + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.12.8 + '@types/node': 20.14.9 + dev: true - '@types/connect@3.4.38': + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 + dev: true - '@types/cookie@0.6.0': {} + /@types/cookie@0.6.0: + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - '@types/cross-spawn@6.0.6': + /@types/cross-spawn@6.0.6: + resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 + dev: true - '@types/debug@4.1.12': + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: '@types/ms': 0.7.34 - '@types/dns-packet@5.6.5': + /@types/detect-port@1.3.5: + resolution: {integrity: sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==} + dev: true + + /@types/diff@5.2.1: + resolution: {integrity: sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g==} + dev: true + + /@types/dns-packet@5.6.5: + resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 + dev: false + + /@types/doctrine@0.0.3: + resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} + dev: true - '@types/dom-screen-wake-lock@1.0.3': {} + /@types/dom-screen-wake-lock@1.0.3: + resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} + dev: false + + /@types/ejs@3.1.5: + resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==} + dev: true - '@types/emscripten@1.39.13': {} + /@types/emscripten@1.39.13: + resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} + dev: true - '@types/eslint@8.56.10': + /@types/eslint@8.56.10: + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 + dev: true - '@types/estree-jsx@1.0.5': + /@types/estree-jsx@1.0.5: + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} dependencies: '@types/estree': 1.0.5 + dev: false - '@types/estree@1.0.5': {} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/express-serve-static-core@4.19.5': + /@types/express-serve-static-core@4.19.5: + resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 + dev: true - '@types/express@4.17.21': + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.19.5 '@types/qs': 6.9.15 '@types/serve-static': 1.15.7 + dev: true - '@types/find-cache-dir@3.2.1': {} + /@types/find-cache-dir@3.2.1: + resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} + dev: true - '@types/hast@3.0.4': + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: '@types/unist': 3.0.2 - '@types/http-cache-semantics@4.0.4': {} + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: true - '@types/http-errors@2.0.4': {} + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true - '@types/istanbul-lib-coverage@2.0.6': {} + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - '@types/istanbul-lib-report@3.0.3': + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports@3.0.4': + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jest@29.5.12': + /@types/jest@29.5.12: + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 + dev: true - '@types/json-schema@7.0.15': {} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/json5@0.0.29': {} + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true - '@types/lodash@4.17.7': {} + /@types/lodash@4.17.6: + resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==} + dev: true - '@types/mdast@4.0.4': + /@types/mdast@4.0.4: + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} dependencies: '@types/unist': 3.0.2 + dev: false - '@types/mdx@2.0.13': {} + /@types/mdx@2.0.13: + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - '@types/mime@1.3.5': {} + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true - '@types/minimatch@3.0.5': {} + /@types/minimatch@3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: false - '@types/ms@0.7.34': {} + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/nlcst@2.0.3': + /@types/nlcst@2.0.3: + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} dependencies: '@types/unist': 3.0.2 + dev: false - '@types/node-forge@1.3.11': + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 + dev: false - '@types/node@12.20.55': {} + /@types/node@12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: false - '@types/node@17.0.45': {} + /@types/node@17.0.45: + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + dev: false - '@types/node@18.19.31': + /@types/node@18.19.39: + resolution: {integrity: sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==} dependencies: undici-types: 5.26.5 - '@types/node@20.12.8': + /@types/node@20.14.9: + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} dependencies: undici-types: 5.26.5 - '@types/object-hash@3.0.6': {} + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + dev: true + + /@types/object-hash@3.0.6: + resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} + dev: true - '@types/pbkdf2@3.1.2': + /@types/pbkdf2@3.1.2: + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 + dev: false - '@types/prop-types@15.7.12': {} + /@types/pretty-hrtime@1.0.3: + resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} + dev: true + + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + dev: true - '@types/pug@2.0.10': {} + /@types/pug@2.0.10: + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + dev: true - '@types/qs@6.9.15': {} + /@types/qs@6.9.15: + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + dev: true - '@types/range-parser@1.2.7': {} + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true - '@types/react@18.3.3': + /@types/react@18.3.3: + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 + dev: true - '@types/sax@1.2.7': + /@types/sax@1.2.7: + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 + dev: false - '@types/secp256k1@4.0.6': + /@types/secp256k1@4.0.6: + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 + dev: false - '@types/semver@7.5.8': {} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/send@0.17.4': + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.12.8 + '@types/node': 20.14.9 + dev: true - '@types/serve-static@1.15.7': + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.12.8 + '@types/node': 20.14.9 '@types/send': 0.17.4 + dev: true - '@types/stack-utils@2.0.3': {} + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/trusted-types@2.0.7': {} + /@types/trusted-types@2.0.7: + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + dev: false - '@types/unist@2.0.10': {} + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + dev: false - '@types/unist@3.0.2': {} + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - '@types/uuid@9.0.8': {} + /@types/uuid@9.0.8: + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + dev: true - '@types/yargs-parser@21.0.3': {} + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@15.0.19': + /@types/yargs@15.0.19: + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} dependencies: '@types/yargs-parser': 21.0.3 + dev: false - '@types/yargs@17.0.32': + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5)': + /@typescript-eslint/eslint-plugin@7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.8.0 - debug: 4.3.4 + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 7.15.0 + '@typescript-eslint/type-utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 7.15.0 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5)': + /@typescript-eslint/parser@7.15.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.8.0 - debug: 4.3.4 + '@typescript-eslint/scope-manager': 7.15.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 7.15.0 + debug: 4.3.5 eslint: 8.57.0 - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/scope-manager@5.62.0': + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 + dev: true - '@typescript-eslint/scope-manager@7.8.0': + /@typescript-eslint/scope-manager@7.15.0: + resolution: {integrity: sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/visitor-keys': 7.8.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/visitor-keys': 7.15.0 + dev: true - '@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)': + /@typescript-eslint/type-utils@7.15.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) + '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) + debug: 4.3.5 eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/types@5.62.0': {} + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - '@typescript-eslint/types@7.8.0': {} + /@typescript-eslint/types@7.15.0: + resolution: {integrity: sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5)': + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.3): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.2 - tsutils: 3.21.0(typescript@5.4.5) - typescript: 5.4.5 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5)': + /@typescript-eslint/typescript-estree@7.15.0(typescript@5.5.3): + resolution: {integrity: sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/visitor-keys': 7.8.0 - debug: 4.3.4 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/visitor-keys': 7.15.0 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 + minimatch: 9.0.5 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5)': + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3) eslint: 8.57.0 eslint-scope: 5.1.1 semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript + dev: true - '@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)': + /@typescript-eslint/utils@7.15.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.15.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) eslint: 8.57.0 - semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript + dev: true - '@typescript-eslint/visitor-keys@5.62.0': + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 + dev: true - '@typescript-eslint/visitor-keys@7.8.0': + /@typescript-eslint/visitor-keys@7.15.0: + resolution: {integrity: sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/types': 7.15.0 eslint-visitor-keys: 3.4.3 + dev: true - '@ungap/structured-clone@1.2.0': {} + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vitest/coverage-v8@1.6.0(vitest@1.6.0)': + /@vitest/coverage-v8@1.6.0(vitest@1.6.0): + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + peerDependencies: + vitest: 1.6.0 dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.4 + debug: 4.3.5 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.4 + istanbul-lib-source-maps: 5.0.5 istanbul-reports: 3.1.7 magic-string: 0.30.10 magicast: 0.3.4 - picocolors: 1.0.0 + picocolors: 1.0.1 std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 - vitest: 1.6.0(jsdom@24.0.0) + vitest: 1.6.0(jsdom@24.1.0) transitivePeerDependencies: - supports-color + dev: true - '@vitest/expect@1.6.0': + /@vitest/expect@1.6.0: + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} dependencies: '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 chai: 4.4.1 + dev: true - '@vitest/runner@1.6.0': + /@vitest/runner@1.6.0: + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} dependencies: '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 + dev: true - '@vitest/snapshot@1.6.0': + /@vitest/snapshot@1.6.0: + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} dependencies: magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 + dev: true - '@vitest/spy@1.6.0': + /@vitest/spy@1.6.0: + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} dependencies: tinyspy: 2.2.1 + dev: true - '@vitest/utils@1.6.0': + /@vitest/utils@1.6.0: + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 loupe: 2.3.7 pretty-format: 29.7.0 + dev: true - '@volar/kit@2.4.0-alpha.18(typescript@5.4.5)': + /@volar/kit@2.4.0-alpha.18(typescript@5.5.3): + resolution: {integrity: sha512-dZMSNhesh23lhd61ax2l04IgIcYofAjm8M+5BKAmX47ROweyc8RrrslszCFUJynlmXx6JS1PoHqvo8+E0aAYQQ==} + peerDependencies: + typescript: '*' dependencies: '@volar/language-service': 2.4.0-alpha.18 '@volar/typescript': 2.4.0-alpha.18 typesafe-path: 0.2.2 - typescript: 5.4.5 + typescript: 5.5.3 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 + dev: false - '@volar/language-core@2.4.0-alpha.18': + /@volar/language-core@2.4.0-alpha.18: + resolution: {integrity: sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==} dependencies: '@volar/source-map': 2.4.0-alpha.18 + dev: false - '@volar/language-server@2.4.0-alpha.18': + /@volar/language-server@2.4.0-alpha.18: + resolution: {integrity: sha512-dciHEE/R5kzI0bY71QfkoCVQ3cQI6g9MHfA4oIP6UhnJy0CdleUalWSygOXoD3Nq7Yk6wn2BRrb1PP5MsadY/Q==} dependencies: '@volar/language-core': 2.4.0-alpha.18 '@volar/language-service': 2.4.0-alpha.18 @@ -17474,265 +10749,103 @@ snapshots: vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 + dev: false - '@volar/language-service@2.4.0-alpha.18': + /@volar/language-service@2.4.0-alpha.18: + resolution: {integrity: sha512-EuetrtbEtudi9buinWAG5U3Jam5dY27zXd/7GYnx542kBwanWOBM8i4DAQd0z7M11fOxXgybxPA933uaSyaOog==} dependencies: '@volar/language-core': 2.4.0-alpha.18 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 + dev: false - '@volar/snapshot-document@2.4.0-alpha.18': + /@volar/snapshot-document@2.4.0-alpha.18: + resolution: {integrity: sha512-JAeclEly/wnILhR4Pu9MpgBLInZJH49O1zoy8fU+pk5I+zpv7JIEby5z2UFAS60+sIDnxBdAGd7rZ5VibE70vg==} dependencies: vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 + dev: false - '@volar/source-map@2.4.0-alpha.18': {} + /@volar/source-map@2.4.0-alpha.18: + resolution: {integrity: sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==} + dev: false - '@volar/typescript@2.4.0-alpha.18': + /@volar/typescript@2.4.0-alpha.18: + resolution: {integrity: sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==} dependencies: '@volar/language-core': 2.4.0-alpha.18 path-browserify: 1.0.1 vscode-uri: 3.0.8 + dev: false - '@vscode/emmet-helper@2.9.3': + /@vscode/emmet-helper@2.9.3: + resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==} dependencies: emmet: 2.4.7 jsonc-parser: 2.3.1 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 2.1.2 + dev: false - '@vscode/l10n@0.0.18': {} - - '@wagmi/cli@2.1.15(typescript@5.4.5)': - dependencies: - abitype: 1.0.5(typescript@5.4.5)(zod@3.23.8) - bundle-require: 4.1.0(esbuild@0.19.12) - cac: 6.7.14 - change-case: 5.4.4 - chokidar: 3.6.0 - dedent: 0.7.0 - dotenv: 16.4.5 - dotenv-expand: 10.0.0 - esbuild: 0.19.12 - execa: 8.0.1 - fdir: 6.2.0(picomatch@3.0.1) - find-up: 6.3.0 - fs-extra: 11.2.0 - ora: 6.3.1 - pathe: 1.1.2 - picocolors: 1.0.0 - picomatch: 3.0.1 - prettier: 3.2.5 - typescript: 5.4.5 - viem: 2.18.8(typescript@5.4.5)(zod@3.23.8) - zod: 3.23.8 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@wagmi/cli@2.1.4(typescript@5.4.5)': - dependencies: - abitype: 0.9.10(typescript@5.4.5)(zod@3.23.6) - bundle-require: 4.1.0(esbuild@0.19.12) - cac: 6.7.14 - change-case: 4.1.2 - chokidar: 3.6.0 - dedent: 0.7.0 - dotenv: 16.4.5 - dotenv-expand: 10.0.0 - esbuild: 0.19.12 - execa: 8.0.1 - find-up: 6.3.0 - fs-extra: 11.2.0 - globby: 13.2.2 - ora: 6.3.1 - pathe: 1.1.2 - picocolors: 1.0.0 - prettier: 3.2.5 - typescript: 5.4.5 - viem: 2.18.8(typescript@5.4.5)(zod@3.23.6) - zod: 3.23.6 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@wagmi/connectors@4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.18.8)': - dependencies: - '@coinbase/wallet-sdk': 3.9.1 - '@metamask/sdk': 0.18.6(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1) - '@safe-global/safe-apps-provider': 0.18.1(typescript@5.4.5) - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.5) - '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.18.8) - '@walletconnect/ethereum-provider': 2.11.2(react@18.3.1) - '@walletconnect/modal': 2.6.2(react@18.3.1) - typescript: 5.4.5 - viem: 2.18.8(typescript@5.4.5)(zod@3.23.6) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - react - - react-dom - - react-i18next - - react-native - - rollup - - supports-color - - uWebSockets.js - - utf-8-validate - - zod - - '@wagmi/connectors@4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31)': - dependencies: - '@coinbase/wallet-sdk': 3.9.1 - '@metamask/sdk': 0.18.6(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1) - '@safe-global/safe-apps-provider': 0.18.1(typescript@5.4.5) - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.5) - '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) - '@walletconnect/ethereum-provider': 2.11.2(react@18.3.1) - '@walletconnect/modal': 2.6.2(react@18.3.1) - typescript: 5.4.5 - viem: 2.9.31(typescript@5.4.5) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - react - - react-dom - - react-i18next - - react-native - - rollup - - supports-color - - uWebSockets.js - - utf-8-validate - - zod - - '@wagmi/connectors@5.1.2(@wagmi/core@2.13.1)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.18.8)': - dependencies: - '@coinbase/wallet-sdk': 4.0.4 - '@metamask/sdk': 0.27.0(react-native@0.74.1)(react@18.3.1) - '@safe-global/safe-apps-provider': 0.18.3(typescript@5.4.5) - '@safe-global/safe-apps-sdk': 9.1.0(typescript@5.4.5) - '@wagmi/core': 2.13.1(react@18.3.1)(typescript@5.4.5)(viem@2.18.8) - '@walletconnect/ethereum-provider': 2.14.0(react@18.3.1) - '@walletconnect/modal': 2.6.2(react@18.3.1) - cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - typescript: 5.4.5 - viem: 2.18.8(typescript@5.4.5)(zod@3.23.6) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - react - - react-dom - - react-native - - rollup - - supports-color - - uWebSockets.js - - utf-8-validate - - zod - - '@wagmi/core@2.13.1(react@18.3.1)(typescript@5.4.5)(viem@2.18.8)': - dependencies: - eventemitter3: 5.0.1 - mipd: 0.0.7(typescript@5.4.5) - typescript: 5.4.5 - viem: 2.18.8(typescript@5.4.5)(zod@3.23.6) - zustand: 4.4.1(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - immer - - react - - '@wagmi/core@2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.18.8)': - dependencies: - eventemitter3: 5.0.1 - mipd: 0.0.5(typescript@5.4.5) - typescript: 5.4.5 - viem: 2.18.8(typescript@5.4.5)(zod@3.23.6) - zustand: 4.4.1(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - bufferutil - - immer - - react - - utf-8-validate - - zod + /@vscode/l10n@0.0.18: + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + dev: false - '@wagmi/core@2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31)': + /@wagmi/cli@2.1.13(typescript@5.5.3): + resolution: {integrity: sha512-0lQILHXj7IZfivMa5yEN1OWu5dF17iCgIHOKaPNMMcB9uem+2oEumJEaj0EezZZXLZLNN/lbI7A4TCXNYuoEDg==} + hasBin: true + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true dependencies: - eventemitter3: 5.0.1 - mipd: 0.0.5(typescript@5.4.5) - typescript: 5.4.5 - viem: 2.9.31(typescript@5.4.5) - zustand: 4.4.1(react@18.3.1) + abitype: 1.0.5(typescript@5.5.3)(zod@3.23.8) + bundle-require: 4.2.1(esbuild@0.19.12) + cac: 6.7.14 + change-case: 5.4.4 + chokidar: 3.6.0 + dedent: 0.7.0 + dotenv: 16.4.5 + dotenv-expand: 10.0.0 + esbuild: 0.19.12 + execa: 8.0.1 + fdir: 6.1.1(picomatch@3.0.1) + find-up: 6.3.0 + fs-extra: 11.2.0 + ora: 6.3.1 + pathe: 1.1.2 + picocolors: 1.0.1 + picomatch: 3.0.1 + prettier: 3.3.2 + typescript: 5.5.3 + viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) + zod: 3.23.8 transitivePeerDependencies: - - '@types/react' - bufferutil - - immer - - react - utf-8-validate - - zod - '@walletconnect/core@2.11.2': + /@wagmi/connectors@4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5): + resolution: {integrity: sha512-IZcsocBfDq6pe8sxkDgP2k9YNqv8udl2eSr2hx2JCESA44ixx5zRjoGNMAkKxlzM6uXjXLJKp/g1KYlpmoHkDg==} + peerDependencies: + '@wagmi/core': 2.9.8 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14 - '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.10 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.2 - '@walletconnect/utils': 2.11.2 - events: 3.3.0 - isomorphic-unfetch: 3.1.0 - lodash.isequal: 4.5.0 - uint8arrays: 3.1.1 + '@coinbase/wallet-sdk': 3.9.1 + '@metamask/sdk': 0.20.3(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1) + '@safe-global/safe-apps-provider': 0.18.1(typescript@5.5.3) + '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.5.3) + '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + '@walletconnect/ethereum-provider': 2.13.0(react@18.3.1) + '@walletconnect/modal': 2.6.2(react@18.3.1) + typescript: 5.5.3 + viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -17744,33 +10857,43 @@ snapshots: - '@netlify/blobs' - '@planetscale/database' - '@react-native-async-storage/async-storage' + - '@types/react' - '@upstash/redis' - '@vercel/kv' - bufferutil - encoding - ioredis + - react + - react-dom + - react-i18next + - react-native + - rollup + - supports-color - uWebSockets.js - utf-8-validate + - zod + dev: false - '@walletconnect/core@2.12.2': + /@wagmi/connectors@5.0.21(@wagmi/core@2.11.6)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5): + resolution: {integrity: sha512-lbjXEv6HhOa9nXZ5r6NGFJdaadCt2Yj9hSWHjKuiTobrE6dEGQqG16mCQS17yXcvXpI62Q/sW6SL347JrBju/Q==} + peerDependencies: + '@wagmi/core': 2.11.6 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14 - '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.10 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.12.2 - '@walletconnect/utils': 2.12.2 - events: 3.3.0 - isomorphic-unfetch: 3.1.0 - lodash.isequal: 4.5.0 - uint8arrays: 3.1.1 + '@coinbase/wallet-sdk': 4.0.4 + '@metamask/sdk': 0.26.4(react-native@0.74.3)(react@18.3.1) + '@safe-global/safe-apps-provider': 0.18.1(typescript@5.5.3) + '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.5.3) + '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + '@walletconnect/ethereum-provider': 2.13.0(react@18.3.1) + '@walletconnect/modal': 2.6.2(react@18.3.1) + cbw-sdk: /@coinbase/wallet-sdk@3.9.3 + typescript: 5.5.3 + viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -17782,15 +10905,50 @@ snapshots: - '@netlify/blobs' - '@planetscale/database' - '@react-native-async-storage/async-storage' + - '@types/react' - '@upstash/redis' - '@vercel/kv' - bufferutil - encoding - ioredis + - react + - react-dom + - react-native + - rollup + - supports-color - uWebSockets.js - utf-8-validate + - zod + dev: false + + /@wagmi/core@2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5): + resolution: {integrity: sha512-Ohk7Bh+Q8kjzxEHImIq98CnPduz8n1a5bdwJi6F7zU3h62crhlVq7fZBYoBhoDgmX0ROVOMr8WW3XU3XhRwUOw==} + peerDependencies: + '@tanstack/query-core': '>=5.0.0' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + '@tanstack/query-core': + optional: true + typescript: + optional: true + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.5(typescript@5.5.3) + typescript: 5.5.3 + viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) + zustand: 4.4.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - react + - utf-8-validate + - zod + dev: false - '@walletconnect/core@2.13.0': + /@walletconnect/core@2.13.0: + resolution: {integrity: sha512-blDuZxQenjeXcVJvHxPznTNl6c/2DO4VNrFnus+qHmO6OtT5lZRowdMtlCaCNb1q0OxzgrmBDcTOCbFcCpio/g==} dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -17827,8 +10985,10 @@ snapshots: - ioredis - uWebSockets.js - utf-8-validate + dev: false - '@walletconnect/core@2.14.0': + /@walletconnect/core@2.13.3: + resolution: {integrity: sha512-TdF+rC6rONJGyOUtt/nLkbyQWjnkwbD3kXq3ZA0Q7+tYtmSjTDE4wbArlLbHIbtf69g+9/DpEVEQimWWcEOn2g==} dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -17841,8 +11001,8 @@ snapshots: '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.14.0 - '@walletconnect/utils': 2.14.0 + '@walletconnect/types': 2.13.3 + '@walletconnect/utils': 2.13.3 events: 3.3.0 isomorphic-unfetch: 3.1.0 lodash.isequal: 4.5.0 @@ -17865,78 +11025,16 @@ snapshots: - ioredis - uWebSockets.js - utf-8-validate + dev: false - '@walletconnect/environment@1.0.1': + /@walletconnect/environment@1.0.1: + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} dependencies: tslib: 1.14.1 + dev: false - '@walletconnect/ethereum-provider@2.11.2(react@18.3.1)': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.6.2(react@18.3.1) - '@walletconnect/sign-client': 2.11.2 - '@walletconnect/types': 2.11.2 - '@walletconnect/universal-provider': 2.11.2 - '@walletconnect/utils': 2.11.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - react - - uWebSockets.js - - utf-8-validate - - '@walletconnect/ethereum-provider@2.12.2(react@18.3.1)': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.6.2(react@18.3.1) - '@walletconnect/sign-client': 2.12.2 - '@walletconnect/types': 2.12.2 - '@walletconnect/universal-provider': 2.12.2 - '@walletconnect/utils': 2.12.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - react - - uWebSockets.js - - utf-8-validate - - '@walletconnect/ethereum-provider@2.13.0(react@18.3.1)': + /@walletconnect/ethereum-provider@2.13.0(react@18.3.1): + resolution: {integrity: sha512-dnpW8mmLpWl1AZUYGYZpaAfGw1HFkL0WSlhk5xekx3IJJKn4pLacX2QeIOo0iNkzNQxZfux1AK4Grl1DvtzZEA==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -17968,18 +11066,20 @@ snapshots: - react - uWebSockets.js - utf-8-validate + dev: false - '@walletconnect/ethereum-provider@2.14.0(react@18.3.1)': + /@walletconnect/ethereum-provider@2.13.3(react@18.3.1): + resolution: {integrity: sha512-gThsYguFJ7XZp18GP23W6TooQaS6XlF4faFDXPCQVqlWjzEatkkQ2R6Hhv4a4qk4D21qNXirCFnI59Xhbj0KJQ==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/modal': 2.6.2(react@18.3.1) - '@walletconnect/sign-client': 2.14.0 - '@walletconnect/types': 2.14.0 - '@walletconnect/universal-provider': 2.14.0 - '@walletconnect/utils': 2.14.0 + '@walletconnect/sign-client': 2.13.3 + '@walletconnect/types': 2.13.3 + '@walletconnect/universal-provider': 2.13.3 + '@walletconnect/utils': 2.13.3 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18001,34 +11101,33 @@ snapshots: - react - uWebSockets.js - utf-8-validate + dev: false - '@walletconnect/events@1.0.1': + /@walletconnect/events@1.0.1: + resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 + dev: false - '@walletconnect/heartbeat@1.2.1': + /@walletconnect/heartbeat@1.2.1: + resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/time': 1.0.2 tslib: 1.14.1 + dev: false - '@walletconnect/heartbeat@1.2.2': + /@walletconnect/heartbeat@1.2.2: + resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/time': 1.0.2 events: 3.3.0 + dev: false - '@walletconnect/jsonrpc-http-connection@1.0.7': - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - cross-fetch: 3.1.8 - tslib: 1.14.1 - transitivePeerDependencies: - - encoding - - '@walletconnect/jsonrpc-http-connection@1.0.8': + /@walletconnect/jsonrpc-http-connection@1.0.8: + resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 @@ -18036,46 +11135,57 @@ snapshots: events: 3.3.0 transitivePeerDependencies: - encoding + dev: false - '@walletconnect/jsonrpc-provider@1.0.13': - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - tslib: 1.14.1 - - '@walletconnect/jsonrpc-provider@1.0.14': + /@walletconnect/jsonrpc-provider@1.0.14: + resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 + dev: false - '@walletconnect/jsonrpc-types@1.0.3': + /@walletconnect/jsonrpc-types@1.0.3: + resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 + dev: false - '@walletconnect/jsonrpc-types@1.0.4': + /@walletconnect/jsonrpc-types@1.0.4: + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} dependencies: events: 3.3.0 keyvaluestorage-interface: 1.0.0 + dev: false - '@walletconnect/jsonrpc-utils@1.0.8': + /@walletconnect/jsonrpc-utils@1.0.8: + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} dependencies: '@walletconnect/environment': 1.0.1 - '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-types': 1.0.4 tslib: 1.14.1 + dev: false - '@walletconnect/jsonrpc-ws-connection@1.0.14': + /@walletconnect/jsonrpc-ws-connection@1.0.14: + resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - ws: 7.5.9 + ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false - '@walletconnect/keyvaluestorage@1.1.1': + /@walletconnect/keyvaluestorage@1.1.1: + resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true dependencies: '@walletconnect/safe-json': 1.0.2 idb-keyval: 6.2.1 @@ -18094,20 +11204,26 @@ snapshots: - '@vercel/kv' - ioredis - uWebSockets.js + dev: false - '@walletconnect/logger@2.1.2': + /@walletconnect/logger@2.1.2: + resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} dependencies: '@walletconnect/safe-json': 1.0.2 pino: 7.11.0 + dev: false - '@walletconnect/modal-core@2.6.2(react@18.3.1)': + /@walletconnect/modal-core@2.6.2(react@18.3.1): + resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} dependencies: valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react + dev: false - '@walletconnect/modal-ui@2.6.2(react@18.3.1)': + /@walletconnect/modal-ui@2.6.2(react@18.3.1): + resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} dependencies: '@walletconnect/modal-core': 2.6.2(react@18.3.1) lit: 2.8.0 @@ -18116,93 +11232,43 @@ snapshots: transitivePeerDependencies: - '@types/react' - react + dev: false - '@walletconnect/modal@2.6.2(react@18.3.1)': + /@walletconnect/modal@2.6.2(react@18.3.1): + resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} dependencies: '@walletconnect/modal-core': 2.6.2(react@18.3.1) '@walletconnect/modal-ui': 2.6.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react + dev: false - '@walletconnect/relay-api@1.0.10': - dependencies: - '@walletconnect/jsonrpc-types': 1.0.3 - - '@walletconnect/relay-auth@1.0.4': - dependencies: - '@stablelib/ed25519': 1.0.3 - '@stablelib/random': 1.0.2 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - tslib: 1.14.1 - uint8arrays: 3.1.1 - - '@walletconnect/safe-json@1.0.2': - dependencies: - tslib: 1.14.1 - - '@walletconnect/sign-client@2.11.2': + /@walletconnect/relay-api@1.0.10: + resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} dependencies: - '@walletconnect/core': 2.11.2 - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.2 - '@walletconnect/utils': 2.11.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - uWebSockets.js - - utf-8-validate + '@walletconnect/jsonrpc-types': 1.0.4 + dev: false - '@walletconnect/sign-client@2.12.2': + /@walletconnect/relay-auth@1.0.4: + resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} dependencies: - '@walletconnect/core': 2.12.2 - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.12.2 - '@walletconnect/utils': 2.12.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - uWebSockets.js - - utf-8-validate + '@stablelib/ed25519': 1.0.3 + '@stablelib/random': 1.0.2 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + uint8arrays: 3.1.0 + dev: false + + /@walletconnect/safe-json@1.0.2: + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + dependencies: + tslib: 1.14.1 + dev: false - '@walletconnect/sign-client@2.13.0': + /@walletconnect/sign-client@2.13.0: + resolution: {integrity: sha512-En7KSvNUlQFx20IsYGsFgkNJ2lpvDvRsSFOT5PTdGskwCkUfOpB33SQJ6nCrN19gyoKPNvWg80Cy6MJI0TjNYA==} dependencies: '@walletconnect/core': 2.13.0 '@walletconnect/events': 1.0.1 @@ -18231,17 +11297,19 @@ snapshots: - ioredis - uWebSockets.js - utf-8-validate + dev: false - '@walletconnect/sign-client@2.14.0': + /@walletconnect/sign-client@2.13.3: + resolution: {integrity: sha512-3Pcq6trHWdBZn5X0VUFQ3zJaaqyEbMW9WNVKcZ2SakIpQAwySd08Mztvq48G98jfucdgP3tjGPbBvzHX9vJX7w==} dependencies: - '@walletconnect/core': 2.14.0 + '@walletconnect/core': 2.13.3 '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.14.0 - '@walletconnect/utils': 2.14.0 + '@walletconnect/types': 2.13.3 + '@walletconnect/utils': 2.13.3 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18261,60 +11329,16 @@ snapshots: - ioredis - uWebSockets.js - utf-8-validate + dev: false - '@walletconnect/time@1.0.2': + /@walletconnect/time@1.0.2: + resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} dependencies: tslib: 1.14.1 + dev: false - '@walletconnect/types@2.11.2': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - ioredis - - uWebSockets.js - - '@walletconnect/types@2.12.0': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - ioredis - - uWebSockets.js - - '@walletconnect/types@2.12.2': + /@walletconnect/types@2.12.0: + resolution: {integrity: sha512-uhB3waGmujQVJcPgJvGOpB8RalgYSBT+HpmVbfl4Qe0xJyqpRUo4bPjQa0UYkrHaW20xIw94OuP4+FMLYdeemg==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -18337,8 +11361,10 @@ snapshots: - '@vercel/kv' - ioredis - uWebSockets.js + dev: false - '@walletconnect/types@2.13.0': + /@walletconnect/types@2.13.0: + resolution: {integrity: sha512-MWaVT0FkZwzYbD3tvk8F+2qpPlz1LUSWHuqbINUtMXnSzJtXN49Y99fR7FuBhNFtDalfuWsEK17GrNA+KnAsPQ==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 @@ -18361,8 +11387,10 @@ snapshots: - '@vercel/kv' - ioredis - uWebSockets.js + dev: false - '@walletconnect/types@2.14.0': + /@walletconnect/types@2.13.3: + resolution: {integrity: sha512-9UdtLoQqwGFfepCPprUAXeUbKg9zyDarPRmEJVco51OWXHCOpvRgroWk54fQHDhCUIfDELjObY6XNAzNrmNYUA==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 @@ -18385,68 +11413,10 @@ snapshots: - '@vercel/kv' - ioredis - uWebSockets.js + dev: false - '@walletconnect/universal-provider@2.11.2': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.11.2 - '@walletconnect/types': 2.11.2 - '@walletconnect/utils': 2.11.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - uWebSockets.js - - utf-8-validate - - '@walletconnect/universal-provider@2.12.2': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.12.2 - '@walletconnect/types': 2.12.2 - '@walletconnect/utils': 2.12.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - uWebSockets.js - - utf-8-validate - - '@walletconnect/universal-provider@2.13.0': + /@walletconnect/universal-provider@2.13.0: + resolution: {integrity: sha512-B5QvO8pnk5Bqn4aIt0OukGEQn2Auk9VbHfhQb9cGwgmSCd1GlprX/Qblu4gyT5+TjHMb1Gz5UssUaZWTWbDhBg==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -18475,17 +11445,19 @@ snapshots: - ioredis - uWebSockets.js - utf-8-validate + dev: false - '@walletconnect/universal-provider@2.14.0': + /@walletconnect/universal-provider@2.13.3: + resolution: {integrity: sha512-2tuV2d8AdB4Fg/uMs8IdNHrjYy1Tz1uT5kzaT8X1/wx5DHHa/oaheoY5kDZHI0L1oNIg/OlM0/ovonGIcI5ddw==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.14.0 - '@walletconnect/types': 2.14.0 - '@walletconnect/utils': 2.14.0 + '@walletconnect/sign-client': 2.13.3 + '@walletconnect/types': 2.13.3 + '@walletconnect/utils': 2.13.3 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18505,40 +11477,10 @@ snapshots: - ioredis - uWebSockets.js - utf-8-validate + dev: false - '@walletconnect/utils@2.11.2': - dependencies: - '@stablelib/chacha20poly1305': 1.0.1 - '@stablelib/hkdf': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/sha256': 1.0.1 - '@stablelib/x25519': 1.0.3 - '@walletconnect/relay-api': 1.0.10 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.2 - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - detect-browser: 5.3.0 - query-string: 7.1.3 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - ioredis - - uWebSockets.js - - '@walletconnect/utils@2.12.0': + /@walletconnect/utils@2.12.0: + resolution: {integrity: sha512-GIpfHUe1Bjp1Tjda0SkJEizKOT2biuv7VPFnKsOLT1T+8QxEP9NruC+K2UUEvijS1Qr/LKH9P5004RYNgrch+w==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -18569,40 +11511,10 @@ snapshots: - '@vercel/kv' - ioredis - uWebSockets.js + dev: false - '@walletconnect/utils@2.12.2': - dependencies: - '@stablelib/chacha20poly1305': 1.0.1 - '@stablelib/hkdf': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/sha256': 1.0.1 - '@stablelib/x25519': 1.0.3 - '@walletconnect/relay-api': 1.0.10 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.12.2 - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - detect-browser: 5.3.0 - query-string: 7.1.3 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - ioredis - - uWebSockets.js - - '@walletconnect/utils@2.13.0': + /@walletconnect/utils@2.13.0: + resolution: {integrity: sha512-q1eDCsRHj5iLe7fF8RroGoPZpdo2CYMZzQSrw1iqL+2+GOeqapxxuJ1vaJkmDUkwgklfB22ufqG6KQnz78sD4w==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -18633,8 +11545,10 @@ snapshots: - '@vercel/kv' - ioredis - uWebSockets.js + dev: false - '@walletconnect/utils@2.14.0': + /@walletconnect/utils@2.13.3: + resolution: {integrity: sha512-hjyyNhnhTCezGNr6OCfKRzqRsiak+p+YP57iRo1Tsf222fsj/9JD++MP97YiDwc4e4xXaZp/boiLB+8hJHsCog==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -18644,7 +11558,7 @@ snapshots: '@walletconnect/relay-api': 1.0.10 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.14.0 + '@walletconnect/types': 2.13.3 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -18665,41 +11579,37 @@ snapshots: - '@vercel/kv' - ioredis - uWebSockets.js + dev: false - '@walletconnect/window-getters@1.0.1': + /@walletconnect/window-getters@1.0.1: + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} dependencies: tslib: 1.14.1 + dev: false - '@walletconnect/window-metadata@1.0.1': + /@walletconnect/window-metadata@1.0.1: + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} dependencies: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 + dev: false - '@web3modal/common@4.1.11': - dependencies: - bignumber.js: 9.1.2 - dayjs: 1.11.10 - - '@web3modal/common@4.2.3': + /@web3modal/common@4.2.3: + resolution: {integrity: sha512-n0lvhoRjViqxmkgpy+iEM6E3HBylUgdxUDJU4hUxGmmrbGZGEP7USBRnQOEgXLqLCtWvxKjUAO33JBV/De+Osw==} dependencies: bignumber.js: 9.1.2 dayjs: 1.11.10 + dev: false - '@web3modal/common@5.0.11': + /@web3modal/common@5.1.0: + resolution: {integrity: sha512-TIYncrKDnFKE+q0mudzVCvGOZdNWa0kzkp+iL0zpbHm9sL+ceV4eOCip09Xcvrb5HeaBv1ROgAMPGLmpVCO3AA==} dependencies: bignumber.js: 9.1.2 dayjs: 1.11.10 + dev: false - '@web3modal/core@4.1.11(react@18.3.1)': - dependencies: - '@web3modal/common': 4.1.11 - '@web3modal/wallet': 4.1.11 - valtio: 1.11.2(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - react - - '@web3modal/core@4.2.3(react@18.3.1)': + /@web3modal/core@4.2.3(react@18.3.1): + resolution: {integrity: sha512-UykKZTELBpb6ey+IV6fkHWsLkjrIdILmRYzhlznyTPbm9qX5pOR9tH0Z3QGUo7YPFmUqMRH1tC9Irsr3SgIbbw==} dependencies: '@web3modal/common': 4.2.3 '@web3modal/wallet': 4.2.3 @@ -18707,23 +11617,24 @@ snapshots: transitivePeerDependencies: - '@types/react' - react + dev: false - '@web3modal/polyfills@4.1.11': - dependencies: - buffer: 6.0.3 - - '@web3modal/polyfills@4.2.3': + /@web3modal/polyfills@4.2.3: + resolution: {integrity: sha512-RiGxh2hMLSD1s2aTjoejNK/UL377CJhGf5tzmdF1m5xsYHpil+Dnulpio8Yojnm27cOqQD+QiaYUKnHOxErLjQ==} dependencies: buffer: 6.0.3 + dev: false - '@web3modal/scaffold-react@4.1.11(react@18.3.1)': - dependencies: - '@web3modal/scaffold': 4.1.11(react@18.3.1) - react: 18.3.1 - transitivePeerDependencies: - - '@types/react' - - '@web3modal/scaffold-react@4.2.3(react@18.3.1)': + /@web3modal/scaffold-react@4.2.3(react@18.3.1): + resolution: {integrity: sha512-WRA244mO3qa9wnJtRa+mfXHkfW92VEkEt+HagLQuUcSRTQJH0Q95UF+EXZZ/r1mKbqdqIbpguewuF0dRtL/YrQ==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true dependencies: '@web3modal/scaffold': 4.2.3(react@18.3.1) react: 18.3.1 @@ -18743,17 +11654,10 @@ snapshots: - '@vercel/kv' - ioredis - uWebSockets.js + dev: false - '@web3modal/scaffold-utils@4.1.11(react@18.3.1)': - dependencies: - '@web3modal/core': 4.1.11(react@18.3.1) - '@web3modal/polyfills': 4.1.11 - valtio: 1.11.2(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - react - - '@web3modal/scaffold-utils@4.2.3(react@18.3.1)': + /@web3modal/scaffold-utils@4.2.3(react@18.3.1): + resolution: {integrity: sha512-z6t0ggYg1/8hpaKHUm77z2VyacjIZEZTI8IHSQYmHuRFGu5oDPJeAr1thr475JXdoGLYr08hwquZyed/ZINAvw==} dependencies: '@web3modal/core': 4.2.3(react@18.3.1) '@web3modal/polyfills': 4.2.3 @@ -18761,15 +11665,15 @@ snapshots: transitivePeerDependencies: - '@types/react' - react + dev: false - '@web3modal/scaffold-vue@4.1.11(react@18.3.1)': - dependencies: - '@web3modal/scaffold': 4.1.11(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - react - - '@web3modal/scaffold-vue@4.2.3(react@18.3.1)': + /@web3modal/scaffold-vue@4.2.3(react@18.3.1): + resolution: {integrity: sha512-0mlx/t0A7srcuFcxP3xuUt2ACFUUcAhyRIsNImtQHPq7QHx7i5zvabQ38iplDsWS0TA7j83hW5gxHycppa5PXg==} + peerDependencies: + vue: '>=3' + peerDependenciesMeta: + vue: + optional: true dependencies: '@web3modal/scaffold': 4.2.3(react@18.3.1) transitivePeerDependencies: @@ -18789,20 +11693,10 @@ snapshots: - ioredis - react - uWebSockets.js + dev: false - '@web3modal/scaffold@4.1.11(react@18.3.1)': - dependencies: - '@web3modal/common': 4.1.11 - '@web3modal/core': 4.1.11(react@18.3.1) - '@web3modal/siwe': 4.1.11(react@18.3.1) - '@web3modal/ui': 4.1.11 - '@web3modal/wallet': 4.1.11 - lit: 3.1.0 - transitivePeerDependencies: - - '@types/react' - - react - - '@web3modal/scaffold@4.2.3(react@18.3.1)': + /@web3modal/scaffold@4.2.3(react@18.3.1): + resolution: {integrity: sha512-8K+IV+luDUvppKgmlgdA+RbQGT2STdRrgHVHFRsAqsORFoLiIYvlrpQlxvV7J5Xc1bgKEn3KvEXC+BH2NMqF4w==} dependencies: '@web3modal/common': 4.2.3 '@web3modal/core': 4.2.3(react@18.3.1) @@ -18827,24 +11721,70 @@ snapshots: - ioredis - react - uWebSockets.js + dev: false - '@web3modal/siwe@4.1.11(react@18.3.1)': + /@web3modal/siwe@4.2.3(react@18.3.1): + resolution: {integrity: sha512-uPma0U/OxAy3LwnF7pCYYX8tn+ONBYNcssuVZxEGsusJD1kF4ueS8lK7eyQogyK5nXqOGdNESOjY1NImNNjMVw==} dependencies: - '@web3modal/core': 4.1.11(react@18.3.1) - '@web3modal/scaffold-utils': 4.1.11(react@18.3.1) + '@walletconnect/utils': 2.12.0 + '@web3modal/core': 4.2.3(react@18.3.1) + '@web3modal/scaffold-utils': 4.2.3(react@18.3.1) lit: 3.1.0 valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - ioredis - react + - uWebSockets.js + dev: false + + /@web3modal/ui@4.2.3: + resolution: {integrity: sha512-QPPgE0hii1gpAldTdnrP63D/ryI78Ohz99zRBp8vi81lawot7rbdUbryMoX13hMPCW9vW7JYyvX+jJN7uO3QwA==} + dependencies: + lit: 3.1.0 + qrcode: 1.5.3 + dev: false - '@web3modal/siwe@4.2.3(react@18.3.1)': + /@web3modal/wagmi@4.2.3(@wagmi/connectors@4.3.10)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5): + resolution: {integrity: sha512-oisBCMrOYn8TBgNaSPrumvMmTGox6+3Ii92zxQJalW5U/K9iBTxoejHT033Ss7mFEFybilcfXBAvGNFXfQmtkA==} + peerDependencies: + '@wagmi/connectors': '>=4' + '@wagmi/core': '>=2.0.0' + react: '>=17' + react-dom: '>=17' + viem: '>=2.0.0' + vue: '>=3' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + vue: + optional: true dependencies: - '@walletconnect/utils': 2.12.0 - '@web3modal/core': 4.2.3(react@18.3.1) + '@wagmi/connectors': 4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + '@walletconnect/ethereum-provider': 2.13.0(react@18.3.1) + '@web3modal/polyfills': 4.2.3 + '@web3modal/scaffold': 4.2.3(react@18.3.1) + '@web3modal/scaffold-react': 4.2.3(react@18.3.1) '@web3modal/scaffold-utils': 4.2.3(react@18.3.1) - lit: 3.1.0 - valtio: 1.11.2(react@18.3.1) + '@web3modal/scaffold-vue': 4.2.3(react@18.3.1) + '@web3modal/siwe': 4.2.3(react@18.3.1) + react: 18.3.1 + viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18859,54 +11799,32 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/kv' + - bufferutil + - encoding - ioredis - - react - uWebSockets.js + - utf-8-validate + dev: false - '@web3modal/ui@4.1.11': - dependencies: - lit: 3.1.0 - qrcode: 1.5.3 - - '@web3modal/ui@4.2.3': - dependencies: - lit: 3.1.0 - qrcode: 1.5.3 - - '@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.18.8)': - dependencies: - '@wagmi/connectors': 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.18.8) - '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.18.8) - '@web3modal/polyfills': 4.1.11 - '@web3modal/scaffold': 4.1.11(react@18.3.1) - '@web3modal/scaffold-react': 4.1.11(react@18.3.1) - '@web3modal/scaffold-utils': 4.1.11(react@18.3.1) - '@web3modal/scaffold-vue': 4.1.11(react@18.3.1) - '@web3modal/siwe': 4.1.11(react@18.3.1) - react: 18.3.1 - viem: 2.18.8(typescript@5.4.5)(zod@3.23.6) - transitivePeerDependencies: - - '@types/react' - - '@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.9.31)': - dependencies: - '@wagmi/connectors': 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) - '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) - '@web3modal/polyfills': 4.1.11 - '@web3modal/scaffold': 4.1.11(react@18.3.1) - '@web3modal/scaffold-react': 4.1.11(react@18.3.1) - '@web3modal/scaffold-utils': 4.1.11(react@18.3.1) - '@web3modal/scaffold-vue': 4.1.11(react@18.3.1) - '@web3modal/siwe': 4.1.11(react@18.3.1) - react: 18.3.1 - viem: 2.9.31(typescript@5.4.5) - transitivePeerDependencies: - - '@types/react' - - '@web3modal/wagmi@4.2.3(@wagmi/connectors@5.1.2)(@wagmi/core@2.13.1)(react@18.3.1)(viem@2.18.8)': + /@web3modal/wagmi@4.2.3(@wagmi/connectors@5.0.21)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5): + resolution: {integrity: sha512-oisBCMrOYn8TBgNaSPrumvMmTGox6+3Ii92zxQJalW5U/K9iBTxoejHT033Ss7mFEFybilcfXBAvGNFXfQmtkA==} + peerDependencies: + '@wagmi/connectors': '>=4' + '@wagmi/core': '>=2.0.0' + react: '>=17' + react-dom: '>=17' + viem: '>=2.0.0' + vue: '>=3' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + vue: + optional: true dependencies: - '@wagmi/connectors': 5.1.2(@wagmi/core@2.13.1)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.18.8) - '@wagmi/core': 2.13.1(react@18.3.1)(typescript@5.4.5)(viem@2.18.8) + '@wagmi/connectors': 5.0.21(@wagmi/core@2.11.6)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) '@walletconnect/ethereum-provider': 2.13.0(react@18.3.1) '@web3modal/polyfills': 4.2.3 '@web3modal/scaffold': 4.2.3(react@18.3.1) @@ -18915,7 +11833,7 @@ snapshots: '@web3modal/scaffold-vue': 4.2.3(react@18.3.1) '@web3modal/siwe': 4.2.3(react@18.3.1) react: 18.3.1 - viem: 2.18.8(typescript@5.4.5)(zod@3.23.6) + viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18935,176 +11853,300 @@ snapshots: - ioredis - uWebSockets.js - utf-8-validate + dev: false - '@web3modal/wallet@4.1.11': - dependencies: - '@web3modal/polyfills': 4.1.11 - zod: 3.22.4 - - '@web3modal/wallet@4.2.3': + /@web3modal/wallet@4.2.3: + resolution: {integrity: sha512-V+VpwmhQl9qeJMpzNkjpAaxercAsrr1O9oGRjrjD+c0q72NfdcbTalWSbjSQmqabI1M6N06Hw94FkAQuEfVGsg==} dependencies: '@web3modal/polyfills': 4.2.3 zod: 3.22.4 + dev: false + + /@webgpu/types@0.1.21: + resolution: {integrity: sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==} + dev: false - '@webgpu/types@0.1.21': {} + /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.20.2): + resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} + engines: {node: '>=14.15.0'} + peerDependencies: + esbuild: '>=0.10.0' + dependencies: + esbuild: 0.20.2 + tslib: 2.6.3 + dev: true - '@yarnpkg/fslib@2.10.3': + /@yarnpkg/fslib@2.10.3: + resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} dependencies: '@yarnpkg/libzip': 2.3.0 tslib: 1.14.1 + dev: true - '@yarnpkg/libzip@2.3.0': + /@yarnpkg/libzip@2.3.0: + resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} dependencies: '@types/emscripten': 1.39.13 tslib: 1.14.1 + dev: true - '@zerodevx/svelte-toast@0.9.5(svelte@4.2.15)': - dependencies: - svelte: 4.2.15 - - abitype@0.9.10(typescript@5.4.5)(zod@3.23.6): - dependencies: - typescript: 5.4.5 - zod: 3.23.6 - - abitype@0.9.8(typescript@5.4.5): - dependencies: - typescript: 5.4.5 - - abitype@1.0.0(typescript@5.4.5): - dependencies: - typescript: 5.4.5 - - abitype@1.0.2(typescript@5.4.5): + /@zerodevx/svelte-toast@0.9.5(svelte@4.2.18): + resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} + peerDependencies: + svelte: ^3.57.0 || ^4.0.0 dependencies: - typescript: 5.4.5 + svelte: 4.2.18 + dev: false - abitype@1.0.5(typescript@5.4.5)(zod@3.23.6): + /abitype@0.9.8(typescript@5.5.3): + resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true dependencies: - typescript: 5.4.5 - zod: 3.23.6 + typescript: 5.5.3 + dev: false - abitype@1.0.5(typescript@5.4.5)(zod@3.23.8): + /abitype@1.0.5(typescript@5.5.3)(zod@3.23.8): + resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true dependencies: - typescript: 5.4.5 + typescript: 5.5.3 zod: 3.23.8 - abort-controller@3.0.0: + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 + dev: false - accepts@1.3.8: + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.11.3): + /acorn-jsx@5.3.2(acorn@8.12.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.3 + acorn: 8.12.0 + dev: true - acorn-jsx@5.3.2(acorn@8.12.1): + /acorn-jsx@5.3.2(acorn@8.12.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.12.1 + dev: false + + /acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} + dependencies: + acorn: 8.12.0 + dev: true - acorn-walk@8.3.2: {} + /acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} + engines: {node: '>=0.4.0'} + hasBin: true - acorn@8.11.3: {} + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false - acorn@8.12.1: {} + /address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + dev: true - aes-js@3.0.0: {} + /aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + dev: true - agent-base@7.1.1: + /agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} dependencies: - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color + dev: true - ajv-draft-04@1.0.0(ajv@8.13.0): + /ajv-draft-04@1.0.0(ajv@8.16.0): + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true dependencies: - ajv: 8.13.0 + ajv: 8.16.0 + dev: false - ajv@6.12.6: + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 + dev: true - ajv@8.13.0: + /ajv@8.16.0: + resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - anser@1.4.10: {} + /anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + dev: false - ansi-align@3.0.1: + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: string-width: 4.2.3 + dev: false - ansi-colors@4.1.3: {} + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} - ansi-fragments@0.2.1: + /ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} dependencies: colorette: 1.4.0 slice-ansi: 2.1.0 strip-ansi: 5.2.0 + dev: false - ansi-regex@4.1.1: {} + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: false - ansi-regex@5.0.1: {} + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - ansi-regex@6.0.1: {} + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} - ansi-styles@3.2.1: + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - ansi-styles@4.3.0: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} - ansi-styles@6.2.1: {} + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} - antlr4@4.13.1-patch-1: {} + /antlr4@4.13.1-patch-1: + resolution: {integrity: sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==} + engines: {node: '>=16'} + dev: true - any-promise@1.3.0: {} + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - any-signal@3.0.1: {} + /any-signal@3.0.1: + resolution: {integrity: sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==} + dev: false - anymatch@3.1.3: + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - appdirsjs@1.2.7: {} + /app-root-dir@1.0.2: + resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} + dev: true + + /appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + dev: false - arg@4.1.3: {} + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true - arg@5.0.2: {} + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@1.0.10: + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 + dev: false + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - argparse@2.0.1: {} + /aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + dependencies: + tslib: 2.6.3 + dev: true - aria-query@5.3.0: + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 - array-buffer-byte-length@1.0.1: + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 + dev: true - array-flatten@1.1.1: {} + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true - array-includes@3.1.8: + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -19112,12 +12154,19 @@ snapshots: es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 + dev: true - array-iterate@2.0.1: {} + /array-iterate@2.0.1: + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + dev: false - array-union@2.1.0: {} + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} - array.prototype.findlastindex@1.2.5: + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -19125,22 +12174,31 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.flat@1.3.2: + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.flatmap@1.3.2: + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 + dev: true - arraybuffer.prototype.slice@1.0.3: + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -19150,42 +12208,86 @@ snapshots: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 + dev: true - asap@2.0.6: {} + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false + + /assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + dependencies: + call-bind: 1.0.7 + is-nan: 1.3.2 + object-is: 1.1.6 + object.assign: 4.1.5 + util: 0.12.5 + dev: true - assertion-error@1.1.0: {} + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true - ast-parents@0.0.1: {} + /ast-parents@0.0.1: + resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} + dev: true - ast-types@0.15.2: + /ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - ast-types@0.16.1: + /ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 + dev: true - astral-regex@1.0.0: {} + /astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + dev: false - astral-regex@2.0.0: {} + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true - astring@1.8.6: {} + /astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true + dev: false - astro-expressive-code@0.35.3(astro@4.13.1): + /astro-expressive-code@0.35.6(astro@4.13.3): + resolution: {integrity: sha512-1U4KrvFuodaCV3z4I1bIR16SdhQlPkolGsYTtiANxPZUVv/KitGSCTjzksrkPonn1XuwVqvnwmUUVzTLWngnBA==} + peerDependencies: + astro: ^4.0.0-beta || ^3.3.0 dependencies: - astro: 4.13.1(typescript@5.4.5) - rehype-expressive-code: 0.35.3 + astro: 4.13.3(typescript@5.5.3) + rehype-expressive-code: 0.35.6 + dev: false - astro-og-canvas@0.5.0(astro@4.13.1): + /astro-og-canvas@0.5.1(astro@4.13.3): + resolution: {integrity: sha512-Xm37vqyMu3kNRU5tm7nheJf2n8+gweuaDX4efMxPSKEggSF8UznvgreOomzAPqDbcs8LM2fQsyOcMbJFtb3aZg==} + engines: {node: '>=18.14.1'} + peerDependencies: + astro: ^3.0.0 || ^4.0.0 dependencies: - astro: 4.13.1(typescript@5.4.5) + astro: 4.13.3(typescript@5.5.3) canvaskit-wasm: 0.39.1 deterministic-object-hash: 2.0.2 entities: 4.5.0 + dev: false - astro@4.13.1(typescript@5.4.5): + /astro@4.13.3(typescript@5.5.3): + resolution: {integrity: sha512-MyhmM0v5sphiVwxAm5jjKxWeuPZijWPJ8Ajdign9QzEmLWSH8vUYIJWx/dWRQ6vF1I0jXrksoj3wtw5nzXt9nw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true dependencies: - '@astrojs/compiler': 2.10.1 + '@astrojs/compiler': 2.10.2 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.2.0 '@astrojs/telemetry': 3.1.0 @@ -19237,195 +12339,309 @@ snapshots: shiki: 1.12.1 string-width: 7.2.0 strip-ansi: 7.1.0 - tsconfck: 3.1.1(typescript@5.4.5) + tsconfck: 3.1.1(typescript@5.5.3) unist-util-visit: 5.0.0 vfile: 6.0.2 - vite: 5.3.5 - vitefu: 0.2.5(vite@5.3.5) + vite: 5.4.0 + vitefu: 0.2.5(vite@5.4.0) which-pm: 3.0.0 yargs-parser: 21.1.1 zod: 3.23.8 zod-to-json-schema: 3.23.2(zod@3.23.8) optionalDependencies: - sharp: 0.33.3 + sharp: 0.33.4 transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser - typescript + dev: false - async-limiter@1.0.1: {} + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: false - async-mutex@0.2.6: + /async-mutex@0.2.6: + resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 + dev: false + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true - asynckit@0.4.0: {} + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - atomic-sleep@1.0.0: {} + /atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: false - autoprefixer@10.4.19(postcss@8.4.38): + /autoprefixer@10.4.19(postcss@8.4.39): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001615 + browserslist: 4.23.1 + caniuse-lite: 1.0.30001639 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.38 + picocolors: 1.0.1 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - autoprefixer@10.4.19(postcss@8.4.41): + /autoprefixer@10.4.19(postcss@8.4.41): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001615 + browserslist: 4.23.1 + caniuse-lite: 1.0.30001639 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.41 postcss-value-parser: 4.2.0 + dev: true - available-typed-arrays@1.0.7: + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} dependencies: possible-typed-array-names: 1.0.0 - axios@1.6.8(debug@4.3.4): + /axios@1.7.2(debug@4.3.5): + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} dependencies: - follow-redirects: 1.15.6(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.5) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug + dev: false - axobject-query@4.0.0: + /axobject-query@4.0.0: + resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} dependencies: dequal: 2.0.3 - axobject-query@4.1.0: {} + /axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + dev: false - babel-core@7.0.0-bridge.0(@babel/core@7.24.5): + /babel-core@7.0.0-bridge.0(@babel/core@7.24.7): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 + dev: true - babel-core@7.0.0-bridge.0(@babel/core@7.25.2): + /babel-core@7.0.0-bridge.0(@babel/core@7.25.2): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 + dev: false - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.7): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + '@babel/compat-data': 7.24.7 + '@babel/core': 7.24.7 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.24.4 + '@babel/compat-data': 7.24.7 '@babel/core': 7.25.2 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: false - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.7): + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) - core-js-compat: 3.37.0 + '@babel/core': 7.24.7 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) + core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color + dev: true - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.25.2 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.0 + core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color + dev: false - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5): + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.7): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) transitivePeerDependencies: - supports-color + dev: true - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.25.2 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) transitivePeerDependencies: - supports-color + dev: false - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.2): + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.2): + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} dependencies: - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.25.2) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - '@babel/core' + dev: false - bail@2.0.2: {} + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: false - balanced-match@1.0.2: {} + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - base-64@1.0.0: {} + /base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + dev: false - base-x@3.0.9: + /base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} dependencies: safe-buffer: 5.2.1 + dev: false - base-x@4.0.0: {} + /base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + dev: false - base64-js@1.5.1: {} + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - bcp-47-match@2.0.3: {} + /bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + dev: false - bcp-47@2.1.0: + /bcp-47@2.1.0: + resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} dependencies: is-alphabetical: 2.0.1 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 + dev: false + + /bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + dev: true - bech32@1.1.4: {} + /better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + dependencies: + open: 8.4.2 + dev: true - better-path-resolve@1.0.0: + /better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} dependencies: is-windows: 1.0.2 + dev: false - bignumber.js@9.1.2: {} + /big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + dev: true + + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: false - binary-extensions@2.3.0: {} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} - bl@4.1.0: + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - bl@5.1.0: + /bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} dependencies: buffer: 6.0.3 inherits: 2.0.4 readable-stream: 3.6.2 - blakejs@1.2.1: {} + /blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + dev: false - blob-to-it@2.0.6: + /blob-to-it@2.0.7: + resolution: {integrity: sha512-mFAR/GKDDqFOkSBB7shXfsUZwU5DgK453++I8/SImNacfJsdKlx/oHTO0T4ZYHz8A2dnSONE+CX8L29VlWGKiQ==} dependencies: browser-readablestream-to-it: 2.0.7 + dev: false - bn.js@4.11.6: {} + /bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + dev: false - bn.js@4.12.0: {} + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - bn.js@5.2.1: {} + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - body-parser@1.20.2: + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -19441,12 +12657,19 @@ snapshots: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: true - boolbase@1.0.0: {} + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false - bowser@2.11.0: {} + /bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + dev: false - boxen@7.1.1: + /boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} dependencies: ansi-align: 3.0.1 camelcase: 7.0.1 @@ -19456,29 +12679,49 @@ snapshots: type-fest: 2.19.0 widest-line: 4.0.1 wrap-ansi: 8.1.0 + dev: false + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.52 + dev: true - brace-expansion@1.1.11: + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - braces@3.0.2: + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 - brorand@1.1.0: {} + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - browser-assert@1.2.1: {} + /browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + dev: true - browser-readablestream-to-it@1.0.3: {} + /browser-readablestream-to-it@1.0.3: + resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} + dev: false - browser-readablestream-to-it@2.0.7: {} + /browser-readablestream-to-it@2.0.7: + resolution: {integrity: sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg==} + dev: false - browserify-aes@1.2.0: + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: buffer-xor: 1.0.3 cipher-base: 1.0.4 @@ -19486,86 +12729,134 @@ snapshots: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - browserslist@4.23.0: + /browserify-zlib@0.1.4: + resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} dependencies: - caniuse-lite: 1.0.30001615 - electron-to-chromium: 1.4.756 - node-releases: 2.0.14 - update-browserslist-db: 1.0.15(browserslist@4.23.0) + pako: 0.2.9 + dev: true - browserslist@4.23.3: + /browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true dependencies: - caniuse-lite: 1.0.30001649 - electron-to-chromium: 1.5.5 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) + caniuse-lite: 1.0.30001639 + electron-to-chromium: 1.4.816 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.1) - bs58@4.0.1: + /bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} dependencies: base-x: 3.0.9 + dev: false - bs58@5.0.0: + /bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} dependencies: base-x: 4.0.0 + dev: false - bs58check@2.1.2: + /bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} dependencies: bs58: 4.0.1 create-hash: 1.2.0 safe-buffer: 5.2.1 + dev: false - bser@2.1.1: + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 + dev: false - buffer-crc32@0.2.13: {} + /buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + dev: true - buffer-from@1.1.2: {} + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer-reverse@1.0.1: {} + /buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + dev: false - buffer-xor@1.0.3: {} + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: false - buffer@5.6.0: + /buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + dev: false - buffer@5.7.1: + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - buffer@6.0.3: + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - bufferutil@4.0.8: + /bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + requiresBuild: true dependencies: node-gyp-build: 4.8.1 + dev: false - builtin-modules@3.3.0: {} + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true - builtins@5.1.0: + /builtins@5.1.0: + resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} dependencies: semver: 7.6.3 + dev: true - bundle-require@4.1.0(esbuild@0.19.12): + /bundle-require@4.2.1(esbuild@0.19.12): + resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' dependencies: esbuild: 0.19.12 load-tsconfig: 0.2.5 - bytes@3.0.0: {} + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} - bytes@3.1.2: {} + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true - cac@6.7.14: {} + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} - cacheable-lookup@7.0.0: {} + /cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + dev: true - cacheable-request@10.2.14: + /cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} dependencies: '@types/http-cache-semantics': 4.0.4 get-stream: 6.0.1 @@ -19574,8 +12865,11 @@ snapshots: mimic-response: 4.0.0 normalize-url: 8.0.1 responselike: 3.0.0 + dev: true - call-bind@1.0.7: + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 @@ -19583,114 +12877,146 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - call-me-maybe@1.0.2: {} + /call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + dev: false - caller-callsite@2.0.0: + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} dependencies: callsites: 2.0.0 + dev: false - caller-path@2.0.0: + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} dependencies: caller-callsite: 2.0.0 + dev: false - callsites@2.0.0: {} - - callsites@3.1.0: {} - - camel-case@4.1.2: - dependencies: - pascal-case: 3.1.2 - tslib: 2.6.2 + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + dev: false - camelcase-css@2.0.1: {} + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true - camelcase@5.3.1: {} + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} - camelcase@6.3.0: {} + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: false - camelcase@7.0.1: {} + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: false - caniuse-lite@1.0.30001615: {} + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: false - caniuse-lite@1.0.30001649: {} + /caniuse-lite@1.0.30001639: + resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==} - canvaskit-wasm@0.39.1: + /canvaskit-wasm@0.39.1: + resolution: {integrity: sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==} dependencies: '@webgpu/types': 0.1.21 + dev: false - capital-case@1.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - upper-case-first: 2.0.2 - - cborg@4.2.0: {} + /cborg@4.2.2: + resolution: {integrity: sha512-A0z7WhnY4HDLrVdnQI4i/OLG3kANHotk5NzDpr2iauf4xrmQPwJCxlbCnIXkVrFtsr8G3omfvvr5oF50i1Zt8g==} + hasBin: true + dev: false - ccount@2.0.1: {} + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false - chai@4.4.1: + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.3 + deep-eql: 4.1.4 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 + dev: true - chalk@2.4.2: + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@3.0.0: + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true - chalk@4.1.2: + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} - - change-case@4.1.2: - dependencies: - camel-case: 4.1.2 - capital-case: 1.0.4 - constant-case: 3.0.4 - dot-case: 3.0.4 - header-case: 2.0.4 - no-case: 3.0.4 - param-case: 3.0.4 - pascal-case: 3.1.2 - path-case: 3.0.4 - sentence-case: 3.0.4 - snake-case: 3.0.4 - tslib: 2.6.2 + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - change-case@5.4.4: {} + /change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} - character-entities-html4@2.1.0: {} + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: false - character-entities-legacy@3.0.0: {} + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: false - character-entities@2.0.2: {} + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: false - character-reference-invalid@2.0.1: {} + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: false - chardet@0.7.0: {} + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: false - check-error@1.0.3: + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 + dev: true - chokidar@3.6.0: + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -19699,153 +13025,269 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chownr@2.0.0: {} + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: true - chromatic@11.3.0: {} + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: true - chromatic@11.7.0: {} + /chromatic@11.5.4: + resolution: {integrity: sha512-+J+CopeUSyGUIQJsU6X7CfvSmeVBs0j6LZ9AgF4+XTjI4pFmUiUXsTc00rH9x9W1jCppOaqDXv2kqJJXGDK3mA==} + hasBin: true + peerDependencies: + '@chromatic-com/cypress': ^0.*.* || ^1.0.0 + '@chromatic-com/playwright': ^0.*.* || ^1.0.0 + peerDependenciesMeta: + '@chromatic-com/cypress': + optional: true + '@chromatic-com/playwright': + optional: true + dev: true - chrome-launcher@0.15.2: + /chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 transitivePeerDependencies: - supports-color + dev: false - ci-info@2.0.0: {} + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: false - ci-info@3.9.0: {} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} - ci-info@4.0.0: {} + /ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + dev: false - cipher-base@1.0.4: + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - citty@0.1.6: + /citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} dependencies: consola: 3.2.3 - cli-boxes@3.0.0: {} + /cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: false - cli-color@2.0.4: + /cli-color@2.0.4: + resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} + engines: {node: '>=0.10'} dependencies: d: 1.0.2 es5-ext: 0.10.64 es6-iterator: 2.0.3 - memoizee: 0.4.15 - timers-ext: 0.1.7 + memoizee: 0.4.17 + timers-ext: 0.1.8 - cli-cursor@3.1.0: + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 - cli-cursor@4.0.0: + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: restore-cursor: 4.0.0 - cli-spinners@2.9.2: {} + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + /cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + dev: true - clipboardy@4.0.0: + /clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} dependencies: execa: 8.0.1 is-wsl: 3.1.0 is64bit: 2.0.0 + dev: false - cliui@6.0.0: + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + dev: false - cliui@8.0.1: + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + dev: false - clone-deep@4.0.1: + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - clone@1.0.4: {} + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} - clsx@1.2.1: {} + /clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false - clsx@2.1.1: {} + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + dev: false - code-block-writer@12.0.0: {} + /code-block-writer@12.0.0: + resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} + dev: true - code-error-fragment@0.0.230: {} + /code-error-fragment@0.0.230: + resolution: {integrity: sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==} + engines: {node: '>= 4'} + dev: false - code-red@1.0.4: + /code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 '@types/estree': 1.0.5 - acorn: 8.11.3 + acorn: 8.12.0 estree-walker: 3.0.3 periscopic: 3.1.0 - collapse-white-space@2.1.0: {} + /collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + dev: false - color-convert@1.9.3: + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - color-convert@2.0.1: + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - color-name@1.1.3: {} + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: {} + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 + dev: false - color@4.2.3: + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} dependencies: color-convert: 2.0.1 color-string: 1.9.1 + dev: false - colorette@1.4.0: {} + /colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + dev: false - combined-stream@1.0.8: + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - comma-separated-tokens@2.0.3: {} + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: false - command-exists@1.2.9: {} + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - commander@10.0.1: {} + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: true - commander@2.20.3: {} + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false - commander@4.1.1: {} + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} - commander@6.2.1: {} + /commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + dev: true - commander@8.3.0: {} + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: true - commander@9.5.0: {} + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: false - common-ancestor-path@1.0.1: {} + /common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + dev: false - commondir@1.0.1: {} + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compressible@2.0.18: + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - compression@1.7.4: + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 bytes: 3.0.0 @@ -19857,16 +13299,22 @@ snapshots: transitivePeerDependencies: - supports-color - concat-map@0.0.1: {} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.7: {} + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - config-chain@1.1.13: + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: ini: 1.3.8 proto-list: 1.2.4 + dev: true - connect@3.7.0: + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} dependencies: debug: 2.6.9 finalhandler: 1.1.2 @@ -19874,63 +13322,94 @@ snapshots: utils-merge: 1.0.1 transitivePeerDependencies: - supports-color + dev: false - consola@3.2.3: {} - - constant-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - upper-case: 2.0.2 + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} - content-disposition@0.5.4: + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 + dev: true - content-type@1.0.5: {} + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true - convert-csv-to-json@2.46.0: {} + /convert-csv-to-json@2.48.0: + resolution: {integrity: sha512-XkmztvCyY1qbUA1dlait7fmazAS0vDhYOzhMu90NPMvqBVY0/2GmAW1XzTzlKPpW5K/4ZaTKEO2Jb7e4saIQxg==} - convert-source-map@2.0.0: {} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-es@1.1.0: {} + /cookie-es@1.1.0: + resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} + dev: false - cookie-signature@1.0.6: {} + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true - cookie@0.6.0: {} + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} - core-js-compat@3.37.0: + /core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 - core-util-is@1.0.3: {} + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cosmiconfig@5.2.1: + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} dependencies: import-fresh: 2.0.0 is-directory: 0.3.1 js-yaml: 3.14.1 parse-json: 4.0.0 + dev: false - cosmiconfig@8.3.6(typescript@5.4.5): + /cosmiconfig@8.3.6(typescript@5.5.3): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.4.5 + typescript: 5.5.3 + dev: true - crc-32@1.2.2: {} + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: false - create-hash@1.2.0: + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: cipher-base: 1.0.4 inherits: 2.0.4 md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 + dev: false - create-hmac@1.1.7: + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} dependencies: cipher-base: 1.0.4 create-hash: 1.2.0 @@ -19938,335 +13417,589 @@ snapshots: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 + dev: false - create-require@1.1.1: {} + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true - cross-fetch@3.1.8: + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - cross-fetch@4.0.0: + /cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding + dev: false - cross-spawn@5.1.0: + /cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 + dev: false - cross-spawn@7.0.3: + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crossws@0.2.4: {} + /crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true + dev: false - crypto-js@3.3.0: {} + /crypto-js@3.3.0: + resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} + dev: true - crypto-js@4.2.0: {} + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false - crypto-random-string@4.0.0: + /crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} dependencies: type-fest: 1.4.0 + dev: true - css-selector-parser@3.0.5: {} + /css-selector-parser@3.0.5: + resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} + dev: false - css-selector-tokenizer@0.8.0: + /css-selector-tokenizer@0.8.0: + resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} dependencies: cssesc: 3.0.0 fastparse: 1.1.2 - css-tree@2.3.1: + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} dependencies: mdn-data: 2.0.30 source-map-js: 1.2.0 - css.escape@1.5.1: {} + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true - cssesc@3.0.0: {} + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true - cssstyle@4.0.1: + /cssstyle@4.0.1: + resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + engines: {node: '>=18'} dependencies: rrweb-cssom: 0.6.0 + dev: true - csstype@3.1.3: {} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + dev: true - culori@3.3.0: {} + /culori@3.3.0: + resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - d@1.0.2: + /d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} dependencies: es5-ext: 0.10.64 - type: 2.7.2 + type: 2.7.3 - dag-jose@4.0.0: + /dag-jose@4.0.0: + resolution: {integrity: sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA==} dependencies: - '@ipld/dag-cbor': 9.2.0 + '@ipld/dag-cbor': 9.2.1 multiformats: 11.0.2 + dev: false - daisyui@4.10.5(postcss@8.4.38): - dependencies: - css-selector-tokenizer: 0.8.0 - culori: 3.3.0 - picocolors: 1.0.0 - postcss-js: 4.0.1(postcss@8.4.38) - transitivePeerDependencies: - - postcss - - daisyui@4.12.10(postcss@8.4.38): + /daisyui@4.12.10(postcss@8.4.39): + resolution: {integrity: sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==} + engines: {node: '>=16.9.0'} dependencies: css-selector-tokenizer: 0.8.0 culori: 3.3.0 - picocolors: 1.0.0 - postcss-js: 4.0.1(postcss@8.4.38) + picocolors: 1.0.1 + postcss-js: 4.0.1(postcss@8.4.39) transitivePeerDependencies: - postcss - daisyui@4.12.10(postcss@8.4.41): + /daisyui@4.12.10(postcss@8.4.41): + resolution: {integrity: sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==} + engines: {node: '>=16.9.0'} dependencies: css-selector-tokenizer: 0.8.0 culori: 3.3.0 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss-js: 4.0.1(postcss@8.4.41) transitivePeerDependencies: - postcss + dev: false - data-urls@5.0.0: + /data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 + dev: true - data-view-buffer@1.0.1: + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + dev: true - data-view-byte-length@1.0.1: + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + dev: true - data-view-byte-offset@1.0.0: + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + dev: true - date-fns@2.30.0: + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 + dev: false - dayjs@1.11.10: {} + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false - dayjs@1.11.11: {} + /dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} + dev: false - debug@2.6.9: + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 - debug@3.2.7: + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 + dev: true - debug@4.3.4: + /debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.2 - debug@4.3.6: + /debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.2 - decamelize@1.2.0: {} + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: false - decimal.js@10.4.3: {} + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true - decode-named-character-reference@1.0.2: + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 + dev: false - decode-uri-component@0.2.2: {} + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: false - decompress-response@6.0.0: + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 + dev: true - dedent-js@1.0.1: {} + /dedent-js@1.0.1: + resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} + dev: true - dedent@0.7.0: {} + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - deep-eql@4.1.3: + /deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} dependencies: type-detect: 4.0.8 + dev: true + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true - deep-extend@0.6.0: {} + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true - deep-is@0.1.4: {} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} - deepmerge@4.3.1: {} + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true - defaults@1.0.4: + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - defer-to-connect@2.0.1: {} + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: true - define-data-property@1.1.4: + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - define-lazy-prop@2.0.0: {} + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} - define-properties@1.2.1: + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 + dev: true + + /defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - defu@6.1.4: {} + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + dev: false - delayed-stream@1.0.0: {} + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - denodeify@1.2.1: {} + /destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + dev: false - depd@2.0.0: {} + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dequal@2.0.3: {} + /detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + dev: false - destr@2.0.3: {} + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} - destroy@1.2.0: {} + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: false - detect-browser@5.3.0: {} + /detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + dev: false - detect-indent@6.1.0: {} + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: true - detect-libc@1.0.3: {} + /detect-package-manager@2.0.1: + resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true - detect-libc@2.0.3: {} + /detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} + hasBin: true + dependencies: + address: 1.2.2 + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + dev: true - deterministic-object-hash@2.0.2: + /deterministic-object-hash@2.0.2: + resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} + engines: {node: '>=18'} dependencies: base-64: 1.0.0 + dev: false - devalue@5.0.0: {} + /devalue@5.0.0: + resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} - devlop@1.1.0: + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} dependencies: dequal: 2.0.3 + dev: false - didyoumean@1.2.2: {} + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff-sequences@29.6.3: {} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - diff@4.0.2: {} + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true - diff@5.2.0: {} + /diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} - dijkstrajs@1.0.3: {} + /dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + dev: false - dir-glob@3.0.1: + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 - direction@2.0.1: {} + /direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + dev: false - dlv@1.1.3: {} + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dns-over-http-resolver@2.1.3: + /dns-over-http-resolver@2.1.3: + resolution: {integrity: sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==} dependencies: - debug: 4.3.4 + debug: 4.3.5 native-fetch: 4.0.2(undici@5.28.4) receptacle: 1.3.2 undici: 5.28.4 transitivePeerDependencies: - supports-color + dev: false - dns-packet@5.6.1: + /dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} dependencies: '@leichtgewicht/ip-codec': 2.0.5 + dev: false - doctrine@2.1.0: + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 + dev: true - doctrine@3.0.0: + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 + dev: true - dom-accessibility-api@0.5.16: {} + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true - dom-accessibility-api@0.6.3: {} + /dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dev: true - dom-serializer@1.4.1: + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 entities: 2.2.0 + dev: true - domelementtype@2.3.0: {} + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true - domhandler@3.3.0: + /domhandler@3.3.0: + resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} + engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: true - domhandler@4.3.1: + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: true - domutils@2.8.0: + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: dom-serializer: 1.4.1 domelementtype: 2.3.0 domhandler: 4.3.1 + dev: true - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - - dotenv-expand@10.0.0: {} + /dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} - dotenv@16.4.5: {} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} - ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: {} + /dset@3.1.3: + resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} + engines: {node: '>=4'} + dev: false - dset@3.1.3: {} + /duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.3 + dev: true - duplexify@4.1.3: + /duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.3 + dev: false - eastasianwidth@0.2.0: {} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - eciesjs@0.3.18: + /eciesjs@0.3.19: + resolution: {integrity: sha512-b+PkRDZ3ym7HEcnbxc22CMVCpgsnr8+gGgST3U5PtgeX1luvINgfXW7efOyUtmn/jFtA/lg5ywBi/Uazf4oeaA==} dependencies: '@types/secp256k1': 4.0.6 futoin-hkdf: 1.5.3 secp256k1: 5.0.0 + dev: false + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - ee-first@1.1.1: {} + /ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.9.1 + dev: true - electron-fetch@1.9.1: + /electron-fetch@1.9.1: + resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} + engines: {node: '>=6'} dependencies: encoding: 0.1.13 + dev: false - electron-to-chromium@1.4.756: {} + /electron-to-chromium@1.4.816: + resolution: {integrity: sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==} - electron-to-chromium@1.5.5: {} - - elliptic@6.5.4: + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -20276,7 +14009,8 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - elliptic@6.5.5: + /elliptic@6.5.5: + resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -20285,71 +14019,109 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + dev: false - emmet@2.4.7: + /emmet@2.4.7: + resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} dependencies: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 + dev: false - emoji-regex@10.3.0: {} + /emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + dev: false - emoji-regex@8.0.0: {} + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: {} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encode-utf8@1.0.3: {} + /encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + dev: false - encodeurl@1.0.2: {} + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} - encoding@0.1.13: + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} dependencies: iconv-lite: 0.6.3 + dev: false - end-of-stream@1.4.4: + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - engine.io-client@6.5.3: + /engine.io-client@6.5.4: + resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4 + debug: 4.3.5 engine.io-parser: 5.2.2 - ws: 8.11.0 + ws: 8.17.1 xmlhttprequest-ssl: 2.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate + dev: false - engine.io-parser@5.2.2: {} + /engine.io-parser@5.2.2: + resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} + engines: {node: '>=10.0.0'} + dev: false - enquirer@2.4.1: + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - entities@2.2.0: {} + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true - entities@4.5.0: {} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} - envinfo@7.13.0: {} + /envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} + hasBin: true - err-code@3.0.1: {} + /err-code@3.0.1: + resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} + dev: false - error-ex@1.3.2: + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - error-stack-parser@2.1.4: + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: stackframe: 1.3.4 + dev: false - errorhandler@1.5.1: + /errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} dependencies: accepts: 1.3.8 escape-html: 1.0.3 + dev: false - es-abstract@1.23.3: + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -20382,7 +14154,7 @@ snapshots: is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.1 + object-inspect: 1.13.2 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 @@ -20397,72 +14169,108 @@ snapshots: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 + dev: true - es-define-property@1.0.0: + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 - es-errors@1.3.0: {} - - es-module-lexer@1.5.2: {} + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} - es-module-lexer@1.5.4: {} + /es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - es-object-atoms@1.0.0: + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 + dev: true - es-set-tostringtag@2.0.3: + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 + dev: true - es-shim-unscopables@1.0.2: + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: hasown: 2.0.2 + dev: true - es-to-primitive@1.2.1: + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 + dev: true - es5-ext@0.10.64: + /es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + requiresBuild: true dependencies: es6-iterator: 2.0.3 es6-symbol: 3.1.4 esniff: 2.0.1 next-tick: 1.1.0 - es6-iterator@2.0.3: + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} dependencies: d: 1.0.2 es5-ext: 0.10.64 es6-symbol: 3.1.4 - es6-promise@3.3.1: {} + /es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true - es6-symbol@3.1.4: + /es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} dependencies: d: 1.0.2 ext: 1.7.0 - es6-weak-map@2.0.3: + /es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} dependencies: d: 1.0.2 es5-ext: 0.10.64 es6-iterator: 2.0.3 es6-symbol: 3.1.4 - esbuild-register@3.6.0(esbuild@0.21.3): + /esbuild-plugin-alias@0.2.1: + resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} + dev: true + + /esbuild-register@3.5.0(esbuild@0.20.2): + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + peerDependencies: + esbuild: '>=0.12 <1' dependencies: - debug: 4.3.4 - esbuild: 0.21.3 + debug: 4.3.5 + esbuild: 0.20.2 transitivePeerDependencies: - supports-color + dev: true - esbuild@0.18.20: + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/android-arm': 0.18.20 '@esbuild/android-arm64': 0.18.20 @@ -20486,8 +14294,13 @@ snapshots: '@esbuild/win32-arm64': 0.18.20 '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 + dev: true - esbuild@0.19.12: + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/aix-ppc64': 0.19.12 '@esbuild/android-arm': 0.19.12 @@ -20513,7 +14326,11 @@ snapshots: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 - esbuild@0.20.2: + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/aix-ppc64': 0.20.2 '@esbuild/android-arm': 0.20.2 @@ -20538,34 +14355,13 @@ snapshots: '@esbuild/win32-arm64': 0.20.2 '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 + dev: true - esbuild@0.21.3: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.3 - '@esbuild/android-arm': 0.21.3 - '@esbuild/android-arm64': 0.21.3 - '@esbuild/android-x64': 0.21.3 - '@esbuild/darwin-arm64': 0.21.3 - '@esbuild/darwin-x64': 0.21.3 - '@esbuild/freebsd-arm64': 0.21.3 - '@esbuild/freebsd-x64': 0.21.3 - '@esbuild/linux-arm': 0.21.3 - '@esbuild/linux-arm64': 0.21.3 - '@esbuild/linux-ia32': 0.21.3 - '@esbuild/linux-loong64': 0.21.3 - '@esbuild/linux-mips64el': 0.21.3 - '@esbuild/linux-ppc64': 0.21.3 - '@esbuild/linux-riscv64': 0.21.3 - '@esbuild/linux-s390x': 0.21.3 - '@esbuild/linux-x64': 0.21.3 - '@esbuild/netbsd-x64': 0.21.3 - '@esbuild/openbsd-x64': 0.21.3 - '@esbuild/sunos-x64': 0.21.3 - '@esbuild/win32-arm64': 0.21.3 - '@esbuild/win32-ia32': 0.21.3 - '@esbuild/win32-x64': 0.21.3 - - esbuild@0.21.5: + /esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 '@esbuild/android-arm': 0.21.5 @@ -20591,67 +14387,137 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - escalade@3.1.2: {} + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} - escape-html@1.0.3: {} + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@1.0.5: {} + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: {} + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} - escape-string-regexp@4.0.0: {} + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} - escape-string-regexp@5.0.0: {} + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false - eslint-compat-utils@0.5.0(eslint@8.57.0): + /eslint-compat-utils@0.5.1(eslint@8.57.0): + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' dependencies: eslint: 8.57.0 semver: 7.6.2 + dev: true - eslint-config-prettier@9.1.0(eslint@8.57.0): + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' dependencies: eslint: 8.57.0 + dev: true - eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0): + /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0): + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 dependencies: eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) - eslint-plugin-promise: 6.1.1(eslint@8.57.0) + eslint-plugin-promise: 6.4.0(eslint@8.57.0) + dev: true - eslint-import-resolver-node@0.3.9: + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.13.1 + is-core-module: 2.14.0 resolve: 1.22.8 transitivePeerDependencies: - supports-color + dev: true - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: - '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color + dev: true - eslint-plugin-es-x@7.6.0(eslint@8.57.0): + /eslint-plugin-es-x@7.8.0(eslint@8.57.0): + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 eslint: 8.57.0 - eslint-compat-utils: 0.5.0(eslint@8.57.0) + eslint-compat-utils: 0.5.1(eslint@8.57.0) + dev: true - eslint-plugin-es@3.0.1(eslint@8.57.0): + /eslint-plugin-es@3.0.1(eslint@8.57.0): + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' dependencies: eslint: 8.57.0 eslint-utils: 2.1.0 regexpp: 3.2.0 + dev: true - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: - '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -20660,9 +14526,9 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 - is-core-module: 2.13.1 + is-core-module: 2.14.0 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 @@ -20674,23 +14540,33 @@ snapshots: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: true - eslint-plugin-n@16.6.2(eslint@8.57.0): + /eslint-plugin-n@16.6.2(eslint@8.57.0): + resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) builtins: 5.1.0 eslint: 8.57.0 - eslint-plugin-es-x: 7.6.0(eslint@8.57.0) - get-tsconfig: 4.7.3 + eslint-plugin-es-x: 7.8.0(eslint@8.57.0) + get-tsconfig: 4.7.5 globals: 13.24.0 ignore: 5.3.1 is-builtin-module: 3.2.1 - is-core-module: 2.13.1 + is-core-module: 2.14.0 minimatch: 3.1.2 resolve: 1.22.8 semver: 7.6.3 + dev: true - eslint-plugin-node@11.1.0(eslint@8.57.0): + /eslint-plugin-node@11.1.0(eslint@8.57.0): + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' dependencies: eslint: 8.57.0 eslint-plugin-es: 3.0.1(eslint@8.57.0) @@ -20699,94 +14575,155 @@ snapshots: minimatch: 3.1.2 resolve: 1.22.8 semver: 6.3.1 + dev: true - eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true dependencies: eslint: 8.57.0 eslint-config-prettier: 9.1.0(eslint@8.57.0) - prettier: 3.2.5 + prettier: 3.3.2 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 + dev: true - eslint-plugin-promise@6.1.1(eslint@8.57.0): + /eslint-plugin-promise@6.4.0(eslint@8.57.0): + resolution: {integrity: sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 dependencies: eslint: 8.57.0 + dev: true - eslint-plugin-simple-import-sort@12.1.0(eslint@8.57.0): + /eslint-plugin-simple-import-sort@12.1.0(eslint@8.57.0): + resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} + peerDependencies: + eslint: '>=5.0.0' dependencies: eslint: 8.57.0 + dev: true - eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.4.5): + /eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} + engines: {node: '>= 18'} + peerDependencies: + eslint: '>=6' dependencies: '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 requireindex: 1.2.0 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - typescript + dev: true - eslint-plugin-svelte@2.38.0(eslint@8.57.0)(svelte@4.2.15): + /eslint-plugin-svelte@2.41.0(eslint@8.57.0)(svelte@4.2.18): + resolution: {integrity: sha512-gjU9Q/psxbWG1VNwYbEb0Q6U4W5PBGaDpYmO2zlQ+zlAMVS3Qt0luAK0ACi/tMSwRK6JENiySvMyJbO0YWmXSg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.155 + peerDependenciesMeta: + svelte: + optional: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 - debug: 4.3.4 eslint: 8.57.0 - eslint-compat-utils: 0.5.0(eslint@8.57.0) + eslint-compat-utils: 0.5.1(eslint@8.57.0) esutils: 2.0.3 - known-css-properties: 0.30.0 - postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38) - postcss-safe-parser: 6.0.0(postcss@8.4.38) - postcss-selector-parser: 6.0.16 - semver: 7.6.0 - svelte: 4.2.15 - svelte-eslint-parser: 0.35.0(svelte@4.2.15) + known-css-properties: 0.34.0 + postcss: 8.4.39 + postcss-load-config: 3.1.4(postcss@8.4.39) + postcss-safe-parser: 6.0.0(postcss@8.4.39) + postcss-selector-parser: 6.1.0 + semver: 7.6.2 + svelte: 4.2.18 + svelte-eslint-parser: 0.39.2(svelte@4.2.18) transitivePeerDependencies: - - supports-color - ts-node + dev: true - eslint-scope@5.1.1: + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: true - eslint-scope@7.2.2: + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + dev: true - eslint-utils@2.1.0: + /eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} dependencies: eslint-visitor-keys: 1.3.0 + dev: true - eslint-utils@3.0.0(eslint@8.4.1): + /eslint-utils@3.0.0(eslint@8.4.1): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' dependencies: eslint: 8.4.1 eslint-visitor-keys: 2.1.0 + dev: true - eslint-visitor-keys@1.3.0: {} + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true - eslint-visitor-keys@2.1.0: {} + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true - eslint-visitor-keys@3.4.3: {} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - eslint@8.4.1: + /eslint@8.4.1: + resolution: {integrity: sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true dependencies: '@eslint/eslintrc': 1.4.1 '@humanwhocodes/config-array': 0.9.5 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.5 doctrine: 3.0.0 enquirer: 2.4.1 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 eslint-utils: 3.0.0(eslint@8.4.1) eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + espree: 9.2.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -20807,18 +14744,22 @@ snapshots: optionator: 0.9.4 progress: 2.0.3 regexpp: 3.2.0 - semver: 7.6.2 + semver: 7.6.3 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 v8-compile-cache: 2.4.0 transitivePeerDependencies: - supports-color + dev: true - eslint@8.57.0: + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 @@ -20828,7 +14769,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.5 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -20857,77 +14798,121 @@ snapshots: text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: true - esm-env@1.0.0: {} + /esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + dev: true - esniff@2.0.1: + /esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} dependencies: d: 1.0.2 es5-ext: 0.10.64 event-emitter: 0.3.5 - type: 2.7.2 + type: 2.7.3 - espree@9.2.0: + /espree@9.2.0: + resolution: {integrity: sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) eslint-visitor-keys: 3.4.3 + dev: true - espree@9.6.1: + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) eslint-visitor-keys: 3.4.3 + dev: true - esprima@4.0.1: {} + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true - esquery@1.5.0: + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 + dev: true - esrecurse@4.3.0: + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + dev: true - estraverse@4.3.0: {} + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true - estraverse@5.3.0: {} + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true - estree-util-attach-comments@3.0.0: + /estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} dependencies: '@types/estree': 1.0.5 + dev: false - estree-util-build-jsx@3.0.1: + /estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} dependencies: '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 + dev: false - estree-util-is-identifier-name@3.0.0: {} + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: false - estree-util-to-js@2.0.0: + /estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} dependencies: '@types/estree-jsx': 1.0.5 astring: 1.8.6 source-map: 0.7.4 + dev: false - estree-util-visit@2.0.0: + /estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} dependencies: '@types/estree-jsx': 1.0.5 '@types/unist': 3.0.2 + dev: false - estree-walker@2.0.2: {} + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - estree-walker@3.0.3: + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.5 - esutils@2.0.3: {} + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} - etag@1.8.1: {} + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} - eth-block-tracker@7.1.0: + /eth-block-tracker@7.1.0: + resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} + engines: {node: '>=14.0.0'} dependencies: '@metamask/eth-json-rpc-provider': 1.0.1 '@metamask/safe-event-emitter': 3.1.1 @@ -20936,33 +14921,47 @@ snapshots: pify: 3.0.0 transitivePeerDependencies: - supports-color + dev: false - eth-json-rpc-filters@6.0.1: + /eth-json-rpc-filters@6.0.1: + resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} + engines: {node: '>=14.0.0'} dependencies: '@metamask/safe-event-emitter': 3.1.1 async-mutex: 0.2.6 eth-query: 2.1.2 json-rpc-engine: 6.1.0 pify: 5.0.0 + dev: false - eth-query@2.1.2: + /eth-query@2.1.2: + resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} dependencies: json-rpc-random-id: 1.0.1 xtend: 4.0.2 + dev: false - eth-rpc-errors@4.0.3: + /eth-rpc-errors@4.0.3: + resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} dependencies: fast-safe-stringify: 2.1.1 + dev: false - ethereum-address@0.0.4: + /ethereum-address@0.0.4: + resolution: {integrity: sha512-3Vwr2CikFLezh/zLAPBV6C51jC0fFnf6vjhkoIWsDms/W5MLgAZNhh9nZUxPmg899K8cVFbklrYQBxcD4JmfrA==} + engines: {node: '>= 4.3.0', npm: '>= 3.7.0'} dependencies: crypto-js: 3.3.0 + dev: true - ethereum-bloom-filters@1.1.0: + /ethereum-bloom-filters@1.1.0: + resolution: {integrity: sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==} dependencies: '@noble/hashes': 1.4.0 + dev: false - ethereum-cryptography@0.1.3: + /ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} dependencies: '@types/pbkdf2': 3.1.2 '@types/secp256k1': 4.0.6 @@ -20979,30 +14978,39 @@ snapshots: scrypt-js: 3.0.1 secp256k1: 4.0.3 setimmediate: 1.0.5 + dev: false - ethereum-cryptography@1.2.0: + /ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 '@scure/bip32': 1.1.5 '@scure/bip39': 1.1.1 + dev: false - ethereum-cryptography@2.1.3: + /ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - '@scure/bip32': 1.3.3 - '@scure/bip39': 1.2.2 + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + dev: false - ethereumjs-util@7.1.5: + /ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} dependencies: '@types/bn.js': 5.1.5 bn.js: 5.2.1 create-hash: 1.2.0 ethereum-cryptography: 0.1.3 rlp: 2.2.7 + dev: false - ethers@5.7.2: + /ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -21037,31 +15045,50 @@ snapshots: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: true - ethjs-unit@0.1.6: + /ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} dependencies: bn.js: 4.11.6 number-to-bn: 1.7.0 + dev: false - event-emitter@0.3.5: + /event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} dependencies: d: 1.0.2 es5-ext: 0.10.64 - event-target-shim@5.0.1: {} + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false - eventemitter2@6.4.9: {} + /eventemitter2@6.4.9: + resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + dev: false - eventemitter3@5.0.1: {} + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false - events@3.3.0: {} + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false - evp_bytestokey@1.0.3: + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 + dev: false - execa@5.1.1: + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -21073,7 +15100,9 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@8.0.1: + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 @@ -21085,15 +15114,20 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - expect@29.7.0: + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 + dev: true - express@4.19.2: + /express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -21128,98 +15162,173 @@ snapshots: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: true - expressive-code@0.35.3: + /expressive-code@0.35.6: + resolution: {integrity: sha512-+mx+TPTbMqgo0mL92Xh9QgjW0kSQIsEivMgEcOnaqKqL7qCw8Vkqc5Rg/di7ZYw4aMUSr74VTc+w8GQWu05j1g==} dependencies: - '@expressive-code/core': 0.35.3 - '@expressive-code/plugin-frames': 0.35.3 - '@expressive-code/plugin-shiki': 0.35.3 - '@expressive-code/plugin-text-markers': 0.35.3 + '@expressive-code/core': 0.35.6 + '@expressive-code/plugin-frames': 0.35.6 + '@expressive-code/plugin-shiki': 0.35.6 + '@expressive-code/plugin-text-markers': 0.35.6 + dev: false - ext@1.7.0: + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} dependencies: - type: 2.7.2 + type: 2.7.3 - extend-shallow@2.0.1: + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 + dev: false - extend@3.0.2: {} + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false - extendable-error@0.1.7: {} + /extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + dev: false - extension-port-stream@3.0.0: + /extension-port-stream@3.0.0: + resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} + engines: {node: '>=12.0.0'} dependencies: readable-stream: 3.6.2 webextension-polyfill: 0.10.0 + dev: false - external-editor@3.1.0: + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 + dev: false - fast-deep-equal@3.1.3: {} + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: {} + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true - fast-fifo@1.3.2: {} + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: false - fast-glob@3.3.2: + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true - fast-levenshtein@2.0.6: {} + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true - fast-redact@3.5.0: {} + /fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + dev: false - fast-safe-stringify@2.1.1: {} + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: false - fast-xml-parser@4.2.5: + /fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true dependencies: strnum: 1.0.5 + dev: false - fast-xml-parser@4.3.6: + /fast-xml-parser@4.4.0: + resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==} + hasBin: true dependencies: strnum: 1.0.5 + dev: false - fastparse@1.1.2: {} + /fastparse@1.1.2: + resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} - fastq@1.17.1: + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 - fb-watchman@2.0.2: + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 + dev: false - fd-package-json@1.2.0: - dependencies: - walk-up-path: 3.0.1 - - fdir@6.2.0(picomatch@3.0.1): + /fdir@6.1.1(picomatch@3.0.1): + resolution: {integrity: sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==} + peerDependencies: + picomatch: 3.x + peerDependenciesMeta: + picomatch: + optional: true dependencies: picomatch: 3.0.1 - file-entry-cache@6.0.1: + /fetch-retry@5.0.6: + resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.2.0 + dev: true + + /file-system-cache@2.3.0: + resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} + dependencies: + fs-extra: 11.1.1 + ramda: 0.29.0 + dev: true + + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true - filesize@10.1.1: {} + /filesize@10.1.2: + resolution: {integrity: sha512-Dx770ai81ohflojxhU+oG+Z2QGvKdYxgEr9OSA8UVrqhwNHjfH9A8f5NKfg83fEH8ZFA5N5llJo5T3PIoZ4CRA==} + engines: {node: '>= 10.4.0'} + dev: true - fill-range@7.0.1: + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - filter-obj@1.1.0: {} + /filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + dev: false - finalhandler@1.1.2: + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -21230,8 +15339,11 @@ snapshots: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: false - finalhandler@1.2.0: + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -21242,148 +15354,255 @@ snapshots: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: true - find-cache-dir@2.1.0: + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 - find-cache-dir@3.3.2: + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} dependencies: commondir: 1.0.1 make-dir: 3.1.0 pkg-dir: 4.2.0 + dev: true - find-up-simple@1.0.0: {} + /find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + dev: false - find-up@3.0.0: + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} dependencies: locate-path: 3.0.0 - find-up@4.1.0: + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - find-up@5.0.0: + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@6.3.0: + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: locate-path: 7.2.0 path-exists: 5.0.0 - find-yarn-workspace-root2@1.2.16: + /find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: - micromatch: 4.0.5 + micromatch: 4.0.7 pkg-dir: 4.2.0 + dev: false - flat-cache@3.2.0: + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 + dev: true - flat@4.1.1: + /flat@4.1.1: + resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} + hasBin: true dependencies: is-buffer: 2.0.5 - flatted@3.3.1: {} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true - flattie@1.1.1: {} + /flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + dev: false - flow-enums-runtime@0.0.6: {} + /flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + dev: false - flow-parser@0.235.1: {} + /flow-parser@0.238.3: + resolution: {integrity: sha512-hNUhucq8V6KWSX1skXUS3vnDmrRNuKWzDvEVK5b+n97uMF32zj2y8pmcLDQEqlY5u926B0GYGWT/3XhwDJfLOQ==} + engines: {node: '>=0.4.0'} - follow-redirects@1.15.6(debug@4.3.4): + /follow-redirects@1.15.6(debug@4.3.5): + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true dependencies: - debug: 4.3.4 + debug: 4.3.5 - for-each@0.3.3: + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - foreground-child@3.1.1: + /foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: {} - - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/beb836e33f9a207f4927abb7cd09ad0afe4b3f9f: {} - - form-data-encoder@2.1.4: {} + /form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + dev: true - form-data@4.0.0: + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - forwarded@0.2.0: {} + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fraction.js@4.3.7: {} + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} - fresh@0.5.2: {} + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: true + + /fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true - fs-extra@11.2.0: + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - fs-extra@7.0.1: + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: false - fs-extra@8.1.0: + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: false - fs-minipass@2.1.0: + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 + dev: true - fs.realpath@1.0.0: {} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.2: + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true optional: true - fsevents@2.3.3: + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true - function-bind@1.1.2: {} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 functions-have-names: 1.2.3 + dev: true - functional-red-black-tree@1.0.1: {} + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true - functions-have-names@1.2.3: {} + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true - futoin-hkdf@1.5.3: {} + /futoin-hkdf@1.5.3: + resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} + engines: {node: '>=8'} + dev: false - gensync@1.0.0-beta.2: {} + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: {} + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: false - get-east-asian-width@1.2.0: {} + /get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + dev: false - get-func-name@2.0.2: {} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true - get-intrinsic@1.2.4: + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 function-bind: 1.1.2 @@ -21391,25 +15610,50 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 - get-iterator@1.0.2: {} + /get-iterator@1.0.2: + resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} + dev: false + + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: true + + /get-npm-tarball-url@2.1.0: + resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} + engines: {node: '>=12.17'} + dev: true - get-port-please@3.1.2: {} + /get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + dev: false - get-stream@6.0.1: {} + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} - get-stream@8.0.1: {} + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} - get-symbol-description@1.0.2: + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 + dev: true - get-tsconfig@4.7.3: + /get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} dependencies: resolve-pkg-maps: 1.0.0 + dev: true - giget@1.2.3: + /giget@1.2.3: + resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} + hasBin: true dependencies: citty: 0.1.6 consola: 3.2.3 @@ -21419,26 +15663,42 @@ snapshots: ohash: 1.1.3 pathe: 1.1.2 tar: 6.2.1 + dev: true - github-slugger@2.0.0: {} + /github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - glob@10.3.12: + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob@10.4.2: + resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.1.0 - path-scurry: 1.10.2 + foreground-child: 3.2.1 + jackspeak: 3.4.0 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 - glob@7.2.3: + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -21447,28 +15707,43 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 + dev: true - globals@11.12.0: {} + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} - globals@13.24.0: + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true - globalthis@1.0.4: + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 gopd: 1.0.1 + dev: true - globalyzer@0.1.0: {} + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - globby@11.1.0: + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -21477,15 +15752,9 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 4.0.0 - - globby@14.0.2: + /globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} dependencies: '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.2 @@ -21493,14 +15762,19 @@ snapshots: path-type: 5.0.0 slash: 5.1.0 unicorn-magic: 0.1.0 + dev: true - globrex@0.1.2: {} + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - gopd@1.0.1: + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.4 - got@12.6.1: + /got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} dependencies: '@sindresorhus/is': 5.6.0 '@szmarczak/http-timer': 5.0.1 @@ -21513,29 +15787,53 @@ snapshots: lowercase-keys: 3.0.0 p-cancelable: 3.0.0 responselike: 3.0.0 + dev: true - graceful-fs@4.2.10: {} + /graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true - graceful-fs@4.2.11: {} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grapheme-splitter@1.0.4: {} + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: false - graphemer@1.4.0: {} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true - gray-matter@4.0.3: + /gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} dependencies: js-yaml: 3.14.1 kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 + dev: false + + /gunzip-maybe@1.4.2: + resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} + hasBin: true + dependencies: + browserify-zlib: 0.1.4 + is-deflate: 1.0.0 + is-gzip: 1.0.0 + peek-stream: 1.1.3 + pumpify: 1.5.1 + through2: 2.0.5 + dev: true - h3@1.11.1: + /h3@1.12.0: + resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} dependencies: cookie-es: 1.1.0 crossws: 0.2.4 defu: 6.1.4 destr: 2.0.3 - iron-webcrypto: 1.1.1 + iron-webcrypto: 1.2.1 ohash: 1.1.3 radix3: 1.1.2 ufo: 1.5.3 @@ -21543,48 +15841,86 @@ snapshots: unenv: 1.9.0 transitivePeerDependencies: - uWebSockets.js + dev: false + + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.18.0 + dev: true - has-bigints@1.0.2: {} + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true - has-flag@3.0.0: {} + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} - has-flag@4.0.0: {} + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - has-property-descriptors@1.0.2: + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 - has-proto@1.0.3: {} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} - has-symbols@1.0.3: {} + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - hash-base@3.1.0: + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} dependencies: inherits: 2.0.4 readable-stream: 3.6.2 safe-buffer: 5.2.1 + dev: false - hash.js@1.1.7: + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - hashlru@2.3.0: {} + /hashlru@2.3.0: + resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} + dev: false - hasown@2.0.2: + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - hast-util-embedded@3.0.0: + /hast-util-embedded@3.0.0: + resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} dependencies: '@types/hast': 3.0.4 hast-util-is-element: 3.0.0 + dev: false - hast-util-from-html@2.0.1: + /hast-util-from-html@2.0.1: + resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} dependencies: '@types/hast': 3.0.4 devlop: 1.1.0 @@ -21592,8 +15928,10 @@ snapshots: parse5: 7.1.2 vfile: 6.0.1 vfile-message: 4.0.2 + dev: false - hast-util-from-parse5@8.0.1: + /hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -21603,36 +15941,49 @@ snapshots: vfile: 6.0.1 vfile-location: 5.0.2 web-namespaces: 2.0.1 + dev: false - hast-util-has-property@3.0.0: + /hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} dependencies: '@types/hast': 3.0.4 + dev: false - hast-util-heading-rank@3.0.0: + /hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} dependencies: '@types/hast': 3.0.4 + dev: true - hast-util-is-body-ok-link@3.0.0: + /hast-util-is-body-ok-link@3.0.0: + resolution: {integrity: sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==} dependencies: '@types/hast': 3.0.4 + dev: false - hast-util-is-element@3.0.0: + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} dependencies: '@types/hast': 3.0.4 - hast-util-parse-selector@4.0.0: + /hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} dependencies: '@types/hast': 3.0.4 + dev: false - hast-util-phrasing@3.0.1: + /hast-util-phrasing@3.0.1: + resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} dependencies: '@types/hast': 3.0.4 hast-util-embedded: 3.0.0 hast-util-has-property: 3.0.0 hast-util-is-body-ok-link: 3.0.0 hast-util-is-element: 3.0.0 + dev: false - hast-util-raw@9.0.3: + /hast-util-raw@9.0.4: + resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -21640,15 +15991,17 @@ snapshots: hast-util-from-parse5: 8.0.1 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 parse5: 7.1.2 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 vfile: 6.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 + dev: false - hast-util-select@6.0.2: + /hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -21666,8 +16019,10 @@ snapshots: space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 zwitch: 2.0.4 + dev: false - hast-util-to-estree@3.1.0: + /hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} dependencies: '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.5 @@ -21687,23 +16042,27 @@ snapshots: zwitch: 2.0.4 transitivePeerDependencies: - supports-color + dev: false - hast-util-to-html@9.0.1: + /hast-util-to-html@9.0.1: + resolution: {integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==} dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 ccount: 2.0.1 comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.3 + hast-util-raw: 9.0.4 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 property-information: 6.5.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 + dev: false - hast-util-to-jsx-runtime@2.3.0: + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} dependencies: '@types/estree': 1.0.5 '@types/hast': 3.0.4 @@ -21722,8 +16081,10 @@ snapshots: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color + dev: false - hast-util-to-parse5@8.0.0: + /hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -21732,93 +16093,134 @@ snapshots: space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 + dev: false - hast-util-to-string@3.0.0: + /hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} dependencies: '@types/hast': 3.0.4 - hast-util-to-text@4.0.2: + /hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 + dev: false - hast-util-whitespace@3.0.0: + /hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: '@types/hast': 3.0.4 + dev: false - hastscript@8.0.0: + /hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.5.0 space-separated-tokens: 2.0.2 + dev: false - hastscript@9.0.0: + /hastscript@9.0.0: + resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.5.0 space-separated-tokens: 2.0.2 + dev: false - header-case@2.0.4: - dependencies: - capital-case: 1.0.4 - tslib: 2.6.2 - - hermes-estree@0.19.1: {} + /hermes-estree@0.19.1: + resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} + dev: false - hermes-estree@0.20.1: {} + /hermes-estree@0.20.1: + resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} + dev: false - hermes-parser@0.19.1: + /hermes-parser@0.19.1: + resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} dependencies: hermes-estree: 0.19.1 + dev: false - hermes-parser@0.20.1: + /hermes-parser@0.20.1: + resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} dependencies: hermes-estree: 0.20.1 + dev: false - hermes-profile-transformer@0.0.6: + /hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} dependencies: source-map: 0.7.4 + dev: false - hey-listen@1.0.8: {} + /hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + dev: false - hmac-drbg@1.0.1: + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - html-encoding-sniffer@4.0.0: + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} dependencies: whatwg-encoding: 3.1.1 + dev: true - html-escaper@2.0.2: {} + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true - html-escaper@3.0.3: {} + /html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + dev: false - html-parse-stringify@3.0.1: + /html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} dependencies: void-elements: 3.1.0 + dev: false - html-void-elements@3.0.0: {} + /html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + dev: false - html-whitespace-sensitive-tag-names@3.0.0: {} + /html-whitespace-sensitive-tag-names@3.0.0: + resolution: {integrity: sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==} + dev: false - htmlparser2-svelte@4.1.0: + /htmlparser2-svelte@4.1.0: + resolution: {integrity: sha512-+4f4RBFz7Rj2Hp0ZbFbXC+Kzbd6S9PgjiuFtdT76VMNgKogrEZy0pG2UrPycPbrZzVEIM5lAT3lAdkSTCHLPjg==} dependencies: domelementtype: 2.3.0 domhandler: 3.3.0 domutils: 2.8.0 entities: 2.2.0 + dev: true - http-cache-semantics@4.1.1: {} + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - http-errors@2.0.0: + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 inherits: 2.0.4 @@ -21826,154 +16228,243 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-proxy-agent@7.0.2: + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} dependencies: agent-base: 7.1.1 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color + dev: true - http-shutdown@1.2.2: {} + /http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: false - http2-wrapper@2.2.1: + /http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + dev: true - https-proxy-agent@7.0.4: + /https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} dependencies: agent-base: 7.1.1 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color + dev: true - human-id@1.0.2: {} + /human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + dev: false - human-signals@2.1.0: {} + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} - human-signals@5.0.0: {} + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} - i18next-browser-languagedetector@7.1.0: + /i18next-browser-languagedetector@7.1.0: + resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 + dev: false - i18next@22.5.1: + /i18next@22.5.1: + resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 + dev: false - i18next@23.11.5: + /i18next@23.11.5: + resolution: {integrity: sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 + dev: false - iconv-lite@0.4.24: + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - iconv-lite@0.6.3: + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - idb-keyval@6.2.1: {} + /idb-keyval@6.2.1: + resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + dev: false - ieee754@1.2.1: {} + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore-walk@5.0.1: + /ignore-walk@5.0.1: + resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: minimatch: 5.1.6 + dev: true - ignore@4.0.6: {} + /ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true - ignore@5.3.1: {} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} - image-size@1.1.1: + /image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true dependencies: queue: 6.0.2 + dev: false - import-fresh@2.0.0: + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} dependencies: caller-path: 2.0.0 resolve-from: 3.0.0 + dev: false - import-fresh@3.3.0: + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true - import-meta-resolve@4.1.0: {} + /import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} - indent-string@4.0.0: {} + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.4: {} + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: {} + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true - inline-style-parser@0.1.1: {} + /inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: false - inline-style-parser@0.2.3: {} + /inline-style-parser@0.2.3: + resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} + dev: false - interface-datastore@7.0.4: + /interface-datastore@7.0.4: + resolution: {integrity: sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: interface-store: 3.0.4 nanoid: 4.0.2 uint8arrays: 4.0.10 + dev: false - interface-datastore@8.2.11: + /interface-datastore@8.2.11: + resolution: {integrity: sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA==} dependencies: interface-store: 5.1.8 uint8arrays: 5.1.0 + dev: false - interface-store@3.0.4: {} + /interface-store@3.0.4: + resolution: {integrity: sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - interface-store@5.1.8: {} + /interface-store@5.1.8: + resolution: {integrity: sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==} + dev: false - internal-slot@1.0.7: + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.0.6 + dev: true - intl-messageformat@10.5.11: + /intl-messageformat@10.5.14: + resolution: {integrity: sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==} dependencies: - '@formatjs/ecma402-abstract': 1.18.2 + '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/fast-memoize': 2.2.0 - '@formatjs/icu-messageformat-parser': 2.7.6 - tslib: 2.6.2 + '@formatjs/icu-messageformat-parser': 2.7.8 + tslib: 2.6.3 - invariant@2.2.4: + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 - ipaddr.js@1.9.1: {} + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true - ipfs-core-types@0.14.1: + /ipfs-core-types@0.14.1: + resolution: {integrity: sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details dependencies: - '@ipld/dag-pb': 4.1.0 + '@ipld/dag-pb': 4.1.2 '@libp2p/interface-keychain': 2.0.5 '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interface-peer-info': 1.0.10 '@libp2p/interface-pubsub': 3.0.7 '@multiformats/multiaddr': 11.6.1 - '@types/node': 18.19.31 + '@types/node': 18.19.39 interface-datastore: 7.0.4 ipfs-unixfs: 9.0.1 multiformats: 11.0.2 transitivePeerDependencies: - supports-color + dev: false - ipfs-core-utils@0.18.1: + /ipfs-core-utils@0.18.1: + resolution: {integrity: sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details dependencies: '@libp2p/logger': 2.1.1 '@multiformats/multiaddr': 11.6.1 '@multiformats/multiaddr-to-uri': 9.0.8 any-signal: 3.0.1 - blob-to-it: 2.0.6 + blob-to-it: 2.0.7 browser-readablestream-to-it: 2.0.7 err-code: 3.0.1 ipfs-core-types: 0.14.1 @@ -21992,12 +16483,16 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - ipfs-http-client@60.0.1: + /ipfs-http-client@60.0.1: + resolution: {integrity: sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details dependencies: - '@ipld/dag-cbor': 9.2.0 - '@ipld/dag-json': 10.2.0 - '@ipld/dag-pb': 4.1.0 + '@ipld/dag-cbor': 9.2.1 + '@ipld/dag-json': 10.2.2 + '@ipld/dag-pb': 4.1.2 '@libp2p/logger': 2.1.1 '@libp2p/peer-id': 2.0.4 '@multiformats/multiaddr': 11.6.1 @@ -22017,13 +16512,19 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - ipfs-unixfs@9.0.1: + /ipfs-unixfs@9.0.1: + resolution: {integrity: sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: err-code: 3.0.1 - protobufjs: 7.3.0 + protobufjs: 7.3.2 + dev: false - ipfs-utils@9.0.14: + /ipfs-utils@9.0.14: + resolution: {integrity: sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: any-signal: 3.0.1 browser-readablestream-to-it: 1.0.3 @@ -22043,258 +16544,483 @@ snapshots: stream-to-it: 0.2.4 transitivePeerDependencies: - encoding + dev: false - iron-webcrypto@1.1.1: {} + /iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + dev: false - is-absolute-url@4.0.1: {} + /is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-alphabetical@2.0.1: {} + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + dev: false - is-alphanumerical@2.0.1: + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 + dev: false - is-arguments@1.1.1: + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-array-buffer@3.0.4: + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 + dev: true - is-arrayish@0.2.1: {} + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: {} + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false - is-bigint@1.0.4: + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 + dev: true - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.3.0 - is-boolean-object@1.1.2: + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 + dev: true - is-buffer@2.0.5: {} + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} - is-builtin-module@3.2.1: + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 + dev: true - is-callable@1.2.7: {} + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} - is-core-module@2.13.1: + /is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} + engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 - is-data-view@1.0.1: + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} dependencies: is-typed-array: 1.1.13 + dev: true - is-date-object@1.0.5: + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true + + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + dev: false - is-decimal@2.0.1: {} + /is-deflate@1.0.0: + resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + dev: true - is-directory@0.3.1: {} + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + dev: false - is-docker@2.2.1: {} + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true - is-docker@3.0.0: {} + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: false - is-electron@2.2.2: {} + /is-electron@2.2.2: + resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} + dev: false - is-extendable@0.1.1: {} + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false - is-extglob@2.1.1: {} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - is-fullwidth-code-point@2.0.0: {} + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: false - is-fullwidth-code-point@3.0.0: {} + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} - is-generator-function@1.0.10: + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - is-glob@4.0.3: + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - is-hex-prefixed@1.0.0: {} + /is-gzip@1.0.0: + resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: false - is-hexadecimal@2.0.1: {} + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + dev: false - is-inside-container@1.0.0: + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true dependencies: is-docker: 3.0.0 + dev: false - is-interactive@1.0.0: {} + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + /is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} - is-interactive@2.0.0: {} + /is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + dev: true - is-negative-zero@2.0.3: {} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true - is-number-object@1.0.7: + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true - is-number@7.0.0: {} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: {} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true - is-plain-obj@2.1.0: {} + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: false - is-plain-obj@4.1.0: {} + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false - is-plain-object@2.0.4: + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - is-potential-custom-element-name@1.0.1: {} + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true - is-promise@2.2.2: {} + /is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - is-reference@3.0.2: + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: '@types/estree': 1.0.5 - is-regex@1.1.4: + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 + dev: true - is-shared-array-buffer@1.0.3: + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 + dev: true - is-stream@2.0.1: {} + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} - is-stream@3.0.0: {} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-string@1.0.7: + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true - is-subdir@1.2.0: + /is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 + dev: false - is-symbol@1.0.4: + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true - is-typed-array@1.1.13: + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.15 - is-unicode-supported@0.1.0: {} + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} - is-unicode-supported@1.3.0: {} + /is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} - is-unicode-supported@2.0.0: {} + /is-unicode-supported@2.0.0: + resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + engines: {node: '>=18'} + dev: false - is-weakref@1.0.2: + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.7 + dev: true - is-windows@1.0.2: {} + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: false - is-wsl@1.1.0: {} + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: false - is-wsl@2.2.0: + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - is-wsl@3.1.0: + /is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} dependencies: is-inside-container: 1.0.0 + dev: false - is64bit@2.0.0: + /is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} dependencies: system-architecture: 0.1.0 + dev: false - isarray@1.0.0: {} + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isarray@2.0.5: {} + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isexe@3.1.1: {} + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: true - iso-url@1.2.1: {} + /iso-url@1.2.1: + resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} + engines: {node: '>=12'} + dev: false - isobject@3.0.1: {} + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} - isomorphic-unfetch@3.1.0: + /isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} dependencies: node-fetch: 2.7.0 unfetch: 4.2.0 transitivePeerDependencies: - encoding + dev: false - isows@1.0.3(ws@8.13.0): + /isows@1.0.3(ws@8.13.0): + resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + peerDependencies: + ws: '*' dependencies: ws: 8.13.0 + dev: false - isows@1.0.4(ws@8.17.1): + /isows@1.0.4(ws@8.17.1): + resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} + peerDependencies: + ws: '*' dependencies: ws: 8.17.1 - istanbul-lib-coverage@3.2.2: {} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true - istanbul-lib-report@3.0.1: + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 + dev: true - istanbul-lib-source-maps@5.0.4: + /istanbul-lib-source-maps@5.0.5: + resolution: {integrity: sha512-gKf4eJ8bHmSX/ljiOCpnd8vtmHTwG71uugm0kXYd5aqFCl6z8cj8k7QduXSwU6QOst6LCdSXTlaoc8W4554crQ==} + engines: {node: '>=10'} dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.4 + debug: 4.3.5 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color + dev: true - istanbul-reports@3.1.7: + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + dev: true - it-all@1.0.6: {} + /it-all@1.0.6: + resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} + dev: false - it-all@2.0.1: {} + /it-all@2.0.1: + resolution: {integrity: sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - it-first@2.0.1: {} + /it-first@2.0.1: + resolution: {integrity: sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - it-glob@1.0.2: + /it-glob@1.0.2: + resolution: {integrity: sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==} dependencies: '@types/minimatch': 3.0.5 minimatch: 3.1.2 + dev: false - it-last@2.0.1: {} + /it-last@2.0.1: + resolution: {integrity: sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - it-map@2.0.1: {} + /it-map@2.0.1: + resolution: {integrity: sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - it-peekable@2.0.1: {} + /it-peekable@2.0.1: + resolution: {integrity: sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - it-pushable@3.2.3: + /it-pushable@3.2.3: + resolution: {integrity: sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==} dependencies: p-defer: 4.0.1 + dev: false - it-stream-types@1.0.5: {} + /it-stream-types@1.0.5: + resolution: {integrity: sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - it-stream-types@2.0.1: {} + /it-stream-types@2.0.1: + resolution: {integrity: sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - it-to-stream@1.0.0: + /it-to-stream@1.0.0: + resolution: {integrity: sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==} dependencies: buffer: 6.0.3 fast-fifo: 1.3.2 @@ -22302,66 +17028,100 @@ snapshots: p-defer: 3.0.0 p-fifo: 1.0.0 readable-stream: 3.6.2 + dev: false - jackspeak@2.3.6: + /jackspeak@3.4.0: + resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} + engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jest-diff@29.7.0: + /jake@10.9.1: + resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.5 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-environment-node@29.7.0: + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.14.9 jest-mock: 29.7.0 jest-util: 29.7.0 + dev: false - jest-get-type@29.6.3: {} + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-matcher-utils@29.7.0: + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-message-util@29.7.0: + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.7 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@29.7.0: + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.14.9 jest-util: 29.7.0 + dev: false - jest-util@29.7.0: + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.14.9 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-validate@29.7.0: + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 camelcase: 6.3.0 @@ -22369,60 +17129,85 @@ snapshots: jest-get-type: 29.6.3 leven: 3.1.0 pretty-format: 29.7.0 + dev: false - jest-worker@29.7.0: + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: false - jiti@1.21.0: {} + /jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true - joi@17.13.1: + /joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 '@sideway/address': 4.1.5 '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + dev: false - js-sha3@0.8.0: {} + /js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - js-tokens@4.0.0: {} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.0: {} + /js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + dev: true - js-yaml@3.14.1: + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 + dev: false - js-yaml@4.1.0: + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 - jsc-android@250231.0.0: {} + /jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + dev: false - jsc-safe-url@0.2.4: {} + /jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + dev: false - jscodeshift@0.14.0(@babel/preset-env@7.24.5): + /jscodeshift@0.14.0(@babel/preset-env@7.24.7): + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 dependencies: '@babel/core': 7.25.2 '@babel/parser': 7.25.3 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.25.2) - '@babel/preset-env': 7.24.5(@babel/core@7.25.2) - '@babel/preset-flow': 7.24.1(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.1(@babel/core@7.25.2) - '@babel/register': 7.23.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.25.2) + '@babel/preset-env': 7.24.7(@babel/core@7.25.2) + '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/register': 7.24.6(@babel/core@7.25.2) babel-core: 7.0.0-bridge.0(@babel/core@7.25.2) chalk: 4.1.2 - flow-parser: 0.235.1 + flow-parser: 0.238.3 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.7 neo-async: 2.6.2 node-dir: 0.1.17 recast: 0.21.5 @@ -22430,25 +17215,33 @@ snapshots: write-file-atomic: 2.4.3 transitivePeerDependencies: - supports-color + dev: false - jscodeshift@0.15.2(@babel/preset-env@7.24.5): - dependencies: - '@babel/core': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/preset-env': 7.24.5(@babel/core@7.24.5) - '@babel/preset-flow': 7.24.1(@babel/core@7.24.5) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) - '@babel/register': 7.23.7(@babel/core@7.24.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) + /jscodeshift@0.15.2(@babel/preset-env@7.24.7): + resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true + dependencies: + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7) + '@babel/preset-env': 7.24.7(@babel/core@7.24.7) + '@babel/preset-flow': 7.24.7(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/register': 7.24.6(@babel/core@7.24.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.7) chalk: 4.1.2 - flow-parser: 0.235.1 + flow-parser: 0.238.3 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.7 neo-async: 2.6.2 node-dir: 0.1.17 recast: 0.23.9 @@ -22456,8 +17249,16 @@ snapshots: write-file-atomic: 2.4.3 transitivePeerDependencies: - supports-color + dev: true - jsdom@24.0.0: + /jsdom@24.1.0: + resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -22465,11 +17266,11 @@ snapshots: form-data: 4.0.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.9 + nwsapi: 2.2.10 parse5: 7.1.2 - rrweb-cssom: 0.6.0 + rrweb-cssom: 0.7.1 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.4 @@ -22478,141 +17279,266 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.17.0 + ws: 8.17.1 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate + dev: true - jsesc@0.5.0: {} + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true - jsesc@2.5.2: {} + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true - json-buffer@3.0.1: {} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true - json-parse-better-errors@1.0.2: {} + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: false - json-parse-even-better-errors@2.3.1: {} + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true - json-rpc-engine@6.1.0: + /json-rpc-engine@6.1.0: + resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} + engines: {node: '>=10.0.0'} dependencies: '@metamask/safe-event-emitter': 2.0.0 eth-rpc-errors: 4.0.3 + dev: false - json-rpc-random-id@1.0.1: {} + /json-rpc-random-id@1.0.1: + resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} + dev: false - json-schema-traverse@0.4.1: {} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true - json-schema-traverse@1.0.0: {} + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-stable-stringify-without-jsonify@1.0.1: {} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true - json-to-ast@2.1.0: + /json-to-ast@2.1.0: + resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} + engines: {node: '>= 4'} dependencies: code-error-fragment: 0.0.230 grapheme-splitter: 1.0.4 + dev: false - json5@1.0.2: + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true dependencies: minimist: 1.2.8 + dev: true - json5@2.2.3: {} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true - jsonc-parser@2.3.1: {} + /jsonc-parser@2.3.1: + resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + dev: false - jsonfile@4.0.0: + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 + dev: false - jsonfile@6.1.0: + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - jsonpointer@5.0.1: {} + /jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + dev: false - keccak@3.0.4: + /keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + requiresBuild: true dependencies: node-addon-api: 2.0.2 node-gyp-build: 4.8.1 readable-stream: 3.6.2 + dev: false - keyv@4.5.4: + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 + dev: true - keyvaluestorage-interface@1.0.0: {} + /keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + dev: false - kind-of@6.0.3: {} + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} - kleur@3.0.3: {} + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} - kleur@4.1.5: {} + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} - known-css-properties@0.30.0: {} + /known-css-properties@0.34.0: + resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} + dev: true - latest-version@7.0.0: + /latest-version@7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} dependencies: package-json: 8.1.1 + dev: true + + /lazy-universal-dotenv@4.0.0: + resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} + engines: {node: '>=14.0.0'} + dependencies: + app-root-dir: 1.0.2 + dotenv: 16.4.5 + dotenv-expand: 10.0.0 + dev: true - lefthook-darwin-arm64@1.6.10: + /lefthook-darwin-arm64@1.6.18: + resolution: {integrity: sha512-AkpsTeO7aLZIIy6CKQ7Chx8RltE8a9uItbwQWoeaCkIdzpV8TFjq7/Pw4F5CkoJ2315sHtB8k+VFkgipQMBw1w==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - lefthook-darwin-x64@1.6.10: + /lefthook-darwin-x64@1.6.18: + resolution: {integrity: sha512-qwKa+PaNIYjZ2PVrRRLq+HjNjQsjEItXN21byvSD89r7EYCULsIC8aW4H6aniOP2A6X1DIZ+djpg+3hNJ/94NA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - lefthook-freebsd-arm64@1.6.10: + /lefthook-freebsd-arm64@1.6.18: + resolution: {integrity: sha512-UIOzQ+okwB7Ah9p8sNqomOiU6cPfmJnyW3HDPutRsdoHRD8udIap9d+ja4Kg4m/PkoYtkcLO78omANqAgA5wxQ==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - lefthook-freebsd-x64@1.6.10: + /lefthook-freebsd-x64@1.6.18: + resolution: {integrity: sha512-UQANUgyNpaAh0+2/PjPFiJ7yd6aF15yyJxKZCXyna5cQF7VU8pSHu5tiDDquNpjToXOg+6TmiIAJKyfrrwTF3w==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - lefthook-linux-arm64@1.6.10: + /lefthook-linux-arm64@1.6.18: + resolution: {integrity: sha512-4erletIa2HKUgY17/1ROvndAj6xn/9wkqO2GhBT3C0vFwIv6ycy5wpFzXOwKRZpFYv7UacN7iXhAZSK+vSOZZg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - lefthook-linux-x64@1.6.10: + /lefthook-linux-x64@1.6.18: + resolution: {integrity: sha512-l5SRqYMYygw9RjZncEg8uh29wShYN8kiYr53sp74DkntrlCttqWhLILBUlIr3fxH5s0ZyrmqUEjtMBryMk7b/g==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - lefthook-windows-arm64@1.6.10: + /lefthook-windows-arm64@1.6.18: + resolution: {integrity: sha512-jeNBRoya3+mOEsKyT4wXf29Kng1nkJD7Uv/dqGBszoGMktGVNUFdIjWoxx6HSfhUssucs5pKRZpXSMgK/KCP+Q==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - lefthook-windows-x64@1.6.10: + /lefthook-windows-x64@1.6.18: + resolution: {integrity: sha512-iEG8PbFOwMqlpAgCiqzANTxutERjwlwMx6WF6HDGEYwFJSCJsvi06TehDxaPIFbhmLLYYlbVrfSBlttWGoN0dg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - lefthook@1.6.10: + /lefthook@1.6.18: + resolution: {integrity: sha512-Ftr/NkU1P1EsEyphsCqCX7lesGZA+QDXyUx4dS1RlSKB72xKtGW9VPjbGLK2kSQkONG5M+XYfbJkGA/r9NLTYQ==} + hasBin: true + requiresBuild: true optionalDependencies: - lefthook-darwin-arm64: 1.6.10 - lefthook-darwin-x64: 1.6.10 - lefthook-freebsd-arm64: 1.6.10 - lefthook-freebsd-x64: 1.6.10 - lefthook-linux-arm64: 1.6.10 - lefthook-linux-x64: 1.6.10 - lefthook-windows-arm64: 1.6.10 - lefthook-windows-x64: 1.6.10 - - leven@3.1.0: {} + lefthook-darwin-arm64: 1.6.18 + lefthook-darwin-x64: 1.6.18 + lefthook-freebsd-arm64: 1.6.18 + lefthook-freebsd-x64: 1.6.18 + lefthook-linux-arm64: 1.6.18 + lefthook-linux-x64: 1.6.18 + lefthook-windows-arm64: 1.6.18 + lefthook-windows-x64: 1.6.18 + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} - levn@0.4.1: + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true - lighthouse-logger@1.4.2: + /lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} dependencies: debug: 2.6.9 marky: 1.2.5 transitivePeerDependencies: - supports-color + dev: false - lilconfig@2.1.0: {} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} - lilconfig@3.1.1: {} + /lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} - lines-and-columns@1.2.4: {} + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - listhen@1.7.2: + /listhen@1.7.2: + resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} + hasBin: true dependencies: '@parcel/watcher': 2.4.1 '@parcel/watcher-wasm': 2.4.1 @@ -22622,10 +17548,10 @@ snapshots: crossws: 0.2.4 defu: 6.1.4 get-port-please: 3.1.2 - h3: 1.11.1 + h3: 1.12.0 http-shutdown: 1.2.2 - jiti: 1.21.0 - mlly: 1.7.0 + jiti: 1.21.6 + mlly: 1.7.1 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.7.0 @@ -22634,226 +17560,337 @@ snapshots: uqr: 0.1.2 transitivePeerDependencies: - uWebSockets.js + dev: false - lit-element@3.3.3: + /lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 + dev: false - lit-element@4.0.5: + /lit-element@4.0.6: + resolution: {integrity: sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==} dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 2.0.4 - lit-html: 3.1.3 + lit-html: 3.1.4 + dev: false - lit-html@2.8.0: + /lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} dependencies: '@types/trusted-types': 2.0.7 + dev: false - lit-html@3.1.3: + /lit-html@3.1.4: + resolution: {integrity: sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==} dependencies: '@types/trusted-types': 2.0.7 + dev: false - lit@2.8.0: + /lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} dependencies: '@lit/reactive-element': 1.6.3 lit-element: 3.3.3 lit-html: 2.8.0 + dev: false - lit@3.1.0: + /lit@3.1.0: + resolution: {integrity: sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==} dependencies: '@lit/reactive-element': 2.0.4 - lit-element: 4.0.5 - lit-html: 3.1.3 + lit-element: 4.0.6 + lit-html: 3.1.4 + dev: false - load-tsconfig@0.2.5: {} + /load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - load-yaml-file@0.2.0: + /load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 + dev: false - local-pkg@0.5.0: + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} dependencies: - mlly: 1.7.0 - pkg-types: 1.1.0 + mlly: 1.7.1 + pkg-types: 1.1.2 + dev: true - locate-character@3.0.0: {} + /locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - locate-path@3.0.0: + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - locate-path@5.0.0: + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - locate-path@6.0.0: + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - locate-path@7.2.0: + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-locate: 6.0.0 - lodash.debounce@4.0.8: {} + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.isequal@4.5.0: {} + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false - lodash.merge@4.6.2: {} + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true - lodash.startcase@4.4.0: {} + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: false - lodash.throttle@4.1.1: {} + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: false - lodash.truncate@4.4.2: {} + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true - lodash@4.17.21: {} + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@4.1.0: + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - log-symbols@5.1.0: + /log-symbols@5.1.0: + resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} + engines: {node: '>=12'} dependencies: chalk: 5.3.0 is-unicode-supported: 1.3.0 - log-symbols@6.0.0: + /log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} dependencies: chalk: 5.3.0 is-unicode-supported: 1.3.0 + dev: false - logkitty@0.7.1: + /logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true dependencies: ansi-fragments: 0.2.1 dayjs: 1.11.11 yargs: 15.4.1 + dev: false - lokijs@1.5.12: {} + /lokijs@1.5.12: + resolution: {integrity: sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==} + dev: true - long@5.2.3: {} + /long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + dev: false - longest-streak@3.1.0: {} + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: false - loose-envify@1.4.0: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: js-tokens: 4.0.0 - loupe@2.3.7: + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 + dev: true - lower-case@2.0.2: + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 + dev: true - lowercase-keys@3.0.0: {} + /lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - lru-cache@10.2.2: {} + /lru-cache@10.3.0: + resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==} + engines: {node: 14 || >=16.14} - lru-cache@4.1.5: + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 + dev: false - lru-cache@5.1.1: + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - lru-queue@0.1.0: + /lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} dependencies: es5-ext: 0.10.64 - lz-string@1.5.0: {} + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true - magic-string@0.30.10: + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - magic-string@0.30.11: + /magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - magicast@0.3.4: + /magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 source-map-js: 1.2.0 + dev: true - make-dir@2.1.0: + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} dependencies: pify: 4.0.1 semver: 5.7.2 - make-dir@3.1.0: + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} dependencies: semver: 6.3.1 + dev: true - make-dir@4.0.0: + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: - semver: 7.6.2 + semver: 7.6.3 + dev: true - make-error@1.3.6: {} + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true - makeerror@1.0.12: + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 + dev: false - map-or-similar@1.5.0: {} + /map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + dev: true - markdown-extensions@2.0.0: {} + /markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + dev: false - markdown-table@3.0.3: {} + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + dev: false - markdown-to-jsx@7.4.7(react@18.3.1): + /markdown-to-jsx@7.3.2(react@18.3.1): + resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==} + engines: {node: '>= 10'} + peerDependencies: + react: '>= 0.14.0' dependencies: react: 18.3.1 + dev: true - marky@1.2.5: {} + /marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + dev: false - md5.js@1.3.5: + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - mdast-util-definitions@6.0.0: + /mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.2 unist-util-visit: 5.0.0 + dev: false - mdast-util-directive@3.0.0: + /mdast-util-directive@3.0.0: + resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.2 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 stringify-entities: 4.0.4 unist-util-visit-parents: 6.0.1 transitivePeerDependencies: - supports-color + dev: false - mdast-util-find-and-replace@3.0.1: + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} dependencies: '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + dev: false - mdast-util-from-markdown@2.0.0: + /mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.2 @@ -22869,55 +17906,67 @@ snapshots: unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-autolink-literal@2.0.0: + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} dependencies: '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 micromark-util-character: 2.1.0 + dev: false - mdast-util-gfm-footnote@2.0.0: + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-strikethrough@2.0.0: + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-table@2.0.0: + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-task-list-item@2.0.0: + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm@3.0.0: + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} dependencies: - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-gfm-autolink-literal: 2.0.0 mdast-util-gfm-footnote: 2.0.0 mdast-util-gfm-strikethrough: 2.0.0 @@ -22926,19 +17975,23 @@ snapshots: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdx-expression@2.0.0: + /mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdx-jsx@3.1.2: + /mdast-util-mdx-jsx@3.1.2: + resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -22946,7 +17999,7 @@ snapshots: '@types/unist': 3.0.2 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 stringify-entities: 4.0.4 @@ -22955,34 +18008,42 @@ snapshots: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdx@3.0.0: + /mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} dependencies: - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-mdx-expression: 2.0.0 mdast-util-mdx-jsx: 3.1.2 mdast-util-mdxjs-esm: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdxjs-esm@2.0.1: + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-phrasing@4.1.0: + /mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} dependencies: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 + dev: false - mdast-util-to-hast@13.1.0: + /mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -22993,8 +18054,10 @@ snapshots: unist-util-position: 5.0.0 unist-util-visit: 5.0.0 vfile: 6.0.2 + dev: false - mdast-util-to-markdown@2.1.0: + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.2 @@ -23004,18 +18067,29 @@ snapshots: micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 + dev: false - mdast-util-to-string@4.0.0: + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} dependencies: '@types/mdast': 4.0.4 + dev: false - mdn-data@2.0.30: {} + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - media-typer@0.3.0: {} + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true - memoize-one@5.2.1: {} + /memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + dev: false - memoizee@0.4.15: + /memoizee@0.4.17: + resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} + engines: {node: '>=0.12'} dependencies: d: 1.0.2 es5-ext: 0.10.64 @@ -23024,50 +18098,80 @@ snapshots: is-promise: 2.2.2 lru-queue: 0.1.0 next-tick: 1.1.0 - timers-ext: 0.1.7 + timers-ext: 0.1.8 - memoizerific@1.11.3: + /memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} dependencies: map-or-similar: 1.5.0 + dev: true - memorystream@0.3.1: {} + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: true - merge-descriptors@1.0.1: {} + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: true - merge-options@3.0.4: + /merge-options@3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} dependencies: is-plain-obj: 2.1.0 + dev: false - merge-stream@2.0.0: {} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: {} + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - merkletreejs@0.4.0: + /merkletreejs@0.4.0: + resolution: {integrity: sha512-a48Ta5kWiVNBgeEbZVMm6FB1hBlp6vEuou/XnZdlkmd2zq6NZR6Sh2j+kR1B0iOZIXrTMcigBYzZ39MLdYhm1g==} + engines: {node: '>= 7.6.0'} dependencies: bignumber.js: 9.1.2 buffer-reverse: 1.0.1 crypto-js: 4.2.0 treeify: 1.1.0 web3-utils: 1.10.4 + dev: false - methods@1.1.2: {} + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true - metro-babel-transformer@0.80.9: + /metro-babel-transformer@0.80.9: + resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} + engines: {node: '>=18'} dependencies: '@babel/core': 7.25.2 hermes-parser: 0.20.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + dev: false - metro-cache-key@0.80.9: {} + /metro-cache-key@0.80.9: + resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} + engines: {node: '>=18'} + dev: false - metro-cache@0.80.9: + /metro-cache@0.80.9: + resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} + engines: {node: '>=18'} dependencies: metro-core: 0.80.9 rimraf: 3.0.2 + dev: false - metro-config@0.80.9: + /metro-config@0.80.9: + resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} + engines: {node: '>=18'} dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 @@ -23081,13 +18185,19 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - metro-core@0.80.9: + /metro-core@0.80.9: + resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} + engines: {node: '>=18'} dependencies: lodash.throttle: 4.1.1 metro-resolver: 0.80.9 + dev: false - metro-file-map@0.80.9: + /metro-file-map@0.80.9: + resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} + engines: {node: '>=18'} dependencies: anymatch: 3.1.3 debug: 2.6.9 @@ -23095,7 +18205,7 @@ snapshots: graceful-fs: 4.2.11 invariant: 2.2.4 jest-worker: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.7 node-abort-controller: 3.1.1 nullthrows: 1.1.1 walker: 1.0.8 @@ -23103,18 +18213,30 @@ snapshots: fsevents: 2.3.3 transitivePeerDependencies: - supports-color + dev: false - metro-minify-terser@0.80.9: + /metro-minify-terser@0.80.9: + resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} + engines: {node: '>=18'} dependencies: - terser: 5.31.0 + terser: 5.31.1 + dev: false - metro-resolver@0.80.9: {} + /metro-resolver@0.80.9: + resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} + engines: {node: '>=18'} + dev: false - metro-runtime@0.80.9: + /metro-runtime@0.80.9: + resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} + engines: {node: '>=18'} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 + dev: false - metro-source-map@0.80.9: + /metro-source-map@0.80.9: + resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} + engines: {node: '>=18'} dependencies: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 @@ -23126,8 +18248,12 @@ snapshots: vlq: 1.0.1 transitivePeerDependencies: - supports-color + dev: false - metro-symbolicate@0.80.9: + /metro-symbolicate@0.80.9: + resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} + engines: {node: '>=18'} + hasBin: true dependencies: invariant: 2.2.4 metro-source-map: 0.80.9 @@ -23137,8 +18263,11 @@ snapshots: vlq: 1.0.1 transitivePeerDependencies: - supports-color + dev: false - metro-transform-plugins@0.80.9: + /metro-transform-plugins@0.80.9: + resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} + engines: {node: '>=18'} dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.0 @@ -23147,8 +18276,11 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + dev: false - metro-transform-worker@0.80.9: + /metro-transform-worker@0.80.9: + resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} + engines: {node: '>=18'} dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.0 @@ -23167,8 +18299,12 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - metro@0.80.9: + /metro@0.80.9: + resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} + engines: {node: '>=18'} + hasBin: true dependencies: '@babel/code-frame': 7.24.7 '@babel/core': 7.25.2 @@ -23211,17 +18347,21 @@ snapshots: source-map: 0.5.7 strip-ansi: 6.0.1 throat: 5.0.0 - ws: 7.5.9 + ws: 7.5.10 yargs: 17.7.2 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate + dev: false - micro-ftch@0.3.1: {} + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: false - micromark-core-commonmark@2.0.1: + /micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -23239,8 +18379,10 @@ snapshots: micromark-util-subtokenize: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-directive@3.0.0: + /micromark-extension-directive@3.0.0: + resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 @@ -23249,15 +18391,19 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 parse-entities: 4.0.1 + dev: false - micromark-extension-gfm-autolink-literal@2.0.0: + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} dependencies: micromark-util-character: 2.1.0 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-footnote@2.0.0: + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} dependencies: devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -23267,8 +18413,10 @@ snapshots: micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-strikethrough@2.0.0: + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -23276,28 +18424,36 @@ snapshots: micromark-util-resolve-all: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-table@2.0.0: + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-tagfilter@2.0.0: + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} dependencies: micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-task-list-item@2.0.1: + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm@3.0.0: + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} dependencies: micromark-extension-gfm-autolink-literal: 2.0.0 micromark-extension-gfm-footnote: 2.0.0 @@ -23307,8 +18463,10 @@ snapshots: micromark-extension-gfm-task-list-item: 2.0.1 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-mdx-expression@3.0.0: + /micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} dependencies: '@types/estree': 1.0.5 devlop: 1.1.0 @@ -23318,8 +18476,10 @@ snapshots: micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-mdx-jsx@3.0.0: + /micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.5 @@ -23331,12 +18491,16 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 vfile-message: 4.0.2 + dev: false - micromark-extension-mdx-md@2.0.0: + /micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} dependencies: micromark-util-types: 2.0.0 + dev: false - micromark-extension-mdxjs-esm@3.0.0: + /micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} dependencies: '@types/estree': 1.0.5 devlop: 1.1.0 @@ -23347,8 +18511,10 @@ snapshots: micromark-util-types: 2.0.0 unist-util-position-from-estree: 2.0.0 vfile-message: 4.0.2 + dev: false - micromark-extension-mdxjs@3.0.0: + /micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} dependencies: acorn: 8.12.1 acorn-jsx: 5.3.2(acorn@8.12.1) @@ -23358,21 +18524,27 @@ snapshots: micromark-extension-mdxjs-esm: 3.0.0 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-destination@2.0.0: + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-label@2.0.0: + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} dependencies: devlop: 1.1.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-mdx-expression@2.0.1: + /micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} dependencies: '@types/estree': 1.0.5 devlop: 1.1.0 @@ -23382,60 +18554,82 @@ snapshots: micromark-util-types: 2.0.0 unist-util-position-from-estree: 2.0.0 vfile-message: 4.0.2 + dev: false - micromark-factory-space@2.0.0: + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} dependencies: micromark-util-character: 2.1.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-title@2.0.0: + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-whitespace@2.0.0: + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-character@2.1.0: + /micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-chunked@2.0.0: + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} dependencies: micromark-util-symbol: 2.0.0 + dev: false - micromark-util-classify-character@2.0.0: + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-combine-extensions@2.0.0: + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-decode-numeric-character-reference@2.0.1: + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} dependencies: micromark-util-symbol: 2.0.0 + dev: false - micromark-util-decode-string@2.0.0: + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} dependencies: decode-named-character-reference: 1.0.2 micromark-util-character: 2.1.0 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 + dev: false - micromark-util-encode@2.0.0: {} + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + dev: false - micromark-util-events-to-acorn@2.0.2: + /micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.5 @@ -23445,38 +18639,54 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 vfile-message: 4.0.2 + dev: false - micromark-util-html-tag-name@2.0.0: {} + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + dev: false - micromark-util-normalize-identifier@2.0.0: + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} dependencies: micromark-util-symbol: 2.0.0 + dev: false - micromark-util-resolve-all@2.0.0: + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} dependencies: micromark-util-types: 2.0.0 + dev: false - micromark-util-sanitize-uri@2.0.0: + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} dependencies: micromark-util-character: 2.1.0 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 + dev: false - micromark-util-subtokenize@2.0.1: + /micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-symbol@2.0.0: {} + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + dev: false - micromark-util-types@2.0.0: {} + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + dev: false - micromark@4.0.0: + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} dependencies: '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.3.5 decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -23494,371 +18704,624 @@ snapshots: micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color + dev: false - micromatch@4.0.5: + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - mime-types@2.1.35: + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - mime@1.6.0: {} + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true - mime@2.6.0: {} + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: false - mime@3.0.0: {} + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: false - mimic-fn@2.1.0: {} + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} - mimic-fn@4.0.0: {} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} - mimic-response@3.1.0: {} + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: true - mimic-response@4.0.0: {} + /mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - min-indent@1.0.1: {} + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true - minidenticons@4.2.1: {} + /minidenticons@4.2.1: + resolution: {integrity: sha512-oWfFivA0lOx/V/bO/YIJbthB26lV8JXYvhnv9zM2hNd3fzsHTXQ6c6bWZPcvhD3nnOB+lQk/D9lF43BXixrN8g==} + engines: {node: '>=15.14.0'} + dev: false - minimalistic-assert@1.0.1: {} + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimalistic-crypto-utils@1.0.1: {} + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - minimatch@3.1.2: + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true - minimatch@7.4.6: + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true - minimatch@9.0.4: + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - minimist@1.2.8: {} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@3.3.6: + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} dependencies: yallist: 4.0.0 + dev: true - minipass@5.0.0: {} + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: true - minipass@7.1.0: {} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 yallist: 4.0.0 + dev: true - mipd@0.0.5(typescript@5.4.5): + /mipd@0.0.5(typescript@5.5.3): + resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true dependencies: - typescript: 5.4.5 - viem: 1.21.4(typescript@5.4.5) + typescript: 5.5.3 + viem: 1.21.4(typescript@5.5.3) transitivePeerDependencies: - bufferutil - utf-8-validate - zod + dev: false - mipd@0.0.7(typescript@5.4.5): - dependencies: - typescript: 5.4.5 + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: true - mkdirp@0.5.6: + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true dependencies: minimist: 1.2.8 - mkdirp@1.0.4: {} - - mkdirp@2.1.6: {} + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true - mlly@1.7.0: - dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.1.0 - ufo: 1.5.3 + /mkdirp@2.1.6: + resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + engines: {node: '>=10'} + hasBin: true + dev: true - mlly@1.7.1: + /mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} dependencies: - acorn: 8.11.3 + acorn: 8.12.0 pathe: 1.1.2 - pkg-types: 1.1.3 + pkg-types: 1.1.2 ufo: 1.5.3 - moralis@2.26.1(debug@4.3.4): - dependencies: - '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/aptos-api': 2.26.1(debug@4.3.4) - '@moralisweb3/auth': 2.26.1(debug@4.3.4) - '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-auth-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-core': 2.26.1(debug@4.3.4) - '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-sol-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/common-streams-utils': 2.26.1(debug@4.3.4) - '@moralisweb3/evm-api': 2.26.1(debug@4.3.4) - '@moralisweb3/sol-api': 2.26.1(debug@4.3.4) - '@moralisweb3/streams': 2.26.1(debug@4.3.4) + /moralis@2.26.7(debug@4.3.5): + resolution: {integrity: sha512-nJLSSePOAfEL2iAje1GdP164OwDaICdbbkyivN7lPHutjirDMRD6bxYdYqOxDdzR1fx3mf5nhQEeD7o/pndgiQ==} + dependencies: + '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/aptos-api': 2.26.7(debug@4.3.5) + '@moralisweb3/auth': 2.26.7(debug@4.3.5) + '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-auth-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-sol-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-streams-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/evm-api': 2.26.7(debug@4.3.5) + '@moralisweb3/sol-api': 2.26.7(debug@4.3.5) + '@moralisweb3/streams': 2.26.7(debug@4.3.5) '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug + dev: false - motion@10.16.2: + /motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} dependencies: - '@motionone/animation': 10.17.0 - '@motionone/dom': 10.17.0 + '@motionone/animation': 10.18.0 + '@motionone/dom': 10.18.0 '@motionone/svelte': 10.16.4 - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 '@motionone/vue': 10.16.4 + dev: false - mri@1.2.0: {} - - mrmime@2.0.0: {} + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} - ms@2.0.0: {} + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} - ms@2.1.2: {} + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.3: {} + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - muggle-string@0.4.1: {} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - multiformats@11.0.2: {} + /muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + dev: false - multiformats@12.1.3: {} + /multiformats@11.0.2: + resolution: {integrity: sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - multiformats@13.1.0: {} + /multiformats@12.1.3: + resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - multiformats@9.9.0: {} + /multiformats@13.1.3: + resolution: {integrity: sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==} + dev: false - murky@https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d: {} + /multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + dev: false - mz@2.7.0: + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.7: {} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - nanoid@4.0.2: {} + /nanoid@4.0.2: + resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} + engines: {node: ^14 || ^16 || >=18} + hasBin: true + dev: false - napi-wasm@1.1.0: {} + /napi-wasm@1.1.0: + resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} + dev: false - native-fetch@3.0.0(node-fetch@2.7.0): + /native-fetch@3.0.0(node-fetch@2.7.0): + resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} + peerDependencies: + node-fetch: '*' dependencies: node-fetch: 2.7.0 + dev: false - native-fetch@4.0.2(undici@5.28.4): + /native-fetch@4.0.2(undici@5.28.4): + resolution: {integrity: sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==} + peerDependencies: + undici: '*' dependencies: undici: 5.28.4 + dev: false - natural-compare@1.4.0: {} + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true - negotiator@0.6.3: {} + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} - neo-async@2.6.2: {} + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next-tick@1.1.0: {} + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - nlcst-to-string@4.0.0: + /nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} dependencies: '@types/nlcst': 2.0.3 + dev: false - no-case@3.0.4: + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.6.3 + dev: true - nocache@3.0.4: {} + /nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + dev: false - node-abort-controller@3.1.1: {} + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + dev: false - node-addon-api@2.0.2: {} + /node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + dev: false - node-addon-api@5.1.0: {} + /node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + dev: false - node-addon-api@7.1.0: {} + /node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} + dev: false - node-dir@0.1.17: + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} dependencies: minimatch: 3.1.2 - node-fetch-native@1.6.4: {} + /node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - node-fetch@2.7.0: + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true dependencies: whatwg-url: 5.0.0 - node-forge@1.3.1: {} + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: false - node-gyp-build@4.8.1: {} + /node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + hasBin: true + dev: false - node-int64@0.4.0: {} + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: false - node-releases@2.0.14: {} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - node-releases@2.0.18: {} + /node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + dev: false - node-stream-zip@1.15.0: {} + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: true - normalize-path@3.0.0: {} + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} - normalize-range@0.1.2: {} + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} - normalize-url@8.0.1: {} + /normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + dev: true - not@0.1.0: {} + /not@0.1.0: + resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + dev: false - npm-bundled@2.0.1: + /npm-bundled@2.0.1: + resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: npm-normalize-package-bin: 2.0.0 + dev: true - npm-normalize-package-bin@2.0.0: {} + /npm-normalize-package-bin@2.0.0: + resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dev: true - npm-packlist@5.1.3: + /npm-packlist@5.1.3: + resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true dependencies: glob: 8.1.0 ignore-walk: 5.0.1 npm-bundled: 2.0.1 npm-normalize-package-bin: 2.0.0 + dev: true - npm-run-path@4.0.1: + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: path-key: 3.1.1 - npm-run-path@5.3.0: + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 - nth-check@2.1.1: + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 + dev: false - nullthrows@1.1.1: {} + /nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + dev: false - number-to-bn@1.7.0: + /number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} dependencies: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 + dev: false - nwsapi@2.2.9: {} + /nwsapi@2.2.10: + resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} + dev: true - nypm@0.3.9: + /nypm@0.3.9: + resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true dependencies: citty: 0.1.6 consola: 3.2.3 execa: 8.0.1 pathe: 1.1.2 - pkg-types: 1.1.3 + pkg-types: 1.1.2 ufo: 1.5.3 + dev: true - ob1@0.80.9: {} + /ob1@0.80.9: + resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} + engines: {node: '>=18'} + dev: false - obj-multiplex@1.0.0: + /obj-multiplex@1.0.0: + resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 readable-stream: 2.3.8 + dev: false + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - object-assign@4.1.1: {} + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} - object-hash@3.0.0: {} + /object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + dev: true - object-inspect@1.13.1: {} + /object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + dev: true - object-keys@1.1.1: {} + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true - object.assign@4.1.5: + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 + dev: true - object.fromentries@2.0.8: + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 + dev: true - object.groupby@1.0.3: + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 + dev: true - object.values@1.2.0: + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - ofetch@1.3.4: + /ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} dependencies: destr: 2.0.3 node-fetch-native: 1.6.4 ufo: 1.5.3 + dev: false - ohash@1.1.3: {} + /ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - on-exit-leak-free@0.2.0: {} + /on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + dev: false - on-finished@2.3.0: + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 + dev: false - on-finished@2.4.1: + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 - on-headers@1.0.2: {} + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} - once@1.4.0: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - onetime@5.1.2: + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 - open@6.4.0: + /open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} dependencies: is-wsl: 1.1.0 + dev: false - open@7.4.2: + /open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 is-wsl: 2.2.0 + dev: false - open@8.4.2: + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - openapi-types@12.1.3: {} - - optimism@https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8: - dependencies: - '@changesets/cli': 2.27.7 + /openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + dev: false - optionator@0.9.4: + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -23866,8 +19329,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.5 + dev: true - ora@5.4.1: + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -23879,7 +19345,9 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - ora@6.3.1: + /ora@6.3.1: + resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 @@ -23891,7 +19359,9 @@ snapshots: strip-ansi: 7.1.0 wcwidth: 1.0.1 - ora@8.0.1: + /ora@8.0.1: + resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} + engines: {node: '>=18'} dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 @@ -23902,104 +19372,169 @@ snapshots: stdin-discarder: 0.2.2 string-width: 7.2.0 strip-ansi: 7.1.0 + dev: false - os-tmpdir@1.0.2: {} + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} - outdent@0.5.0: {} + /outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + dev: false - p-cancelable@3.0.0: {} + /p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + dev: true - p-defer@3.0.0: {} + /p-defer@3.0.0: + resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} + engines: {node: '>=8'} + dev: false - p-defer@4.0.1: {} + /p-defer@4.0.1: + resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} + engines: {node: '>=12'} + dev: false - p-fifo@1.0.0: + /p-fifo@1.0.0: + resolution: {integrity: sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==} dependencies: fast-fifo: 1.3.2 p-defer: 3.0.0 + dev: false - p-filter@2.1.0: + /p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} dependencies: p-map: 2.1.0 + dev: false - p-limit@2.3.0: + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 - p-limit@5.0.0: + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 + dev: true - p-limit@6.1.0: + /p-limit@6.1.0: + resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} + engines: {node: '>=18'} dependencies: yocto-queue: 1.1.1 + dev: false - p-locate@3.0.0: + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} dependencies: p-limit: 2.3.0 - p-locate@4.1.0: + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - p-locate@5.0.0: + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - p-locate@6.0.0: + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-limit: 4.0.0 - p-map@2.1.0: {} + /p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: false - p-map@7.0.2: {} + /p-map@7.0.2: + resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} + engines: {node: '>=18'} + dev: true - p-queue@8.0.1: + /p-queue@8.0.1: + resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} + engines: {node: '>=18'} dependencies: eventemitter3: 5.0.1 p-timeout: 6.1.2 + dev: false - p-timeout@6.1.2: {} + /p-timeout@6.1.2: + resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} + engines: {node: '>=14.16'} + dev: false - p-try@2.2.0: {} + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} - p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da: {} + /package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - package-json@8.1.1: + /package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} dependencies: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 semver: 7.6.3 + dev: true - pagefind@1.1.0: + /pagefind@1.1.0: + resolution: {integrity: sha512-1nmj0/vfYcMxNEQj0YDRp6bTVv9hI7HLdPhK/vBBYlrnwjATndQvHyicj5Y7pUHrpCFZpFnLVQXIF829tpFmaw==} + hasBin: true optionalDependencies: '@pagefind/darwin-arm64': 1.1.0 '@pagefind/darwin-x64': 1.1.0 '@pagefind/linux-arm64': 1.1.0 '@pagefind/linux-x64': 1.1.0 '@pagefind/windows-x64': 1.1.0 + dev: false - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 + /pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: true - parent-module@1.0.1: + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true - parse-duration@1.1.0: {} + /parse-duration@1.1.0: + resolution: {integrity: sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==} + dev: false - parse-entities@4.0.1: + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} dependencies: '@types/unist': 2.0.10 character-entities: 2.0.2 @@ -24009,20 +19544,28 @@ snapshots: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + dev: false - parse-json@4.0.0: + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 + dev: false - parse-json@5.2.0: + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true - parse-latin@7.0.0: + /parse-latin@7.0.0: + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} dependencies: '@types/nlcst': 2.0.3 '@types/unist': 3.0.2 @@ -24030,94 +19573,154 @@ snapshots: unist-util-modify-children: 4.0.0 unist-util-visit-children: 3.0.0 vfile: 6.0.2 + dev: false - parse5@7.1.2: + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 - parseurl@1.3.3: {} + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} - pascal-case@3.1.2: + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 + dev: true - path-browserify@1.0.1: {} - - path-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-exists@3.0.0: {} + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} - path-exists@4.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - path-exists@5.0.0: {} + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - path-is-absolute@1.0.1: {} + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - path-key@3.1.1: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - path-key@4.0.0: {} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} - path-parse@1.0.7: {} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.2: + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: - lru-cache: 10.2.2 - minipass: 7.1.0 + lru-cache: 10.3.0 + minipass: 7.1.2 - path-to-regexp@0.1.7: {} + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: true - path-to-regexp@6.2.2: {} + /path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + dev: false - path-type@4.0.0: {} + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} - path-type@5.0.0: {} + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true - pathe@1.1.2: {} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathval@1.1.1: {} + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true - pbkdf2@3.1.2: + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} dependencies: create-hash: 1.2.0 create-hmac: 1.1.7 ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 + dev: false + + /peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + dependencies: + buffer-from: 1.1.2 + duplexify: 3.7.1 + through2: 2.0.5 + dev: true - periscopic@3.1.0: + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 - picocolors@1.0.0: {} - - picocolors@1.0.1: {} + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - picomatch@2.3.1: {} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - picomatch@3.0.1: {} + /picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} - pify@2.3.0: {} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} - pify@3.0.0: {} + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: false - pify@4.0.1: {} + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} - pify@5.0.0: {} + /pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + dev: false - pino-abstract-transport@0.5.0: + /pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} dependencies: duplexify: 4.1.3 split2: 4.2.0 + dev: false - pino-std-serializers@4.0.0: {} + /pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + dev: false - pino@7.11.0: + /pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 @@ -24130,204 +19733,370 @@ snapshots: safe-stable-stringify: 2.4.3 sonic-boom: 2.8.0 thread-stream: 0.15.2 + dev: false - pirates@4.0.6: {} + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} - pkg-dir@3.0.0: + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} dependencies: find-up: 3.0.0 - pkg-dir@4.2.0: + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 - pkg-types@1.1.0: + /pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} dependencies: - confbox: 0.1.7 - mlly: 1.7.0 - pathe: 1.1.2 + find-up: 5.0.0 + dev: true - pkg-types@1.1.3: + /pkg-types@1.1.2: + resolution: {integrity: sha512-VEGf1he2DR5yowYRl0XJhWJq5ktm9gYIsH+y8sNJpHlxch7JPDaufgrsl4vYjd9hMUY8QVjoNncKbow9I7exyA==} dependencies: confbox: 0.1.7 mlly: 1.7.1 pathe: 1.1.2 - playwright-core@1.43.1: {} + /playwright-core@1.45.0: + resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} + engines: {node: '>=18'} + hasBin: true + dev: true - playwright@1.43.1: + /playwright@1.45.0: + resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} + engines: {node: '>=18'} + hasBin: true dependencies: - playwright-core: 1.43.1 + playwright-core: 1.45.0 optionalDependencies: fsevents: 2.3.2 + dev: true - pluralize@8.0.0: {} + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true - pngjs@5.0.0: {} + /pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + dev: false - polished@4.3.1: + /polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 + dev: true - pony-cause@2.1.11: {} + /pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + engines: {node: '>=12.0.0'} + dev: false - possible-typed-array-names@1.0.0: {} + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} - postcss-import@15.1.0(postcss@8.4.38): + /postcss-import@15.1.0(postcss@8.4.39): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-import@16.1.0(postcss@8.4.38): + /postcss-import@16.1.0(postcss@8.4.39): + resolution: {integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==} + engines: {node: '>=18.0.0'} + peerDependencies: + postcss: ^8.0.0 dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 + dev: true - postcss-js@4.0.1(postcss@8.4.38): + /postcss-js@4.0.1(postcss@8.4.39): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.38 + postcss: 8.4.39 - postcss-js@4.0.1(postcss@8.4.41): + /postcss-js@4.0.1(postcss@8.4.41): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 postcss: 8.4.41 + dev: false - postcss-load-config@3.1.4(postcss@8.4.38): + /postcss-load-config@3.1.4(postcss@8.4.39): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.38 + postcss: 8.4.39 yaml: 1.10.2 + dev: true - postcss-load-config@4.0.2(postcss@8.4.38): + /postcss-load-config@4.0.2(postcss@8.4.39): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: - lilconfig: 3.1.1 - postcss: 8.4.38 - yaml: 2.4.2 + lilconfig: 3.1.2 + postcss: 8.4.39 + yaml: 2.4.5 - postcss-nested@5.0.6(postcss@8.4.38): + /postcss-nested@5.0.6(postcss@8.4.39): + resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + postcss: 8.4.39 + postcss-selector-parser: 6.1.0 + dev: true - postcss-nested@6.0.1(postcss@8.4.38): + /postcss-nested@6.0.1(postcss@8.4.39): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + postcss: 8.4.39 + postcss-selector-parser: 6.1.0 - postcss-nesting@12.1.2(postcss@8.4.38): + /postcss-nesting@12.1.5(postcss@8.4.39): + resolution: {integrity: sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 dependencies: - '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.16) - '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.1.0) + '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) + postcss: 8.4.39 + postcss-selector-parser: 6.1.0 + dev: true - postcss-safe-parser@6.0.0(postcss@8.4.38): + /postcss-safe-parser@6.0.0(postcss@8.4.39): + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 dependencies: - postcss: 8.4.38 + postcss: 8.4.39 + dev: true - postcss-scss@4.0.9(postcss@8.4.38): + /postcss-scss@4.0.9(postcss@8.4.39): + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 dependencies: - postcss: 8.4.38 + postcss: 8.4.39 + dev: true - postcss-selector-parser@6.0.16: + /postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-value-parser@4.2.0: {} + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.38: + /postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 - postcss@8.4.41: + /postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.0.1 source-map-js: 1.2.0 - preact@10.21.0: {} + /preact@10.22.1: + resolution: {integrity: sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==} + dev: false - preferred-pm@3.1.3: + /preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} + engines: {node: '>=10'} dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 which-pm: 2.0.0 + dev: false - preferred-pm@4.0.0: + /preferred-pm@4.0.0: + resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==} + engines: {node: '>=18.12'} dependencies: find-up-simple: 1.0.0 find-yarn-workspace-root2: 1.2.16 which-pm: 3.0.0 + dev: false - prelude-ls@1.2.1: {} + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true - prettier-linter-helpers@1.0.0: + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} dependencies: fast-diff: 1.3.0 + dev: true - prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.15): + /prettier-plugin-svelte@3.2.5(prettier@3.3.2)(svelte@4.2.18): + resolution: {integrity: sha512-vP/M/Goc8z4iVIvrwXwbrYVjJgA0Hf8PO1G4LBh/ocSt6vUP6sLvyu9F3ABEGr+dbKyxZjEKLkeFsWy/yYl0HQ==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 dependencies: - prettier: 3.2.5 - svelte: 4.2.15 + prettier: 3.3.2 + svelte: 4.2.18 + dev: true - prettier@2.8.8: {} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + requiresBuild: true - prettier@3.2.5: {} + /prettier@3.3.2: + resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} + engines: {node: '>=14'} + hasBin: true - pretty-format@26.6.2: + /pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} dependencies: '@jest/types': 26.6.2 ansi-regex: 5.0.1 ansi-styles: 4.3.0 react-is: 17.0.2 + dev: false - pretty-format@27.5.1: + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 + dev: true - pretty-format@29.7.0: + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 - prismjs@1.29.0: {} + /pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + dev: true + + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false - process-nextick-args@2.0.1: {} + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process-warning@1.0.0: {} + /process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + dev: false - process@0.11.10: {} + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true - progress-events@1.0.0: {} + /progress-events@1.0.0: + resolution: {integrity: sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - progress@2.0.3: {} + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true - promise@8.3.0: + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} dependencies: asap: 2.0.6 + dev: false - prompts@2.4.2: + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - property-information@6.5.0: {} + /property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + dev: false - proto-list@1.2.4: {} + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: true - protobufjs@7.3.0: + /protobufjs@7.3.2: + resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==} + engines: {node: '>=12.0.0'} + requiresBuild: true dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -24339,157 +20108,291 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.12.8 + '@types/node': 20.14.9 long: 5.2.3 + dev: false - proxy-addr@2.0.7: + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + dev: true - proxy-compare@2.5.1: {} + /proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + dev: false - proxy-from-env@1.1.0: {} + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false - pseudomap@1.0.2: {} + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: false - psl@1.9.0: {} + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true - publint@0.1.16: + /publint@0.1.16: + resolution: {integrity: sha512-wJgk7HnXDT5Ap0DjFYbGz78kPkN44iQvDiaq8P63IEEyNU9mYXvaMd2cAyIM6OgqXM/IA3CK6XWIsRq+wjNpgw==} + engines: {node: '>=16'} + hasBin: true dependencies: npm-packlist: 5.1.3 - picocolors: 1.0.0 + picocolors: 1.0.1 sade: 1.8.1 + dev: true - pump@3.0.0: + /pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 + dev: true - punycode@2.3.1: {} + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + /pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} - qr-code-styling@1.6.0-rc.1: + /qr-code-styling@1.6.0-rc.1: + resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} dependencies: qrcode-generator: 1.4.4 + dev: false - qrcode-generator@1.4.4: {} + /qrcode-generator@1.4.4: + resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} + dev: false - qrcode-terminal-nooctal@0.12.1: {} + /qrcode-terminal-nooctal@0.12.1: + resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} + hasBin: true + dev: false - qrcode@1.5.3: + /qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true dependencies: dijkstrajs: 1.0.3 encode-utf8: 1.0.3 pngjs: 5.0.0 yargs: 15.4.1 + dev: false + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.6 + dev: true - qs@6.11.0: + /qs@6.12.2: + resolution: {integrity: sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==} + engines: {node: '>=0.6'} dependencies: side-channel: 1.0.6 + dev: true - query-string@7.1.3: + /query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} dependencies: decode-uri-component: 0.2.2 filter-obj: 1.1.0 split-on-first: 1.1.0 strict-uri-encode: 2.0.0 + dev: false - querystring@0.2.1: {} + /querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: false - querystringify@2.2.0: {} + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true - queue-microtask@1.2.3: {} + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue@6.0.2: + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: inherits: 2.0.4 + dev: false + + /quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: false - quick-format-unescaped@4.0.4: {} + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true - quick-lru@5.1.1: {} + /radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + dev: false - radix3@1.1.2: {} + /ramda@0.29.0: + resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + dev: true - randombytes@2.1.0: + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + dev: false - range-parser@1.2.1: {} + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} - raw-body@2.5.2: + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 + dev: true - rc@1.2.8: + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 + dev: true - react-colorful@5.6.1(react-dom@18.3.1)(react@18.3.1): + /react-colorful@5.6.1(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + dev: true - react-confetti@6.1.0(react@18.3.1): + /react-confetti@6.1.0(react@18.3.1): + resolution: {integrity: sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==} + engines: {node: '>=10.18'} + peerDependencies: + react: ^16.3.0 || ^17.0.1 || ^18.0.0 dependencies: react: 18.3.1 tween-functions: 1.2.0 + dev: true - react-devtools-core@5.1.0: + /react-devtools-core@5.3.0: + resolution: {integrity: sha512-IG3T+azv48Oc5VLdHR4XdBNKNZIUOKRtx0sJMRvb++Zom/uqtx73j6u37JCsIBNIaq6vA7RPH5Bbcf/Wj53KXA==} dependencies: shell-quote: 1.8.1 - ws: 7.5.9 + ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false - react-dom@18.3.1(react@18.3.1): + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 dependencies: loose-envify: 1.4.0 react: 18.3.1 scheduler: 0.23.2 + dev: true - react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1)(react@18.3.1): + /react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.3)(react@18.3.1): + resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 html-parse-stringify: 3.0.1 i18next: 22.5.1 react: 18.3.1 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.24.5)(react@18.3.1) + react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) + dev: false - react-is@17.0.2: {} + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-is@18.3.1: {} + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-native-fetch-api@3.0.0: + /react-native-fetch-api@3.0.0: + resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} dependencies: p-defer: 3.0.0 + dev: false - react-native-webview@11.26.1(react-native@0.74.1)(react@18.3.1): + /react-native-webview@11.26.1(react-native@0.74.3)(react@18.3.1): + resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} + peerDependencies: + react: '*' + react-native: '*' dependencies: escape-string-regexp: 2.0.0 invariant: 2.2.4 react: 18.3.1 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.24.5)(react@18.3.1) + react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) + dev: false - react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.24.5)(react@18.3.1): + /react-native@0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1): + resolution: {integrity: sha512-UFutCC6WEw6HkxlcpQ2BemKqi0JkwrgDchYB5Svi8Sp4Xwt4HA6LGEjNQgZ+3KM44bjyFRpofQym0uh0jACGng==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^18.2.6 + react: 18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 13.6.6 - '@react-native-community/cli-platform-android': 13.6.6 - '@react-native-community/cli-platform-ios': 13.6.6 - '@react-native/assets-registry': 0.74.83 - '@react-native/codegen': 0.74.83(@babel/preset-env@7.24.5) - '@react-native/community-cli-plugin': 0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.24.5) - '@react-native/gradle-plugin': 0.74.83 - '@react-native/js-polyfills': 0.74.83 - '@react-native/normalize-colors': 0.74.83 - '@react-native/virtualized-lists': 0.74.83(react-native@0.74.1)(react@18.3.1) + '@react-native-community/cli': 13.6.9 + '@react-native-community/cli-platform-android': 13.6.9 + '@react-native-community/cli-platform-ios': 13.6.9 + '@react-native/assets-registry': 0.74.85 + '@react-native/codegen': 0.74.85(@babel/preset-env@7.24.7) + '@react-native/community-cli-plugin': 0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7) + '@react-native/gradle-plugin': 0.74.85 + '@react-native/js-polyfills': 0.74.85 + '@react-native/normalize-colors': 0.74.85 + '@react-native/virtualized-lists': 0.74.85(react-native@0.74.3)(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -24508,14 +20411,14 @@ snapshots: pretty-format: 26.6.2 promise: 8.3.0 react: 18.3.1 - react-devtools-core: 5.1.0 + react-devtools-core: 5.3.0 react-refresh: 0.14.2 react-shallow-renderer: 16.15.0(react@18.3.1) regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 stacktrace-parser: 0.1.10 whatwg-fetch: 3.6.20 - ws: 6.2.2 + ws: 6.2.3 yargs: 17.7.2 transitivePeerDependencies: - '@babel/core' @@ -24524,31 +20427,117 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - react-refresh@0.14.2: {} + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + dev: false + + /react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) + tslib: 2.6.3 + dev: true - react-shallow-renderer@16.15.0(react@18.3.1): + /react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) + tslib: 2.6.3 + use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) + dev: true + + /react-shallow-renderer@16.15.0(react@18.3.1): + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 react: 18.3.1 react-is: 18.3.1 + dev: false + + /react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.1 + tslib: 2.6.3 + dev: true - react@18.3.1: + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - read-cache@1.0.0: + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 - read-yaml-file@1.1.0: + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 + dev: false - readable-stream@2.3.8: + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -24558,68 +20547,103 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 - readable-stream@3.6.2: + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - readdirp@3.6.0: + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - readline@1.3.0: {} + /readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + dev: false - real-require@0.1.0: {} + /real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + dev: false - recast@0.21.5: + /recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} dependencies: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false - recast@0.23.9: + /recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + engines: {node: '>= 4'} dependencies: ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 tiny-invariant: 1.3.3 - tslib: 2.6.2 + tslib: 2.6.3 + dev: true - receptacle@1.3.2: + /receptacle@1.3.2: + resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} dependencies: ms: 2.1.3 + dev: false - redent@3.0.0: + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 + dev: true - regenerate-unicode-properties@10.1.1: + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} dependencies: regenerate: 1.4.2 - regenerate@1.4.2: {} + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.13.11: {} + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false - regenerator-runtime@0.14.1: {} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regenerator-transform@0.15.2: + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 - regexp.prototype.flags@1.5.2: + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 + dev: true - regexpp@3.2.0: {} + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true - regexpu-core@5.3.2: + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 @@ -24628,23 +20652,34 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - registry-auth-token@5.0.2: + /registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} dependencies: '@pnpm/npm-conf': 2.2.2 + dev: true - registry-url@6.0.1: + /registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} dependencies: rc: 1.2.8 + dev: true - regjsparser@0.9.1: + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true dependencies: jsesc: 0.5.0 - rehype-expressive-code@0.35.3: + /rehype-expressive-code@0.35.6: + resolution: {integrity: sha512-pPdE+pRcRw01kxMOwHQjuRxgwlblZt5+wAc3w2aPGgmcnn57wYjn07iKO7zaznDxYVxMYVvYlnL+R3vWFQS4Gw==} dependencies: - expressive-code: 0.35.3 + expressive-code: 0.35.6 + dev: false - rehype-external-links@3.0.0: + /rehype-external-links@3.0.0: + resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} dependencies: '@types/hast': 3.0.4 '@ungap/structured-clone': 1.2.0 @@ -24652,8 +20687,10 @@ snapshots: is-absolute-url: 4.0.1 space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 + dev: true - rehype-format@5.0.0: + /rehype-format@5.0.0: + resolution: {integrity: sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==} dependencies: '@types/hast': 3.0.4 hast-util-embedded: 3.0.0 @@ -24663,321 +20700,480 @@ snapshots: html-whitespace-sensitive-tag-names: 3.0.0 rehype-minify-whitespace: 6.0.0 unist-util-visit-parents: 6.0.1 + dev: false - rehype-minify-whitespace@6.0.0: + /rehype-minify-whitespace@6.0.0: + resolution: {integrity: sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==} dependencies: '@types/hast': 3.0.4 hast-util-embedded: 3.0.0 hast-util-is-element: 3.0.0 hast-util-whitespace: 3.0.0 unist-util-is: 6.0.0 + dev: false - rehype-parse@9.0.0: + /rehype-parse@9.0.0: + resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} dependencies: '@types/hast': 3.0.4 hast-util-from-html: 2.0.1 - unified: 11.0.4 + unified: 11.0.5 + dev: false - rehype-raw@7.0.0: + /rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} dependencies: '@types/hast': 3.0.4 - hast-util-raw: 9.0.3 + hast-util-raw: 9.0.4 vfile: 6.0.2 + dev: false - rehype-slug@6.0.0: + /rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} dependencies: '@types/hast': 3.0.4 github-slugger: 2.0.0 hast-util-heading-rank: 3.0.0 hast-util-to-string: 3.0.0 unist-util-visit: 5.0.0 + dev: true - rehype-stringify@10.0.0: + /rehype-stringify@10.0.0: + resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} dependencies: '@types/hast': 3.0.4 hast-util-to-html: 9.0.1 - unified: 11.0.4 + unified: 11.0.5 + dev: false - rehype@13.0.1: + /rehype@13.0.1: + resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} dependencies: '@types/hast': 3.0.4 rehype-parse: 9.0.0 rehype-stringify: 10.0.0 - unified: 11.0.4 + unified: 11.0.5 + dev: false - remark-directive@3.0.0: + /remark-directive@3.0.0: + resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} dependencies: '@types/mdast': 4.0.4 mdast-util-directive: 3.0.0 micromark-extension-directive: 3.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color + dev: false - remark-gfm@4.0.0: + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color + dev: false - remark-mdx@3.0.1: + /remark-mdx@3.0.1: + resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 transitivePeerDependencies: - supports-color + dev: false - remark-parse@11.0.0: + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 micromark-util-types: 2.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color + dev: false - remark-rehype@11.1.0: + /remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 unified: 11.0.5 vfile: 6.0.2 + dev: false - remark-smartypants@3.0.2: + /remark-smartypants@3.0.2: + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} dependencies: retext: 9.0.0 retext-smartypants: 6.1.0 - unified: 11.0.4 + unified: 11.0.5 unist-util-visit: 5.0.0 + dev: false - remark-stringify@11.0.0: + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} dependencies: '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 - unified: 11.0.4 + unified: 11.0.5 + dev: false - request-light@0.7.0: {} + /request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + dev: false - require-directory@2.1.1: {} + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: false - require-from-string@2.0.2: {} + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} - require-main-filename@2.0.0: {} + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: false - requireindex@1.2.0: {} + /requireindex@1.2.0: + resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} + engines: {node: '>=0.10.5'} + dev: true - requires-port@1.0.0: {} + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true - resolve-alpn@1.2.1: {} + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true - resolve-from@3.0.0: {} + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + dev: false - resolve-from@4.0.0: {} + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true - resolve-from@5.0.0: {} + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: {} + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true - resolve@1.22.8: + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - responselike@3.0.0: + /responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} dependencies: lowercase-keys: 3.0.0 + dev: true - restore-cursor@3.1.0: + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - restore-cursor@4.0.0: + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - retext-latin@4.0.0: + /retext-latin@4.0.0: + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} dependencies: '@types/nlcst': 2.0.3 parse-latin: 7.0.0 - unified: 11.0.4 + unified: 11.0.5 + dev: false - retext-smartypants@6.1.0: + /retext-smartypants@6.1.0: + resolution: {integrity: sha512-LDPXg95346bqFZnDMHo0S7Rq5p64+B+N8Vz733+wPMDtwb9rCOs9LIdIEhrUOU+TAywX9St+ocQWJt8wrzivcQ==} dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 unist-util-visit: 5.0.0 + dev: false - retext-stringify@4.0.0: + /retext-stringify@4.0.0: + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 - unified: 11.0.4 + unified: 11.0.5 + dev: false - retext@9.0.0: + /retext@9.0.0: + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} dependencies: '@types/nlcst': 2.0.3 retext-latin: 4.0.0 retext-stringify: 4.0.0 - unified: 11.0.4 + unified: 11.0.5 + dev: false - retimer@3.0.0: {} + /retimer@3.0.0: + resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} + dev: false - reusify@1.0.4: {} + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@2.6.3: + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 - rimraf@2.7.1: + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 + dev: true - rimraf@3.0.2: + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 - ripemd160@2.0.2: + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} dependencies: hash-base: 3.1.0 inherits: 2.0.4 + dev: false - risc0-ethereum#v1.0.0@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900: {} - - rlp@2.2.7: + /rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true dependencies: bn.js: 5.2.1 + dev: false - rollup-plugin-visualizer@5.12.0: + /rollup-plugin-visualizer@5.12.0: + resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true dependencies: open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.7.2 + dev: false - rollup@3.29.4: + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true optionalDependencies: fsevents: 2.3.3 + dev: true - rollup@4.17.2: + /rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.17.2 - '@rollup/rollup-android-arm64': 4.17.2 - '@rollup/rollup-darwin-arm64': 4.17.2 - '@rollup/rollup-darwin-x64': 4.17.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.17.2 - '@rollup/rollup-linux-arm-musleabihf': 4.17.2 - '@rollup/rollup-linux-arm64-gnu': 4.17.2 - '@rollup/rollup-linux-arm64-musl': 4.17.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2 - '@rollup/rollup-linux-riscv64-gnu': 4.17.2 - '@rollup/rollup-linux-s390x-gnu': 4.17.2 - '@rollup/rollup-linux-x64-gnu': 4.17.2 - '@rollup/rollup-linux-x64-musl': 4.17.2 - '@rollup/rollup-win32-arm64-msvc': 4.17.2 - '@rollup/rollup-win32-ia32-msvc': 4.17.2 - '@rollup/rollup-win32-x64-msvc': 4.17.2 + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 - rrweb-cssom@0.6.0: {} + /rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true + + /rrweb-cssom@0.7.1: + resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + dev: true - run-parallel@1.2.0: + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - sade@1.8.1: + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} dependencies: mri: 1.2.0 - safe-array-concat@1.1.2: + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 + dev: true - safe-buffer@5.1.2: {} + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: {} + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-regex-test@1.0.3: + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 + dev: true - safe-stable-stringify@2.4.3: {} + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: false - safer-buffer@2.1.2: {} + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sander@0.5.1: + /sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} dependencies: es6-promise: 3.3.1 graceful-fs: 4.2.11 mkdirp: 0.5.6 rimraf: 2.7.1 + dev: true - sax@1.3.0: {} + /sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + dev: false - saxes@6.0.0: + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 + dev: true - scheduler@0.23.2: + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} dependencies: loose-envify: 1.4.0 + dev: true - scheduler@0.24.0-canary-efb381bbf-20230505: + /scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} dependencies: loose-envify: 1.4.0 + dev: false - scrypt-js@3.0.1: {} + /scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - secp256k1@4.0.3: + /secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + requiresBuild: true dependencies: elliptic: 6.5.5 node-addon-api: 2.0.2 node-gyp-build: 4.8.1 + dev: false - secp256k1@5.0.0: + /secp256k1@5.0.0: + resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} + engines: {node: '>=14.0.0'} + requiresBuild: true dependencies: elliptic: 6.5.5 node-addon-api: 5.1.0 node-gyp-build: 4.8.1 + dev: false - section-matter@1.0.0: + /section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} dependencies: extend-shallow: 2.0.1 kind-of: 6.0.3 + dev: false - selfsigned@2.4.1: + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} dependencies: '@types/node-forge': 1.3.11 node-forge: 1.3.1 + dev: false - semver@5.7.2: {} - - semver@6.3.1: {} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true - semver@7.6.2: {} + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true - semver@7.6.3: {} + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true - send@0.18.0: + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 depd: 2.0.0 @@ -24995,15 +21191,14 @@ snapshots: transitivePeerDependencies: - supports-color - sentence-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - upper-case-first: 2.0.2 - - serialize-error@2.1.0: {} + /serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + dev: false - serve-static@1.15.0: + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -25012,11 +21207,17 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false - set-cookie-parser@2.6.0: {} + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: true - set-function-length@1.2.2: + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -25025,34 +21226,48 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + dev: true - setimmediate@1.0.5: {} + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: false - setprototypeof@1.2.0: {} + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - sha.js@2.4.11: + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - shallow-clone@3.0.1: + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} dependencies: kind-of: 6.0.3 - sharp@0.33.3: + /sharp@0.33.4: + resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} + engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + requiresBuild: true dependencies: color: 4.2.3 detect-libc: 2.0.3 - semver: 7.6.0 + semver: 7.6.2 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.3 - '@img/sharp-darwin-x64': 0.33.3 + '@img/sharp-darwin-arm64': 0.33.4 + '@img/sharp-darwin-x64': 0.33.4 '@img/sharp-libvips-darwin-arm64': 1.0.2 '@img/sharp-libvips-darwin-x64': 1.0.2 '@img/sharp-libvips-linux-arm': 1.0.2 @@ -25061,129 +21276,176 @@ snapshots: '@img/sharp-libvips-linux-x64': 1.0.2 '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - '@img/sharp-linux-arm': 0.33.3 - '@img/sharp-linux-arm64': 0.33.3 - '@img/sharp-linux-s390x': 0.33.3 - '@img/sharp-linux-x64': 0.33.3 - '@img/sharp-linuxmusl-arm64': 0.33.3 - '@img/sharp-linuxmusl-x64': 0.33.3 - '@img/sharp-wasm32': 0.33.3 - '@img/sharp-win32-ia32': 0.33.3 - '@img/sharp-win32-x64': 0.33.3 - - shebang-command@1.2.0: + '@img/sharp-linux-arm': 0.33.4 + '@img/sharp-linux-arm64': 0.33.4 + '@img/sharp-linux-s390x': 0.33.4 + '@img/sharp-linux-x64': 0.33.4 + '@img/sharp-linuxmusl-arm64': 0.33.4 + '@img/sharp-linuxmusl-x64': 0.33.4 + '@img/sharp-wasm32': 0.33.4 + '@img/sharp-win32-ia32': 0.33.4 + '@img/sharp-win32-x64': 0.33.4 + dev: false + + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 + dev: false - shebang-command@2.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: false - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - shell-quote@1.8.1: {} + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false - shiki@1.12.1: + /shiki@1.10.0: + resolution: {integrity: sha512-YD2sXQ+TMD/F9BimV9Jn0wj35pqOvywvOG/3PB6hGHyGKlM7TJ9tyJ02jOb2kF8F0HfJwKNYrh3sW7jEcuRlXA==} dependencies: - '@shikijs/core': 1.12.1 - '@types/hast': 3.0.4 + '@shikijs/core': 1.10.0 + dev: false - shiki@1.5.2: + /shiki@1.12.1: + resolution: {integrity: sha512-nwmjbHKnOYYAe1aaQyEBHvQymJgfm86ZSS7fT8OaPRr4sbAcBNz7PbfAikMEFSDQ6se2j2zobkXvVKcBOm0ysg==} dependencies: - '@shikijs/core': 1.5.2 + '@shikijs/core': 1.12.1 + '@types/hast': 3.0.4 + dev: false - side-channel@1.0.6: + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.2 + dev: true - siginfo@2.0.0: {} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true - signal-exit@3.0.7: {} + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: {} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} - simple-swizzle@0.2.2: + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: is-arrayish: 0.3.2 + dev: false - sirv@2.0.4: + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} dependencies: '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 + dev: true - sisteransi@1.0.5: {} + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - sitemap@7.1.2: + /sitemap@7.1.2: + resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true dependencies: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.3.0 - - slash@3.0.0: {} + sax: 1.4.1 + dev: false - slash@4.0.0: {} + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} - slash@5.1.0: {} + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: true - slice-ansi@2.1.0: + /slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} dependencies: ansi-styles: 3.2.1 astral-regex: 1.0.0 is-fullwidth-code-point: 2.0.0 + dev: false - slice-ansi@4.0.0: + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + dev: true - snake-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - - socket.io-client@4.7.5: + /socket.io-client@4.7.5: + resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} + engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4 - engine.io-client: 6.5.3 + debug: 4.3.5 + engine.io-client: 6.5.4 socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate + dev: false - socket.io-parser@4.2.4: + /socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color + dev: false - solady@https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b: {} - - solady@https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d: {} - - solc@0.8.24: + /solc@0.8.24: + resolution: {integrity: sha512-G5yUqjTUPc8Np74sCFwfsevhBPlUifUOfhYrgyu6CmYlC6feSw0YS6eZW47XDT23k3JYdKx5nJ+Q7whCEmNcoA==} + engines: {node: '>=10.0.0'} + hasBin: true dependencies: command-exists: 1.2.9 commander: 8.3.0 - follow-redirects: 1.15.6(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.5) js-sha3: 0.8.0 memorystream: 0.3.1 semver: 5.7.2 tmp: 0.0.33 transitivePeerDependencies: - debug + dev: true - solhint@4.5.4(typescript@5.4.5): + /solhint@4.5.4(typescript@5.5.3): + resolution: {integrity: sha512-Cu1XiJXub2q1eCr9kkJ9VPv1sGcmj3V7Zb76B0CoezDOB9bu3DxKIFFH7ggCl9fWpEPD6xBmRLfZrYijkVmujQ==} + hasBin: true dependencies: '@solidity-parser/parser': 0.18.0 ajv: 6.12.6 @@ -25191,7 +21453,7 @@ snapshots: ast-parents: 0.0.1 chalk: 4.1.2 commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@5.4.5) + cosmiconfig: 8.3.6(typescript@5.5.3) fast-diff: 1.3.0 glob: 8.1.0 ignore: 5.3.1 @@ -25207,8 +21469,11 @@ snapshots: prettier: 2.8.8 transitivePeerDependencies: - typescript + dev: true - solhint@5.0.3(typescript@5.4.5): + /solhint@5.0.3(typescript@5.5.3): + resolution: {integrity: sha512-OLCH6qm/mZTCpplTXzXTJGId1zrtNuDYP5c2e6snIv/hdRVxPfBBz/bAlL91bY/Accavkayp2Zp2BaDSrLVXTQ==} + hasBin: true dependencies: '@solidity-parser/parser': 0.18.0 ajv: 6.12.6 @@ -25216,7 +21481,7 @@ snapshots: ast-parents: 0.0.1 chalk: 4.1.2 commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@5.4.5) + cosmiconfig: 8.3.6(typescript@5.5.3) fast-diff: 1.3.0 glob: 8.1.0 ignore: 5.3.1 @@ -25232,64 +21497,124 @@ snapshots: prettier: 2.8.8 transitivePeerDependencies: - typescript + dev: true - solidity-stringutils@https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: {} - - sonic-boom@2.8.0: + /sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} dependencies: atomic-sleep: 1.0.0 + dev: false - sorcery@0.11.0: + /sorcery@0.11.1: + resolution: {integrity: sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==} + hasBin: true dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - buffer-crc32: 0.2.13 + buffer-crc32: 1.0.0 minimist: 1.2.8 sander: 0.5.1 + dev: true - source-map-js@1.2.0: {} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} - source-map-support@0.5.21: + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - source-map@0.5.7: {} - - source-map@0.6.1: {} + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false - source-map@0.7.4: {} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} - sp1-contracts#v2.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb: {} + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: false - space-separated-tokens@2.0.2: {} + /space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spawndamnit@2.0.0: + /spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 + dev: false + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.18 + dev: true - split-on-first@1.1.0: {} + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + dev: true - split2@4.2.0: {} + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.18 + dev: true + + /spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + dev: true + + /split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + dev: false + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: false - sprintf-js@1.0.3: {} + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: false - stack-utils@2.0.6: + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 - stackback@0.0.2: {} + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true - stackframe@1.3.4: {} + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + dev: false - stacktrace-parser@0.1.10: + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} dependencies: type-fest: 0.7.1 + dev: false - starlight-links-validator@0.8.0(@astrojs/starlight@0.25.3)(astro@4.13.1): + /starlight-links-validator@0.8.0(@astrojs/starlight@0.25.4)(astro@4.13.3): + resolution: {integrity: sha512-FYZ5cfV7jSL4wOsWmIkpR+9dH0Z8fxslSQl8IiAv5URfkxLgsaFzjx51FBeSaaS5uVmO5WgfkUjx3N52Jl1/TQ==} + engines: {node: '>=18.14.1'} + peerDependencies: + '@astrojs/starlight': '>=0.15.0' + astro: '>=4.0.0' dependencies: - '@astrojs/starlight': 0.25.3(astro@4.13.1) - astro: 4.13.1(typescript@5.4.5) + '@astrojs/starlight': 0.25.4(astro@4.13.3) + astro: 4.13.3(typescript@5.5.3) github-slugger: 2.0.0 hast-util-from-html: 2.0.1 hast-util-has-property: 3.0.0 @@ -25297,215 +21622,301 @@ snapshots: kleur: 4.1.5 mdast-util-to-string: 4.0.0 unist-util-visit: 5.0.0 + dev: false - starlight-openapi@0.6.3(@astrojs/markdown-remark@5.2.0)(@astrojs/starlight@0.25.3)(astro@4.13.1)(openapi-types@12.1.3): + /starlight-openapi@0.6.4(@astrojs/markdown-remark@5.2.0)(@astrojs/starlight@0.25.4)(astro@4.13.3)(openapi-types@12.1.3): + resolution: {integrity: sha512-TIioFhMmSKhKau6g/fx5WgWyPQve7cjP896wQek3sHqCJeLAsTSqUYCb33bBb/4D1/6sUioqlfJd9J3Lc1NQjA==} + engines: {node: '>=18.14.1'} + peerDependencies: + '@astrojs/markdown-remark': '>=4.2.0' + '@astrojs/starlight': '>=0.19.0' + astro: '>=4.2.7' dependencies: '@astrojs/markdown-remark': 5.2.0 - '@astrojs/starlight': 0.25.3(astro@4.13.1) + '@astrojs/starlight': 0.25.4(astro@4.13.3) '@readme/openapi-parser': 2.5.0(openapi-types@12.1.3) - astro: 4.13.1(typescript@5.4.5) + astro: 4.13.3(typescript@5.5.3) github-slugger: 2.0.0 transitivePeerDependencies: - openapi-types + dev: false - statuses@1.5.0: {} + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false - statuses@2.0.1: {} + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} - std-env@3.7.0: {} + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - stdin-discarder@0.1.0: + /stdin-discarder@0.1.0: + resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: bl: 5.1.0 - stdin-discarder@0.2.2: {} + /stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + dev: false - storybook@8.2.7: + /store2@2.14.3: + resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==} + dev: true + + /storybook@8.1.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-3KjIhF8lczXhKKHyHbOqV30dvuRYJSxc0d1as/C8kybuwE7cLaydhWGma7VBv5bTSPv0rDzucx7KcO+achArPg==} + hasBin: true dependencies: - '@babel/core': 7.24.5 - '@babel/types': 7.24.5 - '@storybook/codemod': 8.2.7 - '@storybook/core': 8.2.7 - '@types/semver': 7.5.8 - '@yarnpkg/fslib': 2.10.3 - '@yarnpkg/libzip': 2.3.0 - chalk: 4.1.2 - commander: 6.2.1 - cross-spawn: 7.0.3 - detect-indent: 6.1.0 - envinfo: 7.13.0 - execa: 5.1.1 - fd-package-json: 1.2.0 - find-up: 5.0.0 - fs-extra: 11.2.0 - giget: 1.2.3 - globby: 14.0.2 - jscodeshift: 0.15.2(@babel/preset-env@7.24.5) - leven: 3.1.0 - ora: 5.4.1 - prettier: 3.2.5 - prompts: 2.4.2 - semver: 7.6.2 - strip-json-comments: 3.1.1 - tempy: 3.1.0 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 + '@storybook/cli': 8.1.11(react-dom@18.3.1)(react@18.3.1) transitivePeerDependencies: - '@babel/preset-env' - bufferutil + - encoding + - react + - react-dom - supports-color - utf-8-validate + dev: true - stream-browserify@3.0.0: + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: inherits: 2.0.4 readable-stream: 3.6.2 + dev: false - stream-replace-string@2.0.0: {} + /stream-replace-string@2.0.0: + resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} + dev: false - stream-shift@1.0.3: {} + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - stream-to-it@0.2.4: + /stream-to-it@0.2.4: + resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} dependencies: get-iterator: 1.0.2 + dev: false - strict-uri-encode@2.0.0: {} + /strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + dev: false - string-width@4.2.3: + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string-width@7.2.0: + /string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} dependencies: emoji-regex: 10.3.0 get-east-asian-width: 1.2.0 strip-ansi: 7.1.0 + dev: false - string.prototype.trim@1.2.9: + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 + dev: true - string.prototype.trimend@1.0.8: + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - string.prototype.trimstart@1.0.8: + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - string_decoder@1.1.1: + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - string_decoder@1.3.0: + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - stringify-entities@4.0.4: + /stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 + dev: false - strip-ansi@5.2.0: + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} dependencies: ansi-regex: 4.1.1 + dev: false - strip-ansi@6.0.1: + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - strip-bom-string@1.0.0: {} + /strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + dev: false - strip-bom@3.0.0: {} + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} - strip-final-newline@2.0.0: {} + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} - strip-final-newline@3.0.0: {} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} - strip-hex-prefix@1.0.0: + /strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} dependencies: is-hex-prefixed: 1.0.0 + dev: false - strip-indent@3.0.0: + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} dependencies: min-indent: 1.0.1 + dev: true - strip-json-comments@2.0.1: {} + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true - strip-literal@2.1.0: + /strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} dependencies: js-tokens: 9.0.0 + dev: true - strnum@1.0.5: {} + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false - style-to-object@0.4.4: + /style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} dependencies: inline-style-parser: 0.1.1 + dev: false - style-to-object@1.0.6: + /style-to-object@1.0.6: + resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} dependencies: inline-style-parser: 0.2.3 + dev: false - sucrase@3.35.0: + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.12 + glob: 10.4.2 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 - sudo-prompt@9.2.1: {} + /sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + dev: false - superstruct@1.0.4: {} + /superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + dev: false - supports-color@5.5.0: + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - supports-color@7.2.0: + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - supports-color@8.1.1: + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: false - supports-preserve-symlinks-flag@1.0.0: {} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} - svelte-check@3.7.1(@babel/core@7.24.5)(postcss@8.4.41)(svelte@4.2.15): + /svelte-check@3.8.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18): + resolution: {integrity: sha512-61aHMkdinWyH8BkkTX9jPLYxYzaAAz/FK/VQqdr2FiCQQ/q04WCwDlpGbHff1GdrMYTmW8chlTFvRWL9k0A8vg==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 - fast-glob: 3.3.2 - import-fresh: 3.3.0 - picocolors: 1.0.0 + picocolors: 1.0.1 sade: 1.8.1 - svelte: 4.2.15 - svelte-preprocess: 5.1.4(@babel/core@7.24.5)(postcss@8.4.41)(svelte@4.2.15)(typescript@5.4.5) - typescript: 5.4.5 + svelte: 4.2.18 + svelte-preprocess: 5.1.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -25516,18 +21927,21 @@ snapshots: - sass - stylus - sugarss + dev: true - svelte-check@3.7.1(@babel/core@7.25.2)(postcss@8.4.38)(svelte@4.2.15): + /svelte-check@3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18): + resolution: {integrity: sha512-61aHMkdinWyH8BkkTX9jPLYxYzaAAz/FK/VQqdr2FiCQQ/q04WCwDlpGbHff1GdrMYTmW8chlTFvRWL9k0A8vg==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 - fast-glob: 3.3.2 - import-fresh: 3.3.0 - picocolors: 1.0.0 + picocolors: 1.0.1 sade: 1.8.1 - svelte: 4.2.15 - svelte-preprocess: 5.1.4(@babel/core@7.25.2)(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5) - typescript: 5.4.5 + svelte: 4.2.18 + svelte-preprocess: 5.1.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18)(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -25538,77 +21952,185 @@ snapshots: - sass - stylus - sugarss + dev: true - svelte-copy@1.4.2(svelte@4.2.15): + /svelte-copy@1.4.2(svelte@4.2.18): + resolution: {integrity: sha512-Q99JvWDzB58JlbVWX2VxjHX/CQ5ayDLUGGJgL2EqU1+3c9CDOtxLrKFZx5CVN5bN/DDl62nxtazz0j3nGX1Xew==} + peerDependencies: + svelte: ^3.55.0 || ^4.0.0 dependencies: - svelte: 4.2.15 + svelte: 4.2.18 + dev: true - svelte-eslint-parser@0.35.0(svelte@4.2.15): + /svelte-eslint-parser@0.39.2(svelte@4.2.18): + resolution: {integrity: sha512-87UwLuWTtDIuzWOhOi1zBL5wYVd07M5BK1qZ57YmXJB5/UmjUNJqGy3XSOhPqjckY1dATNV9y+mx+nI0WH6HPA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.115 + peerDependenciesMeta: + svelte: + optional: true dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.38 - postcss-scss: 4.0.9(postcss@8.4.38) - svelte: 4.2.15 + postcss: 8.4.39 + postcss-scss: 4.0.9(postcss@8.4.39) + svelte: 4.2.18 + dev: true - svelte-hmr@0.16.0(svelte@4.2.15): + /svelte-hmr@0.16.0(svelte@4.2.18): + resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.15 + svelte: 4.2.18 + dev: true - svelte-i18n@4.0.0(svelte@4.2.15): + /svelte-i18n@4.0.0(svelte@4.2.18): + resolution: {integrity: sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==} + engines: {node: '>= 16'} + hasBin: true + peerDependencies: + svelte: ^3 || ^4 dependencies: cli-color: 2.0.4 deepmerge: 4.3.1 esbuild: 0.19.12 estree-walker: 2.0.2 - intl-messageformat: 10.5.11 + intl-messageformat: 10.5.14 sade: 1.8.1 - svelte: 4.2.15 + svelte: 4.2.18 tiny-glob: 0.2.9 - svelte-preprocess@5.1.4(@babel/core@7.24.5)(postcss@8.4.41)(svelte@4.2.15)(typescript@5.4.5): + /svelte-preprocess@5.1.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.3): + resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} + engines: {node: '>= 16.0.0'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@types/pug': 2.0.10 detect-indent: 6.1.0 magic-string: 0.30.10 postcss: 8.4.41 - sorcery: 0.11.0 + sorcery: 0.11.1 strip-indent: 3.0.0 - svelte: 4.2.15 - typescript: 5.4.5 + svelte: 4.2.18 + typescript: 5.5.3 + dev: true - svelte-preprocess@5.1.4(@babel/core@7.25.2)(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5): + /svelte-preprocess@5.1.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18)(typescript@5.5.3): + resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} + engines: {node: '>= 16.0.0'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true dependencies: '@babel/core': 7.25.2 '@types/pug': 2.0.10 detect-indent: 6.1.0 magic-string: 0.30.10 - postcss: 8.4.38 - sorcery: 0.11.0 + postcss: 8.4.39 + sorcery: 0.11.1 strip-indent: 3.0.0 - svelte: 4.2.15 - typescript: 5.4.5 + svelte: 4.2.18 + typescript: 5.5.3 + dev: true - svelte-scrolling@1.4.0(svelte@4.2.15): + /svelte-scrolling@1.4.0(svelte@4.2.18): + resolution: {integrity: sha512-1721UrmTODAIhybCR5p/l6lQNSmuk66VgtgxdAEdQiGuYU1wCcKB/9kba0VXlxIeh5vhEaoODAOCizRRtHKQoQ==} + peerDependencies: + svelte: ^3 || ^4 dependencies: - svelte: 4.2.15 + svelte: 4.2.18 + dev: true - svelte2tsx@0.7.15(svelte@4.2.15)(typescript@5.4.5): + /svelte2tsx@0.7.13(svelte@4.2.18)(typescript@5.5.3): + resolution: {integrity: sha512-aObZ93/kGAiLXA/I/kP+x9FriZM+GboB/ReOIGmLNbVGEd2xC+aTCppm3mk1cc9I/z60VQf7b2QDxC3jOXu3yw==} + peerDependencies: + svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 + typescript: ^4.9.4 || ^5.0.0 dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.15 - typescript: 5.4.5 + svelte: 4.2.18 + typescript: 5.5.3 + dev: true - svelte@4.2.15: + /svelte@4.2.18: + resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==} + engines: {node: '>=16'} dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 '@types/estree': 1.0.5 - acorn: 8.11.3 + acorn: 8.12.0 aria-query: 5.3.0 axobject-query: 4.0.0 code-red: 1.0.4 @@ -25619,37 +22141,55 @@ snapshots: magic-string: 0.30.10 periscopic: 3.1.0 - sveltedoc-parser@4.2.1: + /sveltedoc-parser@4.2.1: + resolution: {integrity: sha512-sWJRa4qOfRdSORSVw9GhfDEwsbsYsegnDzBevUCF6k/Eis/QqCu9lJ6I0+d/E2wOWCjOhlcJ3+jl/Iur+5mmCw==} + engines: {node: '>=10.0.0'} dependencies: eslint: 8.4.1 espree: 9.2.0 htmlparser2-svelte: 4.1.0 transitivePeerDependencies: - supports-color + dev: true - symbol-tree@3.2.4: {} + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true - synckit@0.8.8: + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.2 + tslib: 2.6.3 + dev: true - system-architecture@0.1.0: {} + /system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + dev: false - table@6.8.2: + /table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} dependencies: - ajv: 8.13.0 + ajv: 8.16.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true - tailwindcss-image-rendering@1.0.2: + /tailwindcss-image-rendering@1.0.2: + resolution: {integrity: sha512-WC3hJd2RbHBYIqtJxwpQ5z94wUNyBrJn1eFz3J/jR7OGrQB8WYbJGvJQ9scNNVzoHEYGoNdZbUI90l9YgpBCwg==} dependencies: flat: 4.1.1 lodash: 4.17.21 - tailwindcss@3.4.3: + /tailwindcss@3.4.4: + resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -25659,24 +22199,46 @@ snapshots: fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.0 + jiti: 1.21.6 lilconfig: 2.1.0 - micromatch: 4.0.5 + micromatch: 4.0.7 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.16 + picocolors: 1.0.1 + postcss: 8.4.39 + postcss-import: 15.1.0(postcss@8.4.39) + postcss-js: 4.0.1(postcss@8.4.39) + postcss-load-config: 4.0.2(postcss@8.4.39) + postcss-nested: 6.0.1(postcss@8.4.39) + postcss-selector-parser: 6.1.0 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: - ts-node - tar@6.2.1: + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: true + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -25684,216 +22246,380 @@ snapshots: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 + dev: true - telejson@7.2.0: + /telejson@7.2.0: + resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} dependencies: memoizerific: 1.11.3 + dev: true - temp-dir@2.0.0: {} + /temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + dev: false - temp-dir@3.0.0: {} + /temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + dev: true - temp@0.8.4: + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} dependencies: rimraf: 2.6.3 - tempy@3.1.0: + /tempy@3.1.0: + resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + engines: {node: '>=14.16'} dependencies: is-stream: 3.0.0 temp-dir: 3.0.0 type-fest: 2.19.0 unique-string: 3.0.0 + dev: true - term-size@2.2.1: {} + /term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + dev: false - terser@5.31.0: + /terser@5.31.1: + resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} + engines: {node: '>=10'} + hasBin: true dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 + dev: false - test-exclude@6.0.0: + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 + dev: true - text-table@0.2.0: {} + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true - thenify-all@1.6.0: + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 - thenify@3.3.1: + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 - thread-stream@0.15.2: + /thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} dependencies: real-require: 0.1.0 + dev: false - throat@5.0.0: {} + /throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + dev: false - through2@2.0.5: + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - timeout-abort-controller@3.0.0: + /timeout-abort-controller@3.0.0: + resolution: {integrity: sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==} dependencies: retimer: 3.0.0 + dev: false - timers-ext@0.1.7: + /timers-ext@0.1.8: + resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} + engines: {node: '>=0.12'} dependencies: es5-ext: 0.10.64 next-tick: 1.1.0 - tiny-glob@0.2.9: + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: globalyzer: 0.1.0 globrex: 0.1.2 - tiny-invariant@1.3.3: {} + /tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + dev: true - tinybench@2.8.0: {} + /tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + dev: true - tinypool@0.8.4: {} + /tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + dev: true - tinyspy@2.2.1: {} + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + dev: true - tmp@0.0.33: + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - tmpl@1.0.5: {} + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: false - to-fast-properties@2.0.0: {} + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} - to-regex-range@5.0.1: + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - toidentifier@1.0.1: {} + /tocbot@4.28.2: + resolution: {integrity: sha512-/MaSa9xI6mIo84IxqqliSCtPlH0oy7sLcY9s26qPMyH/2CxtZ2vNAXYlIdEQ7kjAkCQnc0rbLygf//F5c663oQ==} + dev: true + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} - totalist@3.0.1: {} + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true - tough-cookie@4.1.4: + /tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} dependencies: psl: 1.9.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 + dev: true - tr46@0.0.3: {} + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.0.0: + /tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} dependencies: punycode: 2.3.1 + dev: true - treeify@1.1.0: {} + /treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + dev: false - trim-lines@3.0.1: {} + /trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: false - trough@2.2.0: {} + /trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + dev: false - ts-api-utils@1.3.0(typescript@5.4.5): + /ts-api-utils@1.3.0(typescript@5.5.3): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' dependencies: - typescript: 5.4.5 + typescript: 5.5.3 + dev: true - ts-dedent@2.2.0: {} + /ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + dev: true - ts-essentials@9.4.2(typescript@5.4.5): + /ts-essentials@9.4.2(typescript@5.5.3): + resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} + peerDependencies: + typescript: '>=4.1.0' + peerDependenciesMeta: + typescript: + optional: true dependencies: - typescript: 5.4.5 + typescript: 5.5.3 + dev: true - ts-interface-checker@0.1.13: {} + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-morph@19.0.0: + /ts-morph@19.0.0: + resolution: {integrity: sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==} dependencies: '@ts-morph/common': 0.20.0 code-block-writer: 12.0.0 + dev: true - ts-node@10.9.2(@types/node@20.12.8)(typescript@5.4.5): + /ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.8 - acorn: 8.11.3 - acorn-walk: 8.3.2 + '@types/node': 20.14.9 + acorn: 8.12.0 + acorn-walk: 8.3.3 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.5 + typescript: 5.5.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: true - tsconfck@3.0.3(typescript@5.4.5): - dependencies: - typescript: 5.4.5 - - tsconfck@3.1.1(typescript@5.4.5): + /tsconfck@3.1.1(typescript@5.5.3): + resolution: {integrity: sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true dependencies: - typescript: 5.4.5 + typescript: 5.5.3 - tsconfig-paths@3.15.0: + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + dev: true - tslib@1.14.1: {} + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.6.2: {} + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tsutils@3.21.0(typescript@5.4.5): + /tsutils@3.21.0(typescript@5.5.3): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.4.5 + typescript: 5.5.3 + dev: true - tween-functions@1.2.0: {} + /tween-functions@1.2.0: + resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} + dev: true - type-check@0.4.0: + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true - type-detect@4.0.8: {} + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true - type-fest@0.20.2: {} + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: false - type-fest@0.7.1: {} + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true - type-fest@1.4.0: {} + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true - type-fest@2.19.0: {} + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} - type-is@1.6.18: + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} dependencies: media-typer: 0.3.0 mime-types: 2.1.35 + dev: true - type@2.7.2: {} + /type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - typed-array-buffer@1.0.2: + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 + dev: true - typed-array-byte-length@1.0.1: + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 + dev: true - typed-array-byte-offset@1.0.2: + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -25901,8 +22627,11 @@ snapshots: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 + dev: true - typed-array-length@1.0.6: + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -25910,91 +22639,134 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 + dev: true - typesafe-path@0.2.2: {} + /typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + dev: false - typescript-auto-import-cache@0.3.3: + /typescript-auto-import-cache@0.3.3: + resolution: {integrity: sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==} dependencies: - semver: 7.6.2 + semver: 7.6.3 + dev: false - typescript@5.4.5: {} + /typescript@5.5.3: + resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} + engines: {node: '>=14.17'} + hasBin: true + + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - ufo@1.5.3: {} + /uglify-js@3.18.0: + resolution: {integrity: sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true - uint8-varint@2.0.4: + /uint8-varint@2.0.4: + resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} dependencies: uint8arraylist: 2.4.8 uint8arrays: 5.1.0 + dev: false - uint8arraylist@2.4.8: + /uint8arraylist@2.4.8: + resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} dependencies: uint8arrays: 5.1.0 + dev: false - uint8arrays@3.1.0: + /uint8arrays@3.1.0: + resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} dependencies: multiformats: 9.9.0 + dev: false - uint8arrays@3.1.1: + /uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: multiformats: 9.9.0 + dev: false - uint8arrays@4.0.10: + /uint8arrays@4.0.10: + resolution: {integrity: sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==} dependencies: multiformats: 12.1.3 + dev: false - uint8arrays@5.1.0: + /uint8arrays@5.1.0: + resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} dependencies: - multiformats: 13.1.0 + multiformats: 13.1.3 + dev: false - unbox-primitive@1.0.2: + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + dev: true - uncrypto@0.1.3: {} + /uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + dev: false - undici-types@5.26.5: {} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici@5.28.4: + /undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + engines: {node: '>=14.0'} dependencies: '@fastify/busboy': 2.1.1 + dev: false - unenv@1.9.0: + /unenv@1.9.0: + resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} dependencies: consola: 3.2.3 defu: 6.1.4 mime: 3.0.0 node-fetch-native: 1.6.4 pathe: 1.1.2 + dev: false - unfetch@4.2.0: {} + /unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + dev: false - unicode-canonical-property-names-ecmascript@2.0.0: {} + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} - unicode-match-property-ecmascript@2.0.0: + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - unicode-match-property-value-ecmascript@2.1.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} - unicorn-magic@0.1.0: {} + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} - unified@11.0.4: - dependencies: - '@types/unist': 3.0.2 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.1 + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true - unified@11.0.5: + /unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} dependencies: '@types/unist': 3.0.2 bail: 2.0.2 @@ -26003,142 +22775,269 @@ snapshots: is-plain-obj: 4.1.0 trough: 2.2.0 vfile: 6.0.2 + dev: false - unique-string@3.0.0: + /unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} dependencies: crypto-random-string: 4.0.0 + dev: true - unist-util-find-after@5.0.0: + /unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 + dev: false - unist-util-is@6.0.0: + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: '@types/unist': 3.0.2 - unist-util-modify-children@4.0.0: + /unist-util-modify-children@4.0.0: + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} dependencies: '@types/unist': 3.0.2 array-iterate: 2.0.1 + dev: false - unist-util-position-from-estree@2.0.0: + /unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} dependencies: '@types/unist': 3.0.2 + dev: false - unist-util-position@5.0.0: + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: '@types/unist': 3.0.2 + dev: false - unist-util-remove-position@5.0.0: + /unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} dependencies: '@types/unist': 3.0.2 unist-util-visit: 5.0.0 + dev: false - unist-util-stringify-position@4.0.0: + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: '@types/unist': 3.0.2 + dev: false - unist-util-visit-children@3.0.0: + /unist-util-visit-children@3.0.0: + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} dependencies: '@types/unist': 3.0.2 + dev: false - unist-util-visit-parents@6.0.1: + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 - unist-util-visit@5.0.0: + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - universalify@0.1.2: {} + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: false - universalify@0.2.0: {} + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true - universalify@2.0.1: {} + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} - unpipe@1.0.0: {} + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} - unplugin@1.12.0: + /unplugin@1.11.0: + resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==} + engines: {node: '>=14.0.0'} dependencies: - acorn: 8.12.1 + acorn: 8.12.0 chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.2 + dev: true - unstorage@1.10.2(idb-keyval@6.2.1): + /unstorage@1.10.2(idb-keyval@6.2.1): + resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} + peerDependencies: + '@azure/app-configuration': ^1.5.0 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + ioredis: + optional: true dependencies: anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 - h3: 1.11.1 + h3: 1.12.0 idb-keyval: 6.2.1 listhen: 1.7.2 - lru-cache: 10.2.2 + lru-cache: 10.3.0 mri: 1.2.0 node-fetch-native: 1.6.4 ofetch: 1.3.4 ufo: 1.5.3 transitivePeerDependencies: - uWebSockets.js + dev: false - untun@0.1.3: + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + + /untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true dependencies: citty: 0.1.6 consola: 3.2.3 pathe: 1.1.2 + dev: false - update-browserslist-db@1.0.15(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 - - update-browserslist-db@1.1.0(browserslist@4.23.3): + /update-browserslist-db@1.0.16(browserslist@4.23.1): + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: - browserslist: 4.23.3 + browserslist: 4.23.1 escalade: 3.1.2 picocolors: 1.0.1 - upper-case-first@2.0.2: - dependencies: - tslib: 2.6.2 - - upper-case@2.0.2: - dependencies: - tslib: 2.6.2 - - uqr@0.1.2: {} + /uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + dev: false - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 - url-parse@1.5.10: + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 + dev: true + + /use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + tslib: 2.6.3 + dev: true + + /use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.6.3 + dev: true - use-sync-external-store@1.2.0(react@18.3.1): + /use-sync-external-store@1.2.0(react@18.3.1): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 18.3.1 + dev: false - utf-8-validate@5.0.10: + /utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + requiresBuild: true dependencies: node-gyp-build: 4.8.1 + dev: false - utf-8-validate@6.0.3: + /utf-8-validate@6.0.4: + resolution: {integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==} + engines: {node: '>=6.14.2'} + requiresBuild: true dependencies: node-gyp-build: 4.8.1 + dev: false - utf8@3.0.0: {} + /utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + dev: false - util-deprecate@1.0.2: {} + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.12.5: + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 is-arguments: 1.1.1 @@ -26146,121 +23045,144 @@ snapshots: is-typed-array: 1.1.13 which-typed-array: 1.1.15 - utils-merge@1.0.1: {} + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false - uuid@8.3.2: {} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true - uuid@9.0.1: {} + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true - v8-compile-cache-lib@3.0.1: {} + /v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + dev: true - v8-compile-cache@2.4.0: {} + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true - valtio@1.11.2(react@18.3.1): + /valtio@1.11.2(react@18.3.1): + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true dependencies: proxy-compare: 2.5.1 react: 18.3.1 use-sync-external-store: 1.2.0(react@18.3.1) + dev: false - varint@6.0.0: {} + /varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + dev: false - vary@1.1.2: {} + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} - vfile-location@5.0.2: + /vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} dependencies: '@types/unist': 3.0.2 vfile: 6.0.1 + dev: false - vfile-message@4.0.2: + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 + dev: false - vfile@6.0.1: + /vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 + dev: false - vfile@6.0.2: + /vfile@6.0.2: + resolution: {integrity: sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==} dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 + dev: false - viem@1.21.4(typescript@5.4.5): + /viem@1.21.4(typescript@5.5.3): + resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.4.5) + abitype: 0.9.8(typescript@5.5.3) isows: 1.0.3(ws@8.13.0) - typescript: 5.4.5 + typescript: 5.5.3 ws: 8.13.0 transitivePeerDependencies: - bufferutil - utf-8-validate - zod + dev: false - viem@2.18.8(typescript@5.4.5)(zod@3.23.6): - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.4.0 - '@noble/hashes': 1.4.0 - '@scure/bip32': 1.4.0 - '@scure/bip39': 1.3.0 - abitype: 1.0.5(typescript@5.4.5)(zod@3.23.6) - isows: 1.0.4(ws@8.17.1) - typescript: 5.4.5 - webauthn-p256: 0.0.5 - ws: 8.17.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - viem@2.18.8(typescript@5.4.5)(zod@3.23.8): + /viem@2.16.5(typescript@5.5.3)(zod@3.23.8): + resolution: {integrity: sha512-QDESALYDyLSP+pIr7adH3QPZ+3is16aOVMXXZE0X1GVbgL7PDMZQ8xIF1X/B1hgyqkBl2HhMpUaq6ksUdBV/YA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 '@scure/bip32': 1.4.0 '@scure/bip39': 1.3.0 - abitype: 1.0.5(typescript@5.4.5)(zod@3.23.8) + abitype: 1.0.5(typescript@5.5.3)(zod@3.23.8) isows: 1.0.4(ws@8.17.1) - typescript: 5.4.5 - webauthn-p256: 0.0.5 + typescript: 5.5.3 ws: 8.17.1 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.9.31(typescript@5.4.5): - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 1.0.0(typescript@5.4.5) - isows: 1.0.3(ws@8.13.0) - typescript: 5.4.5 - ws: 8.13.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - vite-node@1.6.0(@types/node@20.12.8): + /vite-node@1.6.0(@types/node@20.14.9): + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4 + debug: 4.3.5 pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.12.8) + picocolors: 1.0.1 + vite: 5.3.2(@types/node@20.14.9) transitivePeerDependencies: - '@types/node' - less @@ -26270,99 +23192,252 @@ snapshots: - sugarss - supports-color - terser + dev: true - vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@4.5.3): + /vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@4.5.3): + resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true dependencies: - debug: 4.3.4 + debug: 4.3.5 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.4.5) + tsconfck: 3.1.1(typescript@5.5.3) vite: 4.5.3 transitivePeerDependencies: - supports-color - typescript + dev: true - vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.11): + /vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@5.3.2): + resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true dependencies: - debug: 4.3.4 + debug: 4.3.5 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.4.5) - vite: 5.2.11(@types/node@20.12.8) + tsconfck: 3.1.1(typescript@5.5.3) + vite: 5.3.2(@types/node@20.14.9) transitivePeerDependencies: - supports-color - typescript + dev: true - vite@4.5.3: + /vite@4.5.3: + resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true dependencies: esbuild: 0.18.20 - postcss: 8.4.38 + postcss: 8.4.39 rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 + dev: true - vite@5.2.11(@types/node@20.12.8): + /vite@5.3.2(@types/node@20.14.9): + resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true dependencies: - '@types/node': 20.12.8 - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.17.2 + '@types/node': 20.14.9 + esbuild: 0.21.5 + postcss: 8.4.39 + rollup: 4.18.0 optionalDependencies: fsevents: 2.3.3 + dev: true - vite@5.3.5: + /vite@5.4.0: + resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true dependencies: esbuild: 0.21.5 postcss: 8.4.41 - rollup: 4.17.2 + rollup: 4.18.0 optionalDependencies: fsevents: 2.3.3 + dev: false - vitefu@0.2.5(vite@4.5.3): + /vitefu@0.2.5(vite@4.5.3): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true dependencies: vite: 4.5.3 + dev: true - vitefu@0.2.5(vite@5.2.11): + /vitefu@0.2.5(vite@5.3.2): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true dependencies: - vite: 5.2.11(@types/node@20.12.8) + vite: 5.3.2(@types/node@20.14.9) + dev: true - vitefu@0.2.5(vite@5.3.5): + /vitefu@0.2.5(vite@5.4.0): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true dependencies: - vite: 5.3.5 + vite: 5.4.0 + dev: false - vitest-fetch-mock@0.2.2(vitest@1.6.0): + /vitest-fetch-mock@0.2.2(vitest@1.6.0): + resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} + engines: {node: '>=14.14.0'} + peerDependencies: + vitest: '>=0.16.0' dependencies: cross-fetch: 3.1.8 - vitest: 1.6.0(jsdom@24.0.0) + vitest: 1.6.0(jsdom@24.1.0) transitivePeerDependencies: - encoding + dev: true - vitest-mock-extended@1.3.1(typescript@5.4.5)(vitest@1.6.0): + /vitest-mock-extended@1.3.1(typescript@5.5.3)(vitest@1.6.0): + resolution: {integrity: sha512-OpghYjh4BDuQ/Mzs3lFMQ1QRk9D8/2O9T47MLUA5eLn7K4RWIy+MfIivYOWEyxjTENjsBnzgMihDjyNalN/K0Q==} + peerDependencies: + typescript: 3.x || 4.x || 5.x + vitest: '>=0.31.1' dependencies: - ts-essentials: 9.4.2(typescript@5.4.5) - typescript: 5.4.5 - vitest: 1.6.0(jsdom@24.0.0) + ts-essentials: 9.4.2(typescript@5.5.3) + typescript: 5.5.3 + vitest: 1.6.0(jsdom@24.1.0) + dev: true - vitest@1.6.0(@types/node@20.12.8): + /vitest@1.6.0(@types/node@20.14.9): + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: - '@types/node': 20.12.8 + '@types/node': 20.14.9 '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 + acorn-walk: 8.3.3 chai: 4.4.1 - debug: 4.3.4 + debug: 4.3.5 execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.10 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 std-env: 3.7.0 strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.12.8) - vite-node: 1.6.0(@types/node@20.12.8) + vite: 5.3.2(@types/node@20.14.9) + vite-node: 1.6.0(@types/node@20.14.9) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -26372,29 +23447,53 @@ snapshots: - sugarss - supports-color - terser + dev: true - vitest@1.6.0(jsdom@24.0.0): + /vitest@1.6.0(jsdom@24.1.0): + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 + acorn-walk: 8.3.3 chai: 4.4.1 - debug: 4.3.4 + debug: 4.3.5 execa: 8.0.1 - jsdom: 24.0.0 + jsdom: 24.1.0 local-pkg: 0.5.0 magic-string: 0.30.10 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 std-env: 3.7.0 strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.12.8) - vite-node: 1.6.0(@types/node@20.12.8) + vite: 5.3.2(@types/node@20.14.9) + vite-node: 1.6.0(@types/node@20.14.9) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -26404,45 +23503,95 @@ snapshots: - sugarss - supports-color - terser + dev: true - vlq@1.0.1: {} + /vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + dev: false - void-elements@3.1.0: {} + /void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + dev: false - volar-service-css@0.0.59(@volar/language-service@2.4.0-alpha.18): + /volar-service-css@0.0.59(@volar/language-service@2.4.0-alpha.18): + resolution: {integrity: sha512-gLNjJnECbalPvQB7qeJjhkDN8sR5M3ItbVYjnyio61aHaWptIiXm/HfDahcQ2ApwmvWidkMWWegjGq5L0BENDA==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + peerDependenciesMeta: + '@volar/language-service': + optional: true dependencies: '@volar/language-service': 2.4.0-alpha.18 vscode-css-languageservice: 6.3.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 + dev: false - volar-service-emmet@0.0.59(@volar/language-service@2.4.0-alpha.18): + /volar-service-emmet@0.0.59(@volar/language-service@2.4.0-alpha.18): + resolution: {integrity: sha512-6EynHcuMwMBETpK29TbZvIMmvzdVG+Tkokk9VWfZeI+SwDptk2tgdhEqiXXvIkqYNgbuu73Itp66lpH76cAU+Q==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + peerDependenciesMeta: + '@volar/language-service': + optional: true dependencies: '@emmetio/css-parser': 0.4.0 '@emmetio/html-matcher': 1.3.0 '@volar/language-service': 2.4.0-alpha.18 '@vscode/emmet-helper': 2.9.3 vscode-uri: 3.0.8 + dev: false - volar-service-html@0.0.59(@volar/language-service@2.4.0-alpha.18): + /volar-service-html@0.0.59(@volar/language-service@2.4.0-alpha.18): + resolution: {integrity: sha512-hEXOsYpILDlITZxnqRLV9OepVWD63GZBsyjMxszwdzlxvGZjzbGcBBinJGGJRwFIV8djdJwnt91bkdg1V5tj6Q==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + peerDependenciesMeta: + '@volar/language-service': + optional: true dependencies: '@volar/language-service': 2.4.0-alpha.18 vscode-html-languageservice: 5.3.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 + dev: false - volar-service-prettier@0.0.59(@volar/language-service@2.4.0-alpha.18)(prettier@3.2.5): + /volar-service-prettier@0.0.59(@volar/language-service@2.4.0-alpha.18)(prettier@3.3.2): + resolution: {integrity: sha512-FmBR4lsgFRGR3V0LnxZZal0WqdOJjuLL6mQSj4p57M15APtQwuocG/FiF+ONGFnwRXMOIBDBTCARdth+TKgL3A==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + prettier: ^2.2 || ^3.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + prettier: + optional: true dependencies: '@volar/language-service': 2.4.0-alpha.18 - prettier: 3.2.5 + prettier: 3.3.2 vscode-uri: 3.0.8 + dev: false - volar-service-typescript-twoslash-queries@0.0.59(@volar/language-service@2.4.0-alpha.18): + /volar-service-typescript-twoslash-queries@0.0.59(@volar/language-service@2.4.0-alpha.18): + resolution: {integrity: sha512-skm8e6yhCIkqLwJB6S9MqT5lO9LNFuMD3dYxKpmOZs1CKbXmCZZTmLfEaD5VkJae1xdleEDZFFTHl2O5HLjOGQ==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + peerDependenciesMeta: + '@volar/language-service': + optional: true dependencies: '@volar/language-service': 2.4.0-alpha.18 vscode-uri: 3.0.8 + dev: false - volar-service-typescript@0.0.59(@volar/language-service@2.4.0-alpha.18): + /volar-service-typescript@0.0.59(@volar/language-service@2.4.0-alpha.18): + resolution: {integrity: sha512-VCOpfiu+lUo5lapWLB5L5vmQGtwzmNWn5MueV915eku7blpphmE+Z7hCNcL1NApn7AetXWhiblv8ZhmUx/dGIA==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + peerDependenciesMeta: + '@volar/language-service': + optional: true dependencies: '@volar/language-service': 2.4.0-alpha.18 path-browserify: 1.0.1 @@ -26451,136 +23600,205 @@ snapshots: vscode-languageserver-textdocument: 1.0.11 vscode-nls: 5.2.0 vscode-uri: 3.0.8 + dev: false - vscode-css-languageservice@6.3.0: - dependencies: - '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - - vscode-html-languageservice@5.2.0: + /vscode-css-languageservice@6.3.0: + resolution: {integrity: sha512-nU92imtkgzpCL0xikrIb8WvedV553F2BENzgz23wFuok/HLN5BeQmroMy26pUwFxV2eV8oNRmYCUv8iO7kSMhw==} dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 + dev: false - vscode-html-languageservice@5.3.0: + /vscode-html-languageservice@5.3.0: + resolution: {integrity: sha512-C4Z3KsP5Ih+fjHpiBc5jxmvCl+4iEwvXegIrzu2F5pktbWvQaBT3YkVPk8N+QlSSMk8oCG6PKtZ/Sq2YHb5e8g==} dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 + dev: false - vscode-jsonrpc@8.2.0: {} + /vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + dev: false - vscode-languageserver-protocol@3.17.5: + /vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} dependencies: vscode-jsonrpc: 8.2.0 vscode-languageserver-types: 3.17.5 + dev: false - vscode-languageserver-textdocument@1.0.11: {} + /vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + dev: false - vscode-languageserver-types@3.17.5: {} + /vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + dev: false - vscode-languageserver@9.0.1: + /vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true dependencies: vscode-languageserver-protocol: 3.17.5 + dev: false - vscode-nls@5.2.0: {} + /vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + dev: false - vscode-uri@2.1.2: {} + /vscode-uri@2.1.2: + resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} + dev: false - vscode-uri@3.0.8: {} + /vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + dev: false - w3c-xmlserializer@5.0.0: + /w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} dependencies: xml-name-validator: 5.0.0 + dev: true - walk-up-path@3.0.1: {} - - walker@1.0.8: + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 + dev: false + + /watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: true - wcwidth@1.0.1: + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - web-namespaces@2.0.1: {} + /web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + dev: false - web3-eth-abi@1.10.4: + /web3-eth-abi@1.10.4: + resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} + engines: {node: '>=8.0.0'} dependencies: '@ethersproject/abi': 5.7.0 web3-utils: 1.10.4 + dev: false - web3-utils@1.10.4: + /web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 ethereum-bloom-filters: 1.1.0 - ethereum-cryptography: 2.1.3 + ethereum-cryptography: 2.2.1 ethjs-unit: 0.1.6 number-to-bn: 1.7.0 randombytes: 2.1.0 utf8: 3.0.0 + dev: false - webauthn-p256@0.0.5: - dependencies: - '@noble/curves': 1.4.0 - '@noble/hashes': 1.4.0 - - webextension-polyfill@0.10.0: {} + /webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + dev: false - webidl-conversions@3.0.1: {} + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: {} + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true - webpack-sources@3.2.3: {} + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true - webpack-virtual-modules@0.6.2: {} + /webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + dev: true - whatwg-encoding@3.1.1: + /whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} dependencies: iconv-lite: 0.6.3 + dev: true - whatwg-fetch@3.6.20: {} + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + dev: false - whatwg-mimetype@4.0.0: {} + /whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + dev: true - whatwg-url@14.0.0: + /whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 + dev: true - whatwg-url@5.0.0: + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-boxed-primitive@1.0.2: + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 + dev: true - which-module@2.0.1: {} + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: false - which-pm-runs@1.1.0: {} + /which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + dev: false - which-pm@2.0.0: + /which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 + dev: false - which-pm@3.0.0: + /which-pm@3.0.0: + resolution: {integrity: sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==} + engines: {node: '>=18.12'} dependencies: load-yaml-file: 0.2.0 + dev: false - which-typed-array@1.1.15: + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -26588,101 +23806,217 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.2 - which@1.3.1: + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true dependencies: isexe: 2.0.0 + dev: false - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 - which@4.0.0: + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true dependencies: isexe: 3.1.1 + dev: true - why-is-node-running@2.2.2: + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true dependencies: siginfo: 2.0.0 stackback: 0.0.2 + dev: true - widest-line@4.0.1: + /widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} dependencies: string-width: 5.1.2 + dev: false + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true - word-wrap@1.2.5: {} + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true - wrap-ansi@6.2.0: + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: false - wrap-ansi@7.0.0: + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.3: + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@6.2.2: + /ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true dependencies: async-limiter: 1.0.1 + dev: false - ws@7.4.6: {} - - ws@7.5.9: {} - - ws@8.11.0: {} + /ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true - ws@8.13.0: {} + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false - ws@8.17.0: {} + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false - ws@8.17.1: {} + /ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - xml-name-validator@5.0.0: {} + /xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + dev: true - xmlchars@2.2.0: {} + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true - xmlhttprequest-ssl@2.0.0: {} + /xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + dev: false - xtend@4.0.2: {} + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} - y18n@4.0.3: {} + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: false - y18n@5.0.8: {} + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: false - yallist@2.1.2: {} + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: false - yallist@3.1.1: {} + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: {} + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true - yaml@1.10.2: {} + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true - yaml@2.4.2: {} + /yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} + engines: {node: '>= 14'} + hasBin: true - yargs-parser@18.1.3: + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 + dev: false - yargs-parser@21.1.1: {} + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: false - yargs@15.4.1: + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -26695,8 +24029,11 @@ snapshots: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 + dev: false - yargs@17.7.2: + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} dependencies: cliui: 8.0.1 escalade: 3.1.2 @@ -26705,28 +24042,125 @@ snapshots: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 + dev: false - yn@3.1.1: {} - - yocto-queue@0.1.0: {} + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true - yocto-queue@1.0.0: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - yocto-queue@1.1.1: {} + /yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} - zod-to-json-schema@3.23.2(zod@3.23.8): + /zod-to-json-schema@3.23.2(zod@3.23.8): + resolution: {integrity: sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==} + peerDependencies: + zod: ^3.23.3 dependencies: zod: 3.23.8 + dev: false - zod@3.22.4: {} - - zod@3.23.6: {} + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false - zod@3.23.8: {} + /zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zustand@4.4.1(react@18.3.1): + /zustand@4.4.1(react@18.3.1): + resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true dependencies: react: 18.3.1 use-sync-external-store: 1.2.0(react@18.3.1) + dev: false + + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: false + + github.com/Arachnid/solidity-stringutils/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: + resolution: {tarball: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461} + name: solidity-stringutils + version: 0.0.0 + dev: false + + github.com/Vectorized/solady/a12a2575c899a328c1bafdada632dabbff27cf6b: + resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b} + name: solady + version: 0.0.231 + dev: false + + github.com/Vectorized/solady/de0f336d2033d04e0f77c923d639c7fbffd48b6d: + resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d} + name: solady + version: 0.0.167 + dev: false - zwitch@2.0.4: {} + github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0: + resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} + name: ds-test + version: 1.0.0 + dev: false + + github.com/dmfxyz/murky/5feccd1253d7da820f7cccccdedf64471025455d: + resolution: {tarball: https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d} + name: murky + version: 0.0.0 + dev: false + + github.com/ethereum-optimism/optimism/ab3a54febb36398539fd3b849c222b7e70169dc8: + resolution: {tarball: https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8} + name: optimism + version: 1.0.0 + engines: {node: '>=16', pnpm: '>=9'} + requiresBuild: true + dependencies: + '@changesets/cli': 2.27.7 + dev: false + + github.com/foundry-rs/forge-std/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3} + name: forge-std + version: 1.7.5 + dev: false + + github.com/foundry-rs/forge-std/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32} + name: forge-std + version: 1.9.0 + dev: false + + github.com/risc0/risc0-ethereum/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900: + resolution: {tarball: https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900} + name: risc0-ethereum#v1.0.0 + version: 0.0.0 + dev: false + + github.com/succinctlabs/sp1-contracts/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb: + resolution: {tarball: https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb} + name: sp1-contracts#v2.0.0 + version: 0.0.0 + dev: false + + github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da: + resolution: {tarball: https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da} + name: p256-verifier#v0.1.0 + version: 0.0.0 + dev: false From 8bd3717219fa6f5af2ac73e79cb48c52cc855841 Mon Sep 17 00:00:00 2001 From: Karim <162329697+kimo-ice@users.noreply.github.com> Date: Thu, 26 Sep 2024 03:32:31 +0200 Subject: [PATCH 015/205] chore(taiko-client): add new arm64 runner (#18177) Co-authored-by: Karim --- .github/workflows/taiko-client--docker.yml | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/.github/workflows/taiko-client--docker.yml b/.github/workflows/taiko-client--docker.yml index 8b5ed921889..4b22f12b4d8 100644 --- a/.github/workflows/taiko-client--docker.yml +++ b/.github/workflows/taiko-client--docker.yml @@ -11,31 +11,39 @@ on: jobs: push-docker-image: name: Build and push docker image - runs-on: [arc-runner-set] + strategy: + matrix: + include: + - runner: arc-runner-set + platform: linux/amd64 + - runner: arc-runner-set-arm64 + platform: linux/arm64 + + runs-on: ${{ matrix.runner }} steps: - - name: Install Git + - name: Prepare Environment run: sudo apt-get update && sudo apt-get install -y git - name: Checkout uses: actions/checkout@v4 - name: Login to GAR - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: us-docker.pkg.dev username: _json_key password: ${{ secrets.GAR_JSON_KEY }} - name: Set up QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v3 - name: Docker meta id: meta - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | us-docker.pkg.dev/evmchain/images/taiko-client @@ -50,7 +58,7 @@ jobs: with: context: . file: packages/taiko-client/Dockerfile - platforms: linux/amd64,linux/arm64 + platforms: ${{ matrix.platform }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} From 868d733db962a76261036c3e583cb50feaec901f Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:39:57 +0800 Subject: [PATCH 016/205] feat(protocol): improve `getTransitions` (#18181) Co-authored-by: dantaik --- .../contracts/layer1/based/LibUtils.sol | 37 +- .../contracts/layer1/based/TaikoL1.sol | 21 +- pnpm-lock.yaml | 24077 +++++++++------- 3 files changed, 13264 insertions(+), 10871 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibUtils.sol b/packages/protocol/contracts/layer1/based/LibUtils.sol index 26ffc29a0fb..81f917f4caa 100644 --- a/packages/protocol/contracts/layer1/based/LibUtils.sol +++ b/packages/protocol/contracts/layer1/based/LibUtils.sol @@ -165,32 +165,8 @@ library LibUtils { return _state.transitions[slot][_tid]; } - /// @dev Retrieves the transitions with a batch of parentHash. - /// @param _state Current TaikoData.State. - /// @param _config Actual TaikoData.Config. - /// @param _blockIds Id array of the block. - /// @param _tids The transition id array. - /// @return transitions_ The state transition pointer array. - function getTransitions( - TaikoData.State storage _state, - TaikoData.Config memory _config, - uint64[] calldata _blockIds, - uint32[] calldata _tids - ) - internal - view - returns (TaikoData.TransitionState[] memory transitions_) - { - if (_blockIds.length == 0 || _blockIds.length != _tids.length) { - revert L1_INVALID_PARAMS(); - } - transitions_ = new TaikoData.TransitionState[](_blockIds.length); - for (uint256 i; i < _blockIds.length; ++i) { - transitions_[i] = getTransition(_state, _config, _blockIds[i], _tids[i]); - } - } - - /// @notice This function will revert if the transition is not found. + /// @notice This function will revert if the transition is not found. This function will revert + /// if the transition is not found. /// @dev Retrieves the transition with a given parentHash. /// @param _state Current TaikoData.State. /// @param _config Actual TaikoData.Config. @@ -215,7 +191,8 @@ library LibUtils { return _state.transitions[slot][tid]; } - /// @dev Retrieves the transitions with a batch of parentHash. + /// @notice Gets the state transitions for a batch of block. For transition that doesn't exist, + /// the corresponding transition state will be empty. /// @param _state Current TaikoData.State. /// @param _config Actual TaikoData.Config. /// @param _blockIds Id array of the blocks. @@ -236,7 +213,11 @@ library LibUtils { } transitions_ = new TaikoData.TransitionState[](_blockIds.length); for (uint256 i; i < _blockIds.length; ++i) { - transitions_[i] = getTransition(_state, _config, _blockIds[i], _parentHashes[i]); + (TaikoData.BlockV2 storage blk, uint64 slot) = getBlock(_state, _config, _blockIds[i]); + uint24 tid = getTransitionId(_state, blk, slot, _parentHashes[i]); + if (tid != 0) { + transitions_[i] = _state.transitions[slot][tid]; + } } } diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index 2f103841e25..521a3710541 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -197,7 +197,8 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { (blk_,) = LibUtils.getBlock(state, getConfig(), _blockId); } - /// @notice Gets the state transition for a specific block. + /// @notice This function will revert if the transition is not found. This function will revert + /// if the transition is not found. /// @param _blockId Index of the block. /// @param _parentHash Parent hash of the block. /// @return The state transition data of the block. @@ -212,7 +213,8 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { return LibUtils.getTransition(state, getConfig(), _blockId, _parentHash); } - /// @notice Gets the state transitions for a batch of block. + /// @notice Gets the state transitions for a batch of block. For transition that doesn't exist, + /// the corresponding transition state will be empty. /// @param _blockIds Index of the blocks. /// @param _parentHashes Parent hashes of the blocks. /// @return The state transition array of the blocks. @@ -242,21 +244,6 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { return LibUtils.getTransition(state, getConfig(), _blockId, _tid); } - /// @notice Gets the state transitions for a batch of block. - /// @param _blockIds Index array of the blocks. - /// @param _tids The transition id array of the blocks. - /// @return The state transition array of the blocks. - function getTransitions( - uint64[] calldata _blockIds, - uint32[] calldata _tids - ) - external - view - returns (TaikoData.TransitionState[] memory) - { - return LibUtils.getTransitions(state, getConfig(), _blockIds, _tids); - } - /// @notice Returns information about the last verified block. /// @return blockId_ The last verified block's ID. /// @return blockHash_ The last verified block's blockHash. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e4bd3b8d3a..50a52177ade 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -332,10 +332,10 @@ importers: version: 16.4.5 ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std - version: github.com/foundry-rs/forge-std/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32 ipfs-http-client: specifier: ^60.0.1 version: 60.0.1 @@ -344,19 +344,19 @@ importers: version: 0.4.0 murky: specifier: github:dmfxyz/murky - version: github.com/dmfxyz/murky/5feccd1253d7da820f7cccccdedf64471025455d + version: https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d p256-verifier: specifier: github:taikoxyz/p256-verifier#v0.1.0 - version: github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da + version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da sharp: specifier: ^0.33.3 version: 0.33.4 solady: specifier: github:Vectorized/solady#v0.0.167 - version: github.com/Vectorized/solady/de0f336d2033d04e0f77c923d639c7fbffd48b6d + version: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d solidity-stringutils: specifier: github:Arachnid/solidity-stringutils - version: github.com/Arachnid/solidity-stringutils/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461 + version: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461 devDependencies: '@types/node': specifier: ^20.11.30 @@ -414,28 +414,28 @@ importers: version: 4.9.6 ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std#v1.7.5 - version: github.com/foundry-rs/forge-std/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 merkletreejs: specifier: ^0.4.0 version: 0.4.0 optimism: specifier: github:ethereum-optimism/optimism#v1.8.0 - version: github.com/ethereum-optimism/optimism/ab3a54febb36398539fd3b849c222b7e70169dc8 + version: https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8 p256-verifier: specifier: github:taikoxyz/p256-verifier#v0.1.0 - version: github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da + version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da risc0-ethereum: specifier: github:risc0/risc0-ethereum#v1.0.0 - version: github.com/risc0/risc0-ethereum/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900 + version: risc0-ethereum#v1.0.0@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900 solady: specifier: github:Vectorized/solady#v0.0.231 - version: github.com/Vectorized/solady/a12a2575c899a328c1bafdada632dabbff27cf6b + version: https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b sp1-contracts: specifier: github:succinctlabs/sp1-contracts#v2.0.0 - version: github.com/succinctlabs/sp1-contracts/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb + version: sp1-contracts#v2.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb devDependencies: '@types/node': specifier: ^20.11.30 @@ -649,19 +649,19 @@ importers: version: 4.9.6 ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std#v1.7.5 - version: github.com/foundry-rs/forge-std/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 merkletreejs: specifier: ^0.4.0 version: 0.4.0 p256-verifier: specifier: github:taikoxyz/p256-verifier#v0.1.0 - version: github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da + version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da solady: specifier: github:Vectorized/solady#v0.0.167 - version: github.com/Vectorized/solady/de0f336d2033d04e0f77c923d639c7fbffd48b6d + version: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d devDependencies: '@types/node': specifier: ^20.11.30 @@ -976,38 +976,10589 @@ importers: packages: - /@adobe/css-tools@4.4.0: + '@adobe/css-tools@4.4.0': resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} - dev: true - /@adraffy/ens-normalize@1.10.0: + '@adraffy/ens-normalize@1.10.0': resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} - /@alloc/quick-lru@5.2.0: + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@ampproject/remapping@2.3.0: + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - /@apidevtools/openapi-schemas@2.1.0: - resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} + '@apidevtools/openapi-schemas@2.1.0': + resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} + engines: {node: '>=10'} + + '@apidevtools/swagger-methods@3.0.2': + resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} + + '@astrojs/check@0.8.3': + resolution: {integrity: sha512-ajcSe+ezX5jCc3dreQlWzbknzXgSGnDETNe3C1mawUOtGpO4t5z2YGaD0y+wzB84lmgPWaWZa0fKSPwLq/wUHw==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + '@astrojs/compiler@2.10.2': + resolution: {integrity: sha512-bvH+v8AirwpRWCkYJEyWYdc5Cs/BjG2ZTxIJzttHilXgfKJAdW2496KsUQKzf5j2tOHtaHXKKn9hb9WZiBGpEg==} + + '@astrojs/internal-helpers@0.4.1': + resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} + + '@astrojs/language-server@2.13.2': + resolution: {integrity: sha512-l435EZLKjaUO/6iewJ7xqd3eHf3zAosVWG4woILbxluQcianBoNPepnnqAg7uUriZUaC44ae5v0Q+AfB8UI64g==} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + prettier-plugin-astro: '>=0.11.0' + peerDependenciesMeta: + prettier: + optional: true + prettier-plugin-astro: + optional: true + + '@astrojs/markdown-remark@5.2.0': + resolution: {integrity: sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==} + + '@astrojs/mdx@3.1.3': + resolution: {integrity: sha512-hOM4dMM4RfJI254d3p/AnOZuk2VyKszRtuY5FBm+Xc4XdhIpGrR56OXMNEcWchtwz4HQyPe/eJSgvBjSROcQIQ==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + peerDependencies: + astro: ^4.8.0 + + '@astrojs/prism@3.1.0': + resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + + '@astrojs/sitemap@3.1.6': + resolution: {integrity: sha512-1Qp2NvAzVImqA6y+LubKi1DVhve/hXXgFvB0szxiipzh7BvtuKe4oJJ9dXSqaubaTkt4nMa6dv6RCCAYeB6xaQ==} + + '@astrojs/starlight@0.25.4': + resolution: {integrity: sha512-TRPgRsd5opi2tCXvh8rWizpLsJsRRXbYecULG5b/1x4BFyp40ZJVB77cLMjTj3lHwqWs0Sybtq5OBpOy6fuIEQ==} + peerDependencies: + astro: ^4.8.6 + + '@astrojs/telemetry@3.1.0': + resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + + '@aw-web-design/x-default-browser@1.4.126': + resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} + hasBin: true + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-s3@3.608.0': + resolution: {integrity: sha512-la2R6QfUOmE4JMubxLD3OdnPTduAs5YekIvx68I5CbLudb5pbxkHDqnrWDhgK1lX4Cu19pXjgQXmS8oZMJPeLQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sso-oidc@3.606.0': + resolution: {integrity: sha512-gL1FHPS6hwgMNS/A+Qh5bUyHOeRVOqdb7c6+i+9gR3wtGvt2lvoSm8w5DhS08Xiiacz2AqYRDEapp0xuyCrbBQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.606.0 + + '@aws-sdk/client-sso@3.598.0': + resolution: {integrity: sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/client-sts@3.606.0': + resolution: {integrity: sha512-b11mAhjrkm3MMiAPoMGcmd6vsaz2120lg8rHG/NZCo9vB1K6Kc7WP+a1Q05TRMseer2egTtpWJfn44aVO97VqA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/core@3.598.0': + resolution: {integrity: sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-env@3.598.0': + resolution: {integrity: sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-http@3.598.0': + resolution: {integrity: sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-ini@3.598.0': + resolution: {integrity: sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.598.0 + + '@aws-sdk/credential-provider-node@3.600.0': + resolution: {integrity: sha512-1pC7MPMYD45J7yFjA90SxpR0yaSvy+yZiq23aXhAPZLYgJBAxHLu0s0mDCk/piWGPh8+UGur5K0bVdx4B1D5hw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-process@3.598.0': + resolution: {integrity: sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-sso@3.598.0': + resolution: {integrity: sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.598.0': + resolution: {integrity: sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.598.0 + + '@aws-sdk/lib-storage@3.608.0': + resolution: {integrity: sha512-A6RXgkXYf+eY2POxi382nhMdo7x7QpVfgeehvOqpK5c7LgXjwsPTfjSPqLV1fIZuPLn3NG6uNd12Gs6x/466tQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-s3': ^3.608.0 + + '@aws-sdk/middleware-bucket-endpoint@3.598.0': + resolution: {integrity: sha512-PM7BcFfGUSkmkT6+LU9TyJiB4S8yI7dfuKQDwK5ZR3P7MKaK4Uj4yyDiv0oe5xvkF6+O2+rShj+eh8YuWkOZ/Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-expect-continue@3.598.0': + resolution: {integrity: sha512-ZuHW18kaeHR8TQyhEOYMr8VwiIh0bMvF7J1OTqXHxDteQIavJWA3CbfZ9sgS4XGtrBZDyHJhjZKeCfLhN2rq3w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.598.0': + resolution: {integrity: sha512-xukAzds0GQXvMEY9G6qt+CzwVzTx8NyKKh04O2Q+nOch6QQ8Rs+2kTRy3Z4wQmXq2pK9hlOWb5nXA7HWpmz6Ng==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-host-header@3.598.0': + resolution: {integrity: sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-location-constraint@3.598.0': + resolution: {integrity: sha512-8oybQxN3F1ISOMULk7JKJz5DuAm5hCUcxMW9noWShbxTJuStNvuHf/WLUzXrf8oSITyYzIHPtf8VPlKR7I3orQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-logger@3.598.0': + resolution: {integrity: sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.598.0': + resolution: {integrity: sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.598.0': + resolution: {integrity: sha512-5AGtLAh9wyK6ANPYfaKTqJY1IFJyePIxsEbxa7zS6REheAqyVmgJFaGu3oQ5XlxfGr5Uq59tFTRkyx26G1HkHA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-signing@3.598.0': + resolution: {integrity: sha512-XKb05DYx/aBPqz6iCapsCbIl8aD8EihTuPCs51p75QsVfbQoVr4TlFfIl5AooMSITzojdAQqxt021YtvxjtxIQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-ssec@3.598.0': + resolution: {integrity: sha512-f0p2xP8IC1uJ5e/tND1l81QxRtRFywEdnbtKCE0H6RSn4UIt2W3Dohe1qQDbnh27okF0PkNW6BJGdSAz3p7qbA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-user-agent@3.598.0': + resolution: {integrity: sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/region-config-resolver@3.598.0': + resolution: {integrity: sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.598.0': + resolution: {integrity: sha512-1r/EyTrO1gSa1FirnR8V7mabr7gk+l+HkyTI0fcTSr8ucB7gmYyW6WjkY8JCz13VYHFK62usCEDS7yoJoJOzTA==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/token-providers@3.598.0': + resolution: {integrity: sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.598.0 + + '@aws-sdk/types@3.598.0': + resolution: {integrity: sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-arn-parser@3.568.0': + resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-endpoints@3.598.0': + resolution: {integrity: sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-locate-window@3.568.0': + resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-user-agent-browser@3.598.0': + resolution: {integrity: sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==} + + '@aws-sdk/util-user-agent-node@3.598.0': + resolution: {integrity: sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.598.0': + resolution: {integrity: sha512-ZIa2RK7CHFTZ4gwK77WRtsZ6vF7xwRXxJ8KQIxK2duhoTVcn0xYxpFLdW9WZZZvdP9GIF3Loqvf8DRdeU5Jc7Q==} + engines: {node: '>=16.0.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.24.7': + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.2': + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.24.7': + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.7': + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.0': + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.24.7': + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.24.7': + resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.24.7': + resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.24.7': + resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.24.7': + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.7': + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.24.7': + resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.24.7': + resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.7': + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.7': + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.24.7': + resolution: {integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.24.7': + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.0': + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.25.3': + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7': + resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7': + resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': + resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7': + resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-async-generator-functions@7.20.7': + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-export-default-from@7.24.7': + resolution: {integrity: sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-logical-assignment-operators@7.20.7': + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-numeric-separator@7.18.6': + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-object-rest-spread@7.20.7': + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-optional-catch-binding@7.18.6': + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-optional-chaining@7.21.0': + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-default-from@7.24.7': + resolution: {integrity: sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3': + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.24.7': + resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.24.7': + resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.24.7': + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.24.7': + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.24.7': + resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.24.7': + resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.24.7': + resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.24.7': + resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.24.7': + resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.24.7': + resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.24.7': + resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.24.7': + resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.24.7': + resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.24.7': + resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.24.7': + resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dynamic-import@7.24.7': + resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.24.7': + resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.24.7': + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.24.7': + resolution: {integrity: sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.24.7': + resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.24.7': + resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.24.7': + resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.24.7': + resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.24.7': + resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.24.7': + resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.24.7': + resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.7': + resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.24.7': + resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.24.7': + resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': + resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.24.7': + resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': + resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.24.7': + resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.24.7': + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.24.7': + resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.24.7': + resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.24.7': + resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.24.7': + resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.24.7': + resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.24.7': + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.24.7': + resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.24.7': + resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.25.2': + resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.24.7': + resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-reserved-words@7.24.7': + resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.24.7': + resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.24.7': + resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.24.7': + resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.24.7': + resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.24.7': + resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.24.7': + resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.24.7': + resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.24.7': + resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.24.7': + resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.24.7': + resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.24.7': + resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.24.7': + resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-flow@7.24.7': + resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-typescript@7.24.7': + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/register@7.24.6': + resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/regjsgen@0.8.0': + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + + '@babel/runtime@7.24.7': + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.24.7': + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.24.7': + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.3': + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.7': + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.2': + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@chainsafe/is-ip@2.0.2': + resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==} + + '@chainsafe/netmask@2.0.0': + resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} + + '@changesets/apply-release-plan@7.0.4': + resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} + + '@changesets/assemble-release-plan@6.0.3': + resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==} + + '@changesets/changelog-git@0.2.0': + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} + + '@changesets/cli@2.27.7': + resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==} + hasBin: true + + '@changesets/config@3.0.2': + resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.1': + resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==} + + '@changesets/get-release-plan@4.0.3': + resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.0': + resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + + '@changesets/logger@0.1.0': + resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + + '@changesets/parse@0.4.0': + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + + '@changesets/pre@2.0.0': + resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + + '@changesets/read@0.6.0': + resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + + '@changesets/should-skip-package@0.1.0': + resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.0.0': + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + + '@changesets/write@0.3.1': + resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} + + '@chromatic-com/storybook@1.6.0': + resolution: {integrity: sha512-6sHj0l194KMBIZ0D5SeJ+Ys+zslehKHcC2d6Hd/YEn4cCl7p9mLuxrZjvf8xharGKy8vf9Q1tKrU2YdldzUBoQ==} + engines: {node: '>=16.0.0', yarn: '>=1.22.18'} + + '@coinbase/wallet-sdk@3.9.1': + resolution: {integrity: sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA==} + + '@coinbase/wallet-sdk@3.9.3': + resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} + + '@coinbase/wallet-sdk@4.0.4': + resolution: {integrity: sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@csstools/selector-resolve-nested@1.1.0': + resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 + + '@csstools/selector-specificity@3.1.1': + resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 + + '@ctrl/tinycolor@4.1.0': + resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} + engines: {node: '>=14'} + + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + + '@emmetio/abbreviation@2.3.3': + resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} + + '@emmetio/css-abbreviation@2.1.8': + resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} + + '@emmetio/css-parser@0.4.0': + resolution: {integrity: sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==} + + '@emmetio/html-matcher@1.3.0': + resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} + + '@emmetio/scanner@1.0.4': + resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + + '@emmetio/stream-reader-utils@0.1.0': + resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} + + '@emmetio/stream-reader@2.2.0': + resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} + + '@emnapi/runtime@1.2.0': + resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + + '@emotion/use-insertion-effect-with-fallbacks@1.0.1': + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + peerDependencies: + react: '>=16.8.0' + + '@esbuild/aix-ppc64@0.19.12': + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.19.12': + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.19.12': + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.19.12': + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.19.12': + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.19.12': + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.19.12': + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.12': + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.19.12': + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.19.12': + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.19.12': + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.19.12': + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.19.12': + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.19.12': + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.19.12': + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.19.12': + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.19.12': + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.19.12': + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.19.12': + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.19.12': + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.19.12': + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.19.12': + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.19.12': + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@1.4.1': + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ethereumjs/common@3.2.0': + resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/tx@4.2.0': + resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} + engines: {node: '>=14'} + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + + '@ethersproject/abi@5.7.0': + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + + '@ethersproject/abstract-provider@5.7.0': + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + + '@ethersproject/abstract-signer@5.7.0': + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + + '@ethersproject/address@5.7.0': + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + + '@ethersproject/base64@5.7.0': + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + + '@ethersproject/basex@5.7.0': + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + + '@ethersproject/bignumber@5.7.0': + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/constants@5.7.0': + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + + '@ethersproject/contracts@5.7.0': + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + + '@ethersproject/hash@5.7.0': + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + + '@ethersproject/hdnode@5.7.0': + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + + '@ethersproject/json-wallets@5.7.0': + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/networks@5.7.1': + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + + '@ethersproject/pbkdf2@5.7.0': + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + + '@ethersproject/properties@5.7.0': + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + + '@ethersproject/providers@5.7.2': + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + + '@ethersproject/random@5.7.0': + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + + '@ethersproject/rlp@5.7.0': + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@ethersproject/signing-key@5.7.0': + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + + '@ethersproject/solidity@5.7.0': + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + + '@ethersproject/transactions@5.7.0': + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + + '@ethersproject/units@5.7.0': + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + + '@ethersproject/wallet@5.7.0': + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + + '@ethersproject/web@5.7.1': + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + + '@ethersproject/wordlists@5.7.0': + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + + '@expressive-code/core@0.35.6': + resolution: {integrity: sha512-xGqCkmfkgT7lr/rvmfnYdDSeTdCSp1otAHgoFS6wNEeO7wGDPpxdosVqYiIcQ8CfWUABh/pGqWG90q+MV3824A==} + + '@expressive-code/plugin-frames@0.35.6': + resolution: {integrity: sha512-CqjSWjDJ3wabMJZfL9ZAzH5UAGKg7KWsf1TBzr4xvUbZvWoBtLA/TboBML0U1Ls8h/4TRCIvR4VEb8dv5+QG3w==} + + '@expressive-code/plugin-shiki@0.35.6': + resolution: {integrity: sha512-xm+hzi9BsmhkDUGuyAWIydOAWer7Cs9cj8FM0t4HXaQ+qCubprT6wJZSKUxuvFJIUsIOqk1xXFaJzGJGnWtKMg==} + + '@expressive-code/plugin-text-markers@0.35.6': + resolution: {integrity: sha512-/k9eWVZSCs+uEKHR++22Uu6eIbHWEciVHbIuD8frT8DlqTtHYaaiwHPncO6KFWnGDz5i/gL7oyl6XmOi/E6GVg==} + + '@fal-works/esbuild-plugin-global-externals@2.1.2': + resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@formatjs/ecma402-abstract@2.0.0': + resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} + + '@formatjs/fast-memoize@2.2.0': + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} + + '@formatjs/icu-messageformat-parser@2.7.8': + resolution: {integrity: sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==} + + '@formatjs/icu-skeleton-parser@1.8.2': + resolution: {integrity: sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==} + + '@formatjs/intl-localematcher@0.5.4': + resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/config-array@0.9.5': + resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/momoa@2.0.4': + resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} + engines: {node: '>=10.10.0'} + + '@humanwhocodes/object-schema@1.2.1': + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + deprecated: Use @eslint/object-schema instead + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@img/sharp-darwin-arm64@0.33.4': + resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.4': + resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.2': + resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} + engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.2': + resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} + engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.2': + resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.2': + resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.2': + resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.2': + resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.2': + resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.4': + resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.4': + resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.4': + resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} + engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.4': + resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.4': + resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.4': + resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.4': + resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.4': + resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.4': + resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [win32] + + '@ipld/dag-cbor@9.2.1': + resolution: {integrity: sha512-nyY48yE7r3dnJVlxrdaimrbloh4RokQaNRdI//btfTkcTEZbpmSrbYcBQ4VKTf8ZxXAOUJy4VsRpkJo+y9RTnA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@ipld/dag-json@10.2.2': + resolution: {integrity: sha512-NnU8HdHKwAoGyrW3S09NMa8aZw0tImLRyR64hoafpLpDpAbA9g1+fb24JsdlugbL4sXUQVwDVA+qK4Ud8V83lA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@ipld/dag-pb@4.1.2': + resolution: {integrity: sha512-BSztO4l3C+ya9HjCaQot26Y4AVsqIKtnn6+23ubc1usucnf6yoTBme18oCCdM6gKBMxuPqju5ye3lh9WEJsdeQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@26.6.2': + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@libp2p/interface-connection@4.0.0': + resolution: {integrity: sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-keychain@2.0.5': + resolution: {integrity: sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-peer-id@2.0.2': + resolution: {integrity: sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-peer-info@1.0.10': + resolution: {integrity: sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-pubsub@3.0.7': + resolution: {integrity: sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface@1.5.0': + resolution: {integrity: sha512-SivVvZ+7r7Vgnv+Y88nGZTpG449PYZAPgfLhVqTXn6T4NAFt47InzC7UMFnVqSQuT21YmI9DoeaVXH73CsHNrg==} + + '@libp2p/interfaces@3.3.2': + resolution: {integrity: sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/logger@2.1.1': + resolution: {integrity: sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/peer-id@2.0.4': + resolution: {integrity: sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@lit-labs/ssr-dom-shim@1.2.0': + resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + + '@lit/reactive-element@1.6.3': + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + + '@lit/reactive-element@2.0.4': + resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} + + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + + '@mdx-js/mdx@3.0.1': + resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} + + '@mdx-js/react@3.0.1': + resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@metamask/eth-json-rpc-provider@1.0.1': + resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} + engines: {node: '>=14.0.0'} + + '@metamask/json-rpc-engine@7.3.3': + resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} + engines: {node: '>=16.0.0'} + + '@metamask/json-rpc-middleware-stream@6.0.2': + resolution: {integrity: sha512-jtyx3PRfc1kqoLpYveIVQNwsxYKefc64/LCl9h9Da1m3nUKEvypbYuXSIwi237qvOjKmNHQKsDOZg6f4uBf62Q==} + engines: {node: '>=16.0.0'} + + '@metamask/object-multiplex@2.0.0': + resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} + engines: {node: ^16.20 || ^18.16 || >=20} + + '@metamask/onboarding@1.0.1': + resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + + '@metamask/providers@15.0.0': + resolution: {integrity: sha512-FXvL1NQNl6I7fMOJTfQYcBlBZ33vSlm6w80cMpmn8sJh0Lb7wcBpe02UwBsNlARnI+Qsr26XeDs6WHUHQh8CuA==} + engines: {node: ^18.18 || >=20} + + '@metamask/rpc-errors@6.3.0': + resolution: {integrity: sha512-B1UIG/0xWkaDs/d6xrxsRf7kmFLdk8YE0HUToaFumjwQM36AjBsqEzVyemPTQv0SIrAPFnSmkLt053JOWcu5iw==} + engines: {node: '>=16.0.0'} + + '@metamask/safe-event-emitter@2.0.0': + resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + + '@metamask/safe-event-emitter@3.1.1': + resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} + engines: {node: '>=12.0.0'} + + '@metamask/sdk-communication-layer@0.20.2': + resolution: {integrity: sha512-TN+whYbCClFSkx52Ild1RcjoRyz8YZgwNvZeooIcZIvCfBM6U9W5273KGiY7WLc/oO4KKmFk17d7vMO4gNvhhw==} + peerDependencies: + cross-fetch: ^3.1.5 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 + + '@metamask/sdk-communication-layer@0.26.4': + resolution: {integrity: sha512-+X4GEc5mV1gWK4moSswVlKsUh+RsA48qPlkxBLTUxQODSnyBe0TRMxE6mH+bSrfponnTzvBkGUXyEjvDwDjDHw==} + peerDependencies: + cross-fetch: ^4.0.0 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 + + '@metamask/sdk-install-modal-web@0.20.2': + resolution: {integrity: sha512-0QiaZhV15AGdN1zU2jfTI32eC3YkwEpzDfR9+oiZ9bd2G72c6lYBhTsmDGUd01aP6A+bqJR5PjI8Wh2AWtoLeA==} + peerDependencies: + i18next: 22.5.1 + react: ^18.2.0 + react-dom: ^18.2.0 + react-i18next: ^13.2.2 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true + + '@metamask/sdk-install-modal-web@0.26.4': + resolution: {integrity: sha512-7Cx7ZsaExbMwghlRrUWWI0Ksg0m7K60LtMjfuDpjvjWqoZa9MoPxitGDEXNbLaqvKn39ebPvNcPzQ6czA4ilTw==} + peerDependencies: + i18next: 23.2.3 + react: ^18.2.0 + react-dom: ^18.2.0 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true + + '@metamask/sdk@0.20.3': + resolution: {integrity: sha512-HZ9NwA+LxiXzuy0YWbWsuD4xejQtp85bhcCAf8UgpA/0dOyF3RS4dKDdBBXSyRgk3RWPjeJgHxioaH4CmBmiRA==} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@metamask/sdk@0.26.4': + resolution: {integrity: sha512-9Yh41KJkD9RhW0lRijnQzPV0ptblLorLdTsf5GnAl3yE72QIfaPBtsDxzLtX+0QLppiFfj7o8vRBYvBApG9k+Q==} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@metamask/superstruct@3.1.0': + resolution: {integrity: sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==} + engines: {node: '>=16.0.0'} + + '@metamask/utils@5.0.2': + resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} + engines: {node: '>=14.0.0'} + + '@metamask/utils@8.5.0': + resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} + engines: {node: '>=16.0.0'} + + '@moralisweb3/api-utils@2.26.7': + resolution: {integrity: sha512-+CGUNNYgynrjRwkL1/+HeGawhz0JCRh1Zeugx4UfDx4ULI7gLFxrAQqzN7UaMTM5Ftw7jBG4k3bc7mvpJfuv3g==} + + '@moralisweb3/aptos-api@2.26.7': + resolution: {integrity: sha512-YNy/qLAHXz9KGOAiQVMzKJqAyGCxdnyvdR84/nwtU2PXHTydMxoxnL7EVL+HnpK3bjq5nXLMxofXYHoAXbdz3Q==} + + '@moralisweb3/auth@2.26.7': + resolution: {integrity: sha512-PdJzc2j4zxzwR5fzlHRNqmuhzJvD1E6ZKJPMOqiOPF4zGbVM3NbONdx4bR7W6kRQciXZzeO5oyW9/N9PF76jgw==} + + '@moralisweb3/common-aptos-utils@2.26.7': + resolution: {integrity: sha512-hCGawLqv2J1X83RVNqHifh0E0NdezdOGs93KQa2vlkvj1OHPgKeHlBX8gNZ+Fx6cGyWyK2dU3AbFCJ4hkkmNYA==} + + '@moralisweb3/common-auth-utils@2.26.7': + resolution: {integrity: sha512-rANpdno9SbmW0GQ4uOAFJj4TbEyOIiWmzzgY9Jcd4ocjYH4Z3WrBl85vblce8EXoPpxPvRk3Xv6rQFCt17Dw8w==} + + '@moralisweb3/common-core@2.26.7': + resolution: {integrity: sha512-6jRoS8hUAwcRx8xA7R5YlCrkHOIfX01iqdDn2I04lV/VH4bfKBtiOgBSMrc+Ucgtn44seaOVOb4iCSE5EP7SvQ==} + + '@moralisweb3/common-evm-utils@2.26.7': + resolution: {integrity: sha512-hnoq1pil07dnxpgvBrKDPqsDYZY+2MRBwFINx7KgRMK6WmsOfaaTl6FzT2ruFSbX02fFZMrT0TG5qnx6U3FM5g==} + + '@moralisweb3/common-sol-utils@2.26.7': + resolution: {integrity: sha512-egTzMx8ByIGEXjpC43iN9+q4BMv/G1EO7mLn5drAn32P1voC39TAA26MnrlFY4y2XREU/Imc737OIhPATrGD4A==} + + '@moralisweb3/common-streams-utils@2.26.7': + resolution: {integrity: sha512-FrwgSC8Y2Rp2RAq7nj4/LjIAk+RVrna5Yin4843plrvvi0WXZCxAHZBfZuHz56qJkQVsmdYgBevvCxipct1nTA==} + + '@moralisweb3/evm-api@2.26.7': + resolution: {integrity: sha512-eFcSnyeyBjrgX/1hjcDZ3BDaC3B7N6w+wRRQi5FSbp4tadh0LAd+zlUVwNhr0UsKUoT6rZRY+pDhHXM4HDHeEg==} + + '@moralisweb3/sol-api@2.26.7': + resolution: {integrity: sha512-7MMi52WeCyRKhT6KKRZa/k62fPuf6fx2waA+Jc5jo8+nDvn5wbqpl7KWx338rqT3C7M9xzhT1HfsCJ/TOD6jUw==} + + '@moralisweb3/streams-typings@1.0.7': + resolution: {integrity: sha512-ShbVqil0KLOTyTjO6z9JewPcVVE3S6kzkQFnW2flGBRsGdKucpkUdOx1HijOLoaikz/9gH92n+lzTvRFIj0AoA==} + + '@moralisweb3/streams@2.26.7': + resolution: {integrity: sha512-xrLEuXL02GuK6Lio96wpDyPQUhFgBS8CHRq5BDhCXzXr93yyiXAt6P28mq/mUGR/uABSjutilfTaV2MyhwFkng==} + + '@motionone/animation@10.18.0': + resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} + + '@motionone/dom@10.18.0': + resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} + + '@motionone/easing@10.18.0': + resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} + + '@motionone/generators@10.18.0': + resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} + + '@motionone/svelte@10.16.4': + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + + '@motionone/types@10.17.1': + resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} + + '@motionone/utils@10.18.0': + resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + + '@motionone/vue@10.16.4': + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} + deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + + '@multiformats/dns@1.0.6': + resolution: {integrity: sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==} + + '@multiformats/multiaddr-to-uri@9.0.8': + resolution: {integrity: sha512-4eiN5iEiQfy2A98BxekUfW410L/ivg0sgjYSgSqmklnrBhK+QyMz4yqgfkub8xDTXOc7O5jp4+LVyM3ZqMeWNw==} + + '@multiformats/multiaddr@11.6.1': + resolution: {integrity: sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@multiformats/multiaddr@12.3.0': + resolution: {integrity: sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==} + + '@ndelangen/get-tarball@3.0.9': + resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} + + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + + '@noble/curves@1.4.0': + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} + + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + + '@noble/hashes@1.2.0': + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/secp256k1@1.7.1': + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@openzeppelin/contracts-upgradeable@4.9.6': + resolution: {integrity: sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==} + + '@openzeppelin/contracts-upgradeable@5.0.2': + resolution: {integrity: sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==} + peerDependencies: + '@openzeppelin/contracts': 5.0.2 + + '@openzeppelin/contracts@4.9.6': + resolution: {integrity: sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==} + + '@openzeppelin/contracts@5.0.2': + resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} + + '@openzeppelin/merkle-tree@1.0.6': + resolution: {integrity: sha512-cGWOb2WBWbJhqvupzxjnKAwGLxxAEYPg51sk76yZ5nVe5D03mw7Vx5yo8llaIEqYhP5O39M8QlrNWclgLfKVrA==} + + '@pagefind/darwin-arm64@1.1.0': + resolution: {integrity: sha512-SLsXNLtSilGZjvqis8sX42fBWsWAVkcDh1oerxwqbac84HbiwxpxOC2jm8hRwcR0Z55HPZPWO77XeRix/8GwTg==} + cpu: [arm64] + os: [darwin] + + '@pagefind/darwin-x64@1.1.0': + resolution: {integrity: sha512-QjQSE/L5oS1C8N8GdljGaWtjCBMgMtfrPAoiCmINTu9Y9dp0ggAyXvF8K7Qg3VyIMYJ6v8vg2PN7Z3b+AaAqUA==} + cpu: [x64] + os: [darwin] + + '@pagefind/default-ui@1.1.0': + resolution: {integrity: sha512-+XiAJAK++C64nQcD7s3Prdmd5S92lT05fwjOxm0L1jj80jbL+tmvcqkkFnPpoqhnicIPgcAX/Y5W0HRZnBt35w==} + + '@pagefind/linux-arm64@1.1.0': + resolution: {integrity: sha512-8zjYCa2BtNEL7KnXtysPtBELCyv5DSQ4yHeK/nsEq6w4ToAMTBl0K06khqxdSGgjMSwwrxvLzq3so0LC5Q14dA==} + cpu: [arm64] + os: [linux] + + '@pagefind/linux-x64@1.1.0': + resolution: {integrity: sha512-4lsg6VB7A6PWTwaP8oSmXV4O9H0IHX7AlwTDcfyT+YJo/sPXOVjqycD5cdBgqNLfUk8B9bkWcTDCRmJbHrKeCw==} + cpu: [x64] + os: [linux] + + '@pagefind/windows-x64@1.1.0': + resolution: {integrity: sha512-OboCM76BcMKT9IoSfZuFhiqMRgTde8x4qDDvKulFmycgiJrlL5WnIqBHJLQxZq+o2KyZpoHF97iwsGAm8c32sQ==} + cpu: [x64] + os: [win32] + + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-wasm@2.4.1': + resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm + + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@playwright/test@1.45.0': + resolution: {integrity: sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==} + engines: {node: '>=18'} + hasBin: true + + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@2.2.2': + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + engines: {node: '>=12'} + + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.1': + resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.0': + resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.0': + resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-portal@1.1.1': + resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.0': + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@react-native-community/cli-clean@13.6.9': + resolution: {integrity: sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==} + + '@react-native-community/cli-config@13.6.9': + resolution: {integrity: sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==} + + '@react-native-community/cli-debugger-ui@13.6.9': + resolution: {integrity: sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==} + + '@react-native-community/cli-doctor@13.6.9': + resolution: {integrity: sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==} + + '@react-native-community/cli-hermes@13.6.9': + resolution: {integrity: sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==} + + '@react-native-community/cli-platform-android@13.6.9': + resolution: {integrity: sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==} + + '@react-native-community/cli-platform-apple@13.6.9': + resolution: {integrity: sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==} + + '@react-native-community/cli-platform-ios@13.6.9': + resolution: {integrity: sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==} + + '@react-native-community/cli-server-api@13.6.9': + resolution: {integrity: sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==} + + '@react-native-community/cli-tools@13.6.9': + resolution: {integrity: sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==} + + '@react-native-community/cli-types@13.6.9': + resolution: {integrity: sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==} + + '@react-native-community/cli@13.6.9': + resolution: {integrity: sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==} + engines: {node: '>=18'} + hasBin: true + + '@react-native/assets-registry@0.74.85': + resolution: {integrity: sha512-59YmIQxfGDw4aP9S/nAM+sjSFdW8fUP6fsqczCcXgL2YVEjyER9XCaUT0J1K+PdHep8pi05KUgIKUds8P3jbmA==} + engines: {node: '>=18'} + + '@react-native/babel-plugin-codegen@0.74.85': + resolution: {integrity: sha512-48TSDclRB5OMXiImiJkLxyCfRyLsqkCgI8buugCZzvXcYslfV7gCvcyFyQldtcOmerV+CK4RAj7QS4hmB5Mr8Q==} + engines: {node: '>=18'} + + '@react-native/babel-preset@0.74.85': + resolution: {integrity: sha512-yMHUlN8INbK5BBwiBuQMftdWkpm1IgCsoJTKcGD2OpSgZhwwm8RUSvGhdRMzB2w7bsqqBmaEMleGtW6aCR7B9w==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/codegen@0.74.85': + resolution: {integrity: sha512-N7QwoS4Hq/uQmoH83Ewedy6D0M7xbQsOU3OMcQf0eY3ltQ7S2hd9/R4UTalQWRn1OUJfXR6OG12QJ4FStKgV6Q==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 + + '@react-native/community-cli-plugin@0.74.85': + resolution: {integrity: sha512-ODzND33eA2owAY3g9jgCdqB+BjAh8qJ7dvmSotXgrgDYr3MJMpd8gvHTIPe2fg4Kab+wk8uipRhrE0i0RYMwtQ==} + engines: {node: '>=18'} + + '@react-native/debugger-frontend@0.74.85': + resolution: {integrity: sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==} + engines: {node: '>=18'} + + '@react-native/dev-middleware@0.74.85': + resolution: {integrity: sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==} + engines: {node: '>=18'} + + '@react-native/gradle-plugin@0.74.85': + resolution: {integrity: sha512-1VQSLukJzaVMn1MYcs8Weo1nUW8xCas2XU1KuoV7OJPk6xPnEBFJmapmEGP5mWeEy7kcTXJmddEgy1wwW0tcig==} + engines: {node: '>=18'} + + '@react-native/js-polyfills@0.74.85': + resolution: {integrity: sha512-gp4Rg9le3lVZeW7Cie6qLfekvRKZuhJ3LKgi1SFB4N154z1wIclypAJXVXgWBsy8JKJfTwRI+sffC4qZDlvzrg==} + engines: {node: '>=18'} + + '@react-native/metro-babel-transformer@0.74.85': + resolution: {integrity: sha512-JIrXqEwhTvWPtGArgMptIPGstMdXQIkwSjKVYt+7VC4a9Pw1GurIWanIJheEW6ZuCVvTc0VZkwglFz9JVjzDjA==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/normalize-colors@0.74.85': + resolution: {integrity: sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==} + + '@react-native/virtualized-lists@0.74.85': + resolution: {integrity: sha512-jx2Zw0qlZteoQ+0KxRc7s4drsljLBEP534FaNZ950e9+CN9nVkLsV6rigcTjDR8wjKMSBWhKf0C0C3egYz7Ehg==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.6 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + + '@readme/better-ajv-errors@1.6.0': + resolution: {integrity: sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==} + engines: {node: '>=14'} + peerDependencies: + ajv: 4.11.8 - 8 + + '@readme/json-schema-ref-parser@1.2.0': + resolution: {integrity: sha512-Bt3QVovFSua4QmHa65EHUmh2xS0XJ3rgTEUPH998f4OW4VVJke3BuS16f+kM0ZLOGdvIrzrPRqwihuv5BAjtrA==} + + '@readme/openapi-parser@2.5.0': + resolution: {integrity: sha512-IbymbOqRuUzoIgxfAAR7XJt2FWl6n2yqN09fF5adacGm7W03siA3bj1Emql0X9D2T+RpBYz3x9zDsMhuoMP62A==} + engines: {node: '>=14'} + peerDependencies: + openapi-types: '>=7' + + '@rnx-kit/chromium-edge-launcher@1.0.0': + resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} + engines: {node: '>=14.15'} + + '@rollup/rollup-android-arm-eabi@4.18.0': + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.18.0': + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.18.0': + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.18.0': + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.18.0': + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.18.0': + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.18.0': + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + cpu: [x64] + os: [win32] + + '@safe-global/safe-apps-provider@0.18.1': + resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} + + '@safe-global/safe-apps-sdk@8.1.0': + resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} + + '@safe-global/safe-gateway-typescript-sdk@3.21.8': + resolution: {integrity: sha512-n/fYgiqbuzAQuK0bgny6GBYvb585ETxKURa5Kb9hBV3fa47SvJo/dpGq275fJUn0e3Hh1YqETiLGj4HVJjHiTA==} + engines: {node: '>=16'} + + '@scure/base@1.1.7': + resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} + + '@scure/bip32@1.1.5': + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + + '@scure/bip32@1.3.2': + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + + '@scure/bip39@1.1.1': + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + + '@scure/bip39@1.2.1': + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + + '@shikijs/core@1.10.0': + resolution: {integrity: sha512-BZcr6FCmPfP6TXaekvujZcnkFmJHZ/Yglu97r/9VjzVndQA56/F4WjUKtJRQUnK59Wi7p/UTAOekMfCJv7jnYg==} + + '@shikijs/core@1.12.1': + resolution: {integrity: sha512-biCz/mnkMktImI6hMfMX3H9kOeqsInxWEyCHbSlL8C/2TR1FqfmGxTLRNwYCKsyCyxWLbB8rEqXRVZuyxuLFmA==} + + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@smithy/abort-controller@3.1.1': + resolution: {integrity: sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==} + engines: {node: '>=16.0.0'} + + '@smithy/chunked-blob-reader-native@3.0.0': + resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} + + '@smithy/chunked-blob-reader@3.0.0': + resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} + + '@smithy/config-resolver@3.0.4': + resolution: {integrity: sha512-VwiOk7TwXoE7NlNguV/aPq1hFH72tqkHCw8eWXbr2xHspRyyv9DLpLXhq+Ieje+NwoqXrY0xyQjPXdOE6cGcHA==} + engines: {node: '>=16.0.0'} + + '@smithy/core@2.2.4': + resolution: {integrity: sha512-qdY3LpMOUyLM/gfjjMQZui+UTNS7kBRDWlvyIhVOql5dn2J3isk9qUTBtQ1CbDH8MTugHis1zu3h4rH+Qmmh4g==} + engines: {node: '>=16.0.0'} + + '@smithy/credential-provider-imds@3.1.3': + resolution: {integrity: sha512-U1Yrv6hx/mRK6k8AncuI6jLUx9rn0VVSd9NPEX6pyYFBfkSkChOc/n4zUb8alHUVg83TbI4OdZVo1X0Zfj3ijA==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-codec@3.1.2': + resolution: {integrity: sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==} + + '@smithy/eventstream-serde-browser@3.0.4': + resolution: {integrity: sha512-Eo4anLZX6ltGJTZ5yJMc80gZPYYwBn44g0h7oFq6et+TYr5dUsTpIcDbz2evsOKIZhZ7zBoFWHtBXQ4QQeb5xA==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-config-resolver@3.0.3': + resolution: {integrity: sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-node@3.0.4': + resolution: {integrity: sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-universal@3.0.4': + resolution: {integrity: sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==} + engines: {node: '>=16.0.0'} + + '@smithy/fetch-http-handler@3.2.0': + resolution: {integrity: sha512-vFvDxMrc6sO5Atec8PaISckMcAwsCrRhYxwUylg97bRT2KZoumOF7qk5+6EVUtuM1IG9AJV5aqXnHln9ZdXHpg==} + + '@smithy/hash-blob-browser@3.1.2': + resolution: {integrity: sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==} + + '@smithy/hash-node@3.0.3': + resolution: {integrity: sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==} + engines: {node: '>=16.0.0'} + + '@smithy/hash-stream-node@3.1.2': + resolution: {integrity: sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==} + engines: {node: '>=16.0.0'} + + '@smithy/invalid-dependency@3.0.3': + resolution: {integrity: sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + + '@smithy/md5-js@3.0.3': + resolution: {integrity: sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==} + + '@smithy/middleware-content-length@3.0.3': + resolution: {integrity: sha512-Dbz2bzexReYIQDWMr+gZhpwBetNXzbhnEMhYKA6urqmojO14CsXjnsoPYO8UL/xxcawn8ZsuVU61ElkLSltIUQ==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-endpoint@3.0.4': + resolution: {integrity: sha512-whUJMEPwl3ANIbXjBXZVdJNgfV2ZU8ayln7xUM47rXL2txuenI7jQ/VFFwCzy5lCmXScjp6zYtptW5Evud8e9g==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-retry@3.0.7': + resolution: {integrity: sha512-f5q7Y09G+2h5ivkSx5CHvlAT4qRR3jBFEsfXyQ9nFNiWQlr8c48blnu5cmbTQ+p1xmIO14UXzKoF8d7Tm0Gsjw==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-serde@3.0.3': + resolution: {integrity: sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-stack@3.0.3': + resolution: {integrity: sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==} + engines: {node: '>=16.0.0'} + + '@smithy/node-config-provider@3.1.3': + resolution: {integrity: sha512-rxdpAZczzholz6CYZxtqDu/aKTxATD5DAUDVj7HoEulq+pDSQVWzbg0btZDlxeFfa6bb2b5tUvgdX5+k8jUqcg==} + engines: {node: '>=16.0.0'} + + '@smithy/node-http-handler@3.1.1': + resolution: {integrity: sha512-L71NLyPeP450r2J/mfu1jMc//Z1YnqJt2eSNw7uhiItaONnBLDA68J5jgxq8+MBDsYnFwNAIc7dBG1ImiWBiwg==} + engines: {node: '>=16.0.0'} + + '@smithy/property-provider@3.1.3': + resolution: {integrity: sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==} + engines: {node: '>=16.0.0'} + + '@smithy/protocol-http@4.0.3': + resolution: {integrity: sha512-x5jmrCWwQlx+Zv4jAtc33ijJ+vqqYN+c/ZkrnpvEe/uDas7AT7A/4Rc2CdfxgWv4WFGmEqODIrrUToPN6DDkGw==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-builder@3.0.3': + resolution: {integrity: sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-parser@3.0.3': + resolution: {integrity: sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==} + engines: {node: '>=16.0.0'} + + '@smithy/service-error-classification@3.0.3': + resolution: {integrity: sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==} + engines: {node: '>=16.0.0'} + + '@smithy/shared-ini-file-loader@3.1.3': + resolution: {integrity: sha512-Z8Y3+08vgoDgl4HENqNnnzSISAaGrF2RoKupoC47u2wiMp+Z8P/8mDh1CL8+8ujfi2U5naNvopSBmP/BUj8b5w==} + engines: {node: '>=16.0.0'} + + '@smithy/signature-v4@3.1.2': + resolution: {integrity: sha512-3BcPylEsYtD0esM4Hoyml/+s7WP2LFhcM3J2AGdcL2vx9O60TtfpDOL72gjb4lU8NeRPeKAwR77YNyyGvMbuEA==} + engines: {node: '>=16.0.0'} + + '@smithy/smithy-client@3.1.5': + resolution: {integrity: sha512-x9bL9Mx2CT2P1OiUlHM+ZNpbVU6TgT32f9CmTRzqIHA7M4vYrROCWEoC3o4xHNJASoGd4Opos3cXYPgh+/m4Ww==} + engines: {node: '>=16.0.0'} + + '@smithy/types@3.3.0': + resolution: {integrity: sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==} + engines: {node: '>=16.0.0'} + + '@smithy/url-parser@3.0.3': + resolution: {integrity: sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==} + + '@smithy/util-base64@3.0.0': + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-body-length-browser@3.0.0': + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + + '@smithy/util-body-length-node@3.0.0': + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-config-provider@3.0.0': + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-defaults-mode-browser@3.0.7': + resolution: {integrity: sha512-Q2txLyvQyGfmjsaDbVV7Sg8psefpFcrnlGapDzXGFRPFKRBeEg6OvFK8FljqjeHSaCZ6/UuzQExUPqBR/2qlDA==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-node@3.0.7': + resolution: {integrity: sha512-F4Qcj1fG6MGi2BSWCslfsMSwllws/WzYONBGtLybyY+halAcXdWhcew+mej8M5SKd5hqPYp4f7b+ABQEaeytgg==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-endpoints@2.0.4': + resolution: {integrity: sha512-ZAtNf+vXAsgzgRutDDiklU09ZzZiiV/nATyqde4Um4priTmasDH+eLpp3tspL0hS2dEootyFMhu1Y6Y+tzpWBQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-middleware@3.0.3': + resolution: {integrity: sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==} + engines: {node: '>=16.0.0'} + + '@smithy/util-retry@3.0.3': + resolution: {integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==} + engines: {node: '>=16.0.0'} + + '@smithy/util-stream@3.0.5': + resolution: {integrity: sha512-xC3L5PKMAT/Bh8fmHNXP9sdQ4+4aKVUU3EEJ2CF/lLk7R+wtMJM+v/1B4en7jO++Wa5spGzFDBCl0QxgbUc5Ug==} + engines: {node: '>=16.0.0'} + + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-waiter@3.1.2': + resolution: {integrity: sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==} + engines: {node: '>=16.0.0'} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@solidity-parser/parser@0.18.0': + resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} + + '@stablelib/aead@1.0.1': + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + + '@stablelib/binary@1.0.1': + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + + '@stablelib/bytes@1.0.1': + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + + '@stablelib/chacha20poly1305@1.0.1': + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + + '@stablelib/chacha@1.0.1': + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + + '@stablelib/constant-time@1.0.1': + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + + '@stablelib/ed25519@1.0.3': + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + + '@stablelib/hash@1.0.1': + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + + '@stablelib/hkdf@1.0.1': + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + + '@stablelib/hmac@1.0.1': + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + + '@stablelib/int@1.0.1': + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + + '@stablelib/keyagreement@1.0.1': + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + + '@stablelib/poly1305@1.0.1': + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + + '@stablelib/random@1.0.2': + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + + '@stablelib/sha256@1.0.1': + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + + '@stablelib/sha512@1.0.1': + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + + '@stablelib/wipe@1.0.1': + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + + '@stablelib/x25519@1.0.3': + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + + '@storybook/addon-actions@8.1.11': + resolution: {integrity: sha512-jqYXgBgOVInStOCk//AA+dGkrfN8R7rDXA4lyu82zM59kvICtG9iqgmkSRDn0Z3zUkM+lIHZGoz0aLVQ8pxsgw==} + + '@storybook/addon-backgrounds@8.1.11': + resolution: {integrity: sha512-naGf1ovmsU2pSWb270yRO1IidnO+0YCZ5Tcb8I4rPhZ0vsdXNURYKS1LPSk1OZkvaUXdeB4Im9HhHfUBJOW9oQ==} + + '@storybook/addon-controls@8.1.11': + resolution: {integrity: sha512-q/Vt4meNVlFlBWIMCJhx6r+bqiiYocCta2RoUK5nyIZUiLzHncKHX6JnCU36EmJzRyah9zkwjfCb2G1r9cjnoQ==} + + '@storybook/addon-docs@8.1.11': + resolution: {integrity: sha512-69dv+CE4R5wFU7xnJmhuyEbLN2PEVDV3N/BbgJqeucIYPmm6zDV83Q66teCHKYtRln3BFUqPH5mxsjiHobxfJQ==} + + '@storybook/addon-essentials@8.1.11': + resolution: {integrity: sha512-uRTpcIZQnflML8H+2onicUNIIssKfuviW8Lyrs/KFwSZ1rMcYzhwzCNbGlIbAv04tgHe5NqEyNhb+DVQcZQBzg==} + + '@storybook/addon-highlight@8.1.11': + resolution: {integrity: sha512-Iu8FCAd4ETsB6QF4xDE/OLLZY3HOFopuLM5KE0f58jnccF5zAVGr1Rj/54p6TeK0PEou0tLRPFuZs+LPlEzrSw==} + + '@storybook/addon-interactions@8.1.11': + resolution: {integrity: sha512-nkc01z61mYM1kxf0ncBQLlFnnwW4RAVPfRSxK9BdbFN3AAvFiHCwVZdn71mi+C3L8oTqYR6o32e0RlXk+AjhHA==} + + '@storybook/addon-links@8.1.11': + resolution: {integrity: sha512-HlV2RQSrZyi+55W1B1a9eWNuJdNpWx0g3j7s2arNlNmbd6/kfWAp84axBstI1tL0nW4svut7bWlCsMSOIden+A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + peerDependenciesMeta: + react: + optional: true + + '@storybook/addon-measure@8.1.11': + resolution: {integrity: sha512-LkQD3SiLWaWt53aLB3EnmhD9Im8EOO+HKSUE+XGnIJRUcHHRqHfvDkN9KX7T1DCWbfRE5WzMHF5o23b3UiAANw==} + + '@storybook/addon-outline@8.1.11': + resolution: {integrity: sha512-vco3RLVjkcS25dNtj1lxmjq4fC0Nq08KNLMS5cbNPVJWNTuSUi/2EthSTQQCdpfMV/p6u+D5uF20A9Pl0xJFXw==} + + '@storybook/addon-themes@8.1.11': + resolution: {integrity: sha512-tEOzNiLSAz0/kQKkqV85V7olkJpinCaKpxRpUQpFYut/yQVl+fUchgkfCKrQZuQuvSrebhMmQQ8fbqZq8nf2pw==} + + '@storybook/addon-toolbars@8.1.11': + resolution: {integrity: sha512-reIKB0+JTiP+GNzynlDcRf4xmv9+j/DQ94qiXl2ZG5+ufKilH8DiRZpVA/i0x+4+TxdGdOJr1/pOf8tAmhNEoQ==} + + '@storybook/addon-viewport@8.1.11': + resolution: {integrity: sha512-qk4IcGnAgiAUQxt8l5PIQ293Za+w6wxlJQIpxr7+QM8OVkADPzXY0MmQfYWU9EQplrxAC2MSx3/C1gZeq+MDOQ==} + + '@storybook/blocks@8.1.11': + resolution: {integrity: sha512-eMed7PpL/hAVM6tBS7h70bEAyzbiSU9I/kye4jZ7DkCbAsrX6OKmC7pcHSDn712WTcf3vVqxy5jOKUmOXpc0eg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/builder-manager@8.1.11': + resolution: {integrity: sha512-U7bmed4Ayg+OlJ8HPmLeGxLTHzDY7rxmxM4aAs4YL01fufYfBcjkIP9kFhJm+GJOvGm+YJEUAPe5mbM1P/bn0Q==} + + '@storybook/builder-vite@8.1.11': + resolution: {integrity: sha512-hG4eoNMCPgjZ2Ai+zSmk69zjsyEihe75XbJXtYfGRqjMWtz2+SAUFO54fLc2BD5svcUiTeN+ukWcTrwApyPsKg==} + peerDependencies: + '@preact/preset-vite': '*' + typescript: '>= 4.3.x' + vite: ^4.0.0 || ^5.0.0 + vite-plugin-glimmerx: '*' + peerDependenciesMeta: + '@preact/preset-vite': + optional: true + typescript: + optional: true + vite-plugin-glimmerx: + optional: true + + '@storybook/channels@8.1.11': + resolution: {integrity: sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA==} + + '@storybook/cli@8.1.11': + resolution: {integrity: sha512-4U48w9C7mVEKrykcPcfHwJkRyCqJ28XipbElACbjIIkQEqaHaOVtP3GeKIrgkoOXe/HK3O4zKWRP2SqlVS0r4A==} + hasBin: true + + '@storybook/client-logger@8.1.11': + resolution: {integrity: sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA==} + + '@storybook/codemod@8.1.11': + resolution: {integrity: sha512-/LCozjH1IQ1TOs9UQV59BE0X6UZ9q+C0NEUz7qmJZPrwAii3FkW4l7D/fwxblpMExaoxv0oE8NQfUz49U/5Ymg==} + + '@storybook/components@8.1.11': + resolution: {integrity: sha512-iXKsNu7VmrLBtjMfPj7S4yJ6T13GU6joKcVcrcw8wfrQJGlPFp4YaURPBUEDxvCt1XWi5JkaqJBvb48kIrROEQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + + '@storybook/core-common@8.1.11': + resolution: {integrity: sha512-Ix0nplD4I4DrV2t9B+62jaw1baKES9UbR/Jz9LVKFF9nsua3ON0aVe73dOjMxFWBngpzBYWe+zYBTZ7aQtDH4Q==} + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + + '@storybook/core-events@8.1.11': + resolution: {integrity: sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A==} + + '@storybook/core-server@8.1.11': + resolution: {integrity: sha512-L6dzQTmR0np/kagNONvvlm6lSvF1FNc9js3vxsEEPnEypLbhx8bDZaHmuhmBpYUzKyUMpRVQTE/WgjHLuBBuxA==} + + '@storybook/csf-plugin@8.1.11': + resolution: {integrity: sha512-hkA8gjFtSN/tabG0cuvmEqanMXtxPr3qTkp4UNSt1R6jBEgFHRG2y/KYLl367kDwOSFTT987ZgRfJJruU66Fvw==} + + '@storybook/csf-tools@8.1.11': + resolution: {integrity: sha512-6qMWAg/dBwCVIHzANM9lSHoirwqSS+wWmv+NwAs0t9S94M75IttHYxD3IyzwaSYCC5llp0EQFvtXXAuSfFbibg==} + + '@storybook/csf@0.0.1': + resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + + '@storybook/csf@0.1.9': + resolution: {integrity: sha512-JlZ6v/iFn+iKohKGpYXnMeNeTiiAMeFoDhYnPLIC8GnyyIWqEI9wJYrOK9i9rxlJ8NZAH/ojGC/u/xVC41qSgQ==} + + '@storybook/docs-mdx@3.1.0-next.0': + resolution: {integrity: sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ==} + + '@storybook/docs-tools@8.1.11': + resolution: {integrity: sha512-mEXtR9rS7Y+OdKtT/QG6JBGYR1L41mcDhIqhnk7RmYl9qJstVAegrCKWR53sPKFdTVOHU7dmu6k+BD+TqHpyyw==} + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/icons@1.2.9': + resolution: {integrity: sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/instrumenter@8.1.11': + resolution: {integrity: sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ==} + + '@storybook/manager-api@8.1.11': + resolution: {integrity: sha512-QSgwKfAw01K9YvvZj30iGBMgQ4YaCT3vojmttuqdH5ukyXkiO7pENLJj4Y+alwUeSi0g+SJeadCI3PXySBHOGg==} + + '@storybook/manager@8.1.11': + resolution: {integrity: sha512-e02y9dmxowo7cTKYm9am7UO6NOHoHy6Xi7xZf/UA932qLwFZUtk5pnwIEFaZWI3OQsRUCGhP+FL5zizU7uVZeg==} + + '@storybook/node-logger@8.1.11': + resolution: {integrity: sha512-wdzFo7B2naGhS52L3n1qBkt5BfvQjs8uax6B741yKRpiGgeAN8nz8+qelkD25MbSukxvbPgDot7WJvsMU/iCzg==} + + '@storybook/preview-api@8.1.11': + resolution: {integrity: sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ==} + + '@storybook/preview@8.1.11': + resolution: {integrity: sha512-K/9NZmjnL0D1BROkTNWNoPqgL2UaocALRSqCARmkBLgU2Rn/FuZgEclHkWlYo6pUrmLNK+bZ+XzpNMu12iTbpg==} + + '@storybook/react-dom-shim@8.1.11': + resolution: {integrity: sha512-KVDSuipqkFjpGfldoRM5xR/N1/RNmbr+sVXqMmelr0zV2jGnexEZnoa7wRHk7IuXuivLWe8BxMxzvQWqjIa4GA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + + '@storybook/router@8.1.11': + resolution: {integrity: sha512-nU5lsBvy0L8wBYOkjagh29ztZicDATpZNYrHuavlhQ2jznmmHdJvXKYk+VrMAbthjQ6ZBqfeeMNPR1UlnqR5Rw==} + + '@storybook/svelte-vite@8.1.11': + resolution: {integrity: sha512-wjUDKVt98RXmbA84TtSuiSX7/lyKKrTNZgNnfrbxcArsJAwotmrG5BEMLGd1VulREriYqrYbW7fYX2jBucTgxg==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^2.0.0 || ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.65 + vite: ^4.0.0 || ^5.0.0 + + '@storybook/svelte@8.1.11': + resolution: {integrity: sha512-/xlfPj6q7EmIS+M0V1naI5NWGsK9iwHAHD1fuKmO8KTCqDAmq9bssCZBsaMcZHA7AL3tzpnWxLC52n4wjzaxhw==} + engines: {node: '>=18.0.0'} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.65 + + '@storybook/sveltekit@8.1.11': + resolution: {integrity: sha512-fP3mR9d1TAaSMYLqwjU4YHODoisf7EE0/oheaY8IAx6pbsZbbnLCBKlvH2+i74u8NmLKHS5aFZePd9XiHlowwg==} + engines: {node: '>=18.0.0'} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.65 + vite: ^4.0.0 || ^5.0.0 + + '@storybook/telemetry@8.1.11': + resolution: {integrity: sha512-Jqvm7HcZismKzPuebhyLECO6KjGiSk4ycbca1WUM/TUvifxCXqgoUPlHHQEEfaRdHS63/MSqtMNjLsQRLC/vNQ==} + + '@storybook/test@8.1.11': + resolution: {integrity: sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ==} + + '@storybook/theming@8.1.11': + resolution: {integrity: sha512-Chn/opjO6Rl1isNobutYqAH2PjKNkj09YBw/8noomk6gElSa3JbUTyaG/+JCHA6OG/9kUsqoKDb5cZmAKNq/jA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/types@8.1.11': + resolution: {integrity: sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw==} + + '@sveltejs/adapter-auto@3.2.2': + resolution: {integrity: sha512-Mso5xPCA8zgcKrv+QioVlqMZkyUQ5MjDJiEPuG/Z7cV/5tmwV7LmcVWk5tZ+H0NCOV1x12AsoSpt/CwFwuVXMA==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + + '@sveltejs/kit@2.5.24': + resolution: {integrity: sha512-Nr2oxsCsDfEkdS/zzQQQbsPYTbu692Qs3/iE3L7VHzCVjG2+WujF9oMUozWI7GuX98KxYSoPMlAsfmDLSg44hQ==} + engines: {node: '>=18.13'} + hasBin: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 + + '@sveltejs/package@2.3.2': + resolution: {integrity: sha512-6M8/Te7iXRG7SiH92wugqfyoJpuepjn78L433LnXicUeMso9M/N4vdL9DPK3MfTkVVY4klhNRptVqme3p4oZWA==} + engines: {node: ^16.14 || >=18} + hasBin: true + peerDependencies: + svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 + + '@sveltejs/vite-plugin-svelte-inspector@2.1.0': + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + + '@sveltejs/vite-plugin-svelte@3.1.1': + resolution: {integrity: sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + + '@tailwindcss/nesting@0.0.0-insiders.565cd3e': + resolution: {integrity: sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==} + peerDependencies: + postcss: ^8.2.15 + + '@testing-library/dom@10.1.0': + resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.4.5': + resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@ts-morph/common@0.20.0': + resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/acorn@4.0.6': + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/bn.js@5.1.5': + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + + '@types/cross-spawn@6.0.6': + resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/detect-port@1.3.5': + resolution: {integrity: sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==} + + '@types/diff@5.2.1': + resolution: {integrity: sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g==} + + '@types/dns-packet@5.6.5': + resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} + + '@types/doctrine@0.0.3': + resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} + + '@types/dom-screen-wake-lock@1.0.3': + resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} + + '@types/ejs@3.1.5': + resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==} + + '@types/emscripten@1.39.13': + resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} + + '@types/eslint@8.56.10': + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/express-serve-static-core@4.19.5': + resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/find-cache-dir@3.2.1': + resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.12': + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/lodash@4.17.6': + resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + + '@types/node@18.19.39': + resolution: {integrity: sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==} + + '@types/node@20.14.9': + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/object-hash@3.0.6': + resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} + + '@types/pbkdf2@3.1.2': + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + + '@types/pretty-hrtime@1.0.3': + resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} + + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + '@types/pug@2.0.10': + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + + '@types/qs@6.9.15': + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + + '@types/secp256k1@4.0.6': + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/unist@2.0.10': + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + + '@types/unist@3.0.2': + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@15.0.19': + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + + '@typescript-eslint/eslint-plugin@7.15.0': + resolution: {integrity: sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.15.0': + resolution: {integrity: sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/scope-manager@7.15.0': + resolution: {integrity: sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.15.0': + resolution: {integrity: sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@7.15.0': + resolution: {integrity: sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.15.0': + resolution: {integrity: sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@7.15.0': + resolution: {integrity: sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/visitor-keys@7.15.0': + resolution: {integrity: sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitest/coverage-v8@1.6.0': + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + peerDependencies: + vitest: 1.6.0 + + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + + '@volar/kit@2.4.0-alpha.18': + resolution: {integrity: sha512-dZMSNhesh23lhd61ax2l04IgIcYofAjm8M+5BKAmX47ROweyc8RrrslszCFUJynlmXx6JS1PoHqvo8+E0aAYQQ==} + peerDependencies: + typescript: '*' + + '@volar/language-core@2.4.0-alpha.18': + resolution: {integrity: sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==} + + '@volar/language-server@2.4.0-alpha.18': + resolution: {integrity: sha512-dciHEE/R5kzI0bY71QfkoCVQ3cQI6g9MHfA4oIP6UhnJy0CdleUalWSygOXoD3Nq7Yk6wn2BRrb1PP5MsadY/Q==} + + '@volar/language-service@2.4.0-alpha.18': + resolution: {integrity: sha512-EuetrtbEtudi9buinWAG5U3Jam5dY27zXd/7GYnx542kBwanWOBM8i4DAQd0z7M11fOxXgybxPA933uaSyaOog==} + + '@volar/snapshot-document@2.4.0-alpha.18': + resolution: {integrity: sha512-JAeclEly/wnILhR4Pu9MpgBLInZJH49O1zoy8fU+pk5I+zpv7JIEby5z2UFAS60+sIDnxBdAGd7rZ5VibE70vg==} + + '@volar/source-map@2.4.0-alpha.18': + resolution: {integrity: sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==} + + '@volar/typescript@2.4.0-alpha.18': + resolution: {integrity: sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==} + + '@vscode/emmet-helper@2.9.3': + resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==} + + '@vscode/l10n@0.0.18': + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + + '@wagmi/cli@2.1.13': + resolution: {integrity: sha512-0lQILHXj7IZfivMa5yEN1OWu5dF17iCgIHOKaPNMMcB9uem+2oEumJEaj0EezZZXLZLNN/lbI7A4TCXNYuoEDg==} + hasBin: true + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/connectors@4.3.10': + resolution: {integrity: sha512-IZcsocBfDq6pe8sxkDgP2k9YNqv8udl2eSr2hx2JCESA44ixx5zRjoGNMAkKxlzM6uXjXLJKp/g1KYlpmoHkDg==} + peerDependencies: + '@wagmi/core': 2.9.8 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/connectors@5.0.21': + resolution: {integrity: sha512-lbjXEv6HhOa9nXZ5r6NGFJdaadCt2Yj9hSWHjKuiTobrE6dEGQqG16mCQS17yXcvXpI62Q/sW6SL347JrBju/Q==} + peerDependencies: + '@wagmi/core': 2.11.6 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/core@2.11.6': + resolution: {integrity: sha512-Ohk7Bh+Q8kjzxEHImIq98CnPduz8n1a5bdwJi6F7zU3h62crhlVq7fZBYoBhoDgmX0ROVOMr8WW3XU3XhRwUOw==} + peerDependencies: + '@tanstack/query-core': '>=5.0.0' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + '@tanstack/query-core': + optional: true + typescript: + optional: true + + '@walletconnect/core@2.13.0': + resolution: {integrity: sha512-blDuZxQenjeXcVJvHxPznTNl6c/2DO4VNrFnus+qHmO6OtT5lZRowdMtlCaCNb1q0OxzgrmBDcTOCbFcCpio/g==} + + '@walletconnect/core@2.13.3': + resolution: {integrity: sha512-TdF+rC6rONJGyOUtt/nLkbyQWjnkwbD3kXq3ZA0Q7+tYtmSjTDE4wbArlLbHIbtf69g+9/DpEVEQimWWcEOn2g==} + + '@walletconnect/environment@1.0.1': + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + + '@walletconnect/ethereum-provider@2.13.0': + resolution: {integrity: sha512-dnpW8mmLpWl1AZUYGYZpaAfGw1HFkL0WSlhk5xekx3IJJKn4pLacX2QeIOo0iNkzNQxZfux1AK4Grl1DvtzZEA==} + + '@walletconnect/ethereum-provider@2.13.3': + resolution: {integrity: sha512-gThsYguFJ7XZp18GP23W6TooQaS6XlF4faFDXPCQVqlWjzEatkkQ2R6Hhv4a4qk4D21qNXirCFnI59Xhbj0KJQ==} + + '@walletconnect/events@1.0.1': + resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + + '@walletconnect/heartbeat@1.2.1': + resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + + '@walletconnect/heartbeat@1.2.2': + resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} + + '@walletconnect/jsonrpc-http-connection@1.0.8': + resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} + + '@walletconnect/jsonrpc-provider@1.0.14': + resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} + + '@walletconnect/jsonrpc-types@1.0.3': + resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + + '@walletconnect/jsonrpc-types@1.0.4': + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} + + '@walletconnect/jsonrpc-utils@1.0.8': + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + + '@walletconnect/jsonrpc-ws-connection@1.0.14': + resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} + + '@walletconnect/keyvaluestorage@1.1.1': + resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + + '@walletconnect/logger@2.1.2': + resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + + '@walletconnect/modal-core@2.6.2': + resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + + '@walletconnect/modal-ui@2.6.2': + resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + + '@walletconnect/modal@2.6.2': + resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + + '@walletconnect/relay-api@1.0.10': + resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} + + '@walletconnect/relay-auth@1.0.4': + resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + + '@walletconnect/safe-json@1.0.2': + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + + '@walletconnect/sign-client@2.13.0': + resolution: {integrity: sha512-En7KSvNUlQFx20IsYGsFgkNJ2lpvDvRsSFOT5PTdGskwCkUfOpB33SQJ6nCrN19gyoKPNvWg80Cy6MJI0TjNYA==} + + '@walletconnect/sign-client@2.13.3': + resolution: {integrity: sha512-3Pcq6trHWdBZn5X0VUFQ3zJaaqyEbMW9WNVKcZ2SakIpQAwySd08Mztvq48G98jfucdgP3tjGPbBvzHX9vJX7w==} + + '@walletconnect/time@1.0.2': + resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + + '@walletconnect/types@2.12.0': + resolution: {integrity: sha512-uhB3waGmujQVJcPgJvGOpB8RalgYSBT+HpmVbfl4Qe0xJyqpRUo4bPjQa0UYkrHaW20xIw94OuP4+FMLYdeemg==} + + '@walletconnect/types@2.13.0': + resolution: {integrity: sha512-MWaVT0FkZwzYbD3tvk8F+2qpPlz1LUSWHuqbINUtMXnSzJtXN49Y99fR7FuBhNFtDalfuWsEK17GrNA+KnAsPQ==} + + '@walletconnect/types@2.13.3': + resolution: {integrity: sha512-9UdtLoQqwGFfepCPprUAXeUbKg9zyDarPRmEJVco51OWXHCOpvRgroWk54fQHDhCUIfDELjObY6XNAzNrmNYUA==} + + '@walletconnect/universal-provider@2.13.0': + resolution: {integrity: sha512-B5QvO8pnk5Bqn4aIt0OukGEQn2Auk9VbHfhQb9cGwgmSCd1GlprX/Qblu4gyT5+TjHMb1Gz5UssUaZWTWbDhBg==} + + '@walletconnect/universal-provider@2.13.3': + resolution: {integrity: sha512-2tuV2d8AdB4Fg/uMs8IdNHrjYy1Tz1uT5kzaT8X1/wx5DHHa/oaheoY5kDZHI0L1oNIg/OlM0/ovonGIcI5ddw==} + + '@walletconnect/utils@2.12.0': + resolution: {integrity: sha512-GIpfHUe1Bjp1Tjda0SkJEizKOT2biuv7VPFnKsOLT1T+8QxEP9NruC+K2UUEvijS1Qr/LKH9P5004RYNgrch+w==} + + '@walletconnect/utils@2.13.0': + resolution: {integrity: sha512-q1eDCsRHj5iLe7fF8RroGoPZpdo2CYMZzQSrw1iqL+2+GOeqapxxuJ1vaJkmDUkwgklfB22ufqG6KQnz78sD4w==} + + '@walletconnect/utils@2.13.3': + resolution: {integrity: sha512-hjyyNhnhTCezGNr6OCfKRzqRsiak+p+YP57iRo1Tsf222fsj/9JD++MP97YiDwc4e4xXaZp/boiLB+8hJHsCog==} + + '@walletconnect/window-getters@1.0.1': + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + + '@walletconnect/window-metadata@1.0.1': + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + + '@web3modal/common@4.2.3': + resolution: {integrity: sha512-n0lvhoRjViqxmkgpy+iEM6E3HBylUgdxUDJU4hUxGmmrbGZGEP7USBRnQOEgXLqLCtWvxKjUAO33JBV/De+Osw==} + + '@web3modal/common@5.1.0': + resolution: {integrity: sha512-TIYncrKDnFKE+q0mudzVCvGOZdNWa0kzkp+iL0zpbHm9sL+ceV4eOCip09Xcvrb5HeaBv1ROgAMPGLmpVCO3AA==} + + '@web3modal/core@4.2.3': + resolution: {integrity: sha512-UykKZTELBpb6ey+IV6fkHWsLkjrIdILmRYzhlznyTPbm9qX5pOR9tH0Z3QGUo7YPFmUqMRH1tC9Irsr3SgIbbw==} + + '@web3modal/polyfills@4.2.3': + resolution: {integrity: sha512-RiGxh2hMLSD1s2aTjoejNK/UL377CJhGf5tzmdF1m5xsYHpil+Dnulpio8Yojnm27cOqQD+QiaYUKnHOxErLjQ==} + + '@web3modal/scaffold-react@4.2.3': + resolution: {integrity: sha512-WRA244mO3qa9wnJtRa+mfXHkfW92VEkEt+HagLQuUcSRTQJH0Q95UF+EXZZ/r1mKbqdqIbpguewuF0dRtL/YrQ==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@web3modal/scaffold-utils@4.2.3': + resolution: {integrity: sha512-z6t0ggYg1/8hpaKHUm77z2VyacjIZEZTI8IHSQYmHuRFGu5oDPJeAr1thr475JXdoGLYr08hwquZyed/ZINAvw==} + + '@web3modal/scaffold-vue@4.2.3': + resolution: {integrity: sha512-0mlx/t0A7srcuFcxP3xuUt2ACFUUcAhyRIsNImtQHPq7QHx7i5zvabQ38iplDsWS0TA7j83hW5gxHycppa5PXg==} + peerDependencies: + vue: '>=3' + peerDependenciesMeta: + vue: + optional: true + + '@web3modal/scaffold@4.2.3': + resolution: {integrity: sha512-8K+IV+luDUvppKgmlgdA+RbQGT2STdRrgHVHFRsAqsORFoLiIYvlrpQlxvV7J5Xc1bgKEn3KvEXC+BH2NMqF4w==} + + '@web3modal/siwe@4.2.3': + resolution: {integrity: sha512-uPma0U/OxAy3LwnF7pCYYX8tn+ONBYNcssuVZxEGsusJD1kF4ueS8lK7eyQogyK5nXqOGdNESOjY1NImNNjMVw==} + + '@web3modal/ui@4.2.3': + resolution: {integrity: sha512-QPPgE0hii1gpAldTdnrP63D/ryI78Ohz99zRBp8vi81lawot7rbdUbryMoX13hMPCW9vW7JYyvX+jJN7uO3QwA==} + + '@web3modal/wagmi@4.2.3': + resolution: {integrity: sha512-oisBCMrOYn8TBgNaSPrumvMmTGox6+3Ii92zxQJalW5U/K9iBTxoejHT033Ss7mFEFybilcfXBAvGNFXfQmtkA==} + peerDependencies: + '@wagmi/connectors': '>=4' + '@wagmi/core': '>=2.0.0' + react: '>=17' + react-dom: '>=17' + viem: '>=2.0.0' + vue: '>=3' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + vue: + optional: true + + '@web3modal/wallet@4.2.3': + resolution: {integrity: sha512-V+VpwmhQl9qeJMpzNkjpAaxercAsrr1O9oGRjrjD+c0q72NfdcbTalWSbjSQmqabI1M6N06Hw94FkAQuEfVGsg==} + + '@webgpu/types@0.1.21': + resolution: {integrity: sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==} + + '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15': + resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} + engines: {node: '>=14.15.0'} + peerDependencies: + esbuild: '>=0.10.0' + + '@yarnpkg/fslib@2.10.3': + resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + + '@yarnpkg/libzip@2.3.0': + resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + + '@zerodevx/svelte-toast@0.9.5': + resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} + peerDependencies: + svelte: ^3.57.0 || ^4.0.0 + + abitype@0.9.8: + resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.0.5: + resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} + + acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.16.0: + resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} + + anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + antlr4@4.13.1-patch-1: + resolution: {integrity: sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==} + engines: {node: '>=16'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + any-signal@3.0.1: + resolution: {integrity: sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + app-root-dir@1.0.2: + resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} + + appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-iterate@2.0.1: + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + ast-parents@0.0.1: + resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} + + ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true + + astro-expressive-code@0.35.6: + resolution: {integrity: sha512-1U4KrvFuodaCV3z4I1bIR16SdhQlPkolGsYTtiANxPZUVv/KitGSCTjzksrkPonn1XuwVqvnwmUUVzTLWngnBA==} + peerDependencies: + astro: ^4.0.0-beta || ^3.3.0 + + astro-og-canvas@0.5.1: + resolution: {integrity: sha512-Xm37vqyMu3kNRU5tm7nheJf2n8+gweuaDX4efMxPSKEggSF8UznvgreOomzAPqDbcs8LM2fQsyOcMbJFtb3aZg==} + engines: {node: '>=18.14.1'} + peerDependencies: + astro: ^3.0.0 || ^4.0.0 + + astro@4.13.3: + resolution: {integrity: sha512-MyhmM0v5sphiVwxAm5jjKxWeuPZijWPJ8Ajdign9QzEmLWSH8vUYIJWx/dWRQ6vF1I0jXrksoj3wtw5nzXt9nw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + async-mutex@0.2.6: + resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + + async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + autoprefixer@10.4.19: + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios@1.7.2: + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} + + axobject-query@4.0.0: + resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + babel-core@7.0.0-bridge.0: + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + babel-plugin-polyfill-corejs2@0.4.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.4: + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-transform-flow-enums@0.0.2: + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + + base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + + base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + bcp-47@2.1.0: + resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + blob-to-it@2.0.7: + resolution: {integrity: sha512-mFAR/GKDDqFOkSBB7shXfsUZwU5DgK453++I8/SImNacfJsdKlx/oHTO0T4ZYHz8A2dnSONE+CX8L29VlWGKiQ==} + + bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} + + bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + + browser-readablestream-to-it@1.0.3: + resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} + + browser-readablestream-to-it@2.0.7: + resolution: {integrity: sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserify-zlib@0.1.4: + resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + + browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + builtins@5.1.0: + resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + + bundle-require@4.2.1: + resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + + caniuse-lite@1.0.30001639: + resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==} + + canvaskit-wasm@0.39.1: + resolution: {integrity: sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==} + + cborg@4.2.2: + resolution: {integrity: sha512-A0z7WhnY4HDLrVdnQI4i/OLG3kANHotk5NzDpr2iauf4xrmQPwJCxlbCnIXkVrFtsr8G3omfvvr5oF50i1Zt8g==} + hasBin: true + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chromatic@11.5.4: + resolution: {integrity: sha512-+J+CopeUSyGUIQJsU6X7CfvSmeVBs0j6LZ9AgF4+XTjI4pFmUiUXsTc00rH9x9W1jCppOaqDXv2kqJJXGDK3mA==} + hasBin: true + peerDependencies: + '@chromatic-com/cypress': ^0.*.* || ^1.0.0 + '@chromatic-com/playwright': ^0.*.* || ^1.0.0 + peerDependenciesMeta: + '@chromatic-com/cypress': + optional: true + '@chromatic-com/playwright': + optional: true + + chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + + cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + cli-color@2.0.4: + resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} + engines: {node: '>=0.10'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + + clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + code-block-writer@12.0.0: + resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} + + code-error-fragment@0.0.230: + resolution: {integrity: sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==} + engines: {node: '>= 4'} + + code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-csv-to-json@2.48.0: + resolution: {integrity: sha512-XkmztvCyY1qbUA1dlait7fmazAS0vDhYOzhMu90NPMvqBVY0/2GmAW1XzTzlKPpW5K/4ZaTKEO2Jb7e4saIQxg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-es@1.1.0: + resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + + cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true + + crypto-js@3.3.0: + resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + + css-selector-parser@3.0.5: + resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} + + css-selector-tokenizer@0.8.0: + resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssstyle@4.0.1: + resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + engines: {node: '>=18'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + culori@3.3.0: + resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + + dag-jose@4.0.0: + resolution: {integrity: sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA==} + + daisyui@4.12.10: + resolution: {integrity: sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==} + engines: {node: '>=16.9.0'} + + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + + dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + + dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent-js@1.0.1: + resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + detect-package-manager@2.0.1: + resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} + engines: {node: '>=12'} + + detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} + hasBin: true + + deterministic-object-hash@2.0.2: + resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} + engines: {node: '>=18'} + + devalue@5.0.0: + resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dns-over-http-resolver@2.1.3: + resolution: {integrity: sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@3.3.0: + resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} + engines: {node: '>= 4'} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: + resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} + name: ds-test + version: 1.0.0 + + dset@3.1.3: + resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} + engines: {node: '>=4'} + + duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + eciesjs@0.3.19: + resolution: {integrity: sha512-b+PkRDZ3ym7HEcnbxc22CMVCpgsnr8+gGgST3U5PtgeX1luvINgfXW7efOyUtmn/jFtA/lg5ywBi/Uazf4oeaA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-fetch@1.9.1: + resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} + engines: {node: '>=6'} + + electron-to-chromium@1.4.816: + resolution: {integrity: sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==} + + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + elliptic@6.5.5: + resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} + + emmet@2.4.7: + resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} + + emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + engine.io-client@6.5.4: + resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} + + engine.io-parser@5.2.2: + resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} + engines: {node: '>=10.0.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} + hasBin: true + + err-code@3.0.1: + resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + + esbuild-plugin-alias@0.2.1: + resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} + + esbuild-register@3.5.0: + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-config-standard@17.1.0: + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.8.1: + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + + eslint-plugin-es@3.0.1: + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + + eslint-plugin-import@2.29.1: + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-n@16.6.2: + resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-node@11.1.0: + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + + eslint-plugin-prettier@5.1.3: + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-promise@6.4.0: + resolution: {integrity: sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-simple-import-sort@12.1.0: + resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} + peerDependencies: + eslint: '>=5.0.0' + + eslint-plugin-storybook@0.8.0: + resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} + engines: {node: '>= 18'} + peerDependencies: + eslint: '>=6' + + eslint-plugin-svelte@2.41.0: + resolution: {integrity: sha512-gjU9Q/psxbWG1VNwYbEb0Q6U4W5PBGaDpYmO2zlQ+zlAMVS3Qt0luAK0ACi/tMSwRK6JENiySvMyJbO0YWmXSg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.155 + peerDependenciesMeta: + svelte: + optional: true + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + + eslint-utils@3.0.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + + eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.4.1: + resolution: {integrity: sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + + espree@9.2.0: + resolution: {integrity: sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eth-block-tracker@7.1.0: + resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} + engines: {node: '>=14.0.0'} + + eth-json-rpc-filters@6.0.1: + resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} + engines: {node: '>=14.0.0'} + + eth-query@2.1.2: + resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} + + eth-rpc-errors@4.0.3: + resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + + ethereum-address@0.0.4: + resolution: {integrity: sha512-3Vwr2CikFLezh/zLAPBV6C51jC0fFnf6vjhkoIWsDms/W5MLgAZNhh9nZUxPmg899K8cVFbklrYQBxcD4JmfrA==} + engines: {node: '>= 4.3.0', npm: '>= 3.7.0'} + + ethereum-bloom-filters@1.1.0: + resolution: {integrity: sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==} + + ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + + ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + + ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + + ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter2@6.4.9: + resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + + expressive-code@0.35.6: + resolution: {integrity: sha512-+mx+TPTbMqgo0mL92Xh9QgjW0kSQIsEivMgEcOnaqKqL7qCw8Vkqc5Rg/di7ZYw4aMUSr74VTc+w8GQWu05j1g==} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + extension-port-stream@3.0.0: + resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} + engines: {node: '>=12.0.0'} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + + fast-xml-parser@4.4.0: + resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==} + hasBin: true + + fastparse@1.1.2: + resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fdir@6.1.1: + resolution: {integrity: sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==} + peerDependencies: + picomatch: 3.x + peerDependenciesMeta: + picomatch: + optional: true + + fetch-retry@5.0.6: + resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-system-cache@2.3.0: + resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + filesize@10.1.2: + resolution: {integrity: sha512-Dx770ai81ohflojxhU+oG+Z2QGvKdYxgEr9OSA8UVrqhwNHjfH9A8f5NKfg83fEH8ZFA5N5llJo5T3PIoZ4CRA==} + engines: {node: '>= 10.4.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat@4.1.1: + resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} + hasBin: true + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + + flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + + flow-parser@0.238.3: + resolution: {integrity: sha512-hNUhucq8V6KWSX1skXUS3vnDmrRNuKWzDvEVK5b+n97uMF32zj2y8pmcLDQEqlY5u926B0GYGWT/3XhwDJfLOQ==} + engines: {node: '>=0.4.0'} + + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} + + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3} + name: forge-std + version: 1.7.5 + + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32} + name: forge-std + version: 1.9.0 + + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + futoin-hkdf@1.5.3: + resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} + engines: {node: '>=8'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-iterator@1.0.2: + resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-npm-tarball-url@2.1.0: + resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} + engines: {node: '>=12.17'} + + get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + + giget@1.2.3: + resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} + hasBin: true + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.4.2: + resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + + gunzip-maybe@1.4.2: + resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} + hasBin: true + + h3@1.12.0: + resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hashlru@2.3.0: + resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-embedded@3.0.0: + resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} + + hast-util-from-html@2.0.1: + resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + + hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-body-ok-link@3.0.0: + resolution: {integrity: sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-phrasing@3.0.1: + resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} + + hast-util-raw@9.0.4: + resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} + + hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + + hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + + hast-util-to-html@9.0.1: + resolution: {integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==} + + hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + + hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + + hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + + hastscript@9.0.0: + resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} + + hermes-estree@0.19.1: + resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} + + hermes-estree@0.20.1: + resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} + + hermes-parser@0.19.1: + resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + + hermes-parser@0.20.1: + resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} + + hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} + + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + + html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + html-whitespace-sensitive-tag-names@3.0.0: + resolution: {integrity: sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==} + + htmlparser2-svelte@4.1.0: + resolution: {integrity: sha512-+4f4RBFz7Rj2Hp0ZbFbXC+Kzbd6S9PgjiuFtdT76VMNgKogrEZy0pG2UrPycPbrZzVEIM5lAT3lAdkSTCHLPjg==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} + + human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + i18next-browser-languagedetector@7.1.0: + resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} + + i18next@22.5.1: + resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} + + i18next@23.11.5: + resolution: {integrity: sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + idb-keyval@6.2.1: + resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-walk@5.0.1: + resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true + + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + + inline-style-parser@0.2.3: + resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} + + interface-datastore@7.0.4: + resolution: {integrity: sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + interface-datastore@8.2.11: + resolution: {integrity: sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA==} + + interface-store@3.0.4: + resolution: {integrity: sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + interface-store@5.1.8: + resolution: {integrity: sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + intl-messageformat@10.5.14: + resolution: {integrity: sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipfs-core-types@0.14.1: + resolution: {integrity: sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + + ipfs-core-utils@0.18.1: + resolution: {integrity: sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + + ipfs-http-client@60.0.1: + resolution: {integrity: sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + + ipfs-unixfs@9.0.1: + resolution: {integrity: sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + ipfs-utils@9.0.14: + resolution: {integrity: sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-deflate@1.0.0: + resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-electron@2.2.2: + resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-gzip@1.0.0: + resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} + engines: {node: '>=0.10.0'} + + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + + is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.0.0: + resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + engines: {node: '>=18'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + + iso-url@1.2.1: + resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} + engines: {node: '>=12'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + + isows@1.0.3: + resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + peerDependencies: + ws: '*' + + isows@1.0.4: + resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} + peerDependencies: + ws: '*' + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.5: + resolution: {integrity: sha512-gKf4eJ8bHmSX/ljiOCpnd8vtmHTwG71uugm0kXYd5aqFCl6z8cj8k7QduXSwU6QOst6LCdSXTlaoc8W4554crQ==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + it-all@1.0.6: + resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} + + it-all@2.0.1: + resolution: {integrity: sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-first@2.0.1: + resolution: {integrity: sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-glob@1.0.2: + resolution: {integrity: sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==} + + it-last@2.0.1: + resolution: {integrity: sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-map@2.0.1: + resolution: {integrity: sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-peekable@2.0.1: + resolution: {integrity: sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-pushable@3.2.3: + resolution: {integrity: sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==} + + it-stream-types@1.0.5: + resolution: {integrity: sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-stream-types@2.0.1: + resolution: {integrity: sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-to-stream@1.0.0: + resolution: {integrity: sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==} + + jackspeak@3.4.0: + resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} + engines: {node: '>=14'} + + jake@10.9.1: + resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} + engines: {node: '>=10'} + hasBin: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + + jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + + jscodeshift@0.14.0: + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + + jscodeshift@0.15.2: + resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true + + jsdom@24.1.0: + resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-rpc-engine@6.1.0: + resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} + engines: {node: '>=10.0.0'} + + json-rpc-random-id@1.0.1: + resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-to-ast@2.1.0: + resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} + engines: {node: '>= 4'} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@2.3.1: + resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + known-css-properties@0.34.0: + resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} + + latest-version@7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} + + lazy-universal-dotenv@4.0.0: + resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} + engines: {node: '>=14.0.0'} + + lefthook-darwin-arm64@1.6.18: + resolution: {integrity: sha512-AkpsTeO7aLZIIy6CKQ7Chx8RltE8a9uItbwQWoeaCkIdzpV8TFjq7/Pw4F5CkoJ2315sHtB8k+VFkgipQMBw1w==} + cpu: [arm64] + os: [darwin] + + lefthook-darwin-x64@1.6.18: + resolution: {integrity: sha512-qwKa+PaNIYjZ2PVrRRLq+HjNjQsjEItXN21byvSD89r7EYCULsIC8aW4H6aniOP2A6X1DIZ+djpg+3hNJ/94NA==} + cpu: [x64] + os: [darwin] + + lefthook-freebsd-arm64@1.6.18: + resolution: {integrity: sha512-UIOzQ+okwB7Ah9p8sNqomOiU6cPfmJnyW3HDPutRsdoHRD8udIap9d+ja4Kg4m/PkoYtkcLO78omANqAgA5wxQ==} + cpu: [arm64] + os: [freebsd] + + lefthook-freebsd-x64@1.6.18: + resolution: {integrity: sha512-UQANUgyNpaAh0+2/PjPFiJ7yd6aF15yyJxKZCXyna5cQF7VU8pSHu5tiDDquNpjToXOg+6TmiIAJKyfrrwTF3w==} + cpu: [x64] + os: [freebsd] + + lefthook-linux-arm64@1.6.18: + resolution: {integrity: sha512-4erletIa2HKUgY17/1ROvndAj6xn/9wkqO2GhBT3C0vFwIv6ycy5wpFzXOwKRZpFYv7UacN7iXhAZSK+vSOZZg==} + cpu: [arm64] + os: [linux] + + lefthook-linux-x64@1.6.18: + resolution: {integrity: sha512-l5SRqYMYygw9RjZncEg8uh29wShYN8kiYr53sp74DkntrlCttqWhLILBUlIr3fxH5s0ZyrmqUEjtMBryMk7b/g==} + cpu: [x64] + os: [linux] + + lefthook-windows-arm64@1.6.18: + resolution: {integrity: sha512-jeNBRoya3+mOEsKyT4wXf29Kng1nkJD7Uv/dqGBszoGMktGVNUFdIjWoxx6HSfhUssucs5pKRZpXSMgK/KCP+Q==} + cpu: [arm64] + os: [win32] + + lefthook-windows-x64@1.6.18: + resolution: {integrity: sha512-iEG8PbFOwMqlpAgCiqzANTxutERjwlwMx6WF6HDGEYwFJSCJsvi06TehDxaPIFbhmLLYYlbVrfSBlttWGoN0dg==} + cpu: [x64] + os: [win32] + + lefthook@1.6.18: + resolution: {integrity: sha512-Ftr/NkU1P1EsEyphsCqCX7lesGZA+QDXyUx4dS1RlSKB72xKtGW9VPjbGLK2kSQkONG5M+XYfbJkGA/r9NLTYQ==} + hasBin: true + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + listhen@1.7.2: + resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} + hasBin: true + + lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + + lit-element@4.0.6: + resolution: {integrity: sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==} + + lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + + lit-html@3.1.4: + resolution: {integrity: sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==} + + lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + + lit@3.1.0: + resolution: {integrity: sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-symbols@5.1.0: + resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} + engines: {node: '>=12'} + + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true + + lokijs@1.5.12: + resolution: {integrity: sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==} + + long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lru-cache@10.3.0: + resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==} + engines: {node: 14 || >=16.14} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + + markdown-to-jsx@7.3.2: + resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==} + engines: {node: '>= 10'} + peerDependencies: + react: '>= 0.14.0' + + marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} + + mdast-util-directive@3.0.0: + resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} + + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + + mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + + mdast-util-mdx-jsx@3.1.2: + resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + memoizee@0.4.17: + resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} + engines: {node: '>=0.12'} + + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + merge-options@3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merkletreejs@0.4.0: + resolution: {integrity: sha512-a48Ta5kWiVNBgeEbZVMm6FB1hBlp6vEuou/XnZdlkmd2zq6NZR6Sh2j+kR1B0iOZIXrTMcigBYzZ39MLdYhm1g==} + engines: {node: '>= 7.6.0'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + metro-babel-transformer@0.80.9: + resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} + engines: {node: '>=18'} + + metro-cache-key@0.80.9: + resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} + engines: {node: '>=18'} + + metro-cache@0.80.9: + resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} + engines: {node: '>=18'} + + metro-config@0.80.9: + resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} + engines: {node: '>=18'} + + metro-core@0.80.9: + resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} + engines: {node: '>=18'} + + metro-file-map@0.80.9: + resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} + engines: {node: '>=18'} + + metro-minify-terser@0.80.9: + resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} + engines: {node: '>=18'} + + metro-resolver@0.80.9: + resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} + engines: {node: '>=18'} + + metro-runtime@0.80.9: + resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} + engines: {node: '>=18'} + + metro-source-map@0.80.9: + resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} + engines: {node: '>=18'} + + metro-symbolicate@0.80.9: + resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} + engines: {node: '>=18'} + hasBin: true + + metro-transform-plugins@0.80.9: + resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} + engines: {node: '>=18'} + + metro-transform-worker@0.80.9: + resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} + engines: {node: '>=18'} + + metro@0.80.9: + resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} + engines: {node: '>=18'} + hasBin: true + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + + micromark-extension-directive@3.0.0: + resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} + + micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + + micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + + micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + + micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + + micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minidenticons@4.2.1: + resolution: {integrity: sha512-oWfFivA0lOx/V/bO/YIJbthB26lV8JXYvhnv9zM2hNd3fzsHTXQ6c6bWZPcvhD3nnOB+lQk/D9lF43BXixrN8g==} + engines: {node: '>=15.14.0'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mipd@0.0.5: + resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mkdirp@2.1.6: + resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + + moralis@2.26.7: + resolution: {integrity: sha512-nJLSSePOAfEL2iAje1GdP164OwDaICdbbkyivN7lPHutjirDMRD6bxYdYqOxDdzR1fx3mf5nhQEeD7o/pndgiQ==} + + motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + multiformats@11.0.2: + resolution: {integrity: sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + multiformats@12.1.3: + resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + multiformats@13.1.3: + resolution: {integrity: sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==} + + multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + + murky@https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d: + resolution: {tarball: https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d} + name: murky + version: 0.0.0 + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@4.0.2: + resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} + engines: {node: ^14 || ^16 || >=18} + hasBin: true + + napi-wasm@1.1.0: + resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} + + native-fetch@3.0.0: + resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} + peerDependencies: + node-fetch: '*' + + native-fetch@4.0.2: + resolution: {integrity: sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==} + peerDependencies: + undici: '*' + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} + + node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + hasBin: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + + not@0.1.0: + resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + + npm-bundled@2.0.1: + resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + npm-normalize-package-bin@2.0.0: + resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + npm-packlist@5.1.3: + resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + + nwsapi@2.2.10: + resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} + + nypm@0.3.9: + resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + + ob1@0.80.9: + resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} + engines: {node: '>=18'} + + obj-multiplex@1.0.0: + resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + + ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + + on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + + optimism@https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8: + resolution: {tarball: https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8} + name: optimism + version: 1.0.0 + engines: {node: '>=16', pnpm: '>=9'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + ora@6.3.1: + resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + ora@8.0.1: + resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} + engines: {node: '>=18'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + + p-defer@3.0.0: + resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} + engines: {node: '>=8'} + + p-defer@4.0.1: + resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} + engines: {node: '>=12'} + + p-fifo@1.0.0: + resolution: {integrity: sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-limit@6.1.0: + resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} + engines: {node: '>=18'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-map@7.0.2: + resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} + engines: {node: '>=18'} + + p-queue@8.0.1: + resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} + engines: {node: '>=18'} + + p-timeout@6.1.2: + resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} + engines: {node: '>=14.16'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da: + resolution: {tarball: https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da} + name: p256-verifier#v0.1.0 + version: 0.0.0 + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} + + pagefind@1.1.0: + resolution: {integrity: sha512-1nmj0/vfYcMxNEQj0YDRp6bTVv9hI7HLdPhK/vBBYlrnwjATndQvHyicj5Y7pUHrpCFZpFnLVQXIF829tpFmaw==} + hasBin: true + + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-duration@1.1.0: + resolution: {integrity: sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==} + + parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-latin@7.0.0: + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + + peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + + periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + + pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + + pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + + pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + + pkg-types@1.1.2: + resolution: {integrity: sha512-VEGf1he2DR5yowYRl0XJhWJq5ktm9gYIsH+y8sNJpHlxch7JPDaufgrsl4vYjd9hMUY8QVjoNncKbow9I7exyA==} + + playwright-core@1.45.0: + resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.45.0: + resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} + engines: {node: '>=18'} + hasBin: true + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} + + pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + engines: {node: '>=12.0.0'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-import@16.1.0: + resolution: {integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==} + engines: {node: '>=18.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@5.0.6: + resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-nesting@12.1.5: + resolution: {integrity: sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + + postcss-safe-parser@6.0.0: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + + postcss-scss@4.0.9: + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + + postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} + engines: {node: ^10 || ^12 || >=14} + + preact@10.22.1: + resolution: {integrity: sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==} + + preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} + engines: {node: '>=10'} + + preferred-pm@4.0.0: + resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==} + engines: {node: '>=18.12'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-svelte@3.2.5: + resolution: {integrity: sha512-vP/M/Goc8z4iVIvrwXwbrYVjJgA0Hf8PO1G4LBh/ocSt6vUP6sLvyu9F3ABEGr+dbKyxZjEKLkeFsWy/yYl0HQ==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.3.2: + resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + + prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress-events@1.0.0: + resolution: {integrity: sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + protobufjs@7.3.2: + resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==} + engines: {node: '>=12.0.0'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + publint@0.1.16: + resolution: {integrity: sha512-wJgk7HnXDT5Ap0DjFYbGz78kPkN44iQvDiaq8P63IEEyNU9mYXvaMd2cAyIM6OgqXM/IA3CK6XWIsRq+wjNpgw==} + engines: {node: '>=16'} + hasBin: true + + pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qr-code-styling@1.6.0-rc.1: + resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} + + qrcode-generator@1.4.4: + resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} + + qrcode-terminal-nooctal@0.12.1: + resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} + hasBin: true + + qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + qs@6.12.2: + resolution: {integrity: sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==} + engines: {node: '>=0.6'} + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + ramda@0.29.0: + resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-colorful@5.6.1: + resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + react-confetti@6.1.0: + resolution: {integrity: sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==} + engines: {node: '>=10.18'} + peerDependencies: + react: ^16.3.0 || ^17.0.1 || ^18.0.0 + + react-devtools-core@5.3.0: + resolution: {integrity: sha512-IG3T+azv48Oc5VLdHR4XdBNKNZIUOKRtx0sJMRvb++Zom/uqtx73j6u37JCsIBNIaq6vA7RPH5Bbcf/Wj53KXA==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-i18next@13.5.0: + resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-native-fetch-api@3.0.0: + resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} + + react-native-webview@11.26.1: + resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} + peerDependencies: + react: '*' + react-native: '*' + + react-native@0.74.3: + resolution: {integrity: sha512-UFutCC6WEw6HkxlcpQ2BemKqi0JkwrgDchYB5Svi8Sp4Xwt4HA6LGEjNQgZ+3KM44bjyFRpofQym0uh0jACGng==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^18.2.6 + react: 18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.7: + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-shallow-renderer@16.15.0: + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + + real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + + recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} + + recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + engines: {node: '>= 4'} + + receptacle@1.3.2: + resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + + registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} + + registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} + + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + + rehype-expressive-code@0.35.6: + resolution: {integrity: sha512-pPdE+pRcRw01kxMOwHQjuRxgwlblZt5+wAc3w2aPGgmcnn57wYjn07iKO7zaznDxYVxMYVvYlnL+R3vWFQS4Gw==} + + rehype-external-links@3.0.0: + resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} + + rehype-format@5.0.0: + resolution: {integrity: sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==} + + rehype-minify-whitespace@6.0.0: + resolution: {integrity: sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==} + + rehype-parse@9.0.0: + resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + rehype-stringify@10.0.0: + resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} + + rehype@13.0.1: + resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} + + remark-directive@3.0.0: + resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} + + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + + remark-mdx@3.0.1: + resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} + + remark-smartypants@3.0.2: + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + requireindex@1.2.0: + resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} + engines: {node: '>=0.10.5'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + retext-latin@4.0.0: + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} + + retext-smartypants@6.1.0: + resolution: {integrity: sha512-LDPXg95346bqFZnDMHo0S7Rq5p64+B+N8Vz733+wPMDtwb9rCOs9LIdIEhrUOU+TAywX9St+ocQWJt8wrzivcQ==} + + retext-stringify@4.0.0: + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} + + retext@9.0.0: + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} + + retimer@3.0.0: + resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + risc0-ethereum#v1.0.0@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900: + resolution: {tarball: https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900} + name: risc0-ethereum#v1.0.0 + version: 0.0.0 + + rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + + rollup-plugin-visualizer@5.12.0: + resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true + + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + + rrweb-cssom@0.7.1: + resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + + secp256k1@5.0.0: + resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} + engines: {node: '>=14.0.0'} + + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + sharp@0.33.4: + resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} + engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + shiki@1.10.0: + resolution: {integrity: sha512-YD2sXQ+TMD/F9BimV9Jn0wj35pqOvywvOG/3PB6hGHyGKlM7TJ9tyJ02jOb2kF8F0HfJwKNYrh3sW7jEcuRlXA==} + + shiki@1.12.1: + resolution: {integrity: sha512-nwmjbHKnOYYAe1aaQyEBHvQymJgfm86ZSS7fT8OaPRr4sbAcBNz7PbfAikMEFSDQ6se2j2zobkXvVKcBOm0ysg==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + sitemap@7.1.2: + resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + socket.io-client@4.7.5: + resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + solady@https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b: + resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b} + name: solady + version: 0.0.231 + + solady@https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d: + resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d} + name: solady + version: 0.0.167 + + solc@0.8.24: + resolution: {integrity: sha512-G5yUqjTUPc8Np74sCFwfsevhBPlUifUOfhYrgyu6CmYlC6feSw0YS6eZW47XDT23k3JYdKx5nJ+Q7whCEmNcoA==} + engines: {node: '>=10.0.0'} + hasBin: true + + solhint@4.5.4: + resolution: {integrity: sha512-Cu1XiJXub2q1eCr9kkJ9VPv1sGcmj3V7Zb76B0CoezDOB9bu3DxKIFFH7ggCl9fWpEPD6xBmRLfZrYijkVmujQ==} + hasBin: true + + solhint@5.0.3: + resolution: {integrity: sha512-OLCH6qm/mZTCpplTXzXTJGId1zrtNuDYP5c2e6snIv/hdRVxPfBBz/bAlL91bY/Accavkayp2Zp2BaDSrLVXTQ==} + hasBin: true + + solidity-stringutils@https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: + resolution: {tarball: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461} + name: solidity-stringutils + version: 0.0.0 + + sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + + sorcery@0.11.1: + resolution: {integrity: sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==} + hasBin: true + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + sp1-contracts#v2.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb: + resolution: {tarball: https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb} + name: sp1-contracts#v2.0.0 + version: 0.0.0 + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + + starlight-links-validator@0.8.0: + resolution: {integrity: sha512-FYZ5cfV7jSL4wOsWmIkpR+9dH0Z8fxslSQl8IiAv5URfkxLgsaFzjx51FBeSaaS5uVmO5WgfkUjx3N52Jl1/TQ==} + engines: {node: '>=18.14.1'} + peerDependencies: + '@astrojs/starlight': '>=0.15.0' + astro: '>=4.0.0' + + starlight-openapi@0.6.4: + resolution: {integrity: sha512-TIioFhMmSKhKau6g/fx5WgWyPQve7cjP896wQek3sHqCJeLAsTSqUYCb33bBb/4D1/6sUioqlfJd9J3Lc1NQjA==} + engines: {node: '>=18.14.1'} + peerDependencies: + '@astrojs/markdown-remark': '>=4.2.0' + '@astrojs/starlight': '>=0.19.0' + astro: '>=4.2.7' + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + stdin-discarder@0.1.0: + resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + store2@2.14.3: + resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==} + + storybook@8.1.11: + resolution: {integrity: sha512-3KjIhF8lczXhKKHyHbOqV30dvuRYJSxc0d1as/C8kybuwE7cLaydhWGma7VBv5bTSPv0rDzucx7KcO+achArPg==} + hasBin: true + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + stream-replace-string@2.0.0: + resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + stream-to-it@0.2.4: + resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + + style-to-object@1.0.6: + resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svelte-check@3.8.4: + resolution: {integrity: sha512-61aHMkdinWyH8BkkTX9jPLYxYzaAAz/FK/VQqdr2FiCQQ/q04WCwDlpGbHff1GdrMYTmW8chlTFvRWL9k0A8vg==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + + svelte-copy@1.4.2: + resolution: {integrity: sha512-Q99JvWDzB58JlbVWX2VxjHX/CQ5ayDLUGGJgL2EqU1+3c9CDOtxLrKFZx5CVN5bN/DDl62nxtazz0j3nGX1Xew==} + peerDependencies: + svelte: ^3.55.0 || ^4.0.0 + + svelte-eslint-parser@0.39.2: + resolution: {integrity: sha512-87UwLuWTtDIuzWOhOi1zBL5wYVd07M5BK1qZ57YmXJB5/UmjUNJqGy3XSOhPqjckY1dATNV9y+mx+nI0WH6HPA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.115 + peerDependenciesMeta: + svelte: + optional: true + + svelte-hmr@0.16.0: + resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + + svelte-i18n@4.0.0: + resolution: {integrity: sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==} + engines: {node: '>= 16'} + hasBin: true + peerDependencies: + svelte: ^3 || ^4 + + svelte-preprocess@5.1.4: + resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + + svelte-scrolling@1.4.0: + resolution: {integrity: sha512-1721UrmTODAIhybCR5p/l6lQNSmuk66VgtgxdAEdQiGuYU1wCcKB/9kba0VXlxIeh5vhEaoODAOCizRRtHKQoQ==} + peerDependencies: + svelte: ^3 || ^4 + + svelte2tsx@0.7.13: + resolution: {integrity: sha512-aObZ93/kGAiLXA/I/kP+x9FriZM+GboB/ReOIGmLNbVGEd2xC+aTCppm3mk1cc9I/z60VQf7b2QDxC3jOXu3yw==} + peerDependencies: + svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 + typescript: ^4.9.4 || ^5.0.0 + + svelte@4.2.18: + resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==} + engines: {node: '>=16'} + + sveltedoc-parser@4.2.1: + resolution: {integrity: sha512-sWJRa4qOfRdSORSVw9GhfDEwsbsYsegnDzBevUCF6k/Eis/QqCu9lJ6I0+d/E2wOWCjOhlcJ3+jl/Iur+5mmCw==} + engines: {node: '>=10.0.0'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} + + tailwindcss-image-rendering@1.0.2: + resolution: {integrity: sha512-WC3hJd2RbHBYIqtJxwpQ5z94wUNyBrJn1eFz3J/jR7OGrQB8WYbJGvJQ9scNNVzoHEYGoNdZbUI90l9YgpBCwg==} + + tailwindcss@3.4.4: + resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} + engines: {node: '>=14.0.0'} + hasBin: true + + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + telejson@7.2.0: + resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + + temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + + tempy@3.1.0: + resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + engines: {node: '>=14.16'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + terser@5.31.1: + resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + + throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + timeout-abort-controller@3.0.0: + resolution: {integrity: sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==} + + timers-ext@0.1.8: + resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} + engines: {node: '>=0.12'} + + tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tocbot@4.28.2: + resolution: {integrity: sha512-/MaSa9xI6mIo84IxqqliSCtPlH0oy7sLcY9s26qPMyH/2CxtZ2vNAXYlIdEQ7kjAkCQnc0rbLygf//F5c663oQ==} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + + treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-essentials@9.4.2: + resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} + peerDependencies: + typescript: '>=4.1.0' + peerDependenciesMeta: + typescript: + optional: true + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-morph@19.0.0: + resolution: {integrity: sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfck@3.1.1: + resolution: {integrity: sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + tween-functions@1.2.0: + resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + + typescript-auto-import-cache@0.3.3: + resolution: {integrity: sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==} + + typescript@5.5.3: + resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + + uglify-js@3.18.0: + resolution: {integrity: sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==} + engines: {node: '>=0.8.0'} + hasBin: true + + uint8-varint@2.0.4: + resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} + + uint8arraylist@2.4.8: + resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} + + uint8arrays@3.1.0: + resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + + uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + + uint8arrays@4.0.10: + resolution: {integrity: sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==} + + uint8arrays@5.1.0: + resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + engines: {node: '>=14.0'} + + unenv@1.9.0: + resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + + unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-modify-children@4.0.0: + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-children@3.0.0: + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin@1.11.0: + resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==} + engines: {node: '>=14.0.0'} + + unstorage@1.10.2: + resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} + peerDependencies: + '@azure/app-configuration': ^1.5.0 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true + + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + + utf-8-validate@6.0.4: + resolution: {integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==} + engines: {node: '>=6.14.2'} + + utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + valtio@1.11.2: + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + + vfile@6.0.2: + resolution: {integrity: sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==} + + viem@1.21.4: + resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + viem@2.16.5: + resolution: {integrity: sha512-QDESALYDyLSP+pIr7adH3QPZ+3is16aOVMXXZE0X1GVbgL7PDMZQ8xIF1X/B1hgyqkBl2HhMpUaq6ksUdBV/YA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite-tsconfig-paths@4.3.2: + resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + + vite@4.5.3: + resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vite@5.3.2: + resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vite@5.4.0: + resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitefu@0.2.5: + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + + vitest-fetch-mock@0.2.2: + resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} + engines: {node: '>=14.14.0'} + peerDependencies: + vitest: '>=0.16.0' + + vitest-mock-extended@1.3.1: + resolution: {integrity: sha512-OpghYjh4BDuQ/Mzs3lFMQ1QRk9D8/2O9T47MLUA5eLn7K4RWIy+MfIivYOWEyxjTENjsBnzgMihDjyNalN/K0Q==} + peerDependencies: + typescript: 3.x || 4.x || 5.x + vitest: '>=0.31.1' + + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + volar-service-css@0.0.59: + resolution: {integrity: sha512-gLNjJnECbalPvQB7qeJjhkDN8sR5M3ItbVYjnyio61aHaWptIiXm/HfDahcQ2ApwmvWidkMWWegjGq5L0BENDA==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-emmet@0.0.59: + resolution: {integrity: sha512-6EynHcuMwMBETpK29TbZvIMmvzdVG+Tkokk9VWfZeI+SwDptk2tgdhEqiXXvIkqYNgbuu73Itp66lpH76cAU+Q==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-html@0.0.59: + resolution: {integrity: sha512-hEXOsYpILDlITZxnqRLV9OepVWD63GZBsyjMxszwdzlxvGZjzbGcBBinJGGJRwFIV8djdJwnt91bkdg1V5tj6Q==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-prettier@0.0.59: + resolution: {integrity: sha512-FmBR4lsgFRGR3V0LnxZZal0WqdOJjuLL6mQSj4p57M15APtQwuocG/FiF+ONGFnwRXMOIBDBTCARdth+TKgL3A==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + prettier: ^2.2 || ^3.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + prettier: + optional: true + + volar-service-typescript-twoslash-queries@0.0.59: + resolution: {integrity: sha512-skm8e6yhCIkqLwJB6S9MqT5lO9LNFuMD3dYxKpmOZs1CKbXmCZZTmLfEaD5VkJae1xdleEDZFFTHl2O5HLjOGQ==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-typescript@0.0.59: + resolution: {integrity: sha512-VCOpfiu+lUo5lapWLB5L5vmQGtwzmNWn5MueV915eku7blpphmE+Z7hCNcL1NApn7AetXWhiblv8ZhmUx/dGIA==} + peerDependencies: + '@volar/language-service': ~2.4.0-alpha.12 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + vscode-css-languageservice@6.3.0: + resolution: {integrity: sha512-nU92imtkgzpCL0xikrIb8WvedV553F2BENzgz23wFuok/HLN5BeQmroMy26pUwFxV2eV8oNRmYCUv8iO7kSMhw==} + + vscode-html-languageservice@5.3.0: + resolution: {integrity: sha512-C4Z3KsP5Ih+fjHpiBc5jxmvCl+4iEwvXegIrzu2F5pktbWvQaBT3YkVPk8N+QlSSMk8oCG6PKtZ/Sq2YHb5e8g==} + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + + vscode-uri@2.1.2: + resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + web3-eth-abi@1.10.4: + resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} + engines: {node: '>=8.0.0'} + + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + + webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + + which-pm@3.0.0: + resolution: {integrity: sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==} + engines: {node: '>=18.12'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + + why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + + ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: false - /@apidevtools/swagger-methods@3.0.2: - resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} - dev: false + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - /@astrojs/check@0.8.3(prettier@3.3.2)(typescript@5.5.3): - resolution: {integrity: sha512-ajcSe+ezX5jCc3dreQlWzbknzXgSGnDETNe3C1mawUOtGpO4t5z2YGaD0y+wzB84lmgPWaWZa0fKSPwLq/wUHw==} + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} + engines: {node: '>= 14'} hasBin: true + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + zod-to-json-schema@3.23.2: + resolution: {integrity: sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==} peerDependencies: - typescript: ^5.0.0 + zod: ^3.23.3 + + zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + + zustand@4.4.1: + resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@adobe/css-tools@4.4.0': {} + + '@adraffy/ens-normalize@1.10.0': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@apidevtools/openapi-schemas@2.1.0': {} + + '@apidevtools/swagger-methods@3.0.2': {} + + '@astrojs/check@0.8.3(prettier@3.3.2)(typescript@5.5.3)': dependencies: '@astrojs/language-server': 2.13.2(prettier@3.3.2)(typescript@5.5.3) chokidar: 3.6.0 @@ -1018,27 +11569,12 @@ packages: transitivePeerDependencies: - prettier - prettier-plugin-astro - dev: false - /@astrojs/compiler@2.10.2: - resolution: {integrity: sha512-bvH+v8AirwpRWCkYJEyWYdc5Cs/BjG2ZTxIJzttHilXgfKJAdW2496KsUQKzf5j2tOHtaHXKKn9hb9WZiBGpEg==} - dev: false + '@astrojs/compiler@2.10.2': {} - /@astrojs/internal-helpers@0.4.1: - resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} - dev: false + '@astrojs/internal-helpers@0.4.1': {} - /@astrojs/language-server@2.13.2(prettier@3.3.2)(typescript@5.5.3): - resolution: {integrity: sha512-l435EZLKjaUO/6iewJ7xqd3eHf3zAosVWG4woILbxluQcianBoNPepnnqAg7uUriZUaC44ae5v0Q+AfB8UI64g==} - hasBin: true - peerDependencies: - prettier: ^3.0.0 - prettier-plugin-astro: '>=0.11.0' - peerDependenciesMeta: - prettier: - optional: true - prettier-plugin-astro: - optional: true + '@astrojs/language-server@2.13.2(prettier@3.3.2)(typescript@5.5.3)': dependencies: '@astrojs/compiler': 2.10.2 '@jridgewell/sourcemap-codec': 1.4.15 @@ -1060,10 +11596,8 @@ packages: vscode-uri: 3.0.8 transitivePeerDependencies: - typescript - dev: false - /@astrojs/markdown-remark@5.2.0: - resolution: {integrity: sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==} + '@astrojs/markdown-remark@5.2.0': dependencies: '@astrojs/prism': 3.1.0 github-slugger: 2.0.0 @@ -1085,13 +11619,8 @@ packages: vfile: 6.0.2 transitivePeerDependencies: - supports-color - dev: false - /@astrojs/mdx@3.1.3(astro@4.13.3): - resolution: {integrity: sha512-hOM4dMM4RfJI254d3p/AnOZuk2VyKszRtuY5FBm+Xc4XdhIpGrR56OXMNEcWchtwz4HQyPe/eJSgvBjSROcQIQ==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} - peerDependencies: - astro: ^4.8.0 + '@astrojs/mdx@3.1.3(astro@4.13.3)': dependencies: '@astrojs/markdown-remark': 5.2.0 '@mdx-js/mdx': 3.0.1 @@ -1111,27 +11640,18 @@ packages: vfile: 6.0.2 transitivePeerDependencies: - supports-color - dev: false - /@astrojs/prism@3.1.0: - resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + '@astrojs/prism@3.1.0': dependencies: prismjs: 1.29.0 - dev: false - /@astrojs/sitemap@3.1.6: - resolution: {integrity: sha512-1Qp2NvAzVImqA6y+LubKi1DVhve/hXXgFvB0szxiipzh7BvtuKe4oJJ9dXSqaubaTkt4nMa6dv6RCCAYeB6xaQ==} + '@astrojs/sitemap@3.1.6': dependencies: sitemap: 7.1.2 stream-replace-string: 2.0.0 zod: 3.23.8 - dev: false - /@astrojs/starlight@0.25.4(astro@4.13.3): - resolution: {integrity: sha512-TRPgRsd5opi2tCXvh8rWizpLsJsRRXbYecULG5b/1x4BFyp40ZJVB77cLMjTj3lHwqWs0Sybtq5OBpOy6fuIEQ==} - peerDependencies: - astro: ^4.8.6 + '@astrojs/starlight@0.25.4(astro@4.13.3)': dependencies: '@astrojs/mdx': 3.1.3(astro@4.13.3) '@astrojs/sitemap': 3.1.6 @@ -1157,11 +11677,8 @@ packages: vfile: 6.0.2 transitivePeerDependencies: - supports-color - dev: false - /@astrojs/telemetry@3.1.0: - resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + '@astrojs/telemetry@3.1.0': dependencies: ci-info: 4.0.0 debug: 4.3.6 @@ -1172,34 +11689,24 @@ packages: which-pm-runs: 1.1.0 transitivePeerDependencies: - supports-color - dev: false - /@aw-web-design/x-default-browser@1.4.126: - resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} - hasBin: true + '@aw-web-design/x-default-browser@1.4.126': dependencies: default-browser-id: 3.0.0 - dev: true - /@aws-crypto/crc32@5.2.0: - resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} - engines: {node: '>=16.0.0'} + '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.598.0 tslib: 2.6.3 - dev: false - /@aws-crypto/crc32c@5.2.0: - resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.598.0 tslib: 2.6.3 - dev: false - /@aws-crypto/sha1-browser@5.2.0: - resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 @@ -1207,10 +11714,8 @@ packages: '@aws-sdk/util-locate-window': 3.568.0 '@smithy/util-utf8': 2.3.0 tslib: 2.6.3 - dev: false - /@aws-crypto/sha256-browser@5.2.0: - resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + '@aws-crypto/sha256-browser@5.2.0': dependencies: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 @@ -1219,34 +11724,24 @@ packages: '@aws-sdk/util-locate-window': 3.568.0 '@smithy/util-utf8': 2.3.0 tslib: 2.6.3 - dev: false - /@aws-crypto/sha256-js@5.2.0: - resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} - engines: {node: '>=16.0.0'} + '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.598.0 tslib: 2.6.3 - dev: false - /@aws-crypto/supports-web-crypto@5.2.0: - resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + '@aws-crypto/supports-web-crypto@5.2.0': dependencies: tslib: 2.6.3 - dev: false - /@aws-crypto/util@5.2.0: - resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + '@aws-crypto/util@5.2.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/util-utf8': 2.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/client-s3@3.608.0: - resolution: {integrity: sha512-la2R6QfUOmE4JMubxLD3OdnPTduAs5YekIvx68I5CbLudb5pbxkHDqnrWDhgK1lX4Cu19pXjgQXmS8oZMJPeLQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-s3@3.608.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 @@ -1308,13 +11803,8 @@ packages: tslib: 2.6.3 transitivePeerDependencies: - aws-crt - dev: false - /@aws-sdk/client-sso-oidc@3.606.0(@aws-sdk/client-sts@3.606.0): - resolution: {integrity: sha512-gL1FHPS6hwgMNS/A+Qh5bUyHOeRVOqdb7c6+i+9gR3wtGvt2lvoSm8w5DhS08Xiiacz2AqYRDEapp0xuyCrbBQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.606.0 + '@aws-sdk/client-sso-oidc@3.606.0(@aws-sdk/client-sts@3.606.0)': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 @@ -1358,11 +11848,8 @@ packages: tslib: 2.6.3 transitivePeerDependencies: - aws-crt - dev: false - /@aws-sdk/client-sso@3.598.0: - resolution: {integrity: sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-sso@3.598.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 @@ -1404,11 +11891,8 @@ packages: tslib: 2.6.3 transitivePeerDependencies: - aws-crt - dev: false - /@aws-sdk/client-sts@3.606.0: - resolution: {integrity: sha512-b11mAhjrkm3MMiAPoMGcmd6vsaz2120lg8rHG/NZCo9vB1K6Kc7WP+a1Q05TRMseer2egTtpWJfn44aVO97VqA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-sts@3.606.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 @@ -1452,11 +11936,8 @@ packages: tslib: 2.6.3 transitivePeerDependencies: - aws-crt - dev: false - /@aws-sdk/core@3.598.0: - resolution: {integrity: sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==} - engines: {node: '>=16.0.0'} + '@aws-sdk/core@3.598.0': dependencies: '@smithy/core': 2.2.4 '@smithy/protocol-http': 4.0.3 @@ -1465,21 +11946,15 @@ packages: '@smithy/types': 3.3.0 fast-xml-parser: 4.2.5 tslib: 2.6.3 - dev: false - /@aws-sdk/credential-provider-env@3.598.0: - resolution: {integrity: sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-env@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/credential-provider-http@3.598.0: - resolution: {integrity: sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-http@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/fetch-http-handler': 3.2.0 @@ -1490,13 +11965,8 @@ packages: '@smithy/types': 3.3.0 '@smithy/util-stream': 3.0.5 tslib: 2.6.3 - dev: false - /@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0): - resolution: {integrity: sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.598.0 + '@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0)': dependencies: '@aws-sdk/client-sts': 3.606.0 '@aws-sdk/credential-provider-env': 3.598.0 @@ -1513,11 +11983,8 @@ packages: transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - dev: false - /@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0): - resolution: {integrity: sha512-1pC7MPMYD45J7yFjA90SxpR0yaSvy+yZiq23aXhAPZLYgJBAxHLu0s0mDCk/piWGPh8+UGur5K0bVdx4B1D5hw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0)': dependencies: '@aws-sdk/credential-provider-env': 3.598.0 '@aws-sdk/credential-provider-http': 3.598.0 @@ -1535,22 +12002,16 @@ packages: - '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sts' - aws-crt - dev: false - /@aws-sdk/credential-provider-process@3.598.0: - resolution: {integrity: sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-process@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.606.0): - resolution: {integrity: sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.606.0)': dependencies: '@aws-sdk/client-sso': 3.598.0 '@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.606.0) @@ -1562,26 +12023,16 @@ packages: transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - dev: false - /@aws-sdk/credential-provider-web-identity@3.598.0(@aws-sdk/client-sts@3.606.0): - resolution: {integrity: sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.598.0 + '@aws-sdk/credential-provider-web-identity@3.598.0(@aws-sdk/client-sts@3.606.0)': dependencies: '@aws-sdk/client-sts': 3.606.0 '@aws-sdk/types': 3.598.0 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/lib-storage@3.608.0(@aws-sdk/client-s3@3.608.0): - resolution: {integrity: sha512-A6RXgkXYf+eY2POxi382nhMdo7x7QpVfgeehvOqpK5c7LgXjwsPTfjSPqLV1fIZuPLn3NG6uNd12Gs6x/466tQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-s3': ^3.608.0 + '@aws-sdk/lib-storage@3.608.0(@aws-sdk/client-s3@3.608.0)': dependencies: '@aws-sdk/client-s3': 3.608.0 '@smithy/abort-controller': 3.1.1 @@ -1591,11 +12042,8 @@ packages: events: 3.3.0 stream-browserify: 3.0.0 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-bucket-endpoint@3.598.0: - resolution: {integrity: sha512-PM7BcFfGUSkmkT6+LU9TyJiB4S8yI7dfuKQDwK5ZR3P7MKaK4Uj4yyDiv0oe5xvkF6+O2+rShj+eh8YuWkOZ/Q==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-bucket-endpoint@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@aws-sdk/util-arn-parser': 3.568.0 @@ -1604,21 +12052,15 @@ packages: '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-expect-continue@3.598.0: - resolution: {integrity: sha512-ZuHW18kaeHR8TQyhEOYMr8VwiIh0bMvF7J1OTqXHxDteQIavJWA3CbfZ9sgS4XGtrBZDyHJhjZKeCfLhN2rq3w==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-expect-continue@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/protocol-http': 4.0.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-flexible-checksums@3.598.0: - resolution: {integrity: sha512-xukAzds0GQXvMEY9G6qt+CzwVzTx8NyKKh04O2Q+nOch6QQ8Rs+2kTRy3Z4wQmXq2pK9hlOWb5nXA7HWpmz6Ng==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-flexible-checksums@3.598.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 @@ -1628,49 +12070,34 @@ packages: '@smithy/types': 3.3.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-host-header@3.598.0: - resolution: {integrity: sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-host-header@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/protocol-http': 4.0.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-location-constraint@3.598.0: - resolution: {integrity: sha512-8oybQxN3F1ISOMULk7JKJz5DuAm5hCUcxMW9noWShbxTJuStNvuHf/WLUzXrf8oSITyYzIHPtf8VPlKR7I3orQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-location-constraint@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-logger@3.598.0: - resolution: {integrity: sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-logger@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-recursion-detection@3.598.0: - resolution: {integrity: sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-recursion-detection@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/protocol-http': 4.0.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-sdk-s3@3.598.0: - resolution: {integrity: sha512-5AGtLAh9wyK6ANPYfaKTqJY1IFJyePIxsEbxa7zS6REheAqyVmgJFaGu3oQ5XlxfGr5Uq59tFTRkyx26G1HkHA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-sdk-s3@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@aws-sdk/util-arn-parser': 3.568.0 @@ -1681,11 +12108,8 @@ packages: '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-signing@3.598.0: - resolution: {integrity: sha512-XKb05DYx/aBPqz6iCapsCbIl8aD8EihTuPCs51p75QsVfbQoVr4TlFfIl5AooMSITzojdAQqxt021YtvxjtxIQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-signing@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/property-provider': 3.1.3 @@ -1694,31 +12118,22 @@ packages: '@smithy/types': 3.3.0 '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-ssec@3.598.0: - resolution: {integrity: sha512-f0p2xP8IC1uJ5e/tND1l81QxRtRFywEdnbtKCE0H6RSn4UIt2W3Dohe1qQDbnh27okF0PkNW6BJGdSAz3p7qbA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-ssec@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/middleware-user-agent@3.598.0: - resolution: {integrity: sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-user-agent@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@aws-sdk/util-endpoints': 3.598.0 '@smithy/protocol-http': 4.0.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/region-config-resolver@3.598.0: - resolution: {integrity: sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/region-config-resolver@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/node-config-provider': 3.1.3 @@ -1726,11 +12141,8 @@ packages: '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - dev: false - /@aws-sdk/signature-v4-multi-region@3.598.0: - resolution: {integrity: sha512-1r/EyTrO1gSa1FirnR8V7mabr7gk+l+HkyTI0fcTSr8ucB7gmYyW6WjkY8JCz13VYHFK62usCEDS7yoJoJOzTA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/signature-v4-multi-region@3.598.0': dependencies: '@aws-sdk/middleware-sdk-s3': 3.598.0 '@aws-sdk/types': 3.598.0 @@ -1738,13 +12150,8 @@ packages: '@smithy/signature-v4': 3.1.2 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.606.0): - resolution: {integrity: sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.598.0 + '@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.606.0)': dependencies: '@aws-sdk/client-sso-oidc': 3.606.0(@aws-sdk/client-sts@3.606.0) '@aws-sdk/types': 3.598.0 @@ -1752,90 +12159,56 @@ packages: '@smithy/shared-ini-file-loader': 3.1.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/types@3.598.0: - resolution: {integrity: sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/types@3.598.0': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/util-arn-parser@3.568.0: - resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} - engines: {node: '>=16.0.0'} + '@aws-sdk/util-arn-parser@3.568.0': dependencies: tslib: 2.6.3 - dev: false - /@aws-sdk/util-endpoints@3.598.0: - resolution: {integrity: sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/util-endpoints@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/types': 3.3.0 '@smithy/util-endpoints': 2.0.4 tslib: 2.6.3 - dev: false - /@aws-sdk/util-locate-window@3.568.0: - resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} - engines: {node: '>=16.0.0'} + '@aws-sdk/util-locate-window@3.568.0': dependencies: tslib: 2.6.3 - dev: false - /@aws-sdk/util-user-agent-browser@3.598.0: - resolution: {integrity: sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==} + '@aws-sdk/util-user-agent-browser@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/types': 3.3.0 bowser: 2.11.0 tslib: 2.6.3 - dev: false - /@aws-sdk/util-user-agent-node@3.598.0: - resolution: {integrity: sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==} - engines: {node: '>=16.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true + '@aws-sdk/util-user-agent-node@3.598.0': dependencies: '@aws-sdk/types': 3.598.0 '@smithy/node-config-provider': 3.1.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@aws-sdk/xml-builder@3.598.0: - resolution: {integrity: sha512-ZIa2RK7CHFTZ4gwK77WRtsZ6vF7xwRXxJ8KQIxK2duhoTVcn0xYxpFLdW9WZZZvdP9GIF3Loqvf8DRdeU5Jc7Q==} - engines: {node: '>=16.0.0'} + '@aws-sdk/xml-builder@3.598.0': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@babel/code-frame@7.24.7: - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} + '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - /@babel/compat-data@7.24.7: - resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} - engines: {node: '>=6.9.0'} + '@babel/compat-data@7.24.7': {} - /@babel/compat-data@7.25.2: - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} - engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.2': {} - /@babel/core@7.24.7: - resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} - engines: {node: '>=6.9.0'} + '@babel/core@7.24.7': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 @@ -1854,11 +12227,8 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/core@7.25.2: - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} - engines: {node: '>=6.9.0'} + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 @@ -1878,42 +12248,32 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.24.7: - resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} - engines: {node: '>=6.9.0'} + '@babel/generator@7.24.7': dependencies: '@babel/types': 7.24.7 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - /@babel/generator@7.25.0: - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} - engines: {node: '>=6.9.0'} + '@babel/generator@7.25.0': dependencies: '@babel/types': 7.25.2 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure@7.24.7: - resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} - engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': dependencies: '@babel/types': 7.24.7 - /@babel/helper-builder-binary-assignment-operator-visitor@7.24.7: - resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} - engines: {node: '>=6.9.0'} + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color - /@babel/helper-compilation-targets@7.24.7: - resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} - engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.24.7': dependencies: '@babel/compat-data': 7.24.7 '@babel/helper-validator-option': 7.24.7 @@ -1921,9 +12281,7 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-compilation-targets@7.25.2: - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} - engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.2': dependencies: '@babel/compat-data': 7.25.2 '@babel/helper-validator-option': 7.24.8 @@ -1931,11 +12289,7 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.24.7 @@ -1949,13 +12303,8 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 @@ -1969,36 +12318,22 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - dev: true - /@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - dev: false - /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.7): - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.24.7 @@ -2008,12 +12343,8 @@ packages: resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: true - /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2): - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.24.7 @@ -2023,50 +12354,35 @@ packages: resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-environment-visitor@7.24.7: - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-environment-visitor@7.24.7': dependencies: '@babel/types': 7.24.7 - /@babel/helper-function-name@7.24.7: - resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} - engines: {node: '>=6.9.0'} + '@babel/helper-function-name@7.24.7': dependencies: '@babel/template': 7.24.7 '@babel/types': 7.24.7 - - /@babel/helper-hoist-variables@7.24.7: - resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} - engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.24.7': dependencies: '@babel/types': 7.24.7 - /@babel/helper-member-expression-to-functions@7.24.7: - resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} - engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.24.7': dependencies: '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color - /@babel/helper-module-imports@7.24.7: - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color - /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 @@ -2076,13 +12392,8 @@ packages: '@babel/helper-validator-identifier': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/helper-module-transforms@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-environment-visitor': 7.24.7 @@ -2092,13 +12403,8 @@ packages: '@babel/helper-validator-identifier': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 @@ -2108,26 +12414,15 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression@7.24.7: - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} - engines: {node: '>=6.9.0'} + '@babel/helper-optimise-call-expression@7.24.7': dependencies: '@babel/types': 7.24.7 - /@babel/helper-plugin-utils@7.24.7: - resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} - engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.7': {} - /@babel/helper-plugin-utils@7.24.8: - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} - engines: {node: '>=6.9.0'} - dev: false + '@babel/helper-plugin-utils@7.24.8': {} - /@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.24.7 @@ -2135,13 +12430,8 @@ packages: '@babel/helper-wrap-function': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 @@ -2149,13 +12439,8 @@ packages: '@babel/helper-wrap-function': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 @@ -2163,13 +12448,8 @@ packages: '@babel/helper-optimise-call-expression': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/helper-replace-supers@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-environment-visitor': 7.24.7 @@ -2177,55 +12457,36 @@ packages: '@babel/helper-optimise-call-expression': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-simple-access@7.24.7: - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} + '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color - /@babel/helper-skip-transparent-expression-wrappers@7.24.7: - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color - /@babel/helper-split-export-declaration@7.24.7: - resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} - engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.24.7': dependencies: '@babel/types': 7.24.7 - /@babel/helper-string-parser@7.24.7: - resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} - engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.7': {} - /@babel/helper-string-parser@7.24.8: - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.8': {} - /@babel/helper-validator-identifier@7.24.7: - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': {} - /@babel/helper-validator-option@7.24.7: - resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.7': {} - /@babel/helper-validator-option@7.24.8: - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': {} - /@babel/helper-wrap-function@7.24.7: - resolution: {integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==} - engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.24.7': dependencies: '@babel/helper-function-name': 7.24.7 '@babel/template': 7.24.7 @@ -2234,91 +12495,54 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helpers@7.24.7: - resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} - engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.7': dependencies: '@babel/template': 7.24.7 '@babel/types': 7.24.7 - dev: true - /@babel/helpers@7.25.0: - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} - engines: {node: '>=6.9.0'} + '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 '@babel/types': 7.25.2 - /@babel/highlight@7.24.7: - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.1 - /@babel/parser@7.24.7: - resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} - engines: {node: '>=6.0.0'} - hasBin: true + '@babel/parser@7.24.7': dependencies: '@babel/types': 7.24.7 - /@babel/parser@7.25.3: - resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} - engines: {node: '>=6.0.0'} - hasBin: true + '@babel/parser@7.25.3': dependencies: '@babel/types': 7.25.2 - /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 @@ -2326,13 +12550,8 @@ packages: '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 @@ -2340,36 +12559,20 @@ packages: '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.2): - resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-environment-visitor': 7.24.7 @@ -2378,75 +12581,40 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) - dev: false - /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.2): - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - dev: false - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2): - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - dev: false - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.2): - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - dev: false - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2): - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2)': dependencies: '@babel/compat-data': 7.25.2 '@babel/core': 7.25.2 @@ -2454,26 +12622,14 @@ packages: '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - dev: false - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.2): - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - dev: false - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2): - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 @@ -2481,459 +12637,243 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.7): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.7): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.7): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - dev: false - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.7): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 @@ -2942,13 +12882,8 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-environment-visitor': 7.24.7 @@ -2957,13 +12892,8 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-module-imports': 7.24.7 @@ -2971,13 +12901,8 @@ packages: '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 @@ -2985,79 +12910,44 @@ packages: '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) @@ -3065,13 +12955,8 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) @@ -3079,13 +12964,8 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-classes@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-classes@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.24.7 @@ -3098,13 +12978,8 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-classes@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-classes@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 @@ -3117,349 +12992,194 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/template': 7.24.7 - dev: true - /@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/template': 7.24.7 - dev: false - /@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) - dev: true - /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - dev: false - /@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) - dev: true - /@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - dev: false - /@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.7) - dev: true - /@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - dev: false - /@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.24.7 '@babel/helper-function-name': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-function-name@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.24.7 '@babel/helper-function-name': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) - dev: true - /@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - dev: false - /@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-literals@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-literals@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) - dev: true - /@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - dev: false - /@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) @@ -3467,13 +13187,8 @@ packages: '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) @@ -3481,13 +13196,8 @@ packages: '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-hoist-variables': 7.24.7 @@ -3496,214 +13206,124 @@ packages: '@babel/helper-validator-identifier': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-hoist-variables': 7.24.7 '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) - dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - dev: false - /@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) - dev: true - /@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - dev: false - /@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) - dev: true - /@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - dev: false - /@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) - dev: true - /@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - dev: false - /@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 @@ -3711,13 +13331,8 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 @@ -3725,59 +13340,34 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.24.7 @@ -3786,13 +13376,8 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 @@ -3801,63 +13386,33 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2): - resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 @@ -3867,55 +13422,30 @@ packages: '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 regenerator-transform: 0.15.2 - dev: true - /@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 regenerator-transform: 0.15.2 - dev: false - /@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-runtime@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 @@ -3926,119 +13456,64 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.24.7 @@ -4047,13 +13522,8 @@ packages: '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 @@ -4062,99 +13532,54 @@ packages: '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.7 - dev: false - /@babel/preset-env@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-env@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/compat-data': 7.24.7 '@babel/core': 7.24.7 @@ -4240,13 +13665,8 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/preset-env@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-env@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/compat-data': 7.24.7 '@babel/core': 7.25.2 @@ -4332,59 +13752,36 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /@babel/preset-flow@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-flow@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-validator-option': 7.24.7 '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.24.7) - dev: true - /@babel/preset-flow@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-flow@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-validator-option': 7.24.7 '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.25.2) - dev: false - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7): - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/types': 7.24.7 esutils: 2.0.3 - dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2): - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 '@babel/types': 7.24.7 esutils: 2.0.3 - dev: false - /@babel/preset-typescript@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 @@ -4394,13 +13791,8 @@ packages: '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - dev: true - /@babel/preset-typescript@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.7 @@ -4408,15 +13800,10 @@ packages: '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/register@7.24.6(@babel/core@7.24.7): - resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + transitivePeerDependencies: + - supports-color + + '@babel/register@7.24.6(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 clone-deep: 4.0.1 @@ -4424,13 +13811,8 @@ packages: make-dir: 2.1.0 pirates: 4.0.6 source-map-support: 0.5.21 - dev: true - /@babel/register@7.24.6(@babel/core@7.25.2): - resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/register@7.24.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 clone-deep: 4.0.1 @@ -4438,36 +13820,26 @@ packages: make-dir: 2.1.0 pirates: 4.0.6 source-map-support: 0.5.21 - dev: false - /@babel/regjsgen@0.8.0: - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + '@babel/regjsgen@0.8.0': {} - /@babel/runtime@7.24.7: - resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} - engines: {node: '>=6.9.0'} + '@babel/runtime@7.24.7': dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.24.7: - resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} - engines: {node: '>=6.9.0'} + '@babel/template@7.24.7': dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.24.7 '@babel/types': 7.24.7 - /@babel/template@7.25.0: - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - /@babel/traverse@7.24.7: - resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} - engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.7': dependencies: '@babel/code-frame': 7.24.7 '@babel/generator': 7.24.7 @@ -4482,9 +13854,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/traverse@7.25.3: - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} - engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.3': dependencies: '@babel/code-frame': 7.24.7 '@babel/generator': 7.25.0 @@ -4496,38 +13866,27 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types@7.24.7: - resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} - engines: {node: '>=6.9.0'} + '@babel/types@7.24.7': dependencies: '@babel/helper-string-parser': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - /@babel/types@7.25.2: - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} - engines: {node: '>=6.9.0'} + '@babel/types@7.25.2': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true + '@bcoe/v8-coverage@0.2.3': {} - /@chainsafe/is-ip@2.0.2: - resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==} - dev: false + '@chainsafe/is-ip@2.0.2': {} - /@chainsafe/netmask@2.0.0: - resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} + '@chainsafe/netmask@2.0.0': dependencies: '@chainsafe/is-ip': 2.0.2 - dev: false - /@changesets/apply-release-plan@7.0.4: - resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} + '@changesets/apply-release-plan@7.0.4': dependencies: '@babel/runtime': 7.24.7 '@changesets/config': 3.0.2 @@ -4543,10 +13902,8 @@ packages: prettier: 2.8.8 resolve-from: 5.0.0 semver: 7.6.3 - dev: false - /@changesets/assemble-release-plan@6.0.3: - resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==} + '@changesets/assemble-release-plan@6.0.3': dependencies: '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 @@ -4555,17 +13912,12 @@ packages: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 semver: 7.6.3 - dev: false - /@changesets/changelog-git@0.2.0: - resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} + '@changesets/changelog-git@0.2.0': dependencies: '@changesets/types': 6.0.0 - dev: false - /@changesets/cli@2.27.7: - resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==} - hasBin: true + '@changesets/cli@2.27.7': dependencies: '@babel/runtime': 7.24.7 '@changesets/apply-release-plan': 7.0.4 @@ -4599,10 +13951,8 @@ packages: semver: 7.6.2 spawndamnit: 2.0.0 term-size: 2.2.1 - dev: false - /@changesets/config@3.0.2: - resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==} + '@changesets/config@3.0.2': dependencies: '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.1 @@ -4611,26 +13961,20 @@ packages: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 micromatch: 4.0.7 - dev: false - /@changesets/errors@0.2.0: - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + '@changesets/errors@0.2.0': dependencies: extendable-error: 0.1.7 - dev: false - /@changesets/get-dependents-graph@2.1.1: - resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==} + '@changesets/get-dependents-graph@2.1.1': dependencies: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 semver: 7.6.3 - dev: false - /@changesets/get-release-plan@4.0.3: - resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==} + '@changesets/get-release-plan@4.0.3': dependencies: '@babel/runtime': 7.24.7 '@changesets/assemble-release-plan': 6.0.3 @@ -4639,14 +13983,10 @@ packages: '@changesets/read': 0.6.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - dev: false - /@changesets/get-version-range-type@0.4.0: - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - dev: false + '@changesets/get-version-range-type@0.4.0': {} - /@changesets/git@3.0.0: - resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + '@changesets/git@3.0.0': dependencies: '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 @@ -4655,33 +13995,25 @@ packages: is-subdir: 1.2.0 micromatch: 4.0.7 spawndamnit: 2.0.0 - dev: false - /@changesets/logger@0.1.0: - resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + '@changesets/logger@0.1.0': dependencies: chalk: 2.4.2 - dev: false - /@changesets/parse@0.4.0: - resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + '@changesets/parse@0.4.0': dependencies: '@changesets/types': 6.0.0 js-yaml: 3.14.1 - dev: false - /@changesets/pre@2.0.0: - resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + '@changesets/pre@2.0.0': dependencies: '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - dev: false - /@changesets/read@0.6.0: - resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + '@changesets/read@0.6.0': dependencies: '@babel/runtime': 7.24.7 '@changesets/git': 3.0.0 @@ -4691,37 +14023,26 @@ packages: chalk: 2.4.2 fs-extra: 7.0.1 p-filter: 2.1.0 - dev: false - /@changesets/should-skip-package@0.1.0: - resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==} + '@changesets/should-skip-package@0.1.0': dependencies: '@babel/runtime': 7.24.7 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - dev: false - /@changesets/types@4.1.0: - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - dev: false + '@changesets/types@4.1.0': {} - /@changesets/types@6.0.0: - resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - dev: false + '@changesets/types@6.0.0': {} - /@changesets/write@0.3.1: - resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} + '@changesets/write@0.3.1': dependencies: '@babel/runtime': 7.24.7 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 - dev: false - /@chromatic-com/storybook@1.6.0(react@18.3.1): - resolution: {integrity: sha512-6sHj0l194KMBIZ0D5SeJ+Ys+zslehKHcC2d6Hd/YEn4cCl7p9mLuxrZjvf8xharGKy8vf9Q1tKrU2YdldzUBoQ==} - engines: {node: '>=16.0.0', yarn: '>=1.22.18'} + '@chromatic-com/storybook@1.6.0(react@18.3.1)': dependencies: chromatic: 11.5.4 filesize: 10.1.2 @@ -4732,10 +14053,8 @@ packages: - '@chromatic-com/cypress' - '@chromatic-com/playwright' - react - dev: true - /@coinbase/wallet-sdk@3.9.1: - resolution: {integrity: sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA==} + '@coinbase/wallet-sdk@3.9.1': dependencies: bn.js: 5.2.1 buffer: 6.0.3 @@ -4748,10 +14067,8 @@ packages: sha.js: 2.4.11 transitivePeerDependencies: - supports-color - dev: false - /@coinbase/wallet-sdk@3.9.3: - resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} + '@coinbase/wallet-sdk@3.9.3': dependencies: bn.js: 5.2.1 buffer: 6.0.3 @@ -4764,10 +14081,8 @@ packages: sha.js: 2.4.11 transitivePeerDependencies: - supports-color - dev: false - /@coinbase/wallet-sdk@4.0.4: - resolution: {integrity: sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA==} + '@coinbase/wallet-sdk@4.0.4': dependencies: buffer: 6.0.3 clsx: 1.2.1 @@ -4775,894 +14090,339 @@ packages: keccak: 3.0.4 preact: 10.22.1 sha.js: 2.4.11 - dev: false - /@colors/colors@1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true - dev: true + '@colors/colors@1.5.0': optional: true - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true - /@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.1.0): - resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss-selector-parser: ^6.0.13 + '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.1.0)': dependencies: postcss-selector-parser: 6.1.0 - dev: true - /@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.0): - resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss-selector-parser: ^6.0.13 + '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.0)': dependencies: postcss-selector-parser: 6.1.0 - dev: true - /@ctrl/tinycolor@4.1.0: - resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} - engines: {node: '>=14'} - dev: false + '@ctrl/tinycolor@4.1.0': {} - /@discoveryjs/json-ext@0.5.7: - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - dev: true + '@discoveryjs/json-ext@0.5.7': {} - /@emmetio/abbreviation@2.3.3: - resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} + '@emmetio/abbreviation@2.3.3': dependencies: '@emmetio/scanner': 1.0.4 - dev: false - /@emmetio/css-abbreviation@2.1.8: - resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} + '@emmetio/css-abbreviation@2.1.8': dependencies: '@emmetio/scanner': 1.0.4 - dev: false - /@emmetio/css-parser@0.4.0: - resolution: {integrity: sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==} + '@emmetio/css-parser@0.4.0': dependencies: '@emmetio/stream-reader': 2.2.0 '@emmetio/stream-reader-utils': 0.1.0 - dev: false - /@emmetio/html-matcher@1.3.0: - resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} + '@emmetio/html-matcher@1.3.0': dependencies: '@emmetio/scanner': 1.0.4 - dev: false - /@emmetio/scanner@1.0.4: - resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} - dev: false + '@emmetio/scanner@1.0.4': {} - /@emmetio/stream-reader-utils@0.1.0: - resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} - dev: false + '@emmetio/stream-reader-utils@0.1.0': {} - /@emmetio/stream-reader@2.2.0: - resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} - dev: false + '@emmetio/stream-reader@2.2.0': {} - /@emnapi/runtime@1.2.0: - resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} - requiresBuild: true + '@emnapi/runtime@1.2.0': dependencies: tslib: 2.6.3 - dev: false optional: true - /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.3.1): - resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} - peerDependencies: - react: '>=16.8.0' + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.3.1)': dependencies: react: 18.3.1 - dev: true - /@esbuild/aix-ppc64@0.19.12: - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true + '@esbuild/aix-ppc64@0.19.12': optional: true - /@esbuild/aix-ppc64@0.20.2: - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: true + '@esbuild/aix-ppc64@0.20.2': optional: true - /@esbuild/aix-ppc64@0.21.5: - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true + '@esbuild/aix-ppc64@0.21.5': optional: true - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true + '@esbuild/android-arm64@0.18.20': optional: true - /@esbuild/android-arm64@0.19.12: - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true + '@esbuild/android-arm64@0.19.12': optional: true - /@esbuild/android-arm64@0.20.2: - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true + '@esbuild/android-arm64@0.20.2': optional: true - /@esbuild/android-arm64@0.21.5: - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true + '@esbuild/android-arm64@0.21.5': optional: true - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true + '@esbuild/android-arm@0.18.20': optional: true - /@esbuild/android-arm@0.19.12: - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true + '@esbuild/android-arm@0.19.12': optional: true - /@esbuild/android-arm@0.20.2: - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true + '@esbuild/android-arm@0.20.2': optional: true - /@esbuild/android-arm@0.21.5: - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true + '@esbuild/android-arm@0.21.5': optional: true - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true + '@esbuild/android-x64@0.18.20': optional: true - /@esbuild/android-x64@0.19.12: - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true + '@esbuild/android-x64@0.19.12': optional: true - /@esbuild/android-x64@0.20.2: - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true + '@esbuild/android-x64@0.20.2': optional: true - /@esbuild/android-x64@0.21.5: - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true + '@esbuild/android-x64@0.21.5': optional: true - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true + '@esbuild/darwin-arm64@0.18.20': optional: true - /@esbuild/darwin-arm64@0.19.12: - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true + '@esbuild/darwin-arm64@0.19.12': optional: true - /@esbuild/darwin-arm64@0.20.2: - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true + '@esbuild/darwin-arm64@0.20.2': optional: true - /@esbuild/darwin-arm64@0.21.5: - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true + '@esbuild/darwin-arm64@0.21.5': optional: true - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + '@esbuild/darwin-x64@0.18.20': optional: true - /@esbuild/darwin-x64@0.19.12: - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true + '@esbuild/darwin-x64@0.19.12': optional: true - /@esbuild/darwin-x64@0.20.2: - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + '@esbuild/darwin-x64@0.20.2': optional: true - /@esbuild/darwin-x64@0.21.5: - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true + '@esbuild/darwin-x64@0.21.5': optional: true - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true + '@esbuild/freebsd-arm64@0.18.20': optional: true - /@esbuild/freebsd-arm64@0.19.12: - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true + '@esbuild/freebsd-arm64@0.19.12': optional: true - /@esbuild/freebsd-arm64@0.20.2: - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true + '@esbuild/freebsd-arm64@0.20.2': optional: true - /@esbuild/freebsd-arm64@0.21.5: - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true + '@esbuild/freebsd-arm64@0.21.5': optional: true - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true + '@esbuild/freebsd-x64@0.18.20': optional: true - /@esbuild/freebsd-x64@0.19.12: - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true + '@esbuild/freebsd-x64@0.19.12': optional: true - /@esbuild/freebsd-x64@0.20.2: - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true + '@esbuild/freebsd-x64@0.20.2': optional: true - /@esbuild/freebsd-x64@0.21.5: - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true + '@esbuild/freebsd-x64@0.21.5': optional: true - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-arm64@0.18.20': optional: true - /@esbuild/linux-arm64@0.19.12: - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true + '@esbuild/linux-arm64@0.19.12': optional: true - /@esbuild/linux-arm64@0.20.2: - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-arm64@0.20.2': optional: true - /@esbuild/linux-arm64@0.21.5: - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true + '@esbuild/linux-arm64@0.21.5': optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-arm@0.18.20': optional: true - /@esbuild/linux-arm@0.19.12: - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true + '@esbuild/linux-arm@0.19.12': optional: true - /@esbuild/linux-arm@0.20.2: - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-arm@0.20.2': optional: true - /@esbuild/linux-arm@0.21.5: - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true + '@esbuild/linux-arm@0.21.5': optional: true - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-ia32@0.18.20': optional: true - /@esbuild/linux-ia32@0.19.12: - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true + '@esbuild/linux-ia32@0.19.12': optional: true - /@esbuild/linux-ia32@0.20.2: - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-ia32@0.20.2': optional: true - /@esbuild/linux-ia32@0.21.5: - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true + '@esbuild/linux-ia32@0.21.5': optional: true - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-loong64@0.18.20': optional: true - /@esbuild/linux-loong64@0.19.12: - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true + '@esbuild/linux-loong64@0.19.12': optional: true - /@esbuild/linux-loong64@0.20.2: - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-loong64@0.20.2': optional: true - /@esbuild/linux-loong64@0.21.5: - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true + '@esbuild/linux-loong64@0.21.5': optional: true - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-mips64el@0.18.20': optional: true - /@esbuild/linux-mips64el@0.19.12: - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true + '@esbuild/linux-mips64el@0.19.12': optional: true - /@esbuild/linux-mips64el@0.20.2: - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-mips64el@0.20.2': optional: true - /@esbuild/linux-mips64el@0.21.5: - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true + '@esbuild/linux-mips64el@0.21.5': optional: true - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-ppc64@0.18.20': optional: true - /@esbuild/linux-ppc64@0.19.12: - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true + '@esbuild/linux-ppc64@0.19.12': optional: true - /@esbuild/linux-ppc64@0.20.2: - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-ppc64@0.20.2': optional: true - /@esbuild/linux-ppc64@0.21.5: - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true + '@esbuild/linux-ppc64@0.21.5': optional: true - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-riscv64@0.18.20': optional: true - /@esbuild/linux-riscv64@0.19.12: - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true + '@esbuild/linux-riscv64@0.19.12': optional: true - /@esbuild/linux-riscv64@0.20.2: - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-riscv64@0.20.2': optional: true - /@esbuild/linux-riscv64@0.21.5: - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true + '@esbuild/linux-riscv64@0.21.5': optional: true - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-s390x@0.18.20': optional: true - /@esbuild/linux-s390x@0.19.12: - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true + '@esbuild/linux-s390x@0.19.12': optional: true - /@esbuild/linux-s390x@0.20.2: - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-s390x@0.20.2': optional: true - /@esbuild/linux-s390x@0.21.5: - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true + '@esbuild/linux-s390x@0.21.5': optional: true - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-x64@0.18.20': optional: true - /@esbuild/linux-x64@0.19.12: - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true + '@esbuild/linux-x64@0.19.12': optional: true - /@esbuild/linux-x64@0.20.2: - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-x64@0.20.2': optional: true - /@esbuild/linux-x64@0.21.5: - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true + '@esbuild/linux-x64@0.21.5': optional: true - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true + '@esbuild/netbsd-x64@0.18.20': optional: true - /@esbuild/netbsd-x64@0.19.12: - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true + '@esbuild/netbsd-x64@0.19.12': optional: true - /@esbuild/netbsd-x64@0.20.2: - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true + '@esbuild/netbsd-x64@0.20.2': optional: true - /@esbuild/netbsd-x64@0.21.5: - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true + '@esbuild/netbsd-x64@0.21.5': optional: true - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true + '@esbuild/openbsd-x64@0.18.20': optional: true - /@esbuild/openbsd-x64@0.19.12: - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true + '@esbuild/openbsd-x64@0.19.12': optional: true - /@esbuild/openbsd-x64@0.20.2: - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true + '@esbuild/openbsd-x64@0.20.2': optional: true - /@esbuild/openbsd-x64@0.21.5: - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true + '@esbuild/openbsd-x64@0.21.5': optional: true - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true + '@esbuild/sunos-x64@0.18.20': optional: true - /@esbuild/sunos-x64@0.19.12: - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true + '@esbuild/sunos-x64@0.19.12': optional: true - /@esbuild/sunos-x64@0.20.2: - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true + '@esbuild/sunos-x64@0.20.2': optional: true - /@esbuild/sunos-x64@0.21.5: - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true + '@esbuild/sunos-x64@0.21.5': optional: true - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true + '@esbuild/win32-arm64@0.18.20': optional: true - /@esbuild/win32-arm64@0.19.12: - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true + '@esbuild/win32-arm64@0.19.12': optional: true - /@esbuild/win32-arm64@0.20.2: - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true + '@esbuild/win32-arm64@0.20.2': optional: true - /@esbuild/win32-arm64@0.21.5: - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true + '@esbuild/win32-arm64@0.21.5': optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true + '@esbuild/win32-ia32@0.18.20': optional: true - /@esbuild/win32-ia32@0.19.12: - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true + '@esbuild/win32-ia32@0.19.12': optional: true - /@esbuild/win32-ia32@0.20.2: - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true + '@esbuild/win32-ia32@0.20.2': optional: true - /@esbuild/win32-ia32@0.21.5: - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true + '@esbuild/win32-ia32@0.21.5': optional: true - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true + '@esbuild/win32-x64@0.18.20': optional: true - /@esbuild/win32-x64@0.19.12: - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true + '@esbuild/win32-x64@0.19.12': optional: true - /@esbuild/win32-x64@0.20.2: - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true + '@esbuild/win32-x64@0.20.2': optional: true - /@esbuild/win32-x64@0.21.5: - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true + '@esbuild/win32-x64@0.21.5': optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.11.0: - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true + '@eslint-community/regexpp@4.11.0': {} - /@eslint/eslintrc@1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@1.4.1': dependencies: ajv: 6.12.6 debug: 4.3.5 @@ -5675,11 +14435,8 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 debug: 4.3.5 @@ -5692,47 +14449,30 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@eslint/js@8.57.0': {} - /@ethereumjs/common@3.2.0: - resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + '@ethereumjs/common@3.2.0': dependencies: '@ethereumjs/util': 8.1.0 crc-32: 1.2.2 - dev: false - /@ethereumjs/rlp@4.0.1: - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - dev: false + '@ethereumjs/rlp@4.0.1': {} - /@ethereumjs/tx@4.2.0: - resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} - engines: {node: '>=14'} + '@ethereumjs/tx@4.2.0': dependencies: '@ethereumjs/common': 3.2.0 '@ethereumjs/rlp': 4.0.1 '@ethereumjs/util': 8.1.0 ethereum-cryptography: 2.2.1 - dev: false - /@ethereumjs/util@8.1.0: - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} + '@ethereumjs/util@8.1.0': dependencies: '@ethereumjs/rlp': 4.0.1 ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 - dev: false - /@ethersproject/abi@5.7.0: - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + '@ethersproject/abi@5.7.0': dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -5744,8 +14484,7 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - /@ethersproject/abstract-provider@5.7.0: - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + '@ethersproject/abstract-provider@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -5755,8 +14494,7 @@ packages: '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 - /@ethersproject/abstract-signer@5.7.0: - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + '@ethersproject/abstract-signer@5.7.0': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -5764,8 +14502,7 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - /@ethersproject/address@5.7.0: - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + '@ethersproject/address@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -5773,37 +14510,30 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/rlp': 5.7.0 - /@ethersproject/base64@5.7.0: - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + '@ethersproject/base64@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 - /@ethersproject/basex@5.7.0: - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + '@ethersproject/basex@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/properties': 5.7.0 - dev: true - /@ethersproject/bignumber@5.7.0: - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + '@ethersproject/bignumber@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 bn.js: 5.2.1 - /@ethersproject/bytes@5.7.0: - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + '@ethersproject/bytes@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 - /@ethersproject/constants@5.7.0: - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + '@ethersproject/constants@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 - /@ethersproject/contracts@5.7.0: - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + '@ethersproject/contracts@5.7.0': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -5815,10 +14545,8 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 - dev: true - /@ethersproject/hash@5.7.0: - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + '@ethersproject/hash@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -5830,8 +14558,7 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - /@ethersproject/hdnode@5.7.0: - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + '@ethersproject/hdnode@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/basex': 5.7.0 @@ -5845,10 +14572,8 @@ packages: '@ethersproject/strings': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: true - /@ethersproject/json-wallets@5.7.0: - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + '@ethersproject/json-wallets@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -5863,36 +14588,28 @@ packages: '@ethersproject/transactions': 5.7.0 aes-js: 3.0.0 scrypt-js: 3.0.1 - dev: true - /@ethersproject/keccak256@5.7.0: - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + '@ethersproject/keccak256@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 - /@ethersproject/logger@5.7.0: - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + '@ethersproject/logger@5.7.0': {} - /@ethersproject/networks@5.7.1: - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + '@ethersproject/networks@5.7.1': dependencies: '@ethersproject/logger': 5.7.0 - /@ethersproject/pbkdf2@5.7.0: - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + '@ethersproject/pbkdf2@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/sha2': 5.7.0 - dev: true - /@ethersproject/properties@5.7.0: - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + '@ethersproject/properties@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 - /@ethersproject/providers@5.7.2: - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + '@ethersproject/providers@5.7.2': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -5917,30 +14634,24 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: true - /@ethersproject/random@5.7.0: - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + '@ethersproject/random@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: true - /@ethersproject/rlp@5.7.0: - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + '@ethersproject/rlp@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - /@ethersproject/sha2@5.7.0: - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + '@ethersproject/sha2@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - /@ethersproject/signing-key@5.7.0: - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + '@ethersproject/signing-key@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 @@ -5949,8 +14660,7 @@ packages: elliptic: 6.5.4 hash.js: 1.1.7 - /@ethersproject/solidity@5.7.0: - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + '@ethersproject/solidity@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -5958,17 +14668,14 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: true - /@ethersproject/strings@5.7.0: - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + '@ethersproject/strings@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - /@ethersproject/transactions@5.7.0: - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + '@ethersproject/transactions@5.7.0': dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -5980,16 +14687,13 @@ packages: '@ethersproject/rlp': 5.7.0 '@ethersproject/signing-key': 5.7.0 - /@ethersproject/units@5.7.0: - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + '@ethersproject/units@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: true - /@ethersproject/wallet@5.7.0: - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + '@ethersproject/wallet@5.7.0': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -6006,10 +14710,8 @@ packages: '@ethersproject/signing-key': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: true - /@ethersproject/web@5.7.1: - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + '@ethersproject/web@5.7.1': dependencies: '@ethersproject/base64': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -6017,18 +14719,15 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - /@ethersproject/wordlists@5.7.0: - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + '@ethersproject/wordlists@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: true - /@expressive-code/core@0.35.6: - resolution: {integrity: sha512-xGqCkmfkgT7lr/rvmfnYdDSeTdCSp1otAHgoFS6wNEeO7wGDPpxdosVqYiIcQ8CfWUABh/pGqWG90q+MV3824A==} + '@expressive-code/core@0.35.6': dependencies: '@ctrl/tinycolor': 4.1.0 hast-util-select: 6.0.2 @@ -6039,378 +14738,196 @@ packages: postcss-nested: 6.0.1(postcss@8.4.39) unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /@expressive-code/plugin-frames@0.35.6: - resolution: {integrity: sha512-CqjSWjDJ3wabMJZfL9ZAzH5UAGKg7KWsf1TBzr4xvUbZvWoBtLA/TboBML0U1Ls8h/4TRCIvR4VEb8dv5+QG3w==} + '@expressive-code/plugin-frames@0.35.6': dependencies: '@expressive-code/core': 0.35.6 - dev: false - /@expressive-code/plugin-shiki@0.35.6: - resolution: {integrity: sha512-xm+hzi9BsmhkDUGuyAWIydOAWer7Cs9cj8FM0t4HXaQ+qCubprT6wJZSKUxuvFJIUsIOqk1xXFaJzGJGnWtKMg==} + '@expressive-code/plugin-shiki@0.35.6': dependencies: '@expressive-code/core': 0.35.6 shiki: 1.10.0 - dev: false - /@expressive-code/plugin-text-markers@0.35.6: - resolution: {integrity: sha512-/k9eWVZSCs+uEKHR++22Uu6eIbHWEciVHbIuD8frT8DlqTtHYaaiwHPncO6KFWnGDz5i/gL7oyl6XmOi/E6GVg==} + '@expressive-code/plugin-text-markers@0.35.6': dependencies: '@expressive-code/core': 0.35.6 - dev: false - /@fal-works/esbuild-plugin-global-externals@2.1.2: - resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} - dev: true + '@fal-works/esbuild-plugin-global-externals@2.1.2': {} - /@fastify/busboy@2.1.1: - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - dev: false + '@fastify/busboy@2.1.1': {} - /@formatjs/ecma402-abstract@2.0.0: - resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} + '@formatjs/ecma402-abstract@2.0.0': dependencies: '@formatjs/intl-localematcher': 0.5.4 tslib: 2.6.3 - /@formatjs/fast-memoize@2.2.0: - resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} + '@formatjs/fast-memoize@2.2.0': dependencies: tslib: 2.6.3 - /@formatjs/icu-messageformat-parser@2.7.8: - resolution: {integrity: sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==} + '@formatjs/icu-messageformat-parser@2.7.8': dependencies: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/icu-skeleton-parser': 1.8.2 tslib: 2.6.3 - /@formatjs/icu-skeleton-parser@1.8.2: - resolution: {integrity: sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==} + '@formatjs/icu-skeleton-parser@1.8.2': dependencies: '@formatjs/ecma402-abstract': 2.0.0 tslib: 2.6.3 - /@formatjs/intl-localematcher@0.5.4: - resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} + '@formatjs/intl-localematcher@0.5.4': dependencies: tslib: 2.6.3 - /@hapi/hoek@9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - dev: false + '@hapi/hoek@9.3.0': {} - /@hapi/topo@5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 - dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.5 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - /@humanwhocodes/config-array@0.9.5: - resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanwhocodes/config-array@0.9.5': dependencies: '@humanwhocodes/object-schema': 1.2.1 debug: 4.3.5 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true + '@humanwhocodes/module-importer@1.0.1': {} - /@humanwhocodes/momoa@2.0.4: - resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} - engines: {node: '>=10.10.0'} - dev: false + '@humanwhocodes/momoa@2.0.4': {} - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - deprecated: Use @eslint/object-schema instead - dev: true + '@humanwhocodes/object-schema@1.2.1': {} - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - dev: true + '@humanwhocodes/object-schema@2.0.3': {} - /@img/sharp-darwin-arm64@0.33.4: - resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true + '@img/sharp-darwin-arm64@0.33.4': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.2 - dev: false optional: true - /@img/sharp-darwin-x64@0.33.4: - resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true + '@img/sharp-darwin-x64@0.33.4': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.0.2 - dev: false optional: true - /@img/sharp-libvips-darwin-arm64@1.0.2: - resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@img/sharp-libvips-darwin-arm64@1.0.2': optional: true - /@img/sharp-libvips-darwin-x64@1.0.2: - resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@img/sharp-libvips-darwin-x64@1.0.2': optional: true - /@img/sharp-libvips-linux-arm64@1.0.2: - resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-arm64@1.0.2': optional: true - /@img/sharp-libvips-linux-arm@1.0.2: - resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-arm@1.0.2': optional: true - /@img/sharp-libvips-linux-s390x@1.0.2: - resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-s390x@1.0.2': optional: true - /@img/sharp-libvips-linux-x64@1.0.2: - resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-x64@1.0.2': optional: true - /@img/sharp-libvips-linuxmusl-arm64@1.0.2: - resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linuxmusl-arm64@1.0.2': optional: true - /@img/sharp-libvips-linuxmusl-x64@1.0.2: - resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linuxmusl-x64@1.0.2': optional: true - /@img/sharp-linux-arm64@0.33.4: - resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true + '@img/sharp-linux-arm64@0.33.4': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.0.2 - dev: false optional: true - /@img/sharp-linux-arm@0.33.4: - resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - requiresBuild: true + '@img/sharp-linux-arm@0.33.4': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.0.2 - dev: false optional: true - /@img/sharp-linux-s390x@0.33.4: - resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} - engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - requiresBuild: true + '@img/sharp-linux-s390x@0.33.4': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.0.2 - dev: false optional: true - /@img/sharp-linux-x64@0.33.4: - resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true + '@img/sharp-linux-x64@0.33.4': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.0.2 - dev: false optional: true - /@img/sharp-linuxmusl-arm64@0.33.4: - resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true + '@img/sharp-linuxmusl-arm64@0.33.4': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - dev: false optional: true - /@img/sharp-linuxmusl-x64@0.33.4: - resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true + '@img/sharp-linuxmusl-x64@0.33.4': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - dev: false optional: true - /@img/sharp-wasm32@0.33.4: - resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [wasm32] - requiresBuild: true + '@img/sharp-wasm32@0.33.4': dependencies: '@emnapi/runtime': 1.2.0 - dev: false optional: true - /@img/sharp-win32-ia32@0.33.4: - resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + '@img/sharp-win32-ia32@0.33.4': optional: true - /@img/sharp-win32-x64@0.33.4: - resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@img/sharp-win32-x64@0.33.4': optional: true - /@ipld/dag-cbor@9.2.1: - resolution: {integrity: sha512-nyY48yE7r3dnJVlxrdaimrbloh4RokQaNRdI//btfTkcTEZbpmSrbYcBQ4VKTf8ZxXAOUJy4VsRpkJo+y9RTnA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@ipld/dag-cbor@9.2.1': dependencies: cborg: 4.2.2 multiformats: 13.1.3 - dev: false - /@ipld/dag-json@10.2.2: - resolution: {integrity: sha512-NnU8HdHKwAoGyrW3S09NMa8aZw0tImLRyR64hoafpLpDpAbA9g1+fb24JsdlugbL4sXUQVwDVA+qK4Ud8V83lA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@ipld/dag-json@10.2.2': dependencies: cborg: 4.2.2 multiformats: 13.1.3 - dev: false - /@ipld/dag-pb@4.1.2: - resolution: {integrity: sha512-BSztO4l3C+ya9HjCaQot26Y4AVsqIKtnn6+23ubc1usucnf6yoTBme18oCCdM6gKBMxuPqju5ye3lh9WEJsdeQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@ipld/dag-pb@4.1.2': dependencies: multiformats: 13.1.3 - dev: false - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 + string-width-cjs: string-width@4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 + strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 - /@isaacs/ttlcache@1.4.1: - resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} - engines: {node: '>=12'} - dev: false + '@isaacs/ttlcache@1.4.1': {} - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true + '@istanbuljs/schema@0.1.3': {} - /@jest/create-cache-key-function@29.7.0: - resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/create-cache-key-function@29.7.0': dependencies: '@jest/types': 29.6.3 - dev: false - /@jest/environment@29.7.0: - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.14.9 jest-mock: 29.7.0 - dev: false - /@jest/expect-utils@29.7.0: - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 - dev: true - /@jest/fake-timers@29.7.0: - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 @@ -6418,28 +14935,20 @@ packages: jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 - dev: false - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 - /@jest/types@26.6.2: - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} + '@jest/types@26.6.2': dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 20.14.9 '@types/yargs': 15.0.19 chalk: 4.1.2 - dev: false - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 @@ -6448,103 +14957,70 @@ packages: '@types/yargs': 17.0.32 chalk: 4.1.2 - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + '@jridgewell/resolve-uri@3.1.2': {} - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.2.1': {} - /@jridgewell/source-map@0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/source-map@0.3.6': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - dev: false - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.4.15': {} - /@jridgewell/sourcemap-codec@1.5.0: - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/sourcemap-codec@1.5.0': {} - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@jsdevtools/ono@7.1.3: - resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - dev: false + '@jsdevtools/ono@7.1.3': {} - /@leichtgewicht/ip-codec@2.0.5: - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - dev: false + '@leichtgewicht/ip-codec@2.0.5': {} - /@libp2p/interface-connection@4.0.0: - resolution: {integrity: sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/interface-connection@4.0.0': dependencies: '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.2 '@multiformats/multiaddr': 12.3.0 it-stream-types: 1.0.5 uint8arraylist: 2.4.8 - dev: false - /@libp2p/interface-keychain@2.0.5: - resolution: {integrity: sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/interface-keychain@2.0.5': dependencies: '@libp2p/interface-peer-id': 2.0.2 multiformats: 11.0.2 - dev: false - /@libp2p/interface-peer-id@2.0.2: - resolution: {integrity: sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/interface-peer-id@2.0.2': dependencies: multiformats: 11.0.2 - dev: false - /@libp2p/interface-peer-info@1.0.10: - resolution: {integrity: sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/interface-peer-info@1.0.10': dependencies: '@libp2p/interface-peer-id': 2.0.2 '@multiformats/multiaddr': 12.3.0 - dev: false - /@libp2p/interface-pubsub@3.0.7: - resolution: {integrity: sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/interface-pubsub@3.0.7': dependencies: '@libp2p/interface-connection': 4.0.0 '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.2 it-pushable: 3.2.3 uint8arraylist: 2.4.8 - dev: false - /@libp2p/interface@1.5.0: - resolution: {integrity: sha512-SivVvZ+7r7Vgnv+Y88nGZTpG449PYZAPgfLhVqTXn6T4NAFt47InzC7UMFnVqSQuT21YmI9DoeaVXH73CsHNrg==} + '@libp2p/interface@1.5.0': dependencies: '@multiformats/multiaddr': 12.3.0 it-pushable: 3.2.3 @@ -6552,16 +15028,10 @@ packages: multiformats: 13.1.3 progress-events: 1.0.0 uint8arraylist: 2.4.8 - dev: false - /@libp2p/interfaces@3.3.2: - resolution: {integrity: sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + '@libp2p/interfaces@3.3.2': {} - /@libp2p/logger@2.1.1: - resolution: {integrity: sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/logger@2.1.1': dependencies: '@libp2p/interface-peer-id': 2.0.2 '@multiformats/multiaddr': 12.3.0 @@ -6570,45 +15040,32 @@ packages: multiformats: 11.0.2 transitivePeerDependencies: - supports-color - dev: false - /@libp2p/peer-id@2.0.4: - resolution: {integrity: sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/peer-id@2.0.4': dependencies: '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.2 multiformats: 11.0.2 uint8arrays: 4.0.10 - dev: false - /@lit-labs/ssr-dom-shim@1.2.0: - resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} - dev: false + '@lit-labs/ssr-dom-shim@1.2.0': {} - /@lit/reactive-element@1.6.3: - resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + '@lit/reactive-element@1.6.3': dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 - dev: false - /@lit/reactive-element@2.0.4: - resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} + '@lit/reactive-element@2.0.4': dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 - dev: false - /@manypkg/find-root@1.1.0: - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.24.7 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 - dev: false - /@manypkg/get-packages@1.1.3: - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + '@manypkg/get-packages@1.1.3': dependencies: '@babel/runtime': 7.24.7 '@changesets/types': 4.1.0 @@ -6616,10 +15073,8 @@ packages: fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 - dev: false - /@mdx-js/mdx@3.0.1: - resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} + '@mdx-js/mdx@3.0.1': dependencies: '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.5 @@ -6646,44 +15101,30 @@ packages: vfile: 6.0.2 transitivePeerDependencies: - supports-color - dev: false - /@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' + '@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 '@types/react': 18.3.3 react: 18.3.1 - dev: true - /@metamask/eth-json-rpc-provider@1.0.1: - resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} - engines: {node: '>=14.0.0'} + '@metamask/eth-json-rpc-provider@1.0.1': dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 5.0.2 transitivePeerDependencies: - supports-color - dev: false - /@metamask/json-rpc-engine@7.3.3: - resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} - engines: {node: '>=16.0.0'} + '@metamask/json-rpc-engine@7.3.3': dependencies: '@metamask/rpc-errors': 6.3.0 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.5.0 transitivePeerDependencies: - supports-color - dev: false - /@metamask/json-rpc-middleware-stream@6.0.2: - resolution: {integrity: sha512-jtyx3PRfc1kqoLpYveIVQNwsxYKefc64/LCl9h9Da1m3nUKEvypbYuXSIwi237qvOjKmNHQKsDOZg6f4uBf62Q==} - engines: {node: '>=16.0.0'} + '@metamask/json-rpc-middleware-stream@6.0.2': dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/safe-event-emitter': 3.1.1 @@ -6691,25 +15132,17 @@ packages: readable-stream: 3.6.2 transitivePeerDependencies: - supports-color - dev: false - /@metamask/object-multiplex@2.0.0: - resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} - engines: {node: ^16.20 || ^18.16 || >=20} + '@metamask/object-multiplex@2.0.0': dependencies: once: 1.4.0 readable-stream: 3.6.2 - dev: false - /@metamask/onboarding@1.0.1: - resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + '@metamask/onboarding@1.0.1': dependencies: bowser: 2.11.0 - dev: false - /@metamask/providers@15.0.0: - resolution: {integrity: sha512-FXvL1NQNl6I7fMOJTfQYcBlBZ33vSlm6w80cMpmn8sJh0Lb7wcBpe02UwBsNlARnI+Qsr26XeDs6WHUHQh8CuA==} - engines: {node: ^18.18 || >=20} + '@metamask/providers@15.0.0': dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/json-rpc-middleware-stream': 6.0.2 @@ -6725,35 +15158,19 @@ packages: webextension-polyfill: 0.10.0 transitivePeerDependencies: - supports-color - dev: false - /@metamask/rpc-errors@6.3.0: - resolution: {integrity: sha512-B1UIG/0xWkaDs/d6xrxsRf7kmFLdk8YE0HUToaFumjwQM36AjBsqEzVyemPTQv0SIrAPFnSmkLt053JOWcu5iw==} - engines: {node: '>=16.0.0'} + '@metamask/rpc-errors@6.3.0': dependencies: '@metamask/utils': 8.5.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color - dev: false - /@metamask/safe-event-emitter@2.0.0: - resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} - dev: false + '@metamask/safe-event-emitter@2.0.0': {} - /@metamask/safe-event-emitter@3.1.1: - resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} - engines: {node: '>=12.0.0'} - dev: false + '@metamask/safe-event-emitter@3.1.1': {} - /@metamask/sdk-communication-layer@0.20.2(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5): - resolution: {integrity: sha512-TN+whYbCClFSkx52Ild1RcjoRyz8YZgwNvZeooIcZIvCfBM6U9W5273KGiY7WLc/oO4KKmFk17d7vMO4gNvhhw==} - peerDependencies: - cross-fetch: ^3.1.5 - eciesjs: ^0.3.16 - eventemitter2: ^6.4.7 - readable-stream: ^3.6.2 - socket.io-client: ^4.5.1 + '@metamask/sdk-communication-layer@0.20.2(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5)': dependencies: bufferutil: 4.0.8 cross-fetch: 4.0.0 @@ -6767,16 +15184,8 @@ packages: uuid: 8.3.2 transitivePeerDependencies: - supports-color - dev: false - /@metamask/sdk-communication-layer@0.26.4(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5): - resolution: {integrity: sha512-+X4GEc5mV1gWK4moSswVlKsUh+RsA48qPlkxBLTUxQODSnyBe0TRMxE6mH+bSrfponnTzvBkGUXyEjvDwDjDHw==} - peerDependencies: - cross-fetch: ^4.0.0 - eciesjs: ^0.3.16 - eventemitter2: ^6.4.7 - readable-stream: ^3.6.2 - socket.io-client: ^4.5.1 + '@metamask/sdk-communication-layer@0.26.4(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5)': dependencies: bufferutil: 4.0.8 cross-fetch: 4.0.0 @@ -6790,62 +15199,23 @@ packages: uuid: 8.3.2 transitivePeerDependencies: - supports-color - dev: false - /@metamask/sdk-install-modal-web@0.20.2(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1): - resolution: {integrity: sha512-0QiaZhV15AGdN1zU2jfTI32eC3YkwEpzDfR9+oiZ9bd2G72c6lYBhTsmDGUd01aP6A+bqJR5PjI8Wh2AWtoLeA==} - peerDependencies: - i18next: 22.5.1 - react: ^18.2.0 - react-dom: ^18.2.0 - react-i18next: ^13.2.2 - react-native: '*' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - react-native: - optional: true + '@metamask/sdk-install-modal-web@0.20.2(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)': dependencies: i18next: 22.5.1 qr-code-styling: 1.6.0-rc.1 react: 18.3.1 react-i18next: 13.5.0(i18next@22.5.1)(react-native@0.74.3)(react@18.3.1) react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) - dev: false - /@metamask/sdk-install-modal-web@0.26.4(i18next@23.11.5)(react-native@0.74.3)(react@18.3.1): - resolution: {integrity: sha512-7Cx7ZsaExbMwghlRrUWWI0Ksg0m7K60LtMjfuDpjvjWqoZa9MoPxitGDEXNbLaqvKn39ebPvNcPzQ6czA4ilTw==} - peerDependencies: - i18next: 23.2.3 - react: ^18.2.0 - react-dom: ^18.2.0 - react-native: '*' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - react-native: - optional: true + '@metamask/sdk-install-modal-web@0.26.4(i18next@23.11.5)(react-native@0.74.3)(react@18.3.1)': dependencies: i18next: 23.11.5 qr-code-styling: 1.6.0-rc.1 react: 18.3.1 react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) - dev: false - /@metamask/sdk@0.20.3(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1): - resolution: {integrity: sha512-HZ9NwA+LxiXzuy0YWbWsuD4xejQtp85bhcCAf8UgpA/0dOyF3RS4dKDdBBXSyRgk3RWPjeJgHxioaH4CmBmiRA==} - peerDependencies: - react: ^18.2.0 - react-dom: ^18.2.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@metamask/sdk@0.20.3(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)': dependencies: '@metamask/onboarding': 1.0.1 '@metamask/providers': 15.0.0 @@ -6878,18 +15248,8 @@ packages: - rollup - supports-color - utf-8-validate - dev: false - /@metamask/sdk@0.26.4(react-native@0.74.3)(react@18.3.1): - resolution: {integrity: sha512-9Yh41KJkD9RhW0lRijnQzPV0ptblLorLdTsf5GnAl3yE72QIfaPBtsDxzLtX+0QLppiFfj7o8vRBYvBApG9k+Q==} - peerDependencies: - react: ^18.2.0 - react-dom: ^18.2.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@metamask/sdk@0.26.4(react-native@0.74.3)(react@18.3.1)': dependencies: '@metamask/onboarding': 1.0.1 '@metamask/providers': 15.0.0 @@ -6921,16 +15281,10 @@ packages: - rollup - supports-color - utf-8-validate - dev: false - /@metamask/superstruct@3.1.0: - resolution: {integrity: sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==} - engines: {node: '>=16.0.0'} - dev: false + '@metamask/superstruct@3.1.0': {} - /@metamask/utils@5.0.2: - resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} - engines: {node: '>=14.0.0'} + '@metamask/utils@5.0.2': dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 @@ -6939,11 +15293,8 @@ packages: superstruct: 1.0.4 transitivePeerDependencies: - supports-color - dev: false - /@metamask/utils@8.5.0: - resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} - engines: {node: '>=16.0.0'} + '@metamask/utils@8.5.0': dependencies: '@ethereumjs/tx': 4.2.0 '@metamask/superstruct': 3.1.0 @@ -6956,30 +15307,24 @@ packages: uuid: 9.0.1 transitivePeerDependencies: - supports-color - dev: false - /@moralisweb3/api-utils@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-+CGUNNYgynrjRwkL1/+HeGawhz0JCRh1Zeugx4UfDx4ULI7gLFxrAQqzN7UaMTM5Ftw7jBG4k3bc7mvpJfuv3g==} + '@moralisweb3/api-utils@2.26.7(debug@4.3.5)': dependencies: '@moralisweb3/common-core': 2.26.7(debug@4.3.5) '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) axios: 1.7.2(debug@4.3.5) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/aptos-api@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-YNy/qLAHXz9KGOAiQVMzKJqAyGCxdnyvdR84/nwtU2PXHTydMxoxnL7EVL+HnpK3bjq5nXLMxofXYHoAXbdz3Q==} + '@moralisweb3/aptos-api@2.26.7(debug@4.3.5)': dependencies: '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) '@moralisweb3/common-core': 2.26.7(debug@4.3.5) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/auth@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-PdJzc2j4zxzwR5fzlHRNqmuhzJvD1E6ZKJPMOqiOPF4zGbVM3NbONdx4bR7W6kRQciXZzeO5oyW9/N9PF76jgw==} + '@moralisweb3/auth@2.26.7(debug@4.3.5)': dependencies: '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) @@ -6989,19 +15334,15 @@ packages: '@moralisweb3/common-sol-utils': 2.26.7(debug@4.3.5) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-aptos-utils@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-hCGawLqv2J1X83RVNqHifh0E0NdezdOGs93KQa2vlkvj1OHPgKeHlBX8gNZ+Fx6cGyWyK2dU3AbFCJ4hkkmNYA==} + '@moralisweb3/common-aptos-utils@2.26.7(debug@4.3.5)': dependencies: '@moralisweb3/common-core': 2.26.7(debug@4.3.5) '@noble/hashes': 1.4.0 transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-auth-utils@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-rANpdno9SbmW0GQ4uOAFJj4TbEyOIiWmzzgY9Jcd4ocjYH4Z3WrBl85vblce8EXoPpxPvRk3Xv6rQFCt17Dw8w==} + '@moralisweb3/common-auth-utils@2.26.7(debug@4.3.5)': dependencies: '@ethersproject/abi': 5.7.0 '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) @@ -7011,18 +15352,14 @@ packages: '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-core@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-6jRoS8hUAwcRx8xA7R5YlCrkHOIfX01iqdDn2I04lV/VH4bfKBtiOgBSMrc+Ucgtn44seaOVOb4iCSE5EP7SvQ==} + '@moralisweb3/common-core@2.26.7(debug@4.3.5)': dependencies: axios: 1.7.2(debug@4.3.5) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-evm-utils@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-hnoq1pil07dnxpgvBrKDPqsDYZY+2MRBwFINx7KgRMK6WmsOfaaTl6FzT2ruFSbX02fFZMrT0TG5qnx6U3FM5g==} + '@moralisweb3/common-evm-utils@2.26.7(debug@4.3.5)': dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -7030,10 +15367,8 @@ packages: '@moralisweb3/common-core': 2.26.7(debug@4.3.5) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-sol-utils@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-egTzMx8ByIGEXjpC43iN9+q4BMv/G1EO7mLn5drAn32P1voC39TAA26MnrlFY4y2XREU/Imc737OIhPATrGD4A==} + '@moralisweb3/common-sol-utils@2.26.7(debug@4.3.5)': dependencies: '@moralisweb3/common-core': 2.26.7(debug@4.3.5) bn.js: 5.2.1 @@ -7041,10 +15376,8 @@ packages: buffer: 6.0.3 transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-streams-utils@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-FrwgSC8Y2Rp2RAq7nj4/LjIAk+RVrna5Yin4843plrvvi0WXZCxAHZBfZuHz56qJkQVsmdYgBevvCxipct1nTA==} + '@moralisweb3/common-streams-utils@2.26.7(debug@4.3.5)': dependencies: '@ethersproject/abi': 5.7.0 '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) @@ -7053,34 +15386,26 @@ packages: '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug - dev: false - /@moralisweb3/evm-api@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-eFcSnyeyBjrgX/1hjcDZ3BDaC3B7N6w+wRRQi5FSbp4tadh0LAd+zlUVwNhr0UsKUoT6rZRY+pDhHXM4HDHeEg==} + '@moralisweb3/evm-api@2.26.7(debug@4.3.5)': dependencies: '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) '@moralisweb3/common-core': 2.26.7(debug@4.3.5) '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/sol-api@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-7MMi52WeCyRKhT6KKRZa/k62fPuf6fx2waA+Jc5jo8+nDvn5wbqpl7KWx338rqT3C7M9xzhT1HfsCJ/TOD6jUw==} + '@moralisweb3/sol-api@2.26.7(debug@4.3.5)': dependencies: '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) '@moralisweb3/common-core': 2.26.7(debug@4.3.5) '@moralisweb3/common-sol-utils': 2.26.7(debug@4.3.5) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/streams-typings@1.0.7: - resolution: {integrity: sha512-ShbVqil0KLOTyTjO6z9JewPcVVE3S6kzkQFnW2flGBRsGdKucpkUdOx1HijOLoaikz/9gH92n+lzTvRFIj0AoA==} - dev: false + '@moralisweb3/streams-typings@1.0.7': {} - /@moralisweb3/streams@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-xrLEuXL02GuK6Lio96wpDyPQUhFgBS8CHRq5BDhCXzXr93yyiXAt6P28mq/mUGR/uABSjutilfTaV2MyhwFkng==} + '@moralisweb3/streams@2.26.7(debug@4.3.5)': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -7095,19 +15420,15 @@ packages: web3-eth-abi: 1.10.4 transitivePeerDependencies: - debug - dev: false - /@motionone/animation@10.18.0: - resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} + '@motionone/animation@10.18.0': dependencies: '@motionone/easing': 10.18.0 '@motionone/types': 10.17.1 '@motionone/utils': 10.18.0 tslib: 2.6.3 - dev: false - /@motionone/dom@10.18.0: - resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} + '@motionone/dom@10.18.0': dependencies: '@motionone/animation': 10.18.0 '@motionone/generators': 10.18.0 @@ -7115,52 +15436,37 @@ packages: '@motionone/utils': 10.18.0 hey-listen: 1.0.8 tslib: 2.6.3 - dev: false - /@motionone/easing@10.18.0: - resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} + '@motionone/easing@10.18.0': dependencies: '@motionone/utils': 10.18.0 tslib: 2.6.3 - dev: false - /@motionone/generators@10.18.0: - resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} + '@motionone/generators@10.18.0': dependencies: '@motionone/types': 10.17.1 '@motionone/utils': 10.18.0 tslib: 2.6.3 - dev: false - /@motionone/svelte@10.16.4: - resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + '@motionone/svelte@10.16.4': dependencies: '@motionone/dom': 10.18.0 tslib: 2.6.3 - dev: false - /@motionone/types@10.17.1: - resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} - dev: false + '@motionone/types@10.17.1': {} - /@motionone/utils@10.18.0: - resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + '@motionone/utils@10.18.0': dependencies: '@motionone/types': 10.17.1 hey-listen: 1.0.8 tslib: 2.6.3 - dev: false - /@motionone/vue@10.16.4: - resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} - deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + '@motionone/vue@10.16.4': dependencies: '@motionone/dom': 10.18.0 tslib: 2.6.3 - dev: false - /@multiformats/dns@1.0.6: - resolution: {integrity: sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==} + '@multiformats/dns@1.0.6': dependencies: '@types/dns-packet': 5.6.5 buffer: 6.0.3 @@ -7169,17 +15475,12 @@ packages: p-queue: 8.0.1 progress-events: 1.0.0 uint8arrays: 5.1.0 - dev: false - /@multiformats/multiaddr-to-uri@9.0.8: - resolution: {integrity: sha512-4eiN5iEiQfy2A98BxekUfW410L/ivg0sgjYSgSqmklnrBhK+QyMz4yqgfkub8xDTXOc7O5jp4+LVyM3ZqMeWNw==} + '@multiformats/multiaddr-to-uri@9.0.8': dependencies: '@multiformats/multiaddr': 12.3.0 - dev: false - /@multiformats/multiaddr@11.6.1: - resolution: {integrity: sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@multiformats/multiaddr@11.6.1': dependencies: '@chainsafe/is-ip': 2.0.2 dns-over-http-resolver: 2.1.3 @@ -7189,10 +15490,8 @@ packages: varint: 6.0.0 transitivePeerDependencies: - supports-color - dev: false - /@multiformats/multiaddr@12.3.0: - resolution: {integrity: sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==} + '@multiformats/multiaddr@12.3.0': dependencies: '@chainsafe/is-ip': 2.0.2 '@chainsafe/netmask': 2.0.0 @@ -7201,261 +15500,120 @@ packages: multiformats: 13.1.3 uint8-varint: 2.0.4 uint8arrays: 5.1.0 - dev: false - /@ndelangen/get-tarball@3.0.9: - resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} + '@ndelangen/get-tarball@3.0.9': dependencies: gunzip-maybe: 1.4.2 pump: 3.0.0 tar-fs: 2.1.1 - dev: true - /@noble/curves@1.2.0: - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + '@noble/curves@1.2.0': dependencies: '@noble/hashes': 1.3.2 - dev: false - /@noble/curves@1.4.0: - resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} + '@noble/curves@1.4.0': dependencies: '@noble/hashes': 1.4.0 - /@noble/curves@1.4.2: - resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + '@noble/curves@1.4.2': dependencies: '@noble/hashes': 1.4.0 - dev: false - /@noble/hashes@1.2.0: - resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - dev: false + '@noble/hashes@1.2.0': {} - /@noble/hashes@1.3.2: - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - dev: false + '@noble/hashes@1.3.2': {} - /@noble/hashes@1.4.0: - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} + '@noble/hashes@1.4.0': {} - /@noble/secp256k1@1.7.1: - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - dev: false + '@noble/secp256k1@1.7.1': {} - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + '@nodelib/fs.stat@2.0.5': {} - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - /@openzeppelin/contracts-upgradeable@4.9.6: - resolution: {integrity: sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==} - dev: false + '@openzeppelin/contracts-upgradeable@4.9.6': {} - /@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2): - resolution: {integrity: sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==} - peerDependencies: - '@openzeppelin/contracts': 5.0.2 + '@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2)': dependencies: '@openzeppelin/contracts': 5.0.2 - dev: false - /@openzeppelin/contracts@4.9.6: - resolution: {integrity: sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==} - dev: false + '@openzeppelin/contracts@4.9.6': {} - /@openzeppelin/contracts@5.0.2: - resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} - dev: false + '@openzeppelin/contracts@5.0.2': {} - /@openzeppelin/merkle-tree@1.0.6: - resolution: {integrity: sha512-cGWOb2WBWbJhqvupzxjnKAwGLxxAEYPg51sk76yZ5nVe5D03mw7Vx5yo8llaIEqYhP5O39M8QlrNWclgLfKVrA==} + '@openzeppelin/merkle-tree@1.0.6': dependencies: '@ethersproject/abi': 5.7.0 ethereum-cryptography: 1.2.0 - dev: false - /@pagefind/darwin-arm64@1.1.0: - resolution: {integrity: sha512-SLsXNLtSilGZjvqis8sX42fBWsWAVkcDh1oerxwqbac84HbiwxpxOC2jm8hRwcR0Z55HPZPWO77XeRix/8GwTg==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@pagefind/darwin-arm64@1.1.0': optional: true - /@pagefind/darwin-x64@1.1.0: - resolution: {integrity: sha512-QjQSE/L5oS1C8N8GdljGaWtjCBMgMtfrPAoiCmINTu9Y9dp0ggAyXvF8K7Qg3VyIMYJ6v8vg2PN7Z3b+AaAqUA==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@pagefind/darwin-x64@1.1.0': optional: true - /@pagefind/default-ui@1.1.0: - resolution: {integrity: sha512-+XiAJAK++C64nQcD7s3Prdmd5S92lT05fwjOxm0L1jj80jbL+tmvcqkkFnPpoqhnicIPgcAX/Y5W0HRZnBt35w==} - dev: false + '@pagefind/default-ui@1.1.0': {} - /@pagefind/linux-arm64@1.1.0: - resolution: {integrity: sha512-8zjYCa2BtNEL7KnXtysPtBELCyv5DSQ4yHeK/nsEq6w4ToAMTBl0K06khqxdSGgjMSwwrxvLzq3so0LC5Q14dA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@pagefind/linux-arm64@1.1.0': optional: true - /@pagefind/linux-x64@1.1.0: - resolution: {integrity: sha512-4lsg6VB7A6PWTwaP8oSmXV4O9H0IHX7AlwTDcfyT+YJo/sPXOVjqycD5cdBgqNLfUk8B9bkWcTDCRmJbHrKeCw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@pagefind/linux-x64@1.1.0': optional: true - /@pagefind/windows-x64@1.1.0: - resolution: {integrity: sha512-OboCM76BcMKT9IoSfZuFhiqMRgTde8x4qDDvKulFmycgiJrlL5WnIqBHJLQxZq+o2KyZpoHF97iwsGAm8c32sQ==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@pagefind/windows-x64@1.1.0': optional: true - /@parcel/watcher-android-arm64@2.4.1: - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false + '@parcel/watcher-android-arm64@2.4.1': optional: true - /@parcel/watcher-darwin-arm64@2.4.1: - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@parcel/watcher-darwin-arm64@2.4.1': optional: true - /@parcel/watcher-darwin-x64@2.4.1: - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@parcel/watcher-darwin-x64@2.4.1': optional: true - /@parcel/watcher-freebsd-x64@2.4.1: - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false + '@parcel/watcher-freebsd-x64@2.4.1': optional: true - /@parcel/watcher-linux-arm-glibc@2.4.1: - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-arm-glibc@2.4.1': optional: true - /@parcel/watcher-linux-arm64-glibc@2.4.1: - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-arm64-glibc@2.4.1': optional: true - /@parcel/watcher-linux-arm64-musl@2.4.1: - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-arm64-musl@2.4.1': optional: true - /@parcel/watcher-linux-x64-glibc@2.4.1: - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-x64-glibc@2.4.1': optional: true - /@parcel/watcher-linux-x64-musl@2.4.1: - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-x64-musl@2.4.1': optional: true - /@parcel/watcher-wasm@2.4.1: - resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} - engines: {node: '>= 10.0.0'} + '@parcel/watcher-wasm@2.4.1': dependencies: is-glob: 4.0.3 micromatch: 4.0.7 napi-wasm: 1.1.0 - dev: false - bundledDependencies: - - napi-wasm - /@parcel/watcher-win32-arm64@2.4.1: - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false + '@parcel/watcher-win32-arm64@2.4.1': optional: true - /@parcel/watcher-win32-ia32@2.4.1: - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + '@parcel/watcher-win32-ia32@2.4.1': optional: true - /@parcel/watcher-win32-x64@2.4.1: - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@parcel/watcher-win32-x64@2.4.1': optional: true - /@parcel/watcher@2.4.1: - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} - engines: {node: '>= 10.0.0'} + '@parcel/watcher@2.4.1': dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 @@ -7474,137 +15632,66 @@ packages: '@parcel/watcher-win32-arm64': 2.4.1 '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - dev: false - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true + '@pkgjs/parseargs@0.11.0': optional: true - /@pkgr/core@0.1.1: - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true + '@pkgr/core@0.1.1': {} - /@playwright/test@1.45.0: - resolution: {integrity: sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==} - engines: {node: '>=18'} - hasBin: true + '@playwright/test@1.45.0': dependencies: playwright: 1.45.0 - dev: true - /@pnpm/config.env-replace@1.1.0: - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} - engines: {node: '>=12.22.0'} - dev: true + '@pnpm/config.env-replace@1.1.0': {} - /@pnpm/network.ca-file@1.0.2: - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} - engines: {node: '>=12.22.0'} + '@pnpm/network.ca-file@1.0.2': dependencies: graceful-fs: 4.2.10 - dev: true - /@pnpm/npm-conf@2.2.2: - resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} - engines: {node: '>=12'} + '@pnpm/npm-conf@2.2.2': dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - dev: true - /@polka/url@1.0.0-next.25: - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - dev: true + '@polka/url@1.0.0-next.25': {} - /@protobufjs/aspromise@1.1.2: - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - dev: false + '@protobufjs/aspromise@1.1.2': {} - /@protobufjs/base64@1.1.2: - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - dev: false + '@protobufjs/base64@1.1.2': {} - /@protobufjs/codegen@2.0.4: - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - dev: false + '@protobufjs/codegen@2.0.4': {} - /@protobufjs/eventemitter@1.1.0: - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - dev: false + '@protobufjs/eventemitter@1.1.0': {} - /@protobufjs/fetch@1.1.0: - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + '@protobufjs/fetch@1.1.0': dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/inquire': 1.1.0 - dev: false - /@protobufjs/float@1.0.2: - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - dev: false + '@protobufjs/float@1.0.2': {} - /@protobufjs/inquire@1.1.0: - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - dev: false + '@protobufjs/inquire@1.1.0': {} - /@protobufjs/path@1.1.2: - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - dev: false + '@protobufjs/path@1.1.2': {} - /@protobufjs/pool@1.1.0: - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - dev: false + '@protobufjs/pool@1.1.0': {} - /@protobufjs/utf8@1.1.0: - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - dev: false + '@protobufjs/utf8@1.1.0': {} - /@radix-ui/primitive@1.1.0: - resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - dev: true + '@radix-ui/primitive@1.1.0': {} - /@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@types/react': 18.3.3 react: 18.3.1 - dev: true - /@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@types/react': 18.3.3 react: 18.3.1 - dev: true - /@radix-ui/react-dialog@1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-dialog@1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) @@ -7623,20 +15710,8 @@ packages: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) - dev: true - /@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) @@ -7646,33 +15721,13 @@ packages: '@types/react': 18.3.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: true - /@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@types/react': 18.3.3 react: 18.3.1 - dev: true - /@radix-ui/react-focus-scope@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-focus-scope@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) @@ -7680,151 +15735,65 @@ packages: '@types/react': 18.3.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: true - /@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 react: 18.3.1 - dev: true - /@radix-ui/react-portal@1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-portal@1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: true - /@radix-ui/react-presence@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-presence@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: true - /@radix-ui/react-primitive@2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-primitive@2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: true - /@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 react: 18.3.1 - dev: true - /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@types/react': 18.3.3 react: 18.3.1 - dev: true - /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 react: 18.3.1 - dev: true - /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 react: 18.3.1 - dev: true - /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@types/react': 18.3.3 react: 18.3.1 - dev: true - /@react-native-community/cli-clean@13.6.9: - resolution: {integrity: sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==} + '@react-native-community/cli-clean@13.6.9': dependencies: '@react-native-community/cli-tools': 13.6.9 chalk: 4.1.2 @@ -7832,10 +15801,8 @@ packages: fast-glob: 3.3.2 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-config@13.6.9: - resolution: {integrity: sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==} + '@react-native-community/cli-config@13.6.9': dependencies: '@react-native-community/cli-tools': 13.6.9 chalk: 4.1.2 @@ -7845,18 +15812,14 @@ packages: joi: 17.13.3 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-debugger-ui@13.6.9: - resolution: {integrity: sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==} + '@react-native-community/cli-debugger-ui@13.6.9': dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color - dev: false - /@react-native-community/cli-doctor@13.6.9: - resolution: {integrity: sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==} + '@react-native-community/cli-doctor@13.6.9': dependencies: '@react-native-community/cli-config': 13.6.9 '@react-native-community/cli-platform-android': 13.6.9 @@ -7877,10 +15840,8 @@ packages: yaml: 2.4.5 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-hermes@13.6.9: - resolution: {integrity: sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==} + '@react-native-community/cli-hermes@13.6.9': dependencies: '@react-native-community/cli-platform-android': 13.6.9 '@react-native-community/cli-tools': 13.6.9 @@ -7888,10 +15849,8 @@ packages: hermes-profile-transformer: 0.0.6 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-platform-android@13.6.9: - resolution: {integrity: sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==} + '@react-native-community/cli-platform-android@13.6.9': dependencies: '@react-native-community/cli-tools': 13.6.9 chalk: 4.1.2 @@ -7901,10 +15860,8 @@ packages: logkitty: 0.7.1 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-platform-apple@13.6.9: - resolution: {integrity: sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==} + '@react-native-community/cli-platform-apple@13.6.9': dependencies: '@react-native-community/cli-tools': 13.6.9 chalk: 4.1.2 @@ -7914,18 +15871,14 @@ packages: ora: 5.4.1 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-platform-ios@13.6.9: - resolution: {integrity: sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==} + '@react-native-community/cli-platform-ios@13.6.9': dependencies: '@react-native-community/cli-platform-apple': 13.6.9 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-server-api@13.6.9: - resolution: {integrity: sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==} + '@react-native-community/cli-server-api@13.6.9': dependencies: '@react-native-community/cli-debugger-ui': 13.6.9 '@react-native-community/cli-tools': 13.6.9 @@ -7941,10 +15894,8 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /@react-native-community/cli-tools@13.6.9: - resolution: {integrity: sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==} + '@react-native-community/cli-tools@13.6.9': dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 @@ -7959,18 +15910,12 @@ packages: sudo-prompt: 9.2.1 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-types@13.6.9: - resolution: {integrity: sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==} + '@react-native-community/cli-types@13.6.9': dependencies: joi: 17.13.3 - dev: false - /@react-native-community/cli@13.6.9: - resolution: {integrity: sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==} - engines: {node: '>=18'} - hasBin: true + '@react-native-community/cli@13.6.9': dependencies: '@react-native-community/cli-clean': 13.6.9 '@react-native-community/cli-config': 13.6.9 @@ -7994,28 +15939,17 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /@react-native/assets-registry@0.74.85: - resolution: {integrity: sha512-59YmIQxfGDw4aP9S/nAM+sjSFdW8fUP6fsqczCcXgL2YVEjyER9XCaUT0J1K+PdHep8pi05KUgIKUds8P3jbmA==} - engines: {node: '>=18'} - dev: false + '@react-native/assets-registry@0.74.85': {} - /@react-native/babel-plugin-codegen@0.74.85(@babel/preset-env@7.24.7): - resolution: {integrity: sha512-48TSDclRB5OMXiImiJkLxyCfRyLsqkCgI8buugCZzvXcYslfV7gCvcyFyQldtcOmerV+CK4RAj7QS4hmB5Mr8Q==} - engines: {node: '>=18'} + '@react-native/babel-plugin-codegen@0.74.85(@babel/preset-env@7.24.7)': dependencies: '@react-native/codegen': 0.74.85(@babel/preset-env@7.24.7) transitivePeerDependencies: - '@babel/preset-env' - supports-color - dev: false - /@react-native/babel-preset@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7): - resolution: {integrity: sha512-yMHUlN8INbK5BBwiBuQMftdWkpm1IgCsoJTKcGD2OpSgZhwwm8RUSvGhdRMzB2w7bsqqBmaEMleGtW6aCR7B9w==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' + '@react-native/babel-preset@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7)': dependencies: '@babel/core': 7.25.2 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.2) @@ -8063,13 +15997,8 @@ packages: transitivePeerDependencies: - '@babel/preset-env' - supports-color - dev: false - /@react-native/codegen@0.74.85(@babel/preset-env@7.24.7): - resolution: {integrity: sha512-N7QwoS4Hq/uQmoH83Ewedy6D0M7xbQsOU3OMcQf0eY3ltQ7S2hd9/R4UTalQWRn1OUJfXR6OG12QJ4FStKgV6Q==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 + '@react-native/codegen@0.74.85(@babel/preset-env@7.24.7)': dependencies: '@babel/parser': 7.25.3 '@babel/preset-env': 7.24.7(@babel/core@7.25.2) @@ -8081,11 +16010,8 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - dev: false - /@react-native/community-cli-plugin@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7): - resolution: {integrity: sha512-ODzND33eA2owAY3g9jgCdqB+BjAh8qJ7dvmSotXgrgDYr3MJMpd8gvHTIPe2fg4Kab+wk8uipRhrE0i0RYMwtQ==} - engines: {node: '>=18'} + '@react-native/community-cli-plugin@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7)': dependencies: '@react-native-community/cli-server-api': 13.6.9 '@react-native-community/cli-tools': 13.6.9 @@ -8106,16 +16032,10 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /@react-native/debugger-frontend@0.74.85: - resolution: {integrity: sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==} - engines: {node: '>=18'} - dev: false + '@react-native/debugger-frontend@0.74.85': {} - /@react-native/dev-middleware@0.74.85: - resolution: {integrity: sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==} - engines: {node: '>=18'} + '@react-native/dev-middleware@0.74.85': dependencies: '@isaacs/ttlcache': 1.4.1 '@react-native/debugger-frontend': 0.74.85 @@ -8135,23 +16055,12 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /@react-native/gradle-plugin@0.74.85: - resolution: {integrity: sha512-1VQSLukJzaVMn1MYcs8Weo1nUW8xCas2XU1KuoV7OJPk6xPnEBFJmapmEGP5mWeEy7kcTXJmddEgy1wwW0tcig==} - engines: {node: '>=18'} - dev: false + '@react-native/gradle-plugin@0.74.85': {} - /@react-native/js-polyfills@0.74.85: - resolution: {integrity: sha512-gp4Rg9le3lVZeW7Cie6qLfekvRKZuhJ3LKgi1SFB4N154z1wIclypAJXVXgWBsy8JKJfTwRI+sffC4qZDlvzrg==} - engines: {node: '>=18'} - dev: false + '@react-native/js-polyfills@0.74.85': {} - /@react-native/metro-babel-transformer@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7): - resolution: {integrity: sha512-JIrXqEwhTvWPtGArgMptIPGstMdXQIkwSjKVYt+7VC4a9Pw1GurIWanIJheEW6ZuCVvTc0VZkwglFz9JVjzDjA==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' + '@react-native/metro-babel-transformer@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7)': dependencies: '@babel/core': 7.25.2 '@react-native/babel-preset': 0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7) @@ -8160,34 +16069,17 @@ packages: transitivePeerDependencies: - '@babel/preset-env' - supports-color - dev: false - /@react-native/normalize-colors@0.74.85: - resolution: {integrity: sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==} - dev: false + '@react-native/normalize-colors@0.74.85': {} - /@react-native/virtualized-lists@0.74.85(react-native@0.74.3)(react@18.3.1): - resolution: {integrity: sha512-jx2Zw0qlZteoQ+0KxRc7s4drsljLBEP534FaNZ950e9+CN9nVkLsV6rigcTjDR8wjKMSBWhKf0C0C3egYz7Ehg==} - engines: {node: '>=18'} - peerDependencies: - '@types/react': ^18.2.6 - react: '*' - react-native: '*' - peerDependenciesMeta: - '@types/react': - optional: true + '@react-native/virtualized-lists@0.74.85(react-native@0.74.3)(react@18.3.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 18.3.1 react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) - dev: false - /@readme/better-ajv-errors@1.6.0(ajv@8.16.0): - resolution: {integrity: sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==} - engines: {node: '>=14'} - peerDependencies: - ajv: 4.11.8 - 8 + '@readme/better-ajv-errors@1.6.0(ajv@8.16.0)': dependencies: '@babel/code-frame': 7.24.7 '@babel/runtime': 7.24.7 @@ -8197,22 +16089,15 @@ packages: json-to-ast: 2.1.0 jsonpointer: 5.0.1 leven: 3.1.0 - dev: false - /@readme/json-schema-ref-parser@1.2.0: - resolution: {integrity: sha512-Bt3QVovFSua4QmHa65EHUmh2xS0XJ3rgTEUPH998f4OW4VVJke3BuS16f+kM0ZLOGdvIrzrPRqwihuv5BAjtrA==} + '@readme/json-schema-ref-parser@1.2.0': dependencies: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 call-me-maybe: 1.0.2 js-yaml: 4.1.0 - dev: false - /@readme/openapi-parser@2.5.0(openapi-types@12.1.3): - resolution: {integrity: sha512-IbymbOqRuUzoIgxfAAR7XJt2FWl6n2yqN09fF5adacGm7W03siA3bj1Emql0X9D2T+RpBYz3x9zDsMhuoMP62A==} - engines: {node: '>=14'} - peerDependencies: - openapi-types: '>=7' + '@readme/openapi-parser@2.5.0(openapi-types@12.1.3)': dependencies: '@apidevtools/openapi-schemas': 2.1.0 '@apidevtools/swagger-methods': 3.0.2 @@ -8223,11 +16108,8 @@ packages: ajv-draft-04: 1.0.0(ajv@8.16.0) call-me-maybe: 1.0.2 openapi-types: 12.1.3 - dev: false - /@rnx-kit/chromium-edge-launcher@1.0.0: - resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} - engines: {node: '>=14.15'} + '@rnx-kit/chromium-edge-launcher@1.0.0': dependencies: '@types/node': 18.19.39 escape-string-regexp: 4.0.0 @@ -8237,122 +16119,56 @@ packages: rimraf: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /@rollup/rollup-android-arm-eabi@4.18.0: - resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} - cpu: [arm] - os: [android] - requiresBuild: true + '@rollup/rollup-android-arm-eabi@4.18.0': optional: true - /@rollup/rollup-android-arm64@4.18.0: - resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} - cpu: [arm64] - os: [android] - requiresBuild: true + '@rollup/rollup-android-arm64@4.18.0': optional: true - /@rollup/rollup-darwin-arm64@4.18.0: - resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} - cpu: [arm64] - os: [darwin] - requiresBuild: true + '@rollup/rollup-darwin-arm64@4.18.0': optional: true - /@rollup/rollup-darwin-x64@4.18.0: - resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} - cpu: [x64] - os: [darwin] - requiresBuild: true + '@rollup/rollup-darwin-x64@4.18.0': optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.18.0: - resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} - cpu: [arm] - os: [linux] - requiresBuild: true + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': optional: true - /@rollup/rollup-linux-arm-musleabihf@4.18.0: - resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} - cpu: [arm] - os: [linux] - requiresBuild: true + '@rollup/rollup-linux-arm-musleabihf@4.18.0': optional: true - /@rollup/rollup-linux-arm64-gnu@4.18.0: - resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} - cpu: [arm64] - os: [linux] - requiresBuild: true + '@rollup/rollup-linux-arm64-gnu@4.18.0': optional: true - /@rollup/rollup-linux-arm64-musl@4.18.0: - resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true + '@rollup/rollup-linux-arm64-musl@4.18.0': optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.18.0: - resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} - cpu: [ppc64] - os: [linux] - requiresBuild: true + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': optional: true - /@rollup/rollup-linux-riscv64-gnu@4.18.0: - resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} - cpu: [riscv64] - os: [linux] - requiresBuild: true + '@rollup/rollup-linux-riscv64-gnu@4.18.0': optional: true - /@rollup/rollup-linux-s390x-gnu@4.18.0: - resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} - cpu: [s390x] - os: [linux] - requiresBuild: true + '@rollup/rollup-linux-s390x-gnu@4.18.0': optional: true - /@rollup/rollup-linux-x64-gnu@4.18.0: - resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} - cpu: [x64] - os: [linux] - requiresBuild: true + '@rollup/rollup-linux-x64-gnu@4.18.0': optional: true - /@rollup/rollup-linux-x64-musl@4.18.0: - resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} - cpu: [x64] - os: [linux] - requiresBuild: true + '@rollup/rollup-linux-x64-musl@4.18.0': optional: true - /@rollup/rollup-win32-arm64-msvc@4.18.0: - resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} - cpu: [arm64] - os: [win32] - requiresBuild: true + '@rollup/rollup-win32-arm64-msvc@4.18.0': optional: true - /@rollup/rollup-win32-ia32-msvc@4.18.0: - resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} - cpu: [ia32] - os: [win32] - requiresBuild: true + '@rollup/rollup-win32-ia32-msvc@4.18.0': optional: true - /@rollup/rollup-win32-x64-msvc@4.18.0: - resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} - cpu: [x64] - os: [win32] - requiresBuild: true + '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true - /@safe-global/safe-apps-provider@0.18.1(typescript@5.5.3): - resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} + '@safe-global/safe-apps-provider@0.18.1(typescript@5.5.3)': dependencies: '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.5.3) events: 3.3.0 @@ -8361,10 +16177,8 @@ packages: - typescript - utf-8-validate - zod - dev: false - /@safe-global/safe-apps-sdk@8.1.0(typescript@5.5.3): - resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} + '@safe-global/safe-apps-sdk@8.1.0(typescript@5.5.3)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.21.8 viem: 1.21.4(typescript@5.5.3) @@ -8373,143 +16187,95 @@ packages: - typescript - utf-8-validate - zod - dev: false - /@safe-global/safe-gateway-typescript-sdk@3.21.8: - resolution: {integrity: sha512-n/fYgiqbuzAQuK0bgny6GBYvb585ETxKURa5Kb9hBV3fa47SvJo/dpGq275fJUn0e3Hh1YqETiLGj4HVJjHiTA==} - engines: {node: '>=16'} - dev: false + '@safe-global/safe-gateway-typescript-sdk@3.21.8': {} - /@scure/base@1.1.7: - resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} + '@scure/base@1.1.7': {} - /@scure/bip32@1.1.5: - resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + '@scure/bip32@1.1.5': dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 '@scure/base': 1.1.7 - dev: false - /@scure/bip32@1.3.2: - resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + '@scure/bip32@1.3.2': dependencies: '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@scure/base': 1.1.7 - dev: false - /@scure/bip32@1.4.0: - resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + '@scure/bip32@1.4.0': dependencies: '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 '@scure/base': 1.1.7 - /@scure/bip39@1.1.1: - resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + '@scure/bip39@1.1.1': dependencies: '@noble/hashes': 1.2.0 '@scure/base': 1.1.7 - dev: false - /@scure/bip39@1.2.1: - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + '@scure/bip39@1.2.1': dependencies: '@noble/hashes': 1.3.2 '@scure/base': 1.1.7 - dev: false - /@scure/bip39@1.3.0: - resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + '@scure/bip39@1.3.0': dependencies: '@noble/hashes': 1.4.0 '@scure/base': 1.1.7 - /@shikijs/core@1.10.0: - resolution: {integrity: sha512-BZcr6FCmPfP6TXaekvujZcnkFmJHZ/Yglu97r/9VjzVndQA56/F4WjUKtJRQUnK59Wi7p/UTAOekMfCJv7jnYg==} - dev: false + '@shikijs/core@1.10.0': {} - /@shikijs/core@1.12.1: - resolution: {integrity: sha512-biCz/mnkMktImI6hMfMX3H9kOeqsInxWEyCHbSlL8C/2TR1FqfmGxTLRNwYCKsyCyxWLbB8rEqXRVZuyxuLFmA==} + '@shikijs/core@1.12.1': dependencies: '@types/hast': 3.0.4 - dev: false - /@sideway/address@4.1.5: - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 - dev: false - /@sideway/formula@3.0.1: - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - dev: false + '@sideway/formula@3.0.1': {} - /@sideway/pinpoint@2.0.0: - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - dev: false + '@sideway/pinpoint@2.0.0': {} - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sinclair/typebox@0.27.8': {} - /@sindresorhus/is@5.6.0: - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} - dev: true + '@sindresorhus/is@5.6.0': {} - /@sindresorhus/merge-streams@2.3.0: - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - dev: true + '@sindresorhus/merge-streams@2.3.0': {} - /@sinonjs/commons@3.0.1: - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - dev: false - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@sinonjs/fake-timers@10.3.0': dependencies: '@sinonjs/commons': 3.0.1 - dev: false - /@smithy/abort-controller@3.1.1: - resolution: {integrity: sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==} - engines: {node: '>=16.0.0'} + '@smithy/abort-controller@3.1.1': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/chunked-blob-reader-native@3.0.0: - resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} + '@smithy/chunked-blob-reader-native@3.0.0': dependencies: '@smithy/util-base64': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/chunked-blob-reader@3.0.0: - resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} + '@smithy/chunked-blob-reader@3.0.0': dependencies: tslib: 2.6.3 - dev: false - /@smithy/config-resolver@3.0.4: - resolution: {integrity: sha512-VwiOk7TwXoE7NlNguV/aPq1hFH72tqkHCw8eWXbr2xHspRyyv9DLpLXhq+Ieje+NwoqXrY0xyQjPXdOE6cGcHA==} - engines: {node: '>=16.0.0'} + '@smithy/config-resolver@3.0.4': dependencies: '@smithy/node-config-provider': 3.1.3 '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - dev: false - /@smithy/core@2.2.4: - resolution: {integrity: sha512-qdY3LpMOUyLM/gfjjMQZui+UTNS7kBRDWlvyIhVOql5dn2J3isk9qUTBtQ1CbDH8MTugHis1zu3h4rH+Qmmh4g==} - engines: {node: '>=16.0.0'} + '@smithy/core@2.2.4': dependencies: '@smithy/middleware-endpoint': 3.0.4 '@smithy/middleware-retry': 3.0.7 @@ -8519,142 +16285,99 @@ packages: '@smithy/types': 3.3.0 '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - dev: false - /@smithy/credential-provider-imds@3.1.3: - resolution: {integrity: sha512-U1Yrv6hx/mRK6k8AncuI6jLUx9rn0VVSd9NPEX6pyYFBfkSkChOc/n4zUb8alHUVg83TbI4OdZVo1X0Zfj3ijA==} - engines: {node: '>=16.0.0'} + '@smithy/credential-provider-imds@3.1.3': dependencies: '@smithy/node-config-provider': 3.1.3 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 tslib: 2.6.3 - dev: false - /@smithy/eventstream-codec@3.1.2: - resolution: {integrity: sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==} + '@smithy/eventstream-codec@3.1.2': dependencies: '@aws-crypto/crc32': 5.2.0 '@smithy/types': 3.3.0 '@smithy/util-hex-encoding': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/eventstream-serde-browser@3.0.4: - resolution: {integrity: sha512-Eo4anLZX6ltGJTZ5yJMc80gZPYYwBn44g0h7oFq6et+TYr5dUsTpIcDbz2evsOKIZhZ7zBoFWHtBXQ4QQeb5xA==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-browser@3.0.4': dependencies: '@smithy/eventstream-serde-universal': 3.0.4 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/eventstream-serde-config-resolver@3.0.3: - resolution: {integrity: sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-config-resolver@3.0.3': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/eventstream-serde-node@3.0.4: - resolution: {integrity: sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-node@3.0.4': dependencies: '@smithy/eventstream-serde-universal': 3.0.4 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/eventstream-serde-universal@3.0.4: - resolution: {integrity: sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-universal@3.0.4': dependencies: '@smithy/eventstream-codec': 3.1.2 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/fetch-http-handler@3.2.0: - resolution: {integrity: sha512-vFvDxMrc6sO5Atec8PaISckMcAwsCrRhYxwUylg97bRT2KZoumOF7qk5+6EVUtuM1IG9AJV5aqXnHln9ZdXHpg==} + '@smithy/fetch-http-handler@3.2.0': dependencies: '@smithy/protocol-http': 4.0.3 '@smithy/querystring-builder': 3.0.3 '@smithy/types': 3.3.0 '@smithy/util-base64': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/hash-blob-browser@3.1.2: - resolution: {integrity: sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==} + '@smithy/hash-blob-browser@3.1.2': dependencies: '@smithy/chunked-blob-reader': 3.0.0 '@smithy/chunked-blob-reader-native': 3.0.0 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/hash-node@3.0.3: - resolution: {integrity: sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==} - engines: {node: '>=16.0.0'} + '@smithy/hash-node@3.0.3': dependencies: '@smithy/types': 3.3.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/hash-stream-node@3.1.2: - resolution: {integrity: sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==} - engines: {node: '>=16.0.0'} + '@smithy/hash-stream-node@3.1.2': dependencies: '@smithy/types': 3.3.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/invalid-dependency@3.0.3: - resolution: {integrity: sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==} + '@smithy/invalid-dependency@3.0.3': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/is-array-buffer@2.2.0: - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} + '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.6.3 - dev: false - /@smithy/is-array-buffer@3.0.0: - resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} - engines: {node: '>=16.0.0'} + '@smithy/is-array-buffer@3.0.0': dependencies: tslib: 2.6.3 - dev: false - /@smithy/md5-js@3.0.3: - resolution: {integrity: sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==} + '@smithy/md5-js@3.0.3': dependencies: '@smithy/types': 3.3.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/middleware-content-length@3.0.3: - resolution: {integrity: sha512-Dbz2bzexReYIQDWMr+gZhpwBetNXzbhnEMhYKA6urqmojO14CsXjnsoPYO8UL/xxcawn8ZsuVU61ElkLSltIUQ==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-content-length@3.0.3': dependencies: '@smithy/protocol-http': 4.0.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/middleware-endpoint@3.0.4: - resolution: {integrity: sha512-whUJMEPwl3ANIbXjBXZVdJNgfV2ZU8ayln7xUM47rXL2txuenI7jQ/VFFwCzy5lCmXScjp6zYtptW5Evud8e9g==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-endpoint@3.0.4': dependencies: '@smithy/middleware-serde': 3.0.3 '@smithy/node-config-provider': 3.1.3 @@ -8663,11 +16386,8 @@ packages: '@smithy/url-parser': 3.0.3 '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - dev: false - /@smithy/middleware-retry@3.0.7: - resolution: {integrity: sha512-f5q7Y09G+2h5ivkSx5CHvlAT4qRR3jBFEsfXyQ9nFNiWQlr8c48blnu5cmbTQ+p1xmIO14UXzKoF8d7Tm0Gsjw==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-retry@3.0.7': dependencies: '@smithy/node-config-provider': 3.1.3 '@smithy/protocol-http': 4.0.3 @@ -8678,96 +16398,63 @@ packages: '@smithy/util-retry': 3.0.3 tslib: 2.6.3 uuid: 9.0.1 - dev: false - /@smithy/middleware-serde@3.0.3: - resolution: {integrity: sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-serde@3.0.3': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/middleware-stack@3.0.3: - resolution: {integrity: sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-stack@3.0.3': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/node-config-provider@3.1.3: - resolution: {integrity: sha512-rxdpAZczzholz6CYZxtqDu/aKTxATD5DAUDVj7HoEulq+pDSQVWzbg0btZDlxeFfa6bb2b5tUvgdX5+k8jUqcg==} - engines: {node: '>=16.0.0'} + '@smithy/node-config-provider@3.1.3': dependencies: '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/node-http-handler@3.1.1: - resolution: {integrity: sha512-L71NLyPeP450r2J/mfu1jMc//Z1YnqJt2eSNw7uhiItaONnBLDA68J5jgxq8+MBDsYnFwNAIc7dBG1ImiWBiwg==} - engines: {node: '>=16.0.0'} + '@smithy/node-http-handler@3.1.1': dependencies: '@smithy/abort-controller': 3.1.1 '@smithy/protocol-http': 4.0.3 '@smithy/querystring-builder': 3.0.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/property-provider@3.1.3: - resolution: {integrity: sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==} - engines: {node: '>=16.0.0'} + '@smithy/property-provider@3.1.3': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/protocol-http@4.0.3: - resolution: {integrity: sha512-x5jmrCWwQlx+Zv4jAtc33ijJ+vqqYN+c/ZkrnpvEe/uDas7AT7A/4Rc2CdfxgWv4WFGmEqODIrrUToPN6DDkGw==} - engines: {node: '>=16.0.0'} + '@smithy/protocol-http@4.0.3': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/querystring-builder@3.0.3: - resolution: {integrity: sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==} - engines: {node: '>=16.0.0'} + '@smithy/querystring-builder@3.0.3': dependencies: '@smithy/types': 3.3.0 '@smithy/util-uri-escape': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/querystring-parser@3.0.3: - resolution: {integrity: sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==} - engines: {node: '>=16.0.0'} + '@smithy/querystring-parser@3.0.3': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/service-error-classification@3.0.3: - resolution: {integrity: sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==} - engines: {node: '>=16.0.0'} + '@smithy/service-error-classification@3.0.3': dependencies: '@smithy/types': 3.3.0 - dev: false - /@smithy/shared-ini-file-loader@3.1.3: - resolution: {integrity: sha512-Z8Y3+08vgoDgl4HENqNnnzSISAaGrF2RoKupoC47u2wiMp+Z8P/8mDh1CL8+8ujfi2U5naNvopSBmP/BUj8b5w==} - engines: {node: '>=16.0.0'} + '@smithy/shared-ini-file-loader@3.1.3': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/signature-v4@3.1.2: - resolution: {integrity: sha512-3BcPylEsYtD0esM4Hoyml/+s7WP2LFhcM3J2AGdcL2vx9O60TtfpDOL72gjb4lU8NeRPeKAwR77YNyyGvMbuEA==} - engines: {node: '>=16.0.0'} + '@smithy/signature-v4@3.1.2': dependencies: '@smithy/is-array-buffer': 3.0.0 '@smithy/types': 3.3.0 @@ -8776,11 +16463,8 @@ packages: '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/smithy-client@3.1.5: - resolution: {integrity: sha512-x9bL9Mx2CT2P1OiUlHM+ZNpbVU6TgT32f9CmTRzqIHA7M4vYrROCWEoC3o4xHNJASoGd4Opos3cXYPgh+/m4Ww==} - engines: {node: '>=16.0.0'} + '@smithy/smithy-client@3.1.5': dependencies: '@smithy/middleware-endpoint': 3.0.4 '@smithy/middleware-stack': 3.0.3 @@ -8788,82 +16472,54 @@ packages: '@smithy/types': 3.3.0 '@smithy/util-stream': 3.0.5 tslib: 2.6.3 - dev: false - /@smithy/types@3.3.0: - resolution: {integrity: sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==} - engines: {node: '>=16.0.0'} + '@smithy/types@3.3.0': dependencies: tslib: 2.6.3 - dev: false - /@smithy/url-parser@3.0.3: - resolution: {integrity: sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==} + '@smithy/url-parser@3.0.3': dependencies: '@smithy/querystring-parser': 3.0.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/util-base64@3.0.0: - resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-base64@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/util-body-length-browser@3.0.0: - resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + '@smithy/util-body-length-browser@3.0.0': dependencies: tslib: 2.6.3 - dev: false - /@smithy/util-body-length-node@3.0.0: - resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} - engines: {node: '>=16.0.0'} + '@smithy/util-body-length-node@3.0.0': dependencies: tslib: 2.6.3 - dev: false - /@smithy/util-buffer-from@2.2.0: - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} + '@smithy/util-buffer-from@2.2.0': dependencies: '@smithy/is-array-buffer': 2.2.0 tslib: 2.6.3 - dev: false - /@smithy/util-buffer-from@3.0.0: - resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} - engines: {node: '>=16.0.0'} + '@smithy/util-buffer-from@3.0.0': dependencies: '@smithy/is-array-buffer': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/util-config-provider@3.0.0: - resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-config-provider@3.0.0': dependencies: tslib: 2.6.3 - dev: false - /@smithy/util-defaults-mode-browser@3.0.7: - resolution: {integrity: sha512-Q2txLyvQyGfmjsaDbVV7Sg8psefpFcrnlGapDzXGFRPFKRBeEg6OvFK8FljqjeHSaCZ6/UuzQExUPqBR/2qlDA==} - engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-browser@3.0.7': dependencies: '@smithy/property-provider': 3.1.3 '@smithy/smithy-client': 3.1.5 '@smithy/types': 3.3.0 bowser: 2.11.0 tslib: 2.6.3 - dev: false - /@smithy/util-defaults-mode-node@3.0.7: - resolution: {integrity: sha512-F4Qcj1fG6MGi2BSWCslfsMSwllws/WzYONBGtLybyY+halAcXdWhcew+mej8M5SKd5hqPYp4f7b+ABQEaeytgg==} - engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-node@3.0.7': dependencies: '@smithy/config-resolver': 3.0.4 '@smithy/credential-provider-imds': 3.1.3 @@ -8872,44 +16528,29 @@ packages: '@smithy/smithy-client': 3.1.5 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/util-endpoints@2.0.4: - resolution: {integrity: sha512-ZAtNf+vXAsgzgRutDDiklU09ZzZiiV/nATyqde4Um4priTmasDH+eLpp3tspL0hS2dEootyFMhu1Y6Y+tzpWBQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-endpoints@2.0.4': dependencies: '@smithy/node-config-provider': 3.1.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/util-hex-encoding@3.0.0: - resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-hex-encoding@3.0.0': dependencies: tslib: 2.6.3 - dev: false - /@smithy/util-middleware@3.0.3: - resolution: {integrity: sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==} - engines: {node: '>=16.0.0'} + '@smithy/util-middleware@3.0.3': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/util-retry@3.0.3: - resolution: {integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==} - engines: {node: '>=16.0.0'} + '@smithy/util-retry@3.0.3': dependencies: '@smithy/service-error-classification': 3.0.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@smithy/util-stream@3.0.5: - resolution: {integrity: sha512-xC3L5PKMAT/Bh8fmHNXP9sdQ4+4aKVUU3EEJ2CF/lLk7R+wtMJM+v/1B4en7jO++Wa5spGzFDBCl0QxgbUc5Ug==} - engines: {node: '>=16.0.0'} + '@smithy/util-stream@3.0.5': dependencies: '@smithy/fetch-http-handler': 3.2.0 '@smithy/node-http-handler': 3.1.1 @@ -8919,64 +16560,40 @@ packages: '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/util-uri-escape@3.0.0: - resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} - engines: {node: '>=16.0.0'} + '@smithy/util-uri-escape@3.0.0': dependencies: tslib: 2.6.3 - dev: false - /@smithy/util-utf8@2.3.0: - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} + '@smithy/util-utf8@2.3.0': dependencies: '@smithy/util-buffer-from': 2.2.0 tslib: 2.6.3 - dev: false - /@smithy/util-utf8@3.0.0: - resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} - engines: {node: '>=16.0.0'} + '@smithy/util-utf8@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 tslib: 2.6.3 - dev: false - /@smithy/util-waiter@3.1.2: - resolution: {integrity: sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==} - engines: {node: '>=16.0.0'} + '@smithy/util-waiter@3.1.2': dependencies: '@smithy/abort-controller': 3.1.1 '@smithy/types': 3.3.0 tslib: 2.6.3 - dev: false - /@socket.io/component-emitter@3.1.2: - resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - dev: false + '@socket.io/component-emitter@3.1.2': {} - /@solidity-parser/parser@0.18.0: - resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} - dev: true + '@solidity-parser/parser@0.18.0': {} - /@stablelib/aead@1.0.1: - resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} - dev: false + '@stablelib/aead@1.0.1': {} - /@stablelib/binary@1.0.1: - resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + '@stablelib/binary@1.0.1': dependencies: '@stablelib/int': 1.0.1 - dev: false - /@stablelib/bytes@1.0.1: - resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} - dev: false + '@stablelib/bytes@1.0.1': {} - /@stablelib/chacha20poly1305@1.0.1: - resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + '@stablelib/chacha20poly1305@1.0.1': dependencies: '@stablelib/aead': 1.0.1 '@stablelib/binary': 1.0.1 @@ -8984,101 +16601,71 @@ packages: '@stablelib/constant-time': 1.0.1 '@stablelib/poly1305': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/chacha@1.0.1: - resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + '@stablelib/chacha@1.0.1': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/constant-time@1.0.1: - resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} - dev: false + '@stablelib/constant-time@1.0.1': {} - /@stablelib/ed25519@1.0.3: - resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + '@stablelib/ed25519@1.0.3': dependencies: '@stablelib/random': 1.0.2 '@stablelib/sha512': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/hash@1.0.1: - resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} - dev: false + '@stablelib/hash@1.0.1': {} - /@stablelib/hkdf@1.0.1: - resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + '@stablelib/hkdf@1.0.1': dependencies: '@stablelib/hash': 1.0.1 '@stablelib/hmac': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/hmac@1.0.1: - resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + '@stablelib/hmac@1.0.1': dependencies: '@stablelib/constant-time': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/int@1.0.1: - resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} - dev: false + '@stablelib/int@1.0.1': {} - /@stablelib/keyagreement@1.0.1: - resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + '@stablelib/keyagreement@1.0.1': dependencies: '@stablelib/bytes': 1.0.1 - dev: false - /@stablelib/poly1305@1.0.1: - resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + '@stablelib/poly1305@1.0.1': dependencies: '@stablelib/constant-time': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/random@1.0.2: - resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + '@stablelib/random@1.0.2': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/sha256@1.0.1: - resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + '@stablelib/sha256@1.0.1': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/sha512@1.0.1: - resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + '@stablelib/sha512@1.0.1': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/wipe@1.0.1: - resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} - dev: false + '@stablelib/wipe@1.0.1': {} - /@stablelib/x25519@1.0.3: - resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + '@stablelib/x25519@1.0.3': dependencies: '@stablelib/keyagreement': 1.0.1 '@stablelib/random': 1.0.2 '@stablelib/wipe': 1.0.1 - dev: false - /@storybook/addon-actions@8.1.11: - resolution: {integrity: sha512-jqYXgBgOVInStOCk//AA+dGkrfN8R7rDXA4lyu82zM59kvICtG9iqgmkSRDn0Z3zUkM+lIHZGoz0aLVQ8pxsgw==} + '@storybook/addon-actions@8.1.11': dependencies: '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 @@ -9086,18 +16673,14 @@ packages: dequal: 2.0.3 polished: 4.3.1 uuid: 9.0.1 - dev: true - /@storybook/addon-backgrounds@8.1.11: - resolution: {integrity: sha512-naGf1ovmsU2pSWb270yRO1IidnO+0YCZ5Tcb8I4rPhZ0vsdXNURYKS1LPSk1OZkvaUXdeB4Im9HhHfUBJOW9oQ==} + '@storybook/addon-backgrounds@8.1.11': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 ts-dedent: 2.2.0 - dev: true - /@storybook/addon-controls@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-q/Vt4meNVlFlBWIMCJhx6r+bqiiYocCta2RoUK5nyIZUiLzHncKHX6JnCU36EmJzRyah9zkwjfCb2G1r9cjnoQ==} + '@storybook/addon-controls@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@storybook/blocks': 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) dequal: 2.0.3 @@ -9111,10 +16694,8 @@ packages: - react - react-dom - supports-color - dev: true - /@storybook/addon-docs@8.1.11(prettier@3.3.2): - resolution: {integrity: sha512-69dv+CE4R5wFU7xnJmhuyEbLN2PEVDV3N/BbgJqeucIYPmm6zDV83Q66teCHKYtRln3BFUqPH5mxsjiHobxfJQ==} + '@storybook/addon-docs@8.1.11(prettier@3.3.2)': dependencies: '@babel/core': 7.24.7 '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1) @@ -9141,10 +16722,8 @@ packages: - encoding - prettier - supports-color - dev: true - /@storybook/addon-essentials@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-uRTpcIZQnflML8H+2onicUNIIssKfuviW8Lyrs/KFwSZ1rMcYzhwzCNbGlIbAv04tgHe5NqEyNhb+DVQcZQBzg==} + '@storybook/addon-essentials@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@storybook/addon-actions': 8.1.11 '@storybook/addon-backgrounds': 8.1.11 @@ -9168,16 +16747,12 @@ packages: - react - react-dom - supports-color - dev: true - /@storybook/addon-highlight@8.1.11: - resolution: {integrity: sha512-Iu8FCAd4ETsB6QF4xDE/OLLZY3HOFopuLM5KE0f58jnccF5zAVGr1Rj/54p6TeK0PEou0tLRPFuZs+LPlEzrSw==} + '@storybook/addon-highlight@8.1.11': dependencies: '@storybook/global': 5.0.0 - dev: true - /@storybook/addon-interactions@8.1.11(vitest@1.6.0): - resolution: {integrity: sha512-nkc01z61mYM1kxf0ncBQLlFnnwW4RAVPfRSxK9BdbFN3AAvFiHCwVZdn71mi+C3L8oTqYR6o32e0RlXk+AjhHA==} + '@storybook/addon-interactions@8.1.11(vitest@1.6.0)': dependencies: '@storybook/global': 5.0.0 '@storybook/instrumenter': 8.1.11 @@ -9191,62 +16766,35 @@ packages: - '@types/jest' - jest - vitest - dev: true - /@storybook/addon-links@8.1.11(react@18.3.1): - resolution: {integrity: sha512-HlV2RQSrZyi+55W1B1a9eWNuJdNpWx0g3j7s2arNlNmbd6/kfWAp84axBstI1tL0nW4svut7bWlCsMSOIden+A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - peerDependenciesMeta: - react: - optional: true + '@storybook/addon-links@8.1.11(react@18.3.1)': dependencies: '@storybook/csf': 0.1.9 '@storybook/global': 5.0.0 react: 18.3.1 ts-dedent: 2.2.0 - dev: true - /@storybook/addon-measure@8.1.11: - resolution: {integrity: sha512-LkQD3SiLWaWt53aLB3EnmhD9Im8EOO+HKSUE+XGnIJRUcHHRqHfvDkN9KX7T1DCWbfRE5WzMHF5o23b3UiAANw==} + '@storybook/addon-measure@8.1.11': dependencies: '@storybook/global': 5.0.0 tiny-invariant: 1.3.3 - dev: true - /@storybook/addon-outline@8.1.11: - resolution: {integrity: sha512-vco3RLVjkcS25dNtj1lxmjq4fC0Nq08KNLMS5cbNPVJWNTuSUi/2EthSTQQCdpfMV/p6u+D5uF20A9Pl0xJFXw==} + '@storybook/addon-outline@8.1.11': dependencies: '@storybook/global': 5.0.0 ts-dedent: 2.2.0 - dev: true - /@storybook/addon-themes@8.1.11: - resolution: {integrity: sha512-tEOzNiLSAz0/kQKkqV85V7olkJpinCaKpxRpUQpFYut/yQVl+fUchgkfCKrQZuQuvSrebhMmQQ8fbqZq8nf2pw==} + '@storybook/addon-themes@8.1.11': dependencies: ts-dedent: 2.2.0 - dev: true - /@storybook/addon-toolbars@8.1.11: - resolution: {integrity: sha512-reIKB0+JTiP+GNzynlDcRf4xmv9+j/DQ94qiXl2ZG5+ufKilH8DiRZpVA/i0x+4+TxdGdOJr1/pOf8tAmhNEoQ==} - dev: true + '@storybook/addon-toolbars@8.1.11': {} - /@storybook/addon-viewport@8.1.11: - resolution: {integrity: sha512-qk4IcGnAgiAUQxt8l5PIQ293Za+w6wxlJQIpxr7+QM8OVkADPzXY0MmQfYWU9EQplrxAC2MSx3/C1gZeq+MDOQ==} + '@storybook/addon-viewport@8.1.11': dependencies: memoizerific: 1.11.3 - dev: true - /@storybook/blocks@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-eMed7PpL/hAVM6tBS7h70bEAyzbiSU9I/kye4jZ7DkCbAsrX6OKmC7pcHSDn712WTcf3vVqxy5jOKUmOXpc0eg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@storybook/blocks@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@storybook/channels': 8.1.11 '@storybook/client-logger': 8.1.11 @@ -9280,10 +16828,8 @@ packages: - encoding - prettier - supports-color - dev: true - /@storybook/builder-manager@8.1.11(prettier@3.3.2): - resolution: {integrity: sha512-U7bmed4Ayg+OlJ8HPmLeGxLTHzDY7rxmxM4aAs4YL01fufYfBcjkIP9kFhJm+GJOvGm+YJEUAPe5mbM1P/bn0Q==} + '@storybook/builder-manager@8.1.11(prettier@3.3.2)': dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 '@storybook/core-common': 8.1.11(prettier@3.3.2) @@ -9303,22 +16849,8 @@ packages: - encoding - prettier - supports-color - dev: true - /@storybook/builder-vite@8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2): - resolution: {integrity: sha512-hG4eoNMCPgjZ2Ai+zSmk69zjsyEihe75XbJXtYfGRqjMWtz2+SAUFO54fLc2BD5svcUiTeN+ukWcTrwApyPsKg==} - peerDependencies: - '@preact/preset-vite': '*' - typescript: '>= 4.3.x' - vite: ^4.0.0 || ^5.0.0 - vite-plugin-glimmerx: '*' - peerDependenciesMeta: - '@preact/preset-vite': - optional: true - typescript: - optional: true - vite-plugin-glimmerx: - optional: true + '@storybook/builder-vite@8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2)': dependencies: '@storybook/channels': 8.1.11 '@storybook/client-logger': 8.1.11 @@ -9343,21 +16875,16 @@ packages: - encoding - prettier - supports-color - dev: true - /@storybook/channels@8.1.11: - resolution: {integrity: sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA==} + '@storybook/channels@8.1.11': dependencies: '@storybook/client-logger': 8.1.11 '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 telejson: 7.2.0 tiny-invariant: 1.3.3 - dev: true - /@storybook/cli@8.1.11(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-4U48w9C7mVEKrykcPcfHwJkRyCqJ28XipbElACbjIIkQEqaHaOVtP3GeKIrgkoOXe/HK3O4zKWRP2SqlVS0r4A==} - hasBin: true + '@storybook/cli@8.1.11(react-dom@18.3.1)(react@18.3.1)': dependencies: '@babel/core': 7.24.7 '@babel/types': 7.24.7 @@ -9403,16 +16930,12 @@ packages: - react-dom - supports-color - utf-8-validate - dev: true - /@storybook/client-logger@8.1.11: - resolution: {integrity: sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA==} + '@storybook/client-logger@8.1.11': dependencies: '@storybook/global': 5.0.0 - dev: true - /@storybook/codemod@8.1.11: - resolution: {integrity: sha512-/LCozjH1IQ1TOs9UQV59BE0X6UZ9q+C0NEUz7qmJZPrwAii3FkW4l7D/fwxblpMExaoxv0oE8NQfUz49U/5Ymg==} + '@storybook/codemod@8.1.11': dependencies: '@babel/core': 7.24.7 '@babel/preset-env': 7.24.7(@babel/core@7.24.7) @@ -9431,13 +16954,8 @@ packages: tiny-invariant: 1.3.3 transitivePeerDependencies: - supports-color - dev: true - /@storybook/components@8.1.11(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-iXKsNu7VmrLBtjMfPj7S4yJ6T13GU6joKcVcrcw8wfrQJGlPFp4YaURPBUEDxvCt1XWi5JkaqJBvb48kIrROEQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + '@storybook/components@8.1.11(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@radix-ui/react-dialog': 1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) @@ -9454,15 +16972,8 @@ packages: transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: true - /@storybook/core-common@8.1.11(prettier@3.3.2): - resolution: {integrity: sha512-Ix0nplD4I4DrV2t9B+62jaw1baKES9UbR/Jz9LVKFF9nsua3ON0aVe73dOjMxFWBngpzBYWe+zYBTZ7aQtDH4Q==} - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true + '@storybook/core-common@8.1.11(prettier@3.3.2)': dependencies: '@storybook/core-events': 8.1.11 '@storybook/csf-tools': 8.1.11 @@ -9486,7 +16997,7 @@ packages: picomatch: 2.3.1 pkg-dir: 5.0.0 prettier: 3.3.2 - prettier-fallback: /prettier@3.3.2 + prettier-fallback: prettier@3.3.2 pretty-hrtime: 1.0.3 resolve-from: 5.0.0 semver: 7.6.2 @@ -9497,17 +17008,13 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: true - /@storybook/core-events@8.1.11: - resolution: {integrity: sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A==} + '@storybook/core-events@8.1.11': dependencies: '@storybook/csf': 0.1.9 ts-dedent: 2.2.0 - dev: true - /@storybook/core-server@8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-L6dzQTmR0np/kagNONvvlm6lSvF1FNc9js3vxsEEPnEypLbhx8bDZaHmuhmBpYUzKyUMpRVQTE/WgjHLuBBuxA==} + '@storybook/core-server@8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@aw-web-design/x-default-browser': 1.4.126 '@babel/core': 7.24.7 @@ -9562,19 +17069,15 @@ packages: - react-dom - supports-color - utf-8-validate - dev: true - /@storybook/csf-plugin@8.1.11: - resolution: {integrity: sha512-hkA8gjFtSN/tabG0cuvmEqanMXtxPr3qTkp4UNSt1R6jBEgFHRG2y/KYLl367kDwOSFTT987ZgRfJJruU66Fvw==} + '@storybook/csf-plugin@8.1.11': dependencies: '@storybook/csf-tools': 8.1.11 unplugin: 1.11.0 transitivePeerDependencies: - supports-color - dev: true - /@storybook/csf-tools@8.1.11: - resolution: {integrity: sha512-6qMWAg/dBwCVIHzANM9lSHoirwqSS+wWmv+NwAs0t9S94M75IttHYxD3IyzwaSYCC5llp0EQFvtXXAuSfFbibg==} + '@storybook/csf-tools@8.1.11': dependencies: '@babel/generator': 7.24.7 '@babel/parser': 7.24.7 @@ -9587,26 +17090,18 @@ packages: ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - dev: true - /@storybook/csf@0.0.1: - resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + '@storybook/csf@0.0.1': dependencies: lodash: 4.17.21 - dev: true - /@storybook/csf@0.1.9: - resolution: {integrity: sha512-JlZ6v/iFn+iKohKGpYXnMeNeTiiAMeFoDhYnPLIC8GnyyIWqEI9wJYrOK9i9rxlJ8NZAH/ojGC/u/xVC41qSgQ==} + '@storybook/csf@0.1.9': dependencies: type-fest: 2.19.0 - dev: true - /@storybook/docs-mdx@3.1.0-next.0: - resolution: {integrity: sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ==} - dev: true + '@storybook/docs-mdx@3.1.0-next.0': {} - /@storybook/docs-tools@8.1.11(prettier@3.3.2): - resolution: {integrity: sha512-mEXtR9rS7Y+OdKtT/QG6JBGYR1L41mcDhIqhnk7RmYl9qJstVAegrCKWR53sPKFdTVOHU7dmu6k+BD+TqHpyyw==} + '@storybook/docs-tools@8.1.11(prettier@3.3.2)': dependencies: '@storybook/core-common': 8.1.11(prettier@3.3.2) '@storybook/core-events': 8.1.11 @@ -9620,25 +17115,15 @@ packages: - encoding - prettier - supports-color - dev: true - /@storybook/global@5.0.0: - resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - dev: true + '@storybook/global@5.0.0': {} - /@storybook/icons@1.2.9(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/icons@1.2.9(react-dom@18.3.1)(react@18.3.1)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: true - /@storybook/instrumenter@8.1.11: - resolution: {integrity: sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ==} + '@storybook/instrumenter@8.1.11': dependencies: '@storybook/channels': 8.1.11 '@storybook/client-logger': 8.1.11 @@ -9647,10 +17132,8 @@ packages: '@storybook/preview-api': 8.1.11 '@vitest/utils': 1.6.0 util: 0.12.5 - dev: true - /@storybook/manager-api@8.1.11(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-QSgwKfAw01K9YvvZj30iGBMgQ4YaCT3vojmttuqdH5ukyXkiO7pENLJj4Y+alwUeSi0g+SJeadCI3PXySBHOGg==} + '@storybook/manager-api@8.1.11(react-dom@18.3.1)(react@18.3.1)': dependencies: '@storybook/channels': 8.1.11 '@storybook/client-logger': 8.1.11 @@ -9670,18 +17153,12 @@ packages: transitivePeerDependencies: - react - react-dom - dev: true - /@storybook/manager@8.1.11: - resolution: {integrity: sha512-e02y9dmxowo7cTKYm9am7UO6NOHoHy6Xi7xZf/UA932qLwFZUtk5pnwIEFaZWI3OQsRUCGhP+FL5zizU7uVZeg==} - dev: true + '@storybook/manager@8.1.11': {} - /@storybook/node-logger@8.1.11: - resolution: {integrity: sha512-wdzFo7B2naGhS52L3n1qBkt5BfvQjs8uax6B741yKRpiGgeAN8nz8+qelkD25MbSukxvbPgDot7WJvsMU/iCzg==} - dev: true + '@storybook/node-logger@8.1.11': {} - /@storybook/preview-api@8.1.11: - resolution: {integrity: sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ==} + '@storybook/preview-api@8.1.11': dependencies: '@storybook/channels': 8.1.11 '@storybook/client-logger': 8.1.11 @@ -9697,37 +17174,21 @@ packages: tiny-invariant: 1.3.3 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - dev: true - /@storybook/preview@8.1.11: - resolution: {integrity: sha512-K/9NZmjnL0D1BROkTNWNoPqgL2UaocALRSqCARmkBLgU2Rn/FuZgEclHkWlYo6pUrmLNK+bZ+XzpNMu12iTbpg==} - dev: true + '@storybook/preview@8.1.11': {} - /@storybook/react-dom-shim@8.1.11(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-KVDSuipqkFjpGfldoRM5xR/N1/RNmbr+sVXqMmelr0zV2jGnexEZnoa7wRHk7IuXuivLWe8BxMxzvQWqjIa4GA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + '@storybook/react-dom-shim@8.1.11(react-dom@18.3.1)(react@18.3.1)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: true - /@storybook/router@8.1.11: - resolution: {integrity: sha512-nU5lsBvy0L8wBYOkjagh29ztZicDATpZNYrHuavlhQ2jznmmHdJvXKYk+VrMAbthjQ6ZBqfeeMNPR1UlnqR5Rw==} + '@storybook/router@8.1.11': dependencies: '@storybook/client-logger': 8.1.11 memoizerific: 1.11.3 qs: 6.12.2 - dev: true - /@storybook/svelte-vite@8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2): - resolution: {integrity: sha512-wjUDKVt98RXmbA84TtSuiSX7/lyKKrTNZgNnfrbxcArsJAwotmrG5BEMLGd1VulREriYqrYbW7fYX2jBucTgxg==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^2.0.0 || ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.65 - vite: ^4.0.0 || ^5.0.0 + '@storybook/svelte-vite@8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2)': dependencies: '@storybook/builder-vite': 8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2) '@storybook/node-logger': 8.1.11 @@ -9756,13 +17217,8 @@ packages: - supports-color - typescript - vite-plugin-glimmerx - dev: true - /@storybook/svelte@8.1.11(prettier@3.3.2)(svelte@4.2.18): - resolution: {integrity: sha512-/xlfPj6q7EmIS+M0V1naI5NWGsK9iwHAHD1fuKmO8KTCqDAmq9bssCZBsaMcZHA7AL3tzpnWxLC52n4wjzaxhw==} - engines: {node: '>=18.0.0'} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.65 + '@storybook/svelte@8.1.11(prettier@3.3.2)(svelte@4.2.18)': dependencies: '@storybook/client-logger': 8.1.11 '@storybook/core-events': 8.1.11 @@ -9778,14 +17234,8 @@ packages: - encoding - prettier - supports-color - dev: true - /@storybook/sveltekit@8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2): - resolution: {integrity: sha512-fP3mR9d1TAaSMYLqwjU4YHODoisf7EE0/oheaY8IAx6pbsZbbnLCBKlvH2+i74u8NmLKHS5aFZePd9XiHlowwg==} - engines: {node: '>=18.0.0'} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.65 - vite: ^4.0.0 || ^5.0.0 + '@storybook/sveltekit@8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2)': dependencies: '@storybook/addon-actions': 8.1.11 '@storybook/builder-vite': 8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2) @@ -9811,10 +17261,8 @@ packages: - supports-color - typescript - vite-plugin-glimmerx - dev: true - /@storybook/telemetry@8.1.11(prettier@3.3.2): - resolution: {integrity: sha512-Jqvm7HcZismKzPuebhyLECO6KjGiSk4ycbca1WUM/TUvifxCXqgoUPlHHQEEfaRdHS63/MSqtMNjLsQRLC/vNQ==} + '@storybook/telemetry@8.1.11(prettier@3.3.2)': dependencies: '@storybook/client-logger': 8.1.11 '@storybook/core-common': 8.1.11(prettier@3.3.2) @@ -9828,10 +17276,8 @@ packages: - encoding - prettier - supports-color - dev: true - /@storybook/test@8.1.11(vitest@1.6.0): - resolution: {integrity: sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ==} + '@storybook/test@8.1.11(vitest@1.6.0)': dependencies: '@storybook/client-logger': 8.1.11 '@storybook/core-events': 8.1.11 @@ -9849,18 +17295,8 @@ packages: - '@types/jest' - jest - vitest - dev: true - /@storybook/theming@8.1.11(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-Chn/opjO6Rl1isNobutYqAH2PjKNkj09YBw/8noomk6gElSa3JbUTyaG/+JCHA6OG/9kUsqoKDb5cZmAKNq/jA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@storybook/theming@8.1.11(react-dom@18.3.1)(react@18.3.1)': dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) '@storybook/client-logger': 8.1.11 @@ -9868,34 +17304,19 @@ packages: memoizerific: 1.11.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: true - /@storybook/types@8.1.11: - resolution: {integrity: sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw==} + '@storybook/types@8.1.11': dependencies: '@storybook/channels': 8.1.11 '@types/express': 4.17.21 file-system-cache: 2.3.0 - dev: true - /@sveltejs/adapter-auto@3.2.2(@sveltejs/kit@2.5.24): - resolution: {integrity: sha512-Mso5xPCA8zgcKrv+QioVlqMZkyUQ5MjDJiEPuG/Z7cV/5tmwV7LmcVWk5tZ+H0NCOV1x12AsoSpt/CwFwuVXMA==} - peerDependencies: - '@sveltejs/kit': ^2.0.0 + '@sveltejs/adapter-auto@3.2.2(@sveltejs/kit@2.5.24)': dependencies: '@sveltejs/kit': 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) import-meta-resolve: 4.1.0 - dev: true - /@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3): - resolution: {integrity: sha512-Nr2oxsCsDfEkdS/zzQQQbsPYTbu692Qs3/iE3L7VHzCVjG2+WujF9oMUozWI7GuX98KxYSoPMlAsfmDLSg44hQ==} - engines: {node: '>=18.13'} - hasBin: true - requiresBuild: true - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 + '@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3)': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@4.5.3) '@types/cookie': 0.6.0 @@ -9912,17 +17333,8 @@ packages: svelte: 4.2.18 tiny-glob: 0.2.9 vite: 4.5.3 - dev: true - /@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2): - resolution: {integrity: sha512-Nr2oxsCsDfEkdS/zzQQQbsPYTbu692Qs3/iE3L7VHzCVjG2+WujF9oMUozWI7GuX98KxYSoPMlAsfmDLSg44hQ==} - engines: {node: '>=18.13'} - hasBin: true - requiresBuild: true - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 + '@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2)': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.2) '@types/cookie': 0.6.0 @@ -9939,14 +17351,8 @@ packages: svelte: 4.2.18 tiny-glob: 0.2.9 vite: 5.3.2(@types/node@20.14.9) - dev: true - /@sveltejs/package@2.3.2(svelte@4.2.18)(typescript@5.5.3): - resolution: {integrity: sha512-6M8/Te7iXRG7SiH92wugqfyoJpuepjn78L433LnXicUeMso9M/N4vdL9DPK3MfTkVVY4klhNRptVqme3p4oZWA==} - engines: {node: ^16.14 || >=18} - hasBin: true - peerDependencies: - svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 + '@sveltejs/package@2.3.2(svelte@4.2.18)(typescript@5.5.3)': dependencies: chokidar: 3.6.0 kleur: 4.1.5 @@ -9956,15 +17362,8 @@ packages: svelte2tsx: 0.7.13(svelte@4.2.18)(typescript@5.5.3) transitivePeerDependencies: - typescript - dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3): - resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3)': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@4.5.3) debug: 4.3.5 @@ -9972,15 +17371,8 @@ packages: vite: 4.5.3 transitivePeerDependencies: - supports-color - dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2): - resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2)': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.2) debug: 4.3.5 @@ -9988,14 +17380,8 @@ packages: vite: 5.3.2(@types/node@20.14.9) transitivePeerDependencies: - supports-color - dev: true - /@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@4.5.3): - resolution: {integrity: sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@4.5.3)': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3) debug: 4.3.5 @@ -10008,14 +17394,8 @@ packages: vitefu: 0.2.5(vite@4.5.3) transitivePeerDependencies: - supports-color - dev: true - /@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.2): - resolution: {integrity: sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.2)': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) debug: 4.3.5 @@ -10028,27 +17408,17 @@ packages: vitefu: 0.2.5(vite@5.3.2) transitivePeerDependencies: - supports-color - dev: true - /@szmarczak/http-timer@5.0.1: - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} + '@szmarczak/http-timer@5.0.1': dependencies: defer-to-connect: 2.0.1 - dev: true - /@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.4.39): - resolution: {integrity: sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==} - peerDependencies: - postcss: ^8.2.15 + '@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.4.39)': dependencies: postcss: 8.4.39 postcss-nested: 5.0.6(postcss@8.4.39) - dev: true - /@testing-library/dom@10.1.0: - resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} - engines: {node: '>=18'} + '@testing-library/dom@10.1.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/runtime': 7.24.7 @@ -10058,28 +17428,8 @@ packages: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 - dev: true - /@testing-library/jest-dom@6.4.5(vitest@1.6.0): - resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/bun': latest - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/bun': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true + '@testing-library/jest-dom@6.4.5(vitest@1.6.0)': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.24.7 @@ -10090,389 +17440,245 @@ packages: lodash: 4.17.21 redent: 3.0.0 vitest: 1.6.0(jsdom@24.1.0) - dev: true - /@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0): - resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' + '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)': dependencies: '@testing-library/dom': 10.1.0 - dev: true - /@ts-morph/common@0.20.0: - resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} + '@ts-morph/common@0.20.0': dependencies: fast-glob: 3.3.2 minimatch: 7.4.6 mkdirp: 2.1.6 path-browserify: 1.0.1 - dev: true - /@tsconfig/node10@1.0.11: - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - dev: true + '@tsconfig/node10@1.0.11': {} - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true + '@tsconfig/node12@1.0.11': {} - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true + '@tsconfig/node14@1.0.3': {} - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true + '@tsconfig/node16@1.0.4': {} - /@types/acorn@4.0.6: - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + '@types/acorn@4.0.6': dependencies: '@types/estree': 1.0.5 - dev: false - /@types/aria-query@5.0.4: - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - dev: true + '@types/aria-query@5.0.4': {} - /@types/babel__core@7.20.5: - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 - dev: false - /@types/babel__generator@7.6.8: - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.6.8': dependencies: '@babel/types': 7.25.2 - dev: false - /@types/babel__template@7.4.4: - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - dev: false - /@types/babel__traverse@7.20.6: - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/babel__traverse@7.20.6': dependencies: '@babel/types': 7.25.2 - dev: false - /@types/bn.js@5.1.5: - resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + '@types/bn.js@5.1.5': dependencies: '@types/node': 20.14.9 - dev: false - /@types/body-parser@1.19.5: - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 '@types/node': 20.14.9 - dev: true - /@types/connect@3.4.38: - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/connect@3.4.38': dependencies: '@types/node': 20.14.9 - dev: true - /@types/cookie@0.6.0: - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/cookie@0.6.0': {} - /@types/cross-spawn@6.0.6: - resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} + '@types/cross-spawn@6.0.6': dependencies: '@types/node': 20.14.9 - dev: true - /@types/debug@4.1.12: - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 - /@types/detect-port@1.3.5: - resolution: {integrity: sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==} - dev: true + '@types/detect-port@1.3.5': {} - /@types/diff@5.2.1: - resolution: {integrity: sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g==} - dev: true + '@types/diff@5.2.1': {} - /@types/dns-packet@5.6.5: - resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} + '@types/dns-packet@5.6.5': dependencies: '@types/node': 20.14.9 - dev: false - /@types/doctrine@0.0.3: - resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} - dev: true + '@types/doctrine@0.0.3': {} - /@types/dom-screen-wake-lock@1.0.3: - resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} - dev: false + '@types/dom-screen-wake-lock@1.0.3': {} - /@types/ejs@3.1.5: - resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==} - dev: true + '@types/ejs@3.1.5': {} - /@types/emscripten@1.39.13: - resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} - dev: true + '@types/emscripten@1.39.13': {} - /@types/eslint@8.56.10: - resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + '@types/eslint@8.56.10': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 - dev: true - /@types/estree-jsx@1.0.5: - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.5 - dev: false - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/estree@1.0.5': {} - /@types/express-serve-static-core@4.19.5: - resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} + '@types/express-serve-static-core@4.19.5': dependencies: '@types/node': 20.14.9 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 - dev: true - /@types/express@4.17.21: - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.19.5 '@types/qs': 6.9.15 '@types/serve-static': 1.15.7 - dev: true - /@types/find-cache-dir@3.2.1: - resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} - dev: true + '@types/find-cache-dir@3.2.1': {} - /@types/hast@3.0.4: - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.2 - /@types/http-cache-semantics@4.0.4: - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - dev: true + '@types/http-cache-semantics@4.0.4': {} - /@types/http-errors@2.0.4: - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - dev: true + '@types/http-errors@2.0.4': {} - /@types/istanbul-lib-coverage@2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + '@types/istanbul-lib-coverage@2.0.6': {} - /@types/istanbul-lib-report@3.0.3: - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + '@types/istanbul-lib-report@3.0.3': dependencies: '@types/istanbul-lib-coverage': 2.0.6 - /@types/istanbul-reports@3.0.4: - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/istanbul-reports@3.0.4': dependencies: '@types/istanbul-lib-report': 3.0.3 - /@types/jest@29.5.12: - resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + '@types/jest@29.5.12': dependencies: expect: 29.7.0 pretty-format: 29.7.0 - dev: true - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/json-schema@7.0.15': {} - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true + '@types/json5@0.0.29': {} - /@types/lodash@4.17.6: - resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==} - dev: true + '@types/lodash@4.17.6': {} - /@types/mdast@4.0.4: - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.2 - dev: false - /@types/mdx@2.0.13: - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + '@types/mdx@2.0.13': {} - /@types/mime@1.3.5: - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - dev: true + '@types/mime@1.3.5': {} - /@types/minimatch@3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: false + '@types/minimatch@3.0.5': {} - /@types/ms@0.7.34: - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/ms@0.7.34': {} - /@types/nlcst@2.0.3: - resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + '@types/nlcst@2.0.3': dependencies: '@types/unist': 3.0.2 - dev: false - /@types/node-forge@1.3.11: - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + '@types/node-forge@1.3.11': dependencies: '@types/node': 20.14.9 - dev: false - /@types/node@12.20.55: - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: false + '@types/node@12.20.55': {} - /@types/node@17.0.45: - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - dev: false + '@types/node@17.0.45': {} - /@types/node@18.19.39: - resolution: {integrity: sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==} + '@types/node@18.19.39': dependencies: undici-types: 5.26.5 - /@types/node@20.14.9: - resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} + '@types/node@20.14.9': dependencies: undici-types: 5.26.5 - /@types/normalize-package-data@2.4.4: - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - dev: true + '@types/normalize-package-data@2.4.4': {} - /@types/object-hash@3.0.6: - resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} - dev: true + '@types/object-hash@3.0.6': {} - /@types/pbkdf2@3.1.2: - resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + '@types/pbkdf2@3.1.2': dependencies: '@types/node': 20.14.9 - dev: false - /@types/pretty-hrtime@1.0.3: - resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} - dev: true + '@types/pretty-hrtime@1.0.3': {} - /@types/prop-types@15.7.12: - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - dev: true + '@types/prop-types@15.7.12': {} - /@types/pug@2.0.10: - resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - dev: true + '@types/pug@2.0.10': {} - /@types/qs@6.9.15: - resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} - dev: true + '@types/qs@6.9.15': {} - /@types/range-parser@1.2.7: - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - dev: true + '@types/range-parser@1.2.7': {} - /@types/react@18.3.3: - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + '@types/react@18.3.3': dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 - dev: true - /@types/sax@1.2.7: - resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + '@types/sax@1.2.7': dependencies: '@types/node': 20.14.9 - dev: false - /@types/secp256k1@4.0.6: - resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + '@types/secp256k1@4.0.6': dependencies: '@types/node': 20.14.9 - dev: false - /@types/semver@7.5.8: - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/semver@7.5.8': {} - /@types/send@0.17.4: - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 '@types/node': 20.14.9 - dev: true - /@types/serve-static@1.15.7: - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 '@types/node': 20.14.9 '@types/send': 0.17.4 - dev: true - /@types/stack-utils@2.0.3: - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@types/stack-utils@2.0.3': {} - /@types/trusted-types@2.0.7: - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - dev: false + '@types/trusted-types@2.0.7': {} - /@types/unist@2.0.10: - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - dev: false + '@types/unist@2.0.10': {} - /@types/unist@3.0.2: - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + '@types/unist@3.0.2': {} - /@types/uuid@9.0.8: - resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - dev: true + '@types/uuid@9.0.8': {} - /@types/yargs-parser@21.0.3: - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + '@types/yargs-parser@21.0.3': {} - /@types/yargs@15.0.19: - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + '@types/yargs@15.0.19': dependencies: '@types/yargs-parser': 21.0.3 - dev: false - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3): - resolution: {integrity: sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/eslint-plugin@7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) @@ -10488,17 +17694,8 @@ packages: typescript: 5.5.3 transitivePeerDependencies: - supports-color - dev: true - - /@typescript-eslint/parser@7.15.0(eslint@8.57.0)(typescript@5.5.3): - resolution: {integrity: sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + + '@typescript-eslint/parser@7.15.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@typescript-eslint/scope-manager': 7.15.0 '@typescript-eslint/types': 7.15.0 @@ -10509,33 +17706,18 @@ packages: typescript: 5.5.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - /@typescript-eslint/scope-manager@7.15.0: - resolution: {integrity: sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@7.15.0': dependencies: '@typescript-eslint/types': 7.15.0 '@typescript-eslint/visitor-keys': 7.15.0 - dev: true - /@typescript-eslint/type-utils@7.15.0(eslint@8.57.0)(typescript@5.5.3): - resolution: {integrity: sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/type-utils@7.15.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) @@ -10545,26 +17727,12 @@ packages: typescript: 5.5.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@typescript-eslint/types@5.62.0': {} - /@typescript-eslint/types@7.15.0: - resolution: {integrity: sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==} - engines: {node: ^18.18.0 || >=20.0.0} - dev: true + '@typescript-eslint/types@7.15.0': {} - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.3): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.3)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 @@ -10576,16 +17744,8 @@ packages: typescript: 5.5.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree@7.15.0(typescript@5.5.3): - resolution: {integrity: sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@7.15.0(typescript@5.5.3)': dependencies: '@typescript-eslint/types': 7.15.0 '@typescript-eslint/visitor-keys': 7.15.0 @@ -10598,13 +17758,8 @@ packages: typescript: 5.5.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.3): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 @@ -10618,13 +17773,8 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/utils@7.15.0(eslint@8.57.0)(typescript@5.5.3): - resolution: {integrity: sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 + '@typescript-eslint/utils@7.15.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@typescript-eslint/scope-manager': 7.15.0 @@ -10634,31 +17784,20 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@7.15.0: - resolution: {integrity: sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@7.15.0': dependencies: '@typescript-eslint/types': 7.15.0 eslint-visitor-keys: 3.4.3 - dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@ungap/structured-clone@1.2.0': {} - /@vitest/coverage-v8@1.6.0(vitest@1.6.0): - resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} - peerDependencies: - vitest: 1.6.0 + '@vitest/coverage-v8@1.6.0(vitest@1.6.0)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -10676,51 +17815,37 @@ packages: vitest: 1.6.0(jsdom@24.1.0) transitivePeerDependencies: - supports-color - dev: true - /@vitest/expect@1.6.0: - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + '@vitest/expect@1.6.0': dependencies: '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 chai: 4.4.1 - dev: true - /@vitest/runner@1.6.0: - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + '@vitest/runner@1.6.0': dependencies: '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 - dev: true - /@vitest/snapshot@1.6.0: - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + '@vitest/snapshot@1.6.0': dependencies: magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 - dev: true - /@vitest/spy@1.6.0: - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + '@vitest/spy@1.6.0': dependencies: tinyspy: 2.2.1 - dev: true - /@vitest/utils@1.6.0: - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + '@vitest/utils@1.6.0': dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 loupe: 2.3.7 pretty-format: 29.7.0 - dev: true - /@volar/kit@2.4.0-alpha.18(typescript@5.5.3): - resolution: {integrity: sha512-dZMSNhesh23lhd61ax2l04IgIcYofAjm8M+5BKAmX47ROweyc8RrrslszCFUJynlmXx6JS1PoHqvo8+E0aAYQQ==} - peerDependencies: - typescript: '*' + '@volar/kit@2.4.0-alpha.18(typescript@5.5.3)': dependencies: '@volar/language-service': 2.4.0-alpha.18 '@volar/typescript': 2.4.0-alpha.18 @@ -10728,16 +17853,12 @@ packages: typescript: 5.5.3 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - dev: false - /@volar/language-core@2.4.0-alpha.18: - resolution: {integrity: sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==} + '@volar/language-core@2.4.0-alpha.18': dependencies: '@volar/source-map': 2.4.0-alpha.18 - dev: false - /@volar/language-server@2.4.0-alpha.18: - resolution: {integrity: sha512-dciHEE/R5kzI0bY71QfkoCVQ3cQI6g9MHfA4oIP6UhnJy0CdleUalWSygOXoD3Nq7Yk6wn2BRrb1PP5MsadY/Q==} + '@volar/language-server@2.4.0-alpha.18': dependencies: '@volar/language-core': 2.4.0-alpha.18 '@volar/language-service': 2.4.0-alpha.18 @@ -10749,58 +17870,38 @@ packages: vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - dev: false - /@volar/language-service@2.4.0-alpha.18: - resolution: {integrity: sha512-EuetrtbEtudi9buinWAG5U3Jam5dY27zXd/7GYnx542kBwanWOBM8i4DAQd0z7M11fOxXgybxPA933uaSyaOog==} + '@volar/language-service@2.4.0-alpha.18': dependencies: '@volar/language-core': 2.4.0-alpha.18 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - dev: false - /@volar/snapshot-document@2.4.0-alpha.18: - resolution: {integrity: sha512-JAeclEly/wnILhR4Pu9MpgBLInZJH49O1zoy8fU+pk5I+zpv7JIEby5z2UFAS60+sIDnxBdAGd7rZ5VibE70vg==} + '@volar/snapshot-document@2.4.0-alpha.18': dependencies: vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 - dev: false - /@volar/source-map@2.4.0-alpha.18: - resolution: {integrity: sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==} - dev: false + '@volar/source-map@2.4.0-alpha.18': {} - /@volar/typescript@2.4.0-alpha.18: - resolution: {integrity: sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==} + '@volar/typescript@2.4.0-alpha.18': dependencies: '@volar/language-core': 2.4.0-alpha.18 path-browserify: 1.0.1 vscode-uri: 3.0.8 - dev: false - /@vscode/emmet-helper@2.9.3: - resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==} + '@vscode/emmet-helper@2.9.3': dependencies: emmet: 2.4.7 jsonc-parser: 2.3.1 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 2.1.2 - dev: false - /@vscode/l10n@0.0.18: - resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - dev: false + '@vscode/l10n@0.0.18': {} - /@wagmi/cli@2.1.13(typescript@5.5.3): - resolution: {integrity: sha512-0lQILHXj7IZfivMa5yEN1OWu5dF17iCgIHOKaPNMMcB9uem+2oEumJEaj0EezZZXLZLNN/lbI7A4TCXNYuoEDg==} - hasBin: true - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + '@wagmi/cli@2.1.13(typescript@5.5.3)': dependencies: abitype: 1.0.5(typescript@5.5.3)(zod@3.23.8) bundle-require: 4.2.1(esbuild@0.19.12) @@ -10827,15 +17928,7 @@ packages: - bufferutil - utf-8-validate - /@wagmi/connectors@4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5): - resolution: {integrity: sha512-IZcsocBfDq6pe8sxkDgP2k9YNqv8udl2eSr2hx2JCESA44ixx5zRjoGNMAkKxlzM6uXjXLJKp/g1KYlpmoHkDg==} - peerDependencies: - '@wagmi/core': 2.9.8 - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - typescript: - optional: true + '@wagmi/connectors@4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5)': dependencies: '@coinbase/wallet-sdk': 3.9.1 '@metamask/sdk': 0.20.3(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1) @@ -10872,17 +17965,8 @@ packages: - uWebSockets.js - utf-8-validate - zod - dev: false - /@wagmi/connectors@5.0.21(@wagmi/core@2.11.6)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5): - resolution: {integrity: sha512-lbjXEv6HhOa9nXZ5r6NGFJdaadCt2Yj9hSWHjKuiTobrE6dEGQqG16mCQS17yXcvXpI62Q/sW6SL347JrBju/Q==} - peerDependencies: - '@wagmi/core': 2.11.6 - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - typescript: - optional: true + '@wagmi/connectors@5.0.21(@wagmi/core@2.11.6)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5)': dependencies: '@coinbase/wallet-sdk': 4.0.4 '@metamask/sdk': 0.26.4(react-native@0.74.3)(react@18.3.1) @@ -10891,7 +17975,7 @@ packages: '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) '@walletconnect/ethereum-provider': 2.13.0(react@18.3.1) '@walletconnect/modal': 2.6.2(react@18.3.1) - cbw-sdk: /@coinbase/wallet-sdk@3.9.3 + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' typescript: 5.5.3 viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) transitivePeerDependencies: @@ -10919,19 +18003,8 @@ packages: - uWebSockets.js - utf-8-validate - zod - dev: false - /@wagmi/core@2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5): - resolution: {integrity: sha512-Ohk7Bh+Q8kjzxEHImIq98CnPduz8n1a5bdwJi6F7zU3h62crhlVq7fZBYoBhoDgmX0ROVOMr8WW3XU3XhRwUOw==} - peerDependencies: - '@tanstack/query-core': '>=5.0.0' - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - '@tanstack/query-core': - optional: true - typescript: - optional: true + '@wagmi/core@2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5)': dependencies: eventemitter3: 5.0.1 mipd: 0.0.5(typescript@5.5.3) @@ -10945,10 +18018,8 @@ packages: - react - utf-8-validate - zod - dev: false - /@walletconnect/core@2.13.0: - resolution: {integrity: sha512-blDuZxQenjeXcVJvHxPznTNl6c/2DO4VNrFnus+qHmO6OtT5lZRowdMtlCaCNb1q0OxzgrmBDcTOCbFcCpio/g==} + '@walletconnect/core@2.13.0': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -10985,10 +18056,8 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/core@2.13.3: - resolution: {integrity: sha512-TdF+rC6rONJGyOUtt/nLkbyQWjnkwbD3kXq3ZA0Q7+tYtmSjTDE4wbArlLbHIbtf69g+9/DpEVEQimWWcEOn2g==} + '@walletconnect/core@2.13.3': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -11025,16 +18094,12 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/environment@1.0.1: - resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + '@walletconnect/environment@1.0.1': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/ethereum-provider@2.13.0(react@18.3.1): - resolution: {integrity: sha512-dnpW8mmLpWl1AZUYGYZpaAfGw1HFkL0WSlhk5xekx3IJJKn4pLacX2QeIOo0iNkzNQxZfux1AK4Grl1DvtzZEA==} + '@walletconnect/ethereum-provider@2.13.0(react@18.3.1)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -11066,10 +18131,8 @@ packages: - react - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/ethereum-provider@2.13.3(react@18.3.1): - resolution: {integrity: sha512-gThsYguFJ7XZp18GP23W6TooQaS6XlF4faFDXPCQVqlWjzEatkkQ2R6Hhv4a4qk4D21qNXirCFnI59Xhbj0KJQ==} + '@walletconnect/ethereum-provider@2.13.3(react@18.3.1)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -11101,33 +18164,25 @@ packages: - react - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/events@1.0.1: - resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + '@walletconnect/events@1.0.1': dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 - dev: false - /@walletconnect/heartbeat@1.2.1: - resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + '@walletconnect/heartbeat@1.2.1': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/time': 1.0.2 tslib: 1.14.1 - dev: false - /@walletconnect/heartbeat@1.2.2: - resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} + '@walletconnect/heartbeat@1.2.2': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/time': 1.0.2 events: 3.3.0 - dev: false - /@walletconnect/jsonrpc-http-connection@1.0.8: - resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} + '@walletconnect/jsonrpc-http-connection@1.0.8': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 @@ -11135,40 +18190,30 @@ packages: events: 3.3.0 transitivePeerDependencies: - encoding - dev: false - /@walletconnect/jsonrpc-provider@1.0.14: - resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} + '@walletconnect/jsonrpc-provider@1.0.14': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - dev: false - /@walletconnect/jsonrpc-types@1.0.3: - resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + '@walletconnect/jsonrpc-types@1.0.3': dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 - dev: false - /@walletconnect/jsonrpc-types@1.0.4: - resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} + '@walletconnect/jsonrpc-types@1.0.4': dependencies: events: 3.3.0 keyvaluestorage-interface: 1.0.0 - dev: false - /@walletconnect/jsonrpc-utils@1.0.8: - resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + '@walletconnect/jsonrpc-utils@1.0.8': dependencies: '@walletconnect/environment': 1.0.1 '@walletconnect/jsonrpc-types': 1.0.4 tslib: 1.14.1 - dev: false - /@walletconnect/jsonrpc-ws-connection@1.0.14: - resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} + '@walletconnect/jsonrpc-ws-connection@1.0.14': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 @@ -11177,15 +18222,8 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /@walletconnect/keyvaluestorage@1.1.1: - resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} - peerDependencies: - '@react-native-async-storage/async-storage': 1.x - peerDependenciesMeta: - '@react-native-async-storage/async-storage': - optional: true + '@walletconnect/keyvaluestorage@1.1.1': dependencies: '@walletconnect/safe-json': 1.0.2 idb-keyval: 6.2.1 @@ -11204,26 +18242,20 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/logger@2.1.2: - resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + '@walletconnect/logger@2.1.2': dependencies: '@walletconnect/safe-json': 1.0.2 pino: 7.11.0 - dev: false - /@walletconnect/modal-core@2.6.2(react@18.3.1): - resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + '@walletconnect/modal-core@2.6.2(react@18.3.1)': dependencies: valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react - dev: false - /@walletconnect/modal-ui@2.6.2(react@18.3.1): - resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + '@walletconnect/modal-ui@2.6.2(react@18.3.1)': dependencies: '@walletconnect/modal-core': 2.6.2(react@18.3.1) lit: 2.8.0 @@ -11232,26 +18264,20 @@ packages: transitivePeerDependencies: - '@types/react' - react - dev: false - /@walletconnect/modal@2.6.2(react@18.3.1): - resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + '@walletconnect/modal@2.6.2(react@18.3.1)': dependencies: '@walletconnect/modal-core': 2.6.2(react@18.3.1) '@walletconnect/modal-ui': 2.6.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react - dev: false - /@walletconnect/relay-api@1.0.10: - resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} + '@walletconnect/relay-api@1.0.10': dependencies: '@walletconnect/jsonrpc-types': 1.0.4 - dev: false - /@walletconnect/relay-auth@1.0.4: - resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + '@walletconnect/relay-auth@1.0.4': dependencies: '@stablelib/ed25519': 1.0.3 '@stablelib/random': 1.0.2 @@ -11259,16 +18285,12 @@ packages: '@walletconnect/time': 1.0.2 tslib: 1.14.1 uint8arrays: 3.1.0 - dev: false - /@walletconnect/safe-json@1.0.2: - resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + '@walletconnect/safe-json@1.0.2': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/sign-client@2.13.0: - resolution: {integrity: sha512-En7KSvNUlQFx20IsYGsFgkNJ2lpvDvRsSFOT5PTdGskwCkUfOpB33SQJ6nCrN19gyoKPNvWg80Cy6MJI0TjNYA==} + '@walletconnect/sign-client@2.13.0': dependencies: '@walletconnect/core': 2.13.0 '@walletconnect/events': 1.0.1 @@ -11297,10 +18319,8 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/sign-client@2.13.3: - resolution: {integrity: sha512-3Pcq6trHWdBZn5X0VUFQ3zJaaqyEbMW9WNVKcZ2SakIpQAwySd08Mztvq48G98jfucdgP3tjGPbBvzHX9vJX7w==} + '@walletconnect/sign-client@2.13.3': dependencies: '@walletconnect/core': 2.13.3 '@walletconnect/events': 1.0.1 @@ -11329,16 +18349,12 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/time@1.0.2: - resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + '@walletconnect/time@1.0.2': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/types@2.12.0: - resolution: {integrity: sha512-uhB3waGmujQVJcPgJvGOpB8RalgYSBT+HpmVbfl4Qe0xJyqpRUo4bPjQa0UYkrHaW20xIw94OuP4+FMLYdeemg==} + '@walletconnect/types@2.12.0': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -11361,10 +18377,8 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/types@2.13.0: - resolution: {integrity: sha512-MWaVT0FkZwzYbD3tvk8F+2qpPlz1LUSWHuqbINUtMXnSzJtXN49Y99fR7FuBhNFtDalfuWsEK17GrNA+KnAsPQ==} + '@walletconnect/types@2.13.0': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 @@ -11387,10 +18401,8 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/types@2.13.3: - resolution: {integrity: sha512-9UdtLoQqwGFfepCPprUAXeUbKg9zyDarPRmEJVco51OWXHCOpvRgroWk54fQHDhCUIfDELjObY6XNAzNrmNYUA==} + '@walletconnect/types@2.13.3': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 @@ -11413,10 +18425,8 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/universal-provider@2.13.0: - resolution: {integrity: sha512-B5QvO8pnk5Bqn4aIt0OukGEQn2Auk9VbHfhQb9cGwgmSCd1GlprX/Qblu4gyT5+TjHMb1Gz5UssUaZWTWbDhBg==} + '@walletconnect/universal-provider@2.13.0': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -11445,10 +18455,8 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/universal-provider@2.13.3: - resolution: {integrity: sha512-2tuV2d8AdB4Fg/uMs8IdNHrjYy1Tz1uT5kzaT8X1/wx5DHHa/oaheoY5kDZHI0L1oNIg/OlM0/ovonGIcI5ddw==} + '@walletconnect/universal-provider@2.13.3': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -11477,10 +18485,8 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/utils@2.12.0: - resolution: {integrity: sha512-GIpfHUe1Bjp1Tjda0SkJEizKOT2biuv7VPFnKsOLT1T+8QxEP9NruC+K2UUEvijS1Qr/LKH9P5004RYNgrch+w==} + '@walletconnect/utils@2.12.0': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -11511,10 +18517,8 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/utils@2.13.0: - resolution: {integrity: sha512-q1eDCsRHj5iLe7fF8RroGoPZpdo2CYMZzQSrw1iqL+2+GOeqapxxuJ1vaJkmDUkwgklfB22ufqG6KQnz78sD4w==} + '@walletconnect/utils@2.13.0': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -11545,10 +18549,8 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/utils@2.13.3: - resolution: {integrity: sha512-hjyyNhnhTCezGNr6OCfKRzqRsiak+p+YP57iRo1Tsf222fsj/9JD++MP97YiDwc4e4xXaZp/boiLB+8hJHsCog==} + '@walletconnect/utils@2.13.3': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -11579,37 +18581,27 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/window-getters@1.0.1: - resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + '@walletconnect/window-getters@1.0.1': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/window-metadata@1.0.1: - resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + '@walletconnect/window-metadata@1.0.1': dependencies: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 - dev: false - /@web3modal/common@4.2.3: - resolution: {integrity: sha512-n0lvhoRjViqxmkgpy+iEM6E3HBylUgdxUDJU4hUxGmmrbGZGEP7USBRnQOEgXLqLCtWvxKjUAO33JBV/De+Osw==} + '@web3modal/common@4.2.3': dependencies: bignumber.js: 9.1.2 dayjs: 1.11.10 - dev: false - /@web3modal/common@5.1.0: - resolution: {integrity: sha512-TIYncrKDnFKE+q0mudzVCvGOZdNWa0kzkp+iL0zpbHm9sL+ceV4eOCip09Xcvrb5HeaBv1ROgAMPGLmpVCO3AA==} + '@web3modal/common@5.1.0': dependencies: bignumber.js: 9.1.2 dayjs: 1.11.10 - dev: false - /@web3modal/core@4.2.3(react@18.3.1): - resolution: {integrity: sha512-UykKZTELBpb6ey+IV6fkHWsLkjrIdILmRYzhlznyTPbm9qX5pOR9tH0Z3QGUo7YPFmUqMRH1tC9Irsr3SgIbbw==} + '@web3modal/core@4.2.3(react@18.3.1)': dependencies: '@web3modal/common': 4.2.3 '@web3modal/wallet': 4.2.3 @@ -11617,24 +18609,12 @@ packages: transitivePeerDependencies: - '@types/react' - react - dev: false - /@web3modal/polyfills@4.2.3: - resolution: {integrity: sha512-RiGxh2hMLSD1s2aTjoejNK/UL377CJhGf5tzmdF1m5xsYHpil+Dnulpio8Yojnm27cOqQD+QiaYUKnHOxErLjQ==} + '@web3modal/polyfills@4.2.3': dependencies: buffer: 6.0.3 - dev: false - /@web3modal/scaffold-react@4.2.3(react@18.3.1): - resolution: {integrity: sha512-WRA244mO3qa9wnJtRa+mfXHkfW92VEkEt+HagLQuUcSRTQJH0Q95UF+EXZZ/r1mKbqdqIbpguewuF0dRtL/YrQ==} - peerDependencies: - react: '>=17' - react-dom: '>=17' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@web3modal/scaffold-react@4.2.3(react@18.3.1)': dependencies: '@web3modal/scaffold': 4.2.3(react@18.3.1) react: 18.3.1 @@ -11654,10 +18634,8 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@web3modal/scaffold-utils@4.2.3(react@18.3.1): - resolution: {integrity: sha512-z6t0ggYg1/8hpaKHUm77z2VyacjIZEZTI8IHSQYmHuRFGu5oDPJeAr1thr475JXdoGLYr08hwquZyed/ZINAvw==} + '@web3modal/scaffold-utils@4.2.3(react@18.3.1)': dependencies: '@web3modal/core': 4.2.3(react@18.3.1) '@web3modal/polyfills': 4.2.3 @@ -11665,15 +18643,8 @@ packages: transitivePeerDependencies: - '@types/react' - react - dev: false - /@web3modal/scaffold-vue@4.2.3(react@18.3.1): - resolution: {integrity: sha512-0mlx/t0A7srcuFcxP3xuUt2ACFUUcAhyRIsNImtQHPq7QHx7i5zvabQ38iplDsWS0TA7j83hW5gxHycppa5PXg==} - peerDependencies: - vue: '>=3' - peerDependenciesMeta: - vue: - optional: true + '@web3modal/scaffold-vue@4.2.3(react@18.3.1)': dependencies: '@web3modal/scaffold': 4.2.3(react@18.3.1) transitivePeerDependencies: @@ -11693,10 +18664,8 @@ packages: - ioredis - react - uWebSockets.js - dev: false - /@web3modal/scaffold@4.2.3(react@18.3.1): - resolution: {integrity: sha512-8K+IV+luDUvppKgmlgdA+RbQGT2STdRrgHVHFRsAqsORFoLiIYvlrpQlxvV7J5Xc1bgKEn3KvEXC+BH2NMqF4w==} + '@web3modal/scaffold@4.2.3(react@18.3.1)': dependencies: '@web3modal/common': 4.2.3 '@web3modal/core': 4.2.3(react@18.3.1) @@ -11721,10 +18690,8 @@ packages: - ioredis - react - uWebSockets.js - dev: false - /@web3modal/siwe@4.2.3(react@18.3.1): - resolution: {integrity: sha512-uPma0U/OxAy3LwnF7pCYYX8tn+ONBYNcssuVZxEGsusJD1kF4ueS8lK7eyQogyK5nXqOGdNESOjY1NImNNjMVw==} + '@web3modal/siwe@4.2.3(react@18.3.1)': dependencies: '@walletconnect/utils': 2.12.0 '@web3modal/core': 4.2.3(react@18.3.1) @@ -11748,31 +18715,13 @@ packages: - ioredis - react - uWebSockets.js - dev: false - /@web3modal/ui@4.2.3: - resolution: {integrity: sha512-QPPgE0hii1gpAldTdnrP63D/ryI78Ohz99zRBp8vi81lawot7rbdUbryMoX13hMPCW9vW7JYyvX+jJN7uO3QwA==} + '@web3modal/ui@4.2.3': dependencies: lit: 3.1.0 qrcode: 1.5.3 - dev: false - /@web3modal/wagmi@4.2.3(@wagmi/connectors@4.3.10)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5): - resolution: {integrity: sha512-oisBCMrOYn8TBgNaSPrumvMmTGox6+3Ii92zxQJalW5U/K9iBTxoejHT033Ss7mFEFybilcfXBAvGNFXfQmtkA==} - peerDependencies: - '@wagmi/connectors': '>=4' - '@wagmi/core': '>=2.0.0' - react: '>=17' - react-dom: '>=17' - viem: '>=2.0.0' - vue: '>=3' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - vue: - optional: true + '@web3modal/wagmi@4.2.3(@wagmi/connectors@4.3.10)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5)': dependencies: '@wagmi/connectors': 4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) @@ -11804,24 +18753,8 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@web3modal/wagmi@4.2.3(@wagmi/connectors@5.0.21)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5): - resolution: {integrity: sha512-oisBCMrOYn8TBgNaSPrumvMmTGox6+3Ii92zxQJalW5U/K9iBTxoejHT033Ss7mFEFybilcfXBAvGNFXfQmtkA==} - peerDependencies: - '@wagmi/connectors': '>=4' - '@wagmi/core': '>=2.0.0' - react: '>=17' - react-dom: '>=17' - viem: '>=2.0.0' - vue: '>=3' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - vue: - optional: true + '@web3modal/wagmi@4.2.3(@wagmi/connectors@5.0.21)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5)': dependencies: '@wagmi/connectors': 5.0.21(@wagmi/core@2.11.6)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) @@ -11853,300 +18786,168 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@web3modal/wallet@4.2.3: - resolution: {integrity: sha512-V+VpwmhQl9qeJMpzNkjpAaxercAsrr1O9oGRjrjD+c0q72NfdcbTalWSbjSQmqabI1M6N06Hw94FkAQuEfVGsg==} + '@web3modal/wallet@4.2.3': dependencies: '@web3modal/polyfills': 4.2.3 zod: 3.22.4 - dev: false - /@webgpu/types@0.1.21: - resolution: {integrity: sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==} - dev: false + '@webgpu/types@0.1.21': {} - /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.20.2): - resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} - engines: {node: '>=14.15.0'} - peerDependencies: - esbuild: '>=0.10.0' + '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.20.2)': dependencies: esbuild: 0.20.2 tslib: 2.6.3 - dev: true - /@yarnpkg/fslib@2.10.3: - resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + '@yarnpkg/fslib@2.10.3': dependencies: '@yarnpkg/libzip': 2.3.0 tslib: 1.14.1 - dev: true - /@yarnpkg/libzip@2.3.0: - resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + '@yarnpkg/libzip@2.3.0': dependencies: '@types/emscripten': 1.39.13 tslib: 1.14.1 - dev: true - /@zerodevx/svelte-toast@0.9.5(svelte@4.2.18): - resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} - peerDependencies: - svelte: ^3.57.0 || ^4.0.0 + '@zerodevx/svelte-toast@0.9.5(svelte@4.2.18)': dependencies: svelte: 4.2.18 - dev: false - /abitype@0.9.8(typescript@5.5.3): - resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true + abitype@0.9.8(typescript@5.5.3): dependencies: typescript: 5.5.3 - dev: false - /abitype@1.0.5(typescript@5.5.3)(zod@3.23.8): - resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true + abitype@1.0.5(typescript@5.5.3)(zod@3.23.8): dependencies: typescript: 5.5.3 zod: 3.23.8 - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 - dev: false - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - /acorn-jsx@5.3.2(acorn@8.12.0): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.12.0): dependencies: acorn: 8.12.0 - dev: true - /acorn-jsx@5.3.2(acorn@8.12.1): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 - dev: false - /acorn-walk@8.3.3: - resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} - engines: {node: '>=0.4.0'} + acorn-walk@8.3.3: dependencies: acorn: 8.12.0 - dev: true - /acorn@8.12.0: - resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn@8.12.0: {} - /acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false + acorn@8.12.1: {} - /address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - dev: true + address@1.2.2: {} - /aes-js@3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - dev: true + aes-js@3.0.0: {} - /agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} + agent-base@7.1.1: dependencies: debug: 4.3.5 transitivePeerDependencies: - supports-color - dev: true - /ajv-draft-04@1.0.0(ajv@8.16.0): - resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} - peerDependencies: - ajv: ^8.5.0 - peerDependenciesMeta: - ajv: - optional: true + ajv-draft-04@1.0.0(ajv@8.16.0): dependencies: ajv: 8.16.0 - dev: false - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true - /ajv@8.16.0: - resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} + ajv@8.16.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - /anser@1.4.10: - resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} - dev: false + anser@1.4.10: {} - /ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + ansi-align@3.0.1: dependencies: string-width: 4.2.3 - dev: false - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} + ansi-colors@4.1.3: {} - /ansi-fragments@0.2.1: - resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + ansi-fragments@0.2.1: dependencies: colorette: 1.4.0 slice-ansi: 2.1.0 strip-ansi: 5.2.0 - dev: false - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: false + ansi-regex@4.1.1: {} - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@5.0.1: {} - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} + ansi-regex@6.0.1: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} + ansi-styles@5.2.0: {} - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + ansi-styles@6.2.1: {} - /antlr4@4.13.1-patch-1: - resolution: {integrity: sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==} - engines: {node: '>=16'} - dev: true + antlr4@4.13.1-patch-1: {} - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + any-promise@1.3.0: {} - /any-signal@3.0.1: - resolution: {integrity: sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==} - dev: false + any-signal@3.0.1: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /app-root-dir@1.0.2: - resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} - dev: true + app-root-dir@1.0.2: {} - /appdirsjs@1.2.7: - resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - dev: false + appdirsjs@1.2.7: {} - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true + arg@4.1.3: {} - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + arg@5.0.2: {} - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - dev: false - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + argparse@2.0.1: {} - /aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} + aria-hidden@1.2.4: dependencies: tslib: 2.6.3 - dev: true - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.0: dependencies: dequal: 2.0.3 - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: true + array-flatten@1.1.1: {} - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} + array-includes@3.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -12154,19 +18955,12 @@ packages: es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 - dev: true - /array-iterate@2.0.1: - resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - dev: false + array-iterate@2.0.1: {} - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} + array-union@2.1.0: {} - /array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} + array.prototype.findlastindex@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -12174,31 +18968,22 @@ packages: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} + array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -12208,84 +18993,48 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: true - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false + asap@2.0.6: {} - /assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + assert@2.1.0: dependencies: call-bind: 1.0.7 is-nan: 1.3.2 object-is: 1.1.6 object.assign: 4.1.5 util: 0.12.5 - dev: true - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true + assertion-error@1.1.0: {} - /ast-parents@0.0.1: - resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} - dev: true + ast-parents@0.0.1: {} - /ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} + ast-types@0.15.2: dependencies: tslib: 2.6.3 - dev: false - /ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} + ast-types@0.16.1: dependencies: tslib: 2.6.3 - dev: true - /astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - dev: false + astral-regex@1.0.0: {} - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true + astral-regex@2.0.0: {} - /astring@1.8.6: - resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} - hasBin: true - dev: false + astring@1.8.6: {} - /astro-expressive-code@0.35.6(astro@4.13.3): - resolution: {integrity: sha512-1U4KrvFuodaCV3z4I1bIR16SdhQlPkolGsYTtiANxPZUVv/KitGSCTjzksrkPonn1XuwVqvnwmUUVzTLWngnBA==} - peerDependencies: - astro: ^4.0.0-beta || ^3.3.0 + astro-expressive-code@0.35.6(astro@4.13.3): dependencies: astro: 4.13.3(typescript@5.5.3) rehype-expressive-code: 0.35.6 - dev: false - /astro-og-canvas@0.5.1(astro@4.13.3): - resolution: {integrity: sha512-Xm37vqyMu3kNRU5tm7nheJf2n8+gweuaDX4efMxPSKEggSF8UznvgreOomzAPqDbcs8LM2fQsyOcMbJFtb3aZg==} - engines: {node: '>=18.14.1'} - peerDependencies: - astro: ^3.0.0 || ^4.0.0 + astro-og-canvas@0.5.1(astro@4.13.3): dependencies: astro: 4.13.3(typescript@5.5.3) canvaskit-wasm: 0.39.1 deterministic-object-hash: 2.0.2 entities: 4.5.0 - dev: false - /astro@4.13.3(typescript@5.5.3): - resolution: {integrity: sha512-MyhmM0v5sphiVwxAm5jjKxWeuPZijWPJ8Ajdign9QzEmLWSH8vUYIJWx/dWRQ6vF1I0jXrksoj3wtw5nzXt9nw==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} - hasBin: true + astro@4.13.3(typescript@5.5.3): dependencies: '@astrojs/compiler': 2.10.2 '@astrojs/internal-helpers': 0.4.1 @@ -12361,36 +19110,20 @@ packages: - supports-color - terser - typescript - dev: false - /async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: false + async-limiter@1.0.1: {} - /async-mutex@0.2.6: - resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + async-mutex@0.2.6: dependencies: tslib: 2.6.3 - dev: false - /async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - dev: true + async@3.2.5: {} - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + asynckit@0.4.0: {} - /atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - dev: false + atomic-sleep@1.0.0: {} - /autoprefixer@10.4.19(postcss@8.4.39): - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 + autoprefixer@10.4.19(postcss@8.4.39): dependencies: browserslist: 4.23.1 caniuse-lite: 1.0.30001639 @@ -12400,12 +19133,7 @@ packages: postcss: 8.4.39 postcss-value-parser: 4.2.0 - /autoprefixer@10.4.19(postcss@8.4.41): - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 + autoprefixer@10.4.19(postcss@8.4.41): dependencies: browserslist: 4.23.1 caniuse-lite: 1.0.30001639 @@ -12414,54 +19142,34 @@ packages: picocolors: 1.0.1 postcss: 8.4.41 postcss-value-parser: 4.2.0 - dev: true - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - /axios@1.7.2(debug@4.3.5): - resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} + axios@1.7.2(debug@4.3.5): dependencies: follow-redirects: 1.15.6(debug@4.3.5) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /axobject-query@4.0.0: - resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} + axobject-query@4.0.0: dependencies: dequal: 2.0.3 - /axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - dev: false + axobject-query@4.1.0: {} - /babel-core@7.0.0-bridge.0(@babel/core@7.24.7): - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-core@7.0.0-bridge.0(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 - dev: true - /babel-core@7.0.0-bridge.0(@babel/core@7.25.2): - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-core@7.0.0-bridge.0(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 - dev: false - /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.7): - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.7): dependencies: '@babel/compat-data': 7.24.7 '@babel/core': 7.24.7 @@ -12469,12 +19177,8 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): dependencies: '@babel/compat-data': 7.24.7 '@babel/core': 7.25.2 @@ -12482,166 +19186,106 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.7): - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.7): - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.2): - resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.2): dependencies: '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - '@babel/core' - dev: false - /bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: false + bail@2.0.2: {} - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base-64@1.0.0: - resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} - dev: false + base-64@1.0.0: {} - /base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + base-x@3.0.9: dependencies: safe-buffer: 5.2.1 - dev: false - /base-x@4.0.0: - resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} - dev: false + base-x@4.0.0: {} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64-js@1.5.1: {} - /bcp-47-match@2.0.3: - resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} - dev: false + bcp-47-match@2.0.3: {} - /bcp-47@2.1.0: - resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} + bcp-47@2.1.0: dependencies: is-alphabetical: 2.0.1 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 - dev: false - /bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - dev: true + bech32@1.1.4: {} - /better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} + better-opn@3.0.2: dependencies: open: 8.4.2 - dev: true - /better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 - dev: false - /big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - dev: true + big-integer@1.6.52: {} - /bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - dev: false + bignumber.js@9.1.2: {} - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} + binary-extensions@2.3.0: {} - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - /bl@5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + bl@5.1.0: dependencies: buffer: 6.0.3 inherits: 2.0.4 readable-stream: 3.6.2 - /blakejs@1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - dev: false + blakejs@1.2.1: {} - /blob-to-it@2.0.7: - resolution: {integrity: sha512-mFAR/GKDDqFOkSBB7shXfsUZwU5DgK453++I8/SImNacfJsdKlx/oHTO0T4ZYHz8A2dnSONE+CX8L29VlWGKiQ==} + blob-to-it@2.0.7: dependencies: browser-readablestream-to-it: 2.0.7 - dev: false - /bn.js@4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - dev: false + bn.js@4.11.6: {} - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + bn.js@4.12.0: {} - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + bn.js@5.2.1: {} - /body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -12657,19 +19301,12 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: true - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: false + boolbase@1.0.0: {} - /bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - dev: false + bowser@2.11.0: {} - /boxen@7.1.1: - resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} - engines: {node: '>=14.16'} + boxen@7.1.1: dependencies: ansi-align: 3.0.1 camelcase: 7.0.1 @@ -12679,49 +19316,33 @@ packages: type-fest: 2.19.0 widest-line: 4.0.1 wrap-ansi: 8.1.0 - dev: false - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} + bplist-parser@0.2.0: dependencies: big-integer: 1.6.52 - dev: true - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - /braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + braces@3.0.3: dependencies: fill-range: 7.1.1 - /brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + brorand@1.1.0: {} - /browser-assert@1.2.1: - resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - dev: true + browser-assert@1.2.1: {} - /browser-readablestream-to-it@1.0.3: - resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} - dev: false + browser-readablestream-to-it@1.0.3: {} - /browser-readablestream-to-it@2.0.7: - resolution: {integrity: sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg==} - dev: false + browser-readablestream-to-it@2.0.7: {} - /browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + browserify-aes@1.2.0: dependencies: buffer-xor: 1.0.3 cipher-base: 1.0.4 @@ -12729,134 +19350,83 @@ packages: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /browserify-zlib@0.1.4: - resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + browserify-zlib@0.1.4: dependencies: pako: 0.2.9 - dev: true - /browserslist@4.23.1: - resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.23.1: dependencies: caniuse-lite: 1.0.30001639 electron-to-chromium: 1.4.816 node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.1) - /bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + bs58@4.0.1: dependencies: base-x: 3.0.9 - dev: false - /bs58@5.0.0: - resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + bs58@5.0.0: dependencies: base-x: 4.0.0 - dev: false - /bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + bs58check@2.1.2: dependencies: bs58: 4.0.1 create-hash: 1.2.0 safe-buffer: 5.2.1 - dev: false - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + bser@2.1.1: dependencies: node-int64: 0.4.0 - dev: false - /buffer-crc32@1.0.0: - resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} - engines: {node: '>=8.0.0'} - dev: true + buffer-crc32@1.0.0: {} - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer-from@1.1.2: {} - /buffer-reverse@1.0.1: - resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} - dev: false + buffer-reverse@1.0.1: {} - /buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: false + buffer-xor@1.0.3: {} - /buffer@5.6.0: - resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + buffer@5.6.0: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - /bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - requiresBuild: true + bufferutil@4.0.8: dependencies: node-gyp-build: 4.8.1 - dev: false - /builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: true + builtin-modules@3.3.0: {} - /builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + builtins@5.1.0: dependencies: semver: 7.6.3 - dev: true - /bundle-require@4.2.1(esbuild@0.19.12): - resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' + bundle-require@4.2.1(esbuild@0.19.12): dependencies: esbuild: 0.19.12 load-tsconfig: 0.2.5 - /bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} + bytes@3.0.0: {} - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: true + bytes@3.1.2: {} - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} + cac@6.7.14: {} - /cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} - dev: true + cacheable-lookup@7.0.0: {} - /cacheable-request@10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} - engines: {node: '>=14.16'} + cacheable-request@10.2.14: dependencies: '@types/http-cache-semantics': 4.0.4 get-stream: 6.0.1 @@ -12865,11 +19435,8 @@ packages: mimic-response: 4.0.0 normalize-url: 8.0.1 responselike: 3.0.0 - dev: true - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 @@ -12877,74 +19444,39 @@ packages: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - /call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} - dev: false + call-me-maybe@1.0.2: {} - /caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} + caller-callsite@2.0.0: dependencies: callsites: 2.0.0 - dev: false - /caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} + caller-path@2.0.0: dependencies: caller-callsite: 2.0.0 - dev: false - /callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - dev: false + callsites@2.0.0: {} - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + callsites@3.1.0: {} - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + camelcase-css@2.0.1: {} - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: false + camelcase@5.3.1: {} - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: false + camelcase@6.3.0: {} - /camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - dev: false + camelcase@7.0.1: {} - /caniuse-lite@1.0.30001639: - resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==} + caniuse-lite@1.0.30001639: {} - /canvaskit-wasm@0.39.1: - resolution: {integrity: sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==} + canvaskit-wasm@0.39.1: dependencies: '@webgpu/types': 0.1.21 - dev: false - /cborg@4.2.2: - resolution: {integrity: sha512-A0z7WhnY4HDLrVdnQI4i/OLG3kANHotk5NzDpr2iauf4xrmQPwJCxlbCnIXkVrFtsr8G3omfvvr5oF50i1Zt8g==} - hasBin: true - dev: false + cborg@4.2.2: {} - /ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: false + ccount@2.0.1: {} - /chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} + chai@4.4.1: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 @@ -12953,67 +19485,42 @@ packages: loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 - dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chalk@5.3.0: {} - /change-case@5.4.4: - resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + change-case@5.4.4: {} - /character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: false + character-entities-html4@2.1.0: {} - /character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: false + character-entities-legacy@3.0.0: {} - /character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: false + character-entities@2.0.2: {} - /character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: false + character-reference-invalid@2.0.1: {} - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: false + chardet@0.7.0: {} - /check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 - dev: true - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 braces: 3.0.3 @@ -13025,32 +19532,13 @@ packages: optionalDependencies: fsevents: 2.3.3 - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: true + chownr@1.1.4: {} - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: true + chownr@2.0.0: {} - /chromatic@11.5.4: - resolution: {integrity: sha512-+J+CopeUSyGUIQJsU6X7CfvSmeVBs0j6LZ9AgF4+XTjI4pFmUiUXsTc00rH9x9W1jCppOaqDXv2kqJJXGDK3mA==} - hasBin: true - peerDependencies: - '@chromatic-com/cypress': ^0.*.* || ^1.0.0 - '@chromatic-com/playwright': ^0.*.* || ^1.0.0 - peerDependenciesMeta: - '@chromatic-com/cypress': - optional: true - '@chromatic-com/playwright': - optional: true - dev: true + chromatic@11.5.4: {} - /chrome-launcher@0.15.2: - resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} - engines: {node: '>=12.13.0'} - hasBin: true + chrome-launcher@0.15.2: dependencies: '@types/node': 20.14.9 escape-string-regexp: 4.0.0 @@ -13058,41 +19546,25 @@ packages: lighthouse-logger: 1.4.2 transitivePeerDependencies: - supports-color - dev: false - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - - /ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} + ci-info@2.0.0: {} - /ci-info@4.0.0: - resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} - engines: {node: '>=8'} - dev: false + ci-info@3.9.0: {} - /cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + ci-info@4.0.0: {} + + cipher-base@1.0.4: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + citty@0.1.6: dependencies: consola: 3.2.3 - /cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - dev: false + cli-boxes@3.0.0: {} - /cli-color@2.0.4: - resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} - engines: {node: '>=0.10'} + cli-color@2.0.4: dependencies: d: 1.0.2 es5-ext: 0.10.64 @@ -13100,90 +19572,57 @@ packages: memoizee: 0.4.17 timers-ext: 0.1.8 - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 - /cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 - /cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} + cli-spinners@2.9.2: {} - /cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} + cli-table3@0.6.5: dependencies: string-width: 4.2.3 optionalDependencies: '@colors/colors': 1.5.0 - dev: true - /clipboardy@4.0.0: - resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} - engines: {node: '>=18'} + clipboardy@4.0.0: dependencies: execa: 8.0.1 is-wsl: 3.1.0 is64bit: 2.0.0 - dev: false - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@6.0.0: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - dev: false - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: false - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} + clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} + clone@1.0.4: {} - /clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false + clsx@1.2.1: {} - /clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - dev: false + clsx@2.1.1: {} - /code-block-writer@12.0.0: - resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} - dev: true + code-block-writer@12.0.0: {} - /code-error-fragment@0.0.230: - resolution: {integrity: sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==} - engines: {node: '>= 4'} - dev: false + code-error-fragment@0.0.230: {} - /code-red@1.0.4: - resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + code-red@1.0.4: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 '@types/estree': 1.0.5 @@ -13191,103 +19630,61 @@ packages: estree-walker: 3.0.3 periscopic: 3.1.0 - /collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - dev: false + collapse-white-space@2.1.0: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color-string@1.9.1: dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 - dev: false - /color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} + color@4.2.3: dependencies: color-convert: 2.0.1 color-string: 1.9.1 - dev: false - /colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - dev: false + colorette@1.4.0: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - /comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: false + comma-separated-tokens@2.0.3: {} - /command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + command-exists@1.2.9: {} - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: true + commander@10.0.1: {} - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false + commander@2.20.3: {} - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + commander@4.1.1: {} - /commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - dev: true + commander@6.2.1: {} - /commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - dev: true + commander@8.3.0: {} - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: false + commander@9.5.0: {} - /common-ancestor-path@1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - dev: false + common-ancestor-path@1.0.1: {} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + commondir@1.0.1: {} - /compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} + compressible@2.0.18: dependencies: mime-db: 1.52.0 - /compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} + compression@1.7.4: dependencies: accepts: 1.3.8 bytes: 3.0.0 @@ -13299,22 +19696,16 @@ packages: transitivePeerDependencies: - supports-color - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-map@0.0.1: {} - /confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + confbox@0.1.7: {} - /config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + config-chain@1.1.13: dependencies: ini: 1.3.8 proto-list: 1.2.4 - dev: true - /connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} + connect@3.7.0: dependencies: debug: 2.6.9 finalhandler: 1.1.2 @@ -13322,94 +19713,57 @@ packages: utils-merge: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} + consola@3.2.3: {} - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 - dev: true - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - dev: true + content-type@1.0.5: {} - /convert-csv-to-json@2.48.0: - resolution: {integrity: sha512-XkmztvCyY1qbUA1dlait7fmazAS0vDhYOzhMu90NPMvqBVY0/2GmAW1XzTzlKPpW5K/4ZaTKEO2Jb7e4saIQxg==} + convert-csv-to-json@2.48.0: {} - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + convert-source-map@2.0.0: {} - /cookie-es@1.1.0: - resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} - dev: false + cookie-es@1.1.0: {} - /cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - dev: true + cookie-signature@1.0.6: {} - /cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} + cookie@0.6.0: {} - /core-js-compat@3.37.1: - resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + core-js-compat@3.37.1: dependencies: browserslist: 4.23.1 - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + core-util-is@1.0.3: {} - /cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} + cosmiconfig@5.2.1: dependencies: import-fresh: 2.0.0 is-directory: 0.3.1 js-yaml: 3.14.1 parse-json: 4.0.0 - dev: false - /cosmiconfig@8.3.6(typescript@5.5.3): - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true + cosmiconfig@8.3.6(typescript@5.5.3): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 typescript: 5.5.3 - dev: true - /crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - dev: false + crc-32@1.2.2: {} - /create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + create-hash@1.2.0: dependencies: cipher-base: 1.0.4 inherits: 2.0.4 md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 - dev: false - /create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + create-hmac@1.1.7: dependencies: cipher-base: 1.0.4 create-hash: 1.2.0 @@ -13417,125 +19771,78 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: false - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true + create-require@1.1.1: {} - /cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + cross-fetch@3.1.8: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - /cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + cross-fetch@4.0.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - dev: false - /cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + cross-spawn@5.1.0: dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 - dev: false - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - /crossws@0.2.4: - resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} - peerDependencies: - uWebSockets.js: '*' - peerDependenciesMeta: - uWebSockets.js: - optional: true - dev: false + crossws@0.2.4: {} - /crypto-js@3.3.0: - resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} - dev: true + crypto-js@3.3.0: {} - /crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - dev: false + crypto-js@4.2.0: {} - /crypto-random-string@4.0.0: - resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} - engines: {node: '>=12'} + crypto-random-string@4.0.0: dependencies: type-fest: 1.4.0 - dev: true - /css-selector-parser@3.0.5: - resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} - dev: false + css-selector-parser@3.0.5: {} - /css-selector-tokenizer@0.8.0: - resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} + css-selector-tokenizer@0.8.0: dependencies: cssesc: 3.0.0 fastparse: 1.1.2 - /css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@2.3.1: dependencies: mdn-data: 2.0.30 source-map-js: 1.2.0 - /css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - dev: true + css.escape@1.5.1: {} - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true + cssesc@3.0.0: {} - /cssstyle@4.0.1: - resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} - engines: {node: '>=18'} + cssstyle@4.0.1: dependencies: rrweb-cssom: 0.6.0 - dev: true - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dev: true + csstype@3.1.3: {} - /culori@3.3.0: - resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + culori@3.3.0: {} - /d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} + d@1.0.2: dependencies: es5-ext: 0.10.64 type: 2.7.3 - /dag-jose@4.0.0: - resolution: {integrity: sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA==} + dag-jose@4.0.0: dependencies: '@ipld/dag-cbor': 9.2.1 multiformats: 11.0.2 - dev: false - /daisyui@4.12.10(postcss@8.4.39): - resolution: {integrity: sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==} - engines: {node: '>=16.9.0'} + daisyui@4.12.10(postcss@8.4.39): dependencies: css-selector-tokenizer: 0.8.0 culori: 3.3.0 @@ -13544,9 +19851,7 @@ packages: transitivePeerDependencies: - postcss - /daisyui@4.12.10(postcss@8.4.41): - resolution: {integrity: sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==} - engines: {node: '>=16.9.0'} + daisyui@4.12.10(postcss@8.4.41): dependencies: css-selector-tokenizer: 0.8.0 culori: 3.3.0 @@ -13554,315 +19859,171 @@ packages: postcss-js: 4.0.1(postcss@8.4.41) transitivePeerDependencies: - postcss - dev: false - /data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} + data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - dev: true - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} + data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} + data-view-byte-length@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.0: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} + date-fns@2.30.0: dependencies: '@babel/runtime': 7.24.7 - dev: false - /dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dev: false + dayjs@1.11.10: {} - /dayjs@1.11.11: - resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} - dev: false + dayjs@1.11.11: {} - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@2.6.9: dependencies: ms: 2.0.0 - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@3.2.7: dependencies: ms: 2.1.3 - dev: true - /debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.5: dependencies: ms: 2.1.2 - /debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.6: dependencies: ms: 2.1.2 - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: false + decamelize@1.2.0: {} - /decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true + decimal.js@10.4.3: {} - /decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 - dev: false - /decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: false + decode-uri-component@0.2.2: {} - /decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 - dev: true - /dedent-js@1.0.1: - resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} - dev: true + dedent-js@1.0.1: {} - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dedent@0.7.0: {} - /deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} + deep-eql@4.1.4: dependencies: type-detect: 4.0.8 - dev: true - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: true + deep-extend@0.6.0: {} - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + deep-is@0.1.4: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} + deepmerge@4.3.1: {} - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} + default-browser-id@3.0.0: dependencies: bplist-parser: 0.2.0 untildify: 4.0.0 - dev: true - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@1.0.4: dependencies: clone: 1.0.4 - /defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - dev: true + defer-to-connect@2.0.1: {} - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} + define-lazy-prop@2.0.0: {} - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - dev: true - /defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.4: {} - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + delayed-stream@1.0.0: {} - /denodeify@1.2.1: - resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} - dev: false + denodeify@1.2.1: {} - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} + depd@2.0.0: {} - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + dequal@2.0.3: {} - /destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - dev: false + destr@2.0.3: {} - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + destroy@1.2.0: {} - /detect-browser@5.3.0: - resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} - dev: false + detect-browser@5.3.0: {} - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} + detect-indent@6.1.0: {} - /detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - dev: false + detect-libc@1.0.3: {} - /detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - dev: false + detect-libc@2.0.3: {} - /detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: true + detect-node-es@1.1.0: {} - /detect-package-manager@2.0.1: - resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} - engines: {node: '>=12'} + detect-package-manager@2.0.1: dependencies: execa: 5.1.1 - dev: true - /detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} - hasBin: true + detect-port@1.6.1: dependencies: address: 1.2.2 debug: 4.3.5 transitivePeerDependencies: - supports-color - dev: true - /deterministic-object-hash@2.0.2: - resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} - engines: {node: '>=18'} + deterministic-object-hash@2.0.2: dependencies: base-64: 1.0.0 - dev: false - /devalue@5.0.0: - resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} + devalue@5.0.0: {} - /devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + devlop@1.1.0: dependencies: dequal: 2.0.3 - dev: false - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + didyoumean@1.2.2: {} - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + diff-sequences@29.6.3: {} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true + diff@4.0.2: {} - /diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} + diff@5.2.0: {} - /dijkstrajs@1.0.3: - resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} - dev: false + dijkstrajs@1.0.3: {} - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - /direction@2.0.1: - resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} - hasBin: true - dev: false + direction@2.0.1: {} - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dlv@1.1.3: {} - /dns-over-http-resolver@2.1.3: - resolution: {integrity: sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==} + dns-over-http-resolver@2.1.3: dependencies: debug: 4.3.5 native-fetch: 4.0.2(undici@5.28.4) @@ -13870,136 +20031,88 @@ packages: undici: 5.28.4 transitivePeerDependencies: - supports-color - dev: false - /dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} + dns-packet@5.6.1: dependencies: '@leichtgewicht/ip-codec': 2.0.5 - dev: false - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - dev: true + dom-accessibility-api@0.5.16: {} - /dom-accessibility-api@0.6.3: - resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - dev: true + dom-accessibility-api@0.6.3: {} - /dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 entities: 2.2.0 - dev: true - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - - /domhandler@3.3.0: - resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} - engines: {node: '>= 4'} + domelementtype@2.3.0: {} + + domhandler@3.3.0: dependencies: domelementtype: 2.3.0 - dev: true - /domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} + domhandler@4.3.1: dependencies: domelementtype: 2.3.0 - dev: true - /domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + domutils@2.8.0: dependencies: dom-serializer: 1.4.1 domelementtype: 2.3.0 domhandler: 4.3.1 - dev: true - /dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} + dotenv-expand@10.0.0: {} - /dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} + dotenv@16.4.5: {} - /dset@3.1.3: - resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} - engines: {node: '>=4'} - dev: false + ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: {} - /duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + dset@3.1.3: {} + + duplexify@3.7.1: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 2.3.8 stream-shift: 1.0.3 - dev: true - /duplexify@4.1.3: - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + duplexify@4.1.3: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.3 - dev: false - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + eastasianwidth@0.2.0: {} - /eciesjs@0.3.19: - resolution: {integrity: sha512-b+PkRDZ3ym7HEcnbxc22CMVCpgsnr8+gGgST3U5PtgeX1luvINgfXW7efOyUtmn/jFtA/lg5ywBi/Uazf4oeaA==} + eciesjs@0.3.19: dependencies: '@types/secp256k1': 4.0.6 futoin-hkdf: 1.5.3 secp256k1: 5.0.0 - dev: false - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + ee-first@1.1.1: {} - /ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true + ejs@3.1.10: dependencies: jake: 10.9.1 - dev: true - /electron-fetch@1.9.1: - resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} - engines: {node: '>=6'} + electron-fetch@1.9.1: dependencies: encoding: 0.1.13 - dev: false - /electron-to-chromium@1.4.816: - resolution: {integrity: sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==} + electron-to-chromium@1.4.816: {} - /elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + elliptic@6.5.4: dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -14009,8 +20122,7 @@ packages: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - /elliptic@6.5.5: - resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} + elliptic@6.5.5: dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -14019,46 +20131,31 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false - /emmet@2.4.7: - resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} + emmet@2.4.7: dependencies: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 - dev: false - /emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} - dev: false + emoji-regex@10.3.0: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@8.0.0: {} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emoji-regex@9.2.2: {} - /encode-utf8@1.0.3: - resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} - dev: false + encode-utf8@1.0.3: {} - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} + encodeurl@1.0.2: {} - /encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 - dev: false - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.4: dependencies: once: 1.4.0 - /engine.io-client@6.5.4: - resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} + engine.io-client@6.5.4: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.5 @@ -14069,59 +20166,36 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /engine.io-parser@5.2.2: - resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} - engines: {node: '>=10.0.0'} - dev: false + engine.io-parser@5.2.2: {} - /enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - /entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true + entities@2.2.0: {} - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} + entities@4.5.0: {} - /envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true + envinfo@7.13.0: {} - /err-code@3.0.1: - resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} - dev: false + err-code@3.0.1: {} - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - /error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + error-stack-parser@2.1.4: dependencies: stackframe: 1.3.4 - dev: false - /errorhandler@1.5.1: - resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} - engines: {node: '>= 0.8'} + errorhandler@1.5.1: dependencies: accepts: 1.3.8 escape-html: 1.0.3 - dev: false - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -14169,108 +20243,72 @@ packages: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + es-errors@1.3.0: {} - /es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-module-lexer@1.5.4: {} - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 - dev: true - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 - dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.2 - dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true - /es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - requiresBuild: true + es5-ext@0.10.64: dependencies: es6-iterator: 2.0.3 es6-symbol: 3.1.4 esniff: 2.0.1 next-tick: 1.1.0 - /es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + es6-iterator@2.0.3: dependencies: d: 1.0.2 es5-ext: 0.10.64 es6-symbol: 3.1.4 - /es6-promise@3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - dev: true + es6-promise@3.3.1: {} - /es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} + es6-symbol@3.1.4: dependencies: d: 1.0.2 ext: 1.7.0 - /es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + es6-weak-map@2.0.3: dependencies: d: 1.0.2 es5-ext: 0.10.64 es6-iterator: 2.0.3 es6-symbol: 3.1.4 - /esbuild-plugin-alias@0.2.1: - resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} - dev: true + esbuild-plugin-alias@0.2.1: {} - /esbuild-register@3.5.0(esbuild@0.20.2): - resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} - peerDependencies: - esbuild: '>=0.12 <1' + esbuild-register@3.5.0(esbuild@0.20.2): dependencies: debug: 4.3.5 esbuild: 0.20.2 transitivePeerDependencies: - supports-color - dev: true - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.18.20: optionalDependencies: '@esbuild/android-arm': 0.18.20 '@esbuild/android-arm64': 0.18.20 @@ -14294,13 +20332,8 @@ packages: '@esbuild/win32-arm64': 0.18.20 '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - dev: true - /esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.19.12: optionalDependencies: '@esbuild/aix-ppc64': 0.19.12 '@esbuild/android-arm': 0.19.12 @@ -14326,11 +20359,7 @@ packages: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 - /esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.20.2: optionalDependencies: '@esbuild/aix-ppc64': 0.20.2 '@esbuild/android-arm': 0.20.2 @@ -14355,13 +20384,8 @@ packages: '@esbuild/win32-arm64': 0.20.2 '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 - dev: true - /esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 '@esbuild/android-arm': 0.21.5 @@ -14387,94 +20411,43 @@ packages: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} + escalade@3.1.2: {} - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-html@1.0.3: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + escape-string-regexp@1.0.5: {} - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} + escape-string-regexp@2.0.0: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + escape-string-regexp@4.0.0: {} - /escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - dev: false + escape-string-regexp@5.0.0: {} - /eslint-compat-utils@0.5.1(eslint@8.57.0): - resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' + eslint-compat-utils@0.5.1(eslint@8.57.0): dependencies: eslint: 8.57.0 semver: 7.6.2 - dev: true - /eslint-config-prettier@9.1.0(eslint@8.57.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@9.1.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0): - resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) eslint-plugin-promise: 6.4.0(eslint@8.57.0) - dev: true - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 is-core-module: 2.14.0 resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): dependencies: '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) debug: 3.2.7 @@ -14482,40 +20455,21 @@ packages: eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - dev: true - /eslint-plugin-es-x@7.8.0(eslint@8.57.0): - resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' + eslint-plugin-es-x@7.8.0(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.11.0 eslint: 8.57.0 eslint-compat-utils: 0.5.1(eslint@8.57.0) - dev: true - /eslint-plugin-es@3.0.1(eslint@8.57.0): - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' + eslint-plugin-es@3.0.1(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-utils: 2.1.0 regexpp: 3.2.0 - dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0): dependencies: '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) array-includes: 3.1.8 @@ -14540,13 +20494,8 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-n@16.6.2(eslint@8.57.0): - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - eslint: '>=7.0.0' + eslint-plugin-n@16.6.2(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) builtins: 5.1.0 @@ -14560,13 +20509,8 @@ packages: minimatch: 3.1.2 resolve: 1.22.8 semver: 7.6.3 - dev: true - /eslint-plugin-node@11.1.0(eslint@8.57.0): - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' + eslint-plugin-node@11.1.0(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-plugin-es: 3.0.1(eslint@8.57.0) @@ -14575,51 +20519,24 @@ packages: minimatch: 3.1.2 resolve: 1.22.8 semver: 6.3.1 - dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2): - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true + eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2): dependencies: eslint: 8.57.0 eslint-config-prettier: 9.1.0(eslint@8.57.0) prettier: 3.3.2 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 - dev: true - /eslint-plugin-promise@6.4.0(eslint@8.57.0): - resolution: {integrity: sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-plugin-promise@6.4.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-plugin-simple-import-sort@12.1.0(eslint@8.57.0): - resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} - peerDependencies: - eslint: '>=5.0.0' + eslint-plugin-simple-import-sort@12.1.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.5.3): - resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} - engines: {node: '>= 18'} - peerDependencies: - eslint: '>=6' + eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.5.3): dependencies: '@storybook/csf': 0.0.1 '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) @@ -14629,17 +20546,8 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /eslint-plugin-svelte@2.41.0(eslint@8.57.0)(svelte@4.2.18): - resolution: {integrity: sha512-gjU9Q/psxbWG1VNwYbEb0Q6U4W5PBGaDpYmO2zlQ+zlAMVS3Qt0luAK0ACi/tMSwRK6JENiySvMyJbO0YWmXSg==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.155 - peerDependenciesMeta: - svelte: - optional: true + eslint-plugin-svelte@2.41.0(eslint@8.57.0)(svelte@4.2.18): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 @@ -14656,60 +20564,33 @@ packages: svelte-eslint-parser: 0.39.2(svelte@4.2.18) transitivePeerDependencies: - ts-node - dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} + eslint-utils@2.1.0: dependencies: eslint-visitor-keys: 1.3.0 - dev: true - /eslint-utils@3.0.0(eslint@8.4.1): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' + eslint-utils@3.0.0(eslint@8.4.1): dependencies: eslint: 8.4.1 eslint-visitor-keys: 2.1.0 - dev: true - /eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - dev: true + eslint-visitor-keys@1.3.0: {} - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true + eslint-visitor-keys@2.1.0: {} - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.3: {} - /eslint@8.4.1: - resolution: {integrity: sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.4.1: dependencies: '@eslint/eslintrc': 1.4.1 '@humanwhocodes/config-array': 0.9.5 @@ -14751,12 +20632,8 @@ packages: v8-compile-cache: 2.4.0 transitivePeerDependencies: - supports-color - dev: true - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.11.0 @@ -14798,121 +20675,77 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /esm-env@1.0.0: - resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} - dev: true + esm-env@1.0.0: {} - /esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} + esniff@2.0.1: dependencies: d: 1.0.2 es5-ext: 0.10.64 event-emitter: 0.3.5 type: 2.7.3 - /espree@9.2.0: - resolution: {integrity: sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.2.0: dependencies: acorn: 8.12.0 acorn-jsx: 5.3.2(acorn@8.12.0) eslint-visitor-keys: 3.4.3 - dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: dependencies: acorn: 8.12.0 acorn-jsx: 5.3.2(acorn@8.12.0) eslint-visitor-keys: 3.4.3 - dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true + esprima@4.0.1: {} - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + esquery@1.5.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true + estraverse@4.3.0: {} - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true + estraverse@5.3.0: {} - /estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + estree-util-attach-comments@3.0.0: dependencies: '@types/estree': 1.0.5 - dev: false - /estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + estree-util-build-jsx@3.0.1: dependencies: '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 - dev: false - /estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - dev: false + estree-util-is-identifier-name@3.0.0: {} - /estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + estree-util-to-js@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 astring: 1.8.6 source-map: 0.7.4 - dev: false - /estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + estree-util-visit@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 '@types/unist': 3.0.2 - dev: false - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@2.0.2: {} - /estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.5 - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + esutils@2.0.3: {} - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} + etag@1.8.1: {} - /eth-block-tracker@7.1.0: - resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} - engines: {node: '>=14.0.0'} + eth-block-tracker@7.1.0: dependencies: '@metamask/eth-json-rpc-provider': 1.0.1 '@metamask/safe-event-emitter': 3.1.1 @@ -14921,47 +20754,33 @@ packages: pify: 3.0.0 transitivePeerDependencies: - supports-color - dev: false - /eth-json-rpc-filters@6.0.1: - resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} - engines: {node: '>=14.0.0'} + eth-json-rpc-filters@6.0.1: dependencies: '@metamask/safe-event-emitter': 3.1.1 async-mutex: 0.2.6 eth-query: 2.1.2 json-rpc-engine: 6.1.0 pify: 5.0.0 - dev: false - /eth-query@2.1.2: - resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} + eth-query@2.1.2: dependencies: json-rpc-random-id: 1.0.1 xtend: 4.0.2 - dev: false - /eth-rpc-errors@4.0.3: - resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + eth-rpc-errors@4.0.3: dependencies: fast-safe-stringify: 2.1.1 - dev: false - /ethereum-address@0.0.4: - resolution: {integrity: sha512-3Vwr2CikFLezh/zLAPBV6C51jC0fFnf6vjhkoIWsDms/W5MLgAZNhh9nZUxPmg899K8cVFbklrYQBxcD4JmfrA==} - engines: {node: '>= 4.3.0', npm: '>= 3.7.0'} + ethereum-address@0.0.4: dependencies: crypto-js: 3.3.0 - dev: true - /ethereum-bloom-filters@1.1.0: - resolution: {integrity: sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==} + ethereum-bloom-filters@1.1.0: dependencies: '@noble/hashes': 1.4.0 - dev: false - /ethereum-cryptography@0.1.3: - resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + ethereum-cryptography@0.1.3: dependencies: '@types/pbkdf2': 3.1.2 '@types/secp256k1': 4.0.6 @@ -14978,39 +20797,30 @@ packages: scrypt-js: 3.0.1 secp256k1: 4.0.3 setimmediate: 1.0.5 - dev: false - /ethereum-cryptography@1.2.0: - resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + ethereum-cryptography@1.2.0: dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 '@scure/bip32': 1.1.5 '@scure/bip39': 1.1.1 - dev: false - /ethereum-cryptography@2.2.1: - resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + ethereum-cryptography@2.2.1: dependencies: '@noble/curves': 1.4.2 '@noble/hashes': 1.4.0 '@scure/bip32': 1.4.0 '@scure/bip39': 1.3.0 - dev: false - /ethereumjs-util@7.1.5: - resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} - engines: {node: '>=10.0.0'} + ethereumjs-util@7.1.5: dependencies: '@types/bn.js': 5.1.5 bn.js: 5.2.1 create-hash: 1.2.0 ethereum-cryptography: 0.1.3 rlp: 2.2.7 - dev: false - /ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + ethers@5.7.2: dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -15045,50 +20855,31 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: true - - /ethjs-unit@0.1.6: - resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} - engines: {node: '>=6.5.0', npm: '>=3'} + + ethjs-unit@0.1.6: dependencies: bn.js: 4.11.6 number-to-bn: 1.7.0 - dev: false - /event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + event-emitter@0.3.5: dependencies: d: 1.0.2 es5-ext: 0.10.64 - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false + event-target-shim@5.0.1: {} - /eventemitter2@6.4.9: - resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} - dev: false + eventemitter2@6.4.9: {} - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: false + eventemitter3@5.0.1: {} - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false + events@3.3.0: {} - /evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + evp_bytestokey@1.0.3: dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 - dev: false - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + execa@5.1.1: dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -15100,9 +20891,7 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + execa@8.0.1: dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 @@ -15114,20 +20903,15 @@ packages: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - /expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 - dev: true - /express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} - engines: {node: '>= 0.10.0'} + express@4.19.2: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -15162,68 +20946,44 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: true - /expressive-code@0.35.6: - resolution: {integrity: sha512-+mx+TPTbMqgo0mL92Xh9QgjW0kSQIsEivMgEcOnaqKqL7qCw8Vkqc5Rg/di7ZYw4aMUSr74VTc+w8GQWu05j1g==} + expressive-code@0.35.6: dependencies: '@expressive-code/core': 0.35.6 '@expressive-code/plugin-frames': 0.35.6 '@expressive-code/plugin-shiki': 0.35.6 '@expressive-code/plugin-text-markers': 0.35.6 - dev: false - /ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + ext@1.7.0: dependencies: type: 2.7.3 - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 - dev: false - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false + extend@3.0.2: {} - /extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - dev: false + extendable-error@0.1.7: {} - /extension-port-stream@3.0.0: - resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} - engines: {node: '>=12.0.0'} + extension-port-stream@3.0.0: dependencies: readable-stream: 3.6.2 webextension-polyfill: 0.10.0 - dev: false - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} + external-editor@3.1.0: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: false - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-deep-equal@3.1.3: {} - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true + fast-diff@1.3.0: {} - /fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - dev: false + fast-fifo@1.3.2: {} - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -15231,104 +20991,60 @@ packages: merge2: 1.4.1 micromatch: 4.0.7 - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true + fast-json-stable-stringify@2.1.0: {} - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-levenshtein@2.0.6: {} - /fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - dev: false + fast-redact@3.5.0: {} - /fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - dev: false + fast-safe-stringify@2.1.1: {} - /fast-xml-parser@4.2.5: - resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} - hasBin: true + fast-xml-parser@4.2.5: dependencies: strnum: 1.0.5 - dev: false - /fast-xml-parser@4.4.0: - resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==} - hasBin: true + fast-xml-parser@4.4.0: dependencies: strnum: 1.0.5 - dev: false - /fastparse@1.1.2: - resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} + fastparse@1.1.2: {} - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fastq@1.17.1: dependencies: reusify: 1.0.4 - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fb-watchman@2.0.2: dependencies: bser: 2.1.1 - dev: false - /fdir@6.1.1(picomatch@3.0.1): - resolution: {integrity: sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==} - peerDependencies: - picomatch: 3.x - peerDependenciesMeta: - picomatch: - optional: true + fdir@6.1.1(picomatch@3.0.1): dependencies: picomatch: 3.0.1 - /fetch-retry@5.0.6: - resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} - dev: true + fetch-retry@5.0.6: {} - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 - dev: true - /file-system-cache@2.3.0: - resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} + file-system-cache@2.3.0: dependencies: fs-extra: 11.1.1 ramda: 0.29.0 - dev: true - /filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + filelist@1.0.4: dependencies: minimatch: 5.1.6 - dev: true - /filesize@10.1.2: - resolution: {integrity: sha512-Dx770ai81ohflojxhU+oG+Z2QGvKdYxgEr9OSA8UVrqhwNHjfH9A8f5NKfg83fEH8ZFA5N5llJo5T3PIoZ4CRA==} - engines: {node: '>= 10.4.0'} - dev: true + filesize@10.1.2: {} - /fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - /filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - dev: false + filter-obj@1.1.0: {} - /finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} + finalhandler@1.1.2: dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -15339,11 +21055,8 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: false - /finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} + finalhandler@1.2.0: dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -15354,255 +21067,156 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: true - /find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} + find-cache-dir@2.1.0: dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 - /find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} + find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 make-dir: 3.1.0 pkg-dir: 4.2.0 - dev: true - /find-up-simple@1.0.0: - resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} - engines: {node: '>=18'} - dev: false + find-up-simple@1.0.0: {} - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} + find-up@3.0.0: dependencies: locate-path: 3.0.0 - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + find-up@6.3.0: dependencies: locate-path: 7.2.0 path-exists: 5.0.0 - /find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + find-yarn-workspace-root2@1.2.16: dependencies: micromatch: 4.0.7 pkg-dir: 4.2.0 - dev: false - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@3.2.0: dependencies: flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 - dev: true - /flat@4.1.1: - resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} - hasBin: true + flat@4.1.1: dependencies: is-buffer: 2.0.5 - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - dev: true + flatted@3.3.1: {} - /flattie@1.1.1: - resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} - engines: {node: '>=8'} - dev: false + flattie@1.1.1: {} - /flow-enums-runtime@0.0.6: - resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - dev: false + flow-enums-runtime@0.0.6: {} - /flow-parser@0.238.3: - resolution: {integrity: sha512-hNUhucq8V6KWSX1skXUS3vnDmrRNuKWzDvEVK5b+n97uMF32zj2y8pmcLDQEqlY5u926B0GYGWT/3XhwDJfLOQ==} - engines: {node: '>=0.4.0'} + flow-parser@0.238.3: {} - /follow-redirects@1.15.6(debug@4.3.5): - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true + follow-redirects@1.15.6(debug@4.3.5): dependencies: debug: 4.3.5 - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.3: dependencies: is-callable: 1.2.7 - /foreground-child@3.2.1: - resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} - engines: {node: '>=14'} + foreground-child@3.2.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} - dev: true + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: {} - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32: {} + + form-data-encoder@2.1.4: {} + + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: true + forwarded@0.2.0: {} - /fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fraction.js@4.3.7: {} - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} + fresh@0.5.2: {} - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: true + fs-constants@1.0.0: {} - /fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} + fs-extra@11.1.1: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - dev: true - /fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} + fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: false - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: false - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + fs-minipass@2.1.0: dependencies: minipass: 3.3.6 - dev: true - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs.realpath@1.0.0: {} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true + fsevents@2.3.2: optional: true - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.3: optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-bind@1.1.2: {} - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 functions-have-names: 1.2.3 - dev: true - /functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - dev: true + functional-red-black-tree@1.0.1: {} - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true + functions-have-names@1.2.3: {} - /futoin-hkdf@1.5.3: - resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} - engines: {node: '>=8'} - dev: false + futoin-hkdf@1.5.3: {} - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + gensync@1.0.0-beta.2: {} - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: false + get-caller-file@2.0.5: {} - /get-east-asian-width@1.2.0: - resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} - engines: {node: '>=18'} - dev: false + get-east-asian-width@1.2.0: {} - /get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true + get-func-name@2.0.2: {} - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 @@ -15610,50 +21224,29 @@ packages: has-symbols: 1.0.3 hasown: 2.0.2 - /get-iterator@1.0.2: - resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} - dev: false + get-iterator@1.0.2: {} - /get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - dev: true + get-nonce@1.0.1: {} - /get-npm-tarball-url@2.1.0: - resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} - engines: {node: '>=12.17'} - dev: true + get-npm-tarball-url@2.1.0: {} - /get-port-please@3.1.2: - resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - dev: false + get-port-please@3.1.2: {} - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + get-stream@6.0.1: {} - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} + get-stream@8.0.1: {} - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true - /get-tsconfig@4.7.5: - resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + get-tsconfig@4.7.5: dependencies: resolve-pkg-maps: 1.0.0 - dev: true - /giget@1.2.3: - resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} - hasBin: true + giget@1.2.3: dependencies: citty: 0.1.6 consola: 3.2.3 @@ -15663,31 +21256,20 @@ packages: ohash: 1.1.3 pathe: 1.1.2 tar: 6.2.1 - dev: true - /github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + github-slugger@2.0.0: {} - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true + glob-to-regexp@0.4.1: {} - /glob@10.4.2: - resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} - engines: {node: '>=16 || 14 >=14.18'} - hasBin: true + glob@10.4.2: dependencies: foreground-child: 3.2.1 jackspeak: 3.4.0 @@ -15696,9 +21278,7 @@ packages: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -15707,43 +21287,28 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported + glob@8.1.0: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + globals@11.12.0: {} - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@13.24.0: dependencies: type-fest: 0.20.2 - dev: true - /globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 gopd: 1.0.1 - dev: true - /globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + globalyzer@0.1.0: {} - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -15752,9 +21317,7 @@ packages: merge2: 1.4.1 slash: 3.0.0 - /globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} + globby@14.0.2: dependencies: '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.2 @@ -15762,19 +21325,14 @@ packages: path-type: 5.0.0 slash: 5.1.0 unicorn-magic: 0.1.0 - dev: true - /globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + globrex@0.1.2: {} - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 - /got@12.6.1: - resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} - engines: {node: '>=14.16'} + got@12.6.1: dependencies: '@sindresorhus/is': 5.6.0 '@szmarczak/http-timer': 5.0.1 @@ -15787,36 +21345,23 @@ packages: lowercase-keys: 3.0.0 p-cancelable: 3.0.0 responselike: 3.0.0 - dev: true - /graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - dev: true + graceful-fs@4.2.10: {} - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graceful-fs@4.2.11: {} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: false + grapheme-splitter@1.0.4: {} - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + graphemer@1.4.0: {} - /gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} + gray-matter@4.0.3: dependencies: js-yaml: 3.14.1 kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 - dev: false - /gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} - hasBin: true + gunzip-maybe@1.4.2: dependencies: browserify-zlib: 0.1.4 is-deflate: 1.0.0 @@ -15824,10 +21369,8 @@ packages: peek-stream: 1.1.3 pumpify: 1.5.1 through2: 2.0.5 - dev: true - /h3@1.12.0: - resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} + h3@1.12.0: dependencies: cookie-es: 1.1.0 crossws: 0.2.4 @@ -15841,12 +21384,8 @@ packages: unenv: 1.9.0 transitivePeerDependencies: - uWebSockets.js - dev: false - /handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true + handlebars@4.7.8: dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -15854,73 +21393,48 @@ packages: wordwrap: 1.0.0 optionalDependencies: uglify-js: 3.18.0 - dev: true - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + has-bigints@1.0.2: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + has-flag@3.0.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + has-flag@4.0.0: {} - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} + has-proto@1.0.3: {} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + has-symbols@1.0.3: {} - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} + hash-base@3.1.0: dependencies: inherits: 2.0.4 readable-stream: 3.6.2 safe-buffer: 5.2.1 - dev: false - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hash.js@1.1.7: dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - /hashlru@2.3.0: - resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} - dev: false + hashlru@2.3.0: {} - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + hasown@2.0.2: dependencies: function-bind: 1.1.2 - /hast-util-embedded@3.0.0: - resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} + hast-util-embedded@3.0.0: dependencies: '@types/hast': 3.0.4 hast-util-is-element: 3.0.0 - dev: false - /hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + hast-util-from-html@2.0.1: dependencies: '@types/hast': 3.0.4 devlop: 1.1.0 @@ -15928,10 +21442,8 @@ packages: parse5: 7.1.2 vfile: 6.0.1 vfile-message: 4.0.2 - dev: false - /hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + hast-util-from-parse5@8.0.1: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -15941,49 +21453,36 @@ packages: vfile: 6.0.1 vfile-location: 5.0.2 web-namespaces: 2.0.1 - dev: false - /hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + hast-util-has-property@3.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + hast-util-heading-rank@3.0.0: dependencies: '@types/hast': 3.0.4 - dev: true - /hast-util-is-body-ok-link@3.0.0: - resolution: {integrity: sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==} + hast-util-is-body-ok-link@3.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + hast-util-is-element@3.0.0: dependencies: '@types/hast': 3.0.4 - /hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /hast-util-phrasing@3.0.1: - resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} + hast-util-phrasing@3.0.1: dependencies: '@types/hast': 3.0.4 hast-util-embedded: 3.0.0 hast-util-has-property: 3.0.0 hast-util-is-body-ok-link: 3.0.0 hast-util-is-element: 3.0.0 - dev: false - /hast-util-raw@9.0.4: - resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} + hast-util-raw@9.0.4: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -15998,10 +21497,8 @@ packages: vfile: 6.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 - dev: false - /hast-util-select@6.0.2: - resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + hast-util-select@6.0.2: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -16019,10 +21516,8 @@ packages: space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false - /hast-util-to-estree@3.1.0: - resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + hast-util-to-estree@3.1.0: dependencies: '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.5 @@ -16042,10 +21537,8 @@ packages: zwitch: 2.0.4 transitivePeerDependencies: - supports-color - dev: false - /hast-util-to-html@9.0.1: - resolution: {integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==} + hast-util-to-html@9.0.1: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -16059,10 +21552,8 @@ packages: space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 - dev: false - /hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + hast-util-to-jsx-runtime@2.3.0: dependencies: '@types/estree': 1.0.5 '@types/hast': 3.0.4 @@ -16081,10 +21572,8 @@ packages: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false - /hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-to-parse5@8.0.0: dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -16093,134 +21582,90 @@ packages: space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 - dev: false - /hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + hast-util-to-string@3.0.0: dependencies: '@types/hast': 3.0.4 - /hast-util-to-text@4.0.2: - resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + hast-util-to-text@4.0.2: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 - dev: false - /hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + hastscript@8.0.0: dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.5.0 space-separated-tokens: 2.0.2 - dev: false - /hastscript@9.0.0: - resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} + hastscript@9.0.0: dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.5.0 space-separated-tokens: 2.0.2 - dev: false - /hermes-estree@0.19.1: - resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} - dev: false + hermes-estree@0.19.1: {} - /hermes-estree@0.20.1: - resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} - dev: false + hermes-estree@0.20.1: {} - /hermes-parser@0.19.1: - resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + hermes-parser@0.19.1: dependencies: hermes-estree: 0.19.1 - dev: false - /hermes-parser@0.20.1: - resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} + hermes-parser@0.20.1: dependencies: hermes-estree: 0.20.1 - dev: false - /hermes-profile-transformer@0.0.6: - resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} - engines: {node: '>=8'} + hermes-profile-transformer@0.0.6: dependencies: source-map: 0.7.4 - dev: false - /hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - dev: false + hey-listen@1.0.8: {} - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + hmac-drbg@1.0.1: dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true + hosted-git-info@2.8.9: {} - /html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 - dev: true - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + html-escaper@2.0.2: {} - /html-escaper@3.0.3: - resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} - dev: false + html-escaper@3.0.3: {} - /html-parse-stringify@3.0.1: - resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + html-parse-stringify@3.0.1: dependencies: void-elements: 3.1.0 - dev: false - /html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - dev: false + html-void-elements@3.0.0: {} - /html-whitespace-sensitive-tag-names@3.0.0: - resolution: {integrity: sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==} - dev: false + html-whitespace-sensitive-tag-names@3.0.0: {} - /htmlparser2-svelte@4.1.0: - resolution: {integrity: sha512-+4f4RBFz7Rj2Hp0ZbFbXC+Kzbd6S9PgjiuFtdT76VMNgKogrEZy0pG2UrPycPbrZzVEIM5lAT3lAdkSTCHLPjg==} + htmlparser2-svelte@4.1.0: dependencies: domelementtype: 2.3.0 domhandler: 3.3.0 domutils: 2.8.0 entities: 2.2.0 - dev: true - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + http-cache-semantics@4.1.1: {} - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} + http-errors@2.0.0: dependencies: depd: 2.0.0 inherits: 2.0.4 @@ -16228,218 +21673,133 @@ packages: statuses: 2.0.1 toidentifier: 1.0.1 - /http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 debug: 4.3.5 transitivePeerDependencies: - supports-color - dev: true - /http-shutdown@1.2.2: - resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: false + http-shutdown@1.2.2: {} - /http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} + http2-wrapper@2.2.1: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - dev: true - /https-proxy-agent@7.0.5: - resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} - engines: {node: '>= 14'} + https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 debug: 4.3.5 transitivePeerDependencies: - supports-color - dev: true - /human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - dev: false + human-id@1.0.2: {} - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + human-signals@2.1.0: {} - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} + human-signals@5.0.0: {} - /i18next-browser-languagedetector@7.1.0: - resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} + i18next-browser-languagedetector@7.1.0: dependencies: '@babel/runtime': 7.24.7 - dev: false - /i18next@22.5.1: - resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} + i18next@22.5.1: dependencies: '@babel/runtime': 7.24.7 - dev: false - /i18next@23.11.5: - resolution: {integrity: sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==} + i18next@23.11.5: dependencies: '@babel/runtime': 7.24.7 - dev: false - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - /idb-keyval@6.2.1: - resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} - dev: false + idb-keyval@6.2.1: {} - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ieee754@1.2.1: {} - /ignore-walk@5.0.1: - resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + ignore-walk@5.0.1: dependencies: minimatch: 5.1.6 - dev: true - /ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true + ignore@4.0.6: {} - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} + ignore@5.3.1: {} - /image-size@1.1.1: - resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} - engines: {node: '>=16.x'} - hasBin: true + image-size@1.1.1: dependencies: queue: 6.0.2 - dev: false - /import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} + import-fresh@2.0.0: dependencies: caller-path: 2.0.0 resolve-from: 3.0.0 - dev: false - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true - /import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + import-meta-resolve@4.1.0: {} - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + imurmurhash@0.1.4: {} - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true + indent-string@4.0.0: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true + ini@1.3.8: {} - /inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - dev: false + inline-style-parser@0.1.1: {} - /inline-style-parser@0.2.3: - resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} - dev: false + inline-style-parser@0.2.3: {} - /interface-datastore@7.0.4: - resolution: {integrity: sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + interface-datastore@7.0.4: dependencies: interface-store: 3.0.4 nanoid: 4.0.2 uint8arrays: 4.0.10 - dev: false - /interface-datastore@8.2.11: - resolution: {integrity: sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA==} + interface-datastore@8.2.11: dependencies: interface-store: 5.1.8 uint8arrays: 5.1.0 - dev: false - /interface-store@3.0.4: - resolution: {integrity: sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + interface-store@3.0.4: {} - /interface-store@5.1.8: - resolution: {integrity: sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==} - dev: false + interface-store@5.1.8: {} - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.0.6 - dev: true - /intl-messageformat@10.5.14: - resolution: {integrity: sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==} + intl-messageformat@10.5.14: dependencies: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/fast-memoize': 2.2.0 '@formatjs/icu-messageformat-parser': 2.7.8 tslib: 2.6.3 - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: true + ipaddr.js@1.9.1: {} - /ipfs-core-types@0.14.1: - resolution: {integrity: sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + ipfs-core-types@0.14.1: dependencies: '@ipld/dag-pb': 4.1.2 '@libp2p/interface-keychain': 2.0.5 @@ -16453,12 +21813,8 @@ packages: multiformats: 11.0.2 transitivePeerDependencies: - supports-color - dev: false - /ipfs-core-utils@0.18.1: - resolution: {integrity: sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + ipfs-core-utils@0.18.1: dependencies: '@libp2p/logger': 2.1.1 '@multiformats/multiaddr': 11.6.1 @@ -16483,12 +21839,8 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /ipfs-http-client@60.0.1: - resolution: {integrity: sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + ipfs-http-client@60.0.1: dependencies: '@ipld/dag-cbor': 9.2.1 '@ipld/dag-json': 10.2.2 @@ -16512,19 +21864,13 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /ipfs-unixfs@9.0.1: - resolution: {integrity: sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + ipfs-unixfs@9.0.1: dependencies: err-code: 3.0.1 protobufjs: 7.3.2 - dev: false - /ipfs-utils@9.0.14: - resolution: {integrity: sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + ipfs-utils@9.0.14: dependencies: any-signal: 3.0.1 browser-readablestream-to-it: 1.0.3 @@ -16544,483 +21890,267 @@ packages: stream-to-it: 0.2.4 transitivePeerDependencies: - encoding - dev: false - /iron-webcrypto@1.2.1: - resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} - dev: false + iron-webcrypto@1.2.1: {} - /is-absolute-url@4.0.1: - resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-absolute-url@4.0.1: {} - /is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: false + is-alphabetical@2.0.1: {} - /is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-alphanumerical@2.0.1: dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - dev: false - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} + is-arguments@1.1.1: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.2.1: {} - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false + is-arrayish@0.3.2: {} - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + is-boolean-object@1.1.2: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} + is-buffer@2.0.5: {} - /is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} + is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 - dev: true - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} + is-callable@1.2.7: {} - /is-core-module@2.14.0: - resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} - engines: {node: '>= 0.4'} + is-core-module@2.14.0: dependencies: hasown: 2.0.2 - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} + is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 - dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: false + is-decimal@2.0.1: {} - /is-deflate@1.0.0: - resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} - dev: true + is-deflate@1.0.0: {} - /is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - dev: false + is-directory@0.3.1: {} - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true + is-docker@2.2.1: {} - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: false + is-docker@3.0.0: {} - /is-electron@2.2.2: - resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} - dev: false + is-electron@2.2.2: {} - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: false + is-extendable@0.1.1: {} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: false + is-fullwidth-code-point@2.0.0: {} - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.2 - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-gzip@1.0.0: - resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} - engines: {node: '>=0.10.0'} - dev: true + is-gzip@1.0.0: {} - /is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - dev: false + is-hex-prefixed@1.0.0: {} - /is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: false + is-hexadecimal@2.0.1: {} - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 - dev: false - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} + is-interactive@1.0.0: {} - /is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} + is-interactive@2.0.0: {} - /is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} + is-nan@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - dev: true - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.3: {} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + is-number@7.0.0: {} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false + is-plain-obj@2.1.0: {} - /is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - dev: false + is-plain-obj@4.1.0: {} - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} + is-plain-object@2.0.4: dependencies: isobject: 3.0.1 - /is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true + is-potential-custom-element-name@1.0.1: {} - /is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-promise@2.2.2: {} - /is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + is-reference@3.0.2: dependencies: '@types/estree': 1.0.5 - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + is-regex@1.1.4: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} + is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 - dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + is-stream@2.0.1: {} - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@3.0.0: {} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 - dev: false - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} + is-unicode-supported@0.1.0: {} - /is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} + is-unicode-supported@1.3.0: {} - /is-unicode-supported@2.0.0: - resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} - engines: {node: '>=18'} - dev: false + is-unicode-supported@2.0.0: {} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.0.2: dependencies: call-bind: 1.0.7 - dev: true - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: false + is-windows@1.0.2: {} - /is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: false + is-wsl@1.1.0: {} - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 - /is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 - dev: false - /is64bit@2.0.0: - resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} - engines: {node: '>=18'} + is64bit@2.0.0: dependencies: system-architecture: 0.1.0 - dev: false - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@1.0.0: {} - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + isarray@2.0.5: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - dev: true + isexe@3.1.1: {} - /iso-url@1.2.1: - resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} - engines: {node: '>=12'} - dev: false + iso-url@1.2.1: {} - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} + isobject@3.0.1: {} - /isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + isomorphic-unfetch@3.1.0: dependencies: node-fetch: 2.7.0 unfetch: 4.2.0 transitivePeerDependencies: - encoding - dev: false - /isows@1.0.3(ws@8.13.0): - resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} - peerDependencies: - ws: '*' + isows@1.0.3(ws@8.13.0): dependencies: ws: 8.13.0 - dev: false - /isows@1.0.4(ws@8.17.1): - resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} - peerDependencies: - ws: '*' + isows@1.0.4(ws@8.17.1): dependencies: ws: 8.17.1 - /istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - dev: true + istanbul-lib-coverage@3.2.2: {} - /istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} + istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - dev: true - /istanbul-lib-source-maps@5.0.5: - resolution: {integrity: sha512-gKf4eJ8bHmSX/ljiOCpnd8vtmHTwG71uugm0kXYd5aqFCl6z8cj8k7QduXSwU6QOst6LCdSXTlaoc8W4554crQ==} - engines: {node: '>=10'} + istanbul-lib-source-maps@5.0.5: dependencies: '@jridgewell/trace-mapping': 0.3.25 debug: 4.3.5 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color - dev: true - /istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} + istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - dev: true - /it-all@1.0.6: - resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} - dev: false + it-all@1.0.6: {} - /it-all@2.0.1: - resolution: {integrity: sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-all@2.0.1: {} - /it-first@2.0.1: - resolution: {integrity: sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-first@2.0.1: {} - /it-glob@1.0.2: - resolution: {integrity: sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==} + it-glob@1.0.2: dependencies: '@types/minimatch': 3.0.5 minimatch: 3.1.2 - dev: false - /it-last@2.0.1: - resolution: {integrity: sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-last@2.0.1: {} - /it-map@2.0.1: - resolution: {integrity: sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-map@2.0.1: {} - /it-peekable@2.0.1: - resolution: {integrity: sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-peekable@2.0.1: {} - /it-pushable@3.2.3: - resolution: {integrity: sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==} + it-pushable@3.2.3: dependencies: p-defer: 4.0.1 - dev: false - /it-stream-types@1.0.5: - resolution: {integrity: sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-stream-types@1.0.5: {} - /it-stream-types@2.0.1: - resolution: {integrity: sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-stream-types@2.0.1: {} - /it-to-stream@1.0.0: - resolution: {integrity: sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==} + it-to-stream@1.0.0: dependencies: buffer: 6.0.3 fast-fifo: 1.3.2 @@ -17028,40 +22158,28 @@ packages: p-defer: 3.0.0 p-fifo: 1.0.0 readable-stream: 3.6.2 - dev: false - /jackspeak@3.4.0: - resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} - engines: {node: '>=14'} + jackspeak@3.4.0: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - /jake@10.9.1: - resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} - engines: {node: '>=10'} - hasBin: true + jake@10.9.1: dependencies: async: 3.2.5 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 - dev: true - /jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-diff@29.7.0: dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -17069,25 +22187,17 @@ packages: '@types/node': 20.14.9 jest-mock: 29.7.0 jest-util: 29.7.0 - dev: false - /jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-get-type@29.6.3: {} - /jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.24.7 '@jest/types': 29.6.3 @@ -17099,18 +22209,13 @@ packages: slash: 3.0.0 stack-utils: 2.0.6 - /jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.14.9 jest-util: 29.7.0 - dev: false - /jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.14.9 @@ -17119,9 +22224,7 @@ packages: graceful-fs: 4.2.11 picomatch: 2.3.1 - /jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 camelcase: 6.3.0 @@ -17129,69 +22232,44 @@ packages: jest-get-type: 29.6.3 leven: 3.1.0 pretty-format: 29.7.0 - dev: false - /jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@29.7.0: dependencies: '@types/node': 20.14.9 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: false - /jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} - hasBin: true + jiti@1.21.6: {} - /joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 '@sideway/address': 4.1.5 '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - dev: false - /js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + js-sha3@0.8.0: {} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@4.0.0: {} - /js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - dev: true + js-tokens@9.0.0: {} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: false - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - /jsc-android@250231.0.0: - resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - dev: false + jsc-android@250231.0.0: {} - /jsc-safe-url@0.2.4: - resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - dev: false + jsc-safe-url@0.2.4: {} - /jscodeshift@0.14.0(@babel/preset-env@7.24.7): - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 + jscodeshift@0.14.0(@babel/preset-env@7.24.7): dependencies: '@babel/core': 7.25.2 '@babel/parser': 7.25.3 @@ -17215,16 +22293,8 @@ packages: write-file-atomic: 2.4.3 transitivePeerDependencies: - supports-color - dev: false - /jscodeshift@0.15.2(@babel/preset-env@7.24.7): - resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - peerDependenciesMeta: - '@babel/preset-env': - optional: true + jscodeshift@0.15.2(@babel/preset-env@7.24.7): dependencies: '@babel/core': 7.24.7 '@babel/parser': 7.24.7 @@ -17249,16 +22319,8 @@ packages: write-file-atomic: 2.4.3 transitivePeerDependencies: - supports-color - dev: true - /jsdom@24.1.0: - resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true + jsdom@24.1.0: dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -17285,214 +22347,110 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: true - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true + jsesc@0.5.0: {} - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true + jsesc@2.5.2: {} - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + json-buffer@3.0.1: {} - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: false + json-parse-better-errors@1.0.2: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true + json-parse-even-better-errors@2.3.1: {} - /json-rpc-engine@6.1.0: - resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} - engines: {node: '>=10.0.0'} + json-rpc-engine@6.1.0: dependencies: '@metamask/safe-event-emitter': 2.0.0 eth-rpc-errors: 4.0.3 - dev: false - /json-rpc-random-id@1.0.1: - resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} - dev: false + json-rpc-random-id@1.0.1: {} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + json-schema-traverse@0.4.1: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-schema-traverse@1.0.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json-to-ast@2.1.0: - resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} - engines: {node: '>= 4'} + json-to-ast@2.1.0: dependencies: code-error-fragment: 0.0.230 grapheme-splitter: 1.0.4 - dev: false - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + json5@1.0.2: dependencies: minimist: 1.2.8 - dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + json5@2.2.3: {} - /jsonc-parser@2.3.1: - resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} - dev: false + jsonc-parser@2.3.1: {} - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - dev: false - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.1.0: dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - /jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - dev: false + jsonpointer@5.0.1: {} - /keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - requiresBuild: true + keccak@3.0.4: dependencies: node-addon-api: 2.0.2 node-gyp-build: 4.8.1 readable-stream: 3.6.2 - dev: false - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 - dev: true - /keyvaluestorage-interface@1.0.0: - resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} - dev: false + keyvaluestorage-interface@1.0.0: {} - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + kind-of@6.0.3: {} - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} + kleur@3.0.3: {} - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} + kleur@4.1.5: {} - /known-css-properties@0.34.0: - resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} - dev: true + known-css-properties@0.34.0: {} - /latest-version@7.0.0: - resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} - engines: {node: '>=14.16'} + latest-version@7.0.0: dependencies: package-json: 8.1.1 - dev: true - /lazy-universal-dotenv@4.0.0: - resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} - engines: {node: '>=14.0.0'} + lazy-universal-dotenv@4.0.0: dependencies: app-root-dir: 1.0.2 dotenv: 16.4.5 dotenv-expand: 10.0.0 - dev: true - /lefthook-darwin-arm64@1.6.18: - resolution: {integrity: sha512-AkpsTeO7aLZIIy6CKQ7Chx8RltE8a9uItbwQWoeaCkIdzpV8TFjq7/Pw4F5CkoJ2315sHtB8k+VFkgipQMBw1w==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true + lefthook-darwin-arm64@1.6.18: optional: true - /lefthook-darwin-x64@1.6.18: - resolution: {integrity: sha512-qwKa+PaNIYjZ2PVrRRLq+HjNjQsjEItXN21byvSD89r7EYCULsIC8aW4H6aniOP2A6X1DIZ+djpg+3hNJ/94NA==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + lefthook-darwin-x64@1.6.18: optional: true - /lefthook-freebsd-arm64@1.6.18: - resolution: {integrity: sha512-UIOzQ+okwB7Ah9p8sNqomOiU6cPfmJnyW3HDPutRsdoHRD8udIap9d+ja4Kg4m/PkoYtkcLO78omANqAgA5wxQ==} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true + lefthook-freebsd-arm64@1.6.18: optional: true - /lefthook-freebsd-x64@1.6.18: - resolution: {integrity: sha512-UQANUgyNpaAh0+2/PjPFiJ7yd6aF15yyJxKZCXyna5cQF7VU8pSHu5tiDDquNpjToXOg+6TmiIAJKyfrrwTF3w==} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true + lefthook-freebsd-x64@1.6.18: optional: true - /lefthook-linux-arm64@1.6.18: - resolution: {integrity: sha512-4erletIa2HKUgY17/1ROvndAj6xn/9wkqO2GhBT3C0vFwIv6ycy5wpFzXOwKRZpFYv7UacN7iXhAZSK+vSOZZg==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + lefthook-linux-arm64@1.6.18: optional: true - /lefthook-linux-x64@1.6.18: - resolution: {integrity: sha512-l5SRqYMYygw9RjZncEg8uh29wShYN8kiYr53sp74DkntrlCttqWhLILBUlIr3fxH5s0ZyrmqUEjtMBryMk7b/g==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + lefthook-linux-x64@1.6.18: optional: true - /lefthook-windows-arm64@1.6.18: - resolution: {integrity: sha512-jeNBRoya3+mOEsKyT4wXf29Kng1nkJD7Uv/dqGBszoGMktGVNUFdIjWoxx6HSfhUssucs5pKRZpXSMgK/KCP+Q==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true + lefthook-windows-arm64@1.6.18: optional: true - /lefthook-windows-x64@1.6.18: - resolution: {integrity: sha512-iEG8PbFOwMqlpAgCiqzANTxutERjwlwMx6WF6HDGEYwFJSCJsvi06TehDxaPIFbhmLLYYlbVrfSBlttWGoN0dg==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true + lefthook-windows-x64@1.6.18: optional: true - /lefthook@1.6.18: - resolution: {integrity: sha512-Ftr/NkU1P1EsEyphsCqCX7lesGZA+QDXyUx4dS1RlSKB72xKtGW9VPjbGLK2kSQkONG5M+XYfbJkGA/r9NLTYQ==} - hasBin: true - requiresBuild: true + lefthook@1.6.18: optionalDependencies: lefthook-darwin-arm64: 1.6.18 lefthook-darwin-x64: 1.6.18 @@ -17502,43 +22460,28 @@ packages: lefthook-linux-x64: 1.6.18 lefthook-windows-arm64: 1.6.18 lefthook-windows-x64: 1.6.18 - dev: true - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} + leven@3.1.0: {} - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /lighthouse-logger@1.4.2: - resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + lighthouse-logger@1.4.2: dependencies: debug: 2.6.9 marky: 1.2.5 transitivePeerDependencies: - supports-color - dev: false - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lilconfig@2.1.0: {} - /lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} + lilconfig@3.1.2: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@1.2.4: {} - /listhen@1.7.2: - resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} - hasBin: true + listhen@1.7.2: dependencies: '@parcel/watcher': 2.4.1 '@parcel/watcher-wasm': 2.4.1 @@ -17560,313 +22503,202 @@ packages: uqr: 0.1.2 transitivePeerDependencies: - uWebSockets.js - dev: false - /lit-element@3.3.3: - resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + lit-element@3.3.3: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 - dev: false - /lit-element@4.0.6: - resolution: {integrity: sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==} + lit-element@4.0.6: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 2.0.4 lit-html: 3.1.4 - dev: false - /lit-html@2.8.0: - resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + lit-html@2.8.0: dependencies: '@types/trusted-types': 2.0.7 - dev: false - /lit-html@3.1.4: - resolution: {integrity: sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==} + lit-html@3.1.4: dependencies: '@types/trusted-types': 2.0.7 - dev: false - /lit@2.8.0: - resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + lit@2.8.0: dependencies: '@lit/reactive-element': 1.6.3 lit-element: 3.3.3 lit-html: 2.8.0 - dev: false - /lit@3.1.0: - resolution: {integrity: sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==} + lit@3.1.0: dependencies: '@lit/reactive-element': 2.0.4 lit-element: 4.0.6 lit-html: 3.1.4 - dev: false - /load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + load-tsconfig@0.2.5: {} - /load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} + load-yaml-file@0.2.0: dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: false - /local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} + local-pkg@0.5.0: dependencies: mlly: 1.7.1 pkg-types: 1.1.2 - dev: true - /locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + locate-character@3.0.0: {} - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} + locate-path@3.0.0: dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + locate-path@7.2.0: dependencies: p-locate: 6.0.0 - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.debounce@4.0.8: {} - /lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - dev: false + lodash.isequal@4.5.0: {} - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + lodash.merge@4.6.2: {} - /lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - dev: false + lodash.startcase@4.4.0: {} - /lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - dev: false + lodash.throttle@4.1.1: {} - /lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: true + lodash.truncate@4.4.2: {} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.21: {} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - /log-symbols@5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} + log-symbols@5.1.0: dependencies: chalk: 5.3.0 is-unicode-supported: 1.3.0 - /log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} + log-symbols@6.0.0: dependencies: chalk: 5.3.0 is-unicode-supported: 1.3.0 - dev: false - /logkitty@0.7.1: - resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} - hasBin: true + logkitty@0.7.1: dependencies: ansi-fragments: 0.2.1 dayjs: 1.11.11 yargs: 15.4.1 - dev: false - /lokijs@1.5.12: - resolution: {integrity: sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==} - dev: true + lokijs@1.5.12: {} - /long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - dev: false + long@5.2.3: {} - /longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: false + longest-streak@3.1.0: {} - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - /loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@2.3.7: dependencies: get-func-name: 2.0.2 - dev: true - /lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lower-case@2.0.2: dependencies: tslib: 2.6.3 - dev: true - /lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + lowercase-keys@3.0.0: {} - /lru-cache@10.3.0: - resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==} - engines: {node: 14 || >=16.14} + lru-cache@10.3.0: {} - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 - dev: false - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - /lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + lru-queue@0.1.0: dependencies: es5-ext: 0.10.64 - /lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - dev: true + lz-string@1.5.0: {} - /magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - /magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - /magicast@0.3.4: - resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + magicast@0.3.4: dependencies: '@babel/parser': 7.24.7 '@babel/types': 7.24.7 source-map-js: 1.2.0 - dev: true - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} + make-dir@2.1.0: dependencies: pify: 4.0.1 semver: 5.7.2 - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + make-dir@3.1.0: dependencies: semver: 6.3.1 - dev: true - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + make-dir@4.0.0: dependencies: semver: 7.6.3 - dev: true - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true + make-error@1.3.6: {} - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + makeerror@1.0.12: dependencies: tmpl: 1.0.5 - dev: false - /map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - dev: true + map-or-similar@1.5.0: {} - /markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - dev: false + markdown-extensions@2.0.0: {} - /markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - dev: false + markdown-table@3.0.3: {} - /markdown-to-jsx@7.3.2(react@18.3.1): - resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==} - engines: {node: '>= 10'} - peerDependencies: - react: '>= 0.14.0' + markdown-to-jsx@7.3.2(react@18.3.1): dependencies: react: 18.3.1 - dev: true - /marky@1.2.5: - resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - dev: false + marky@1.2.5: {} - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + md5.js@1.3.5: dependencies: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /mdast-util-definitions@6.0.0: - resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} + mdast-util-definitions@6.0.0: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.2 unist-util-visit: 5.0.0 - dev: false - /mdast-util-directive@3.0.0: - resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} + mdast-util-directive@3.0.0: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.2 @@ -17878,19 +22710,15 @@ packages: unist-util-visit-parents: 6.0.1 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + mdast-util-find-and-replace@3.0.1: dependencies: '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /mdast-util-from-markdown@2.0.1: - resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + mdast-util-from-markdown@2.0.1: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.2 @@ -17906,20 +22734,16 @@ packages: unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + mdast-util-gfm-autolink-literal@2.0.0: dependencies: '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 micromark-util-character: 2.1.0 - dev: false - /mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + mdast-util-gfm-footnote@2.0.0: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 @@ -17928,20 +22752,16 @@ packages: micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + mdast-util-gfm-table@2.0.0: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 @@ -17950,10 +22770,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + mdast-util-gfm-task-list-item@2.0.0: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 @@ -17961,10 +22779,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + mdast-util-gfm@3.0.0: dependencies: mdast-util-from-markdown: 2.0.1 mdast-util-gfm-autolink-literal: 2.0.0 @@ -17975,10 +22791,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + mdast-util-mdx-expression@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -17988,10 +22802,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdx-jsx@3.1.2: - resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} + mdast-util-mdx-jsx@3.1.2: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -18008,10 +22820,8 @@ packages: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + mdast-util-mdx@3.0.0: dependencies: mdast-util-from-markdown: 2.0.1 mdast-util-mdx-expression: 2.0.0 @@ -18020,10 +22830,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + mdast-util-mdxjs-esm@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -18033,17 +22841,13 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - dev: false - /mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.0: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -18054,10 +22858,8 @@ packages: unist-util-position: 5.0.0 unist-util-visit: 5.0.0 vfile: 6.0.2 - dev: false - /mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + mdast-util-to-markdown@2.1.0: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.2 @@ -18067,29 +22869,18 @@ packages: micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false - /mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.4 - dev: false - /mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.0.30: {} - /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - dev: true + media-typer@0.3.0: {} - /memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - dev: false + memoize-one@5.2.1: {} - /memoizee@0.4.17: - resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} - engines: {node: '>=0.12'} + memoizee@0.4.17: dependencies: d: 1.0.2 es5-ext: 0.10.64 @@ -18100,78 +22891,48 @@ packages: next-tick: 1.1.0 timers-ext: 0.1.8 - /memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + memoizerific@1.11.3: dependencies: map-or-similar: 1.5.0 - dev: true - /memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - dev: true + memorystream@0.3.1: {} - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - dev: true + merge-descriptors@1.0.1: {} - /merge-options@3.0.4: - resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} - engines: {node: '>=10'} + merge-options@3.0.4: dependencies: is-plain-obj: 2.1.0 - dev: false - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge-stream@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + merge2@1.4.1: {} - /merkletreejs@0.4.0: - resolution: {integrity: sha512-a48Ta5kWiVNBgeEbZVMm6FB1hBlp6vEuou/XnZdlkmd2zq6NZR6Sh2j+kR1B0iOZIXrTMcigBYzZ39MLdYhm1g==} - engines: {node: '>= 7.6.0'} + merkletreejs@0.4.0: dependencies: bignumber.js: 9.1.2 buffer-reverse: 1.0.1 crypto-js: 4.2.0 treeify: 1.1.0 web3-utils: 1.10.4 - dev: false - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: true + methods@1.1.2: {} - /metro-babel-transformer@0.80.9: - resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} - engines: {node: '>=18'} + metro-babel-transformer@0.80.9: dependencies: '@babel/core': 7.25.2 hermes-parser: 0.20.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - dev: false - /metro-cache-key@0.80.9: - resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} - engines: {node: '>=18'} - dev: false + metro-cache-key@0.80.9: {} - /metro-cache@0.80.9: - resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} - engines: {node: '>=18'} + metro-cache@0.80.9: dependencies: metro-core: 0.80.9 rimraf: 3.0.2 - dev: false - /metro-config@0.80.9: - resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} - engines: {node: '>=18'} + metro-config@0.80.9: dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 @@ -18185,19 +22946,13 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /metro-core@0.80.9: - resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} - engines: {node: '>=18'} + metro-core@0.80.9: dependencies: lodash.throttle: 4.1.1 metro-resolver: 0.80.9 - dev: false - /metro-file-map@0.80.9: - resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} - engines: {node: '>=18'} + metro-file-map@0.80.9: dependencies: anymatch: 3.1.3 debug: 2.6.9 @@ -18213,30 +22968,18 @@ packages: fsevents: 2.3.3 transitivePeerDependencies: - supports-color - dev: false - /metro-minify-terser@0.80.9: - resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} - engines: {node: '>=18'} + metro-minify-terser@0.80.9: dependencies: terser: 5.31.1 - dev: false - /metro-resolver@0.80.9: - resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} - engines: {node: '>=18'} - dev: false + metro-resolver@0.80.9: {} - /metro-runtime@0.80.9: - resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} - engines: {node: '>=18'} + metro-runtime@0.80.9: dependencies: '@babel/runtime': 7.24.7 - dev: false - /metro-source-map@0.80.9: - resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} - engines: {node: '>=18'} + metro-source-map@0.80.9: dependencies: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 @@ -18248,12 +22991,8 @@ packages: vlq: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /metro-symbolicate@0.80.9: - resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} - engines: {node: '>=18'} - hasBin: true + metro-symbolicate@0.80.9: dependencies: invariant: 2.2.4 metro-source-map: 0.80.9 @@ -18263,11 +23002,8 @@ packages: vlq: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /metro-transform-plugins@0.80.9: - resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} - engines: {node: '>=18'} + metro-transform-plugins@0.80.9: dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.0 @@ -18276,11 +23012,8 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - dev: false - /metro-transform-worker@0.80.9: - resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} - engines: {node: '>=18'} + metro-transform-worker@0.80.9: dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.0 @@ -18299,12 +23032,8 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /metro@0.80.9: - resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} - engines: {node: '>=18'} - hasBin: true + metro@0.80.9: dependencies: '@babel/code-frame': 7.24.7 '@babel/core': 7.25.2 @@ -18354,14 +23083,10 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - dev: false + micro-ftch@0.3.1: {} - /micromark-core-commonmark@2.0.1: - resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + micromark-core-commonmark@2.0.1: dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -18379,10 +23104,8 @@ packages: micromark-util-subtokenize: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-directive@3.0.0: - resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} + micromark-extension-directive@3.0.0: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 @@ -18391,19 +23114,15 @@ packages: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 parse-entities: 4.0.1 - dev: false - /micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + micromark-extension-gfm-autolink-literal@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + micromark-extension-gfm-footnote@2.0.0: dependencies: devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -18413,10 +23132,8 @@ packages: micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + micromark-extension-gfm-strikethrough@2.0.0: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -18424,36 +23141,28 @@ packages: micromark-util-resolve-all: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + micromark-extension-gfm-table@2.0.0: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + micromark-extension-gfm-tagfilter@2.0.0: dependencies: micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + micromark-extension-gfm-task-list-item@2.0.1: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + micromark-extension-gfm@3.0.0: dependencies: micromark-extension-gfm-autolink-literal: 2.0.0 micromark-extension-gfm-footnote: 2.0.0 @@ -18463,10 +23172,8 @@ packages: micromark-extension-gfm-task-list-item: 2.0.1 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-mdx-expression@3.0.0: - resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + micromark-extension-mdx-expression@3.0.0: dependencies: '@types/estree': 1.0.5 devlop: 1.1.0 @@ -18476,10 +23183,8 @@ packages: micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-mdx-jsx@3.0.0: - resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + micromark-extension-mdx-jsx@3.0.0: dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.5 @@ -18491,16 +23196,12 @@ packages: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 vfile-message: 4.0.2 - dev: false - /micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + micromark-extension-mdx-md@2.0.0: dependencies: micromark-util-types: 2.0.0 - dev: false - /micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + micromark-extension-mdxjs-esm@3.0.0: dependencies: '@types/estree': 1.0.5 devlop: 1.1.0 @@ -18511,10 +23212,8 @@ packages: micromark-util-types: 2.0.0 unist-util-position-from-estree: 2.0.0 vfile-message: 4.0.2 - dev: false - /micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + micromark-extension-mdxjs@3.0.0: dependencies: acorn: 8.12.1 acorn-jsx: 5.3.2(acorn@8.12.1) @@ -18524,27 +23223,21 @@ packages: micromark-extension-mdxjs-esm: 3.0.0 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + micromark-factory-destination@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + micromark-factory-label@2.0.0: dependencies: devlop: 1.1.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-mdx-expression@2.0.1: - resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + micromark-factory-mdx-expression@2.0.1: dependencies: '@types/estree': 1.0.5 devlop: 1.1.0 @@ -18554,82 +23247,60 @@ packages: micromark-util-types: 2.0.0 unist-util-position-from-estree: 2.0.0 vfile-message: 4.0.2 - dev: false - /micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + micromark-factory-space@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + micromark-factory-title@2.0.0: dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + micromark-factory-whitespace@2.0.0: dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + micromark-util-character@2.1.0: dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + micromark-util-chunked@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + micromark-util-classify-character@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + micromark-util-combine-extensions@2.0.0: dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + micromark-util-decode-numeric-character-reference@2.0.1: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + micromark-util-decode-string@2.0.0: dependencies: decode-named-character-reference: 1.0.2 micromark-util-character: 2.1.0 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - dev: false + micromark-util-encode@2.0.0: {} - /micromark-util-events-to-acorn@2.0.2: - resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + micromark-util-events-to-acorn@2.0.2: dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.5 @@ -18639,51 +23310,35 @@ packages: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 vfile-message: 4.0.2 - dev: false - /micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - dev: false + micromark-util-html-tag-name@2.0.0: {} - /micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + micromark-util-normalize-identifier@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + micromark-util-resolve-all@2.0.0: dependencies: micromark-util-types: 2.0.0 - dev: false - /micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + micromark-util-sanitize-uri@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-subtokenize@2.0.1: - resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + micromark-util-subtokenize@2.0.1: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - dev: false + micromark-util-symbol@2.0.0: {} - /micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - dev: false + micromark-util-types@2.0.0: {} - /micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + micromark@4.0.0: dependencies: '@types/debug': 4.1.12 debug: 4.3.5 @@ -18704,135 +23359,72 @@ packages: micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - dev: false - /micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} + micromatch@4.0.7: dependencies: braces: 3.0.3 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true + mime@1.6.0: {} - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: false + mime@2.6.0: {} - /mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - dev: false + mime@3.0.0: {} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + mimic-fn@2.1.0: {} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} + mimic-fn@4.0.0: {} - /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true + mimic-response@3.1.0: {} - /mimic-response@4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + mimic-response@4.0.0: {} - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true + min-indent@1.0.1: {} - /minidenticons@4.2.1: - resolution: {integrity: sha512-oWfFivA0lOx/V/bO/YIJbthB26lV8JXYvhnv9zM2hNd3fzsHTXQ6c6bWZPcvhD3nnOB+lQk/D9lF43BXixrN8g==} - engines: {node: '>=15.14.0'} - dev: false + minidenticons@4.2.1: {} - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + minimalistic-assert@1.0.1: {} - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimalistic-crypto-utils@1.0.1: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 - dev: true - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} + minimatch@7.4.6: dependencies: brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimist@1.2.8: {} - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + minipass@3.3.6: dependencies: yallist: 4.0.0 - dev: true - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: true + minipass@5.0.0: {} - /minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.2: {} - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 - dev: true - /mipd@0.0.5(typescript@5.5.3): - resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + mipd@0.0.5(typescript@5.5.3): dependencies: typescript: 5.5.3 viem: 1.21.4(typescript@5.5.3) @@ -18840,39 +23432,25 @@ packages: - bufferutil - utf-8-validate - zod - dev: false - /mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: true + mkdirp-classic@0.5.3: {} - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + mkdirp@0.5.6: dependencies: minimist: 1.2.8 - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true + mkdirp@1.0.4: {} - /mkdirp@2.1.6: - resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} - engines: {node: '>=10'} - hasBin: true - dev: true + mkdirp@2.1.6: {} - /mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + mlly@1.7.1: dependencies: acorn: 8.12.0 pathe: 1.1.2 pkg-types: 1.1.2 ufo: 1.5.3 - /moralis@2.26.7(debug@4.3.5): - resolution: {integrity: sha512-nJLSSePOAfEL2iAje1GdP164OwDaICdbbkyivN7lPHutjirDMRD6bxYdYqOxDdzR1fx3mf5nhQEeD7o/pndgiQ==} + moralis@2.26.7(debug@4.3.5): dependencies: '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) '@moralisweb3/aptos-api': 2.26.7(debug@4.3.5) @@ -18889,10 +23467,8 @@ packages: '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug - dev: false - /motion@10.16.2: - resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + motion@10.16.2: dependencies: '@motionone/animation': 10.18.0 '@motionone/dom': 10.18.0 @@ -18900,263 +23476,146 @@ packages: '@motionone/types': 10.17.1 '@motionone/utils': 10.18.0 '@motionone/vue': 10.16.4 - dev: false - /mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} + mri@1.2.0: {} - /mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} + mrmime@2.0.0: {} - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.0.0: {} - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.2: {} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + ms@2.1.3: {} - /muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - dev: false + muggle-string@0.4.1: {} - /multiformats@11.0.2: - resolution: {integrity: sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + multiformats@11.0.2: {} - /multiformats@12.1.3: - resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + multiformats@12.1.3: {} - /multiformats@13.1.3: - resolution: {integrity: sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==} - dev: false + multiformats@13.1.3: {} - /multiformats@9.9.0: - resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} - dev: false + multiformats@9.9.0: {} - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + murky@https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d: {} + + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + nanoid@3.3.7: {} - /nanoid@4.0.2: - resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} - engines: {node: ^14 || ^16 || >=18} - hasBin: true - dev: false + nanoid@4.0.2: {} - /napi-wasm@1.1.0: - resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} - dev: false + napi-wasm@1.1.0: {} - /native-fetch@3.0.0(node-fetch@2.7.0): - resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} - peerDependencies: - node-fetch: '*' + native-fetch@3.0.0(node-fetch@2.7.0): dependencies: node-fetch: 2.7.0 - dev: false - /native-fetch@4.0.2(undici@5.28.4): - resolution: {integrity: sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==} - peerDependencies: - undici: '*' + native-fetch@4.0.2(undici@5.28.4): dependencies: undici: 5.28.4 - dev: false - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} + negotiator@0.6.3: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + neo-async@2.6.2: {} - /next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + next-tick@1.1.0: {} - /nlcst-to-string@4.0.0: - resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + nlcst-to-string@4.0.0: dependencies: '@types/nlcst': 2.0.3 - dev: false - /no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + no-case@3.0.4: dependencies: lower-case: 2.0.2 tslib: 2.6.3 - dev: true - /nocache@3.0.4: - resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} - engines: {node: '>=12.0.0'} - dev: false + nocache@3.0.4: {} - /node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - dev: false + node-abort-controller@3.1.1: {} - /node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - dev: false + node-addon-api@2.0.2: {} - /node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - dev: false + node-addon-api@5.1.0: {} - /node-addon-api@7.1.0: - resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} - engines: {node: ^16 || ^18 || >= 20} - dev: false + node-addon-api@7.1.0: {} - /node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} + node-dir@0.1.17: dependencies: minimatch: 3.1.2 - /node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + node-fetch-native@1.6.4: {} - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - /node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - dev: false + node-forge@1.3.1: {} - /node-gyp-build@4.8.1: - resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} - hasBin: true - dev: false + node-gyp-build@4.8.1: {} - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: false + node-int64@0.4.0: {} - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.14: {} - /node-stream-zip@1.15.0: - resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} - engines: {node: '>=0.12.0'} - dev: false + node-stream-zip@1.15.0: {} - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 - dev: true - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + normalize-path@3.0.0: {} - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} + normalize-range@0.1.2: {} - /normalize-url@8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} - engines: {node: '>=14.16'} - dev: true + normalize-url@8.0.1: {} - /not@0.1.0: - resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} - dev: false + not@0.1.0: {} - /npm-bundled@2.0.1: - resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + npm-bundled@2.0.1: dependencies: npm-normalize-package-bin: 2.0.0 - dev: true - /npm-normalize-package-bin@2.0.0: - resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dev: true + npm-normalize-package-bin@2.0.0: {} - /npm-packlist@5.1.3: - resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true + npm-packlist@5.1.3: dependencies: glob: 8.1.0 ignore-walk: 5.0.1 npm-bundled: 2.0.1 npm-normalize-package-bin: 2.0.0 - dev: true - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - /npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nth-check@2.1.1: dependencies: boolbase: 1.0.0 - dev: false - /nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - dev: false + nullthrows@1.1.1: {} - /number-to-bn@1.7.0: - resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} - engines: {node: '>=6.5.0', npm: '>=3'} + number-to-bn@1.7.0: dependencies: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 - dev: false - /nwsapi@2.2.10: - resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} - dev: true + nwsapi@2.2.10: {} - /nypm@0.3.9: - resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true + nypm@0.3.9: dependencies: citty: 0.1.6 consola: 3.2.3 @@ -19164,164 +23623,108 @@ packages: pathe: 1.1.2 pkg-types: 1.1.2 ufo: 1.5.3 - dev: true - /ob1@0.80.9: - resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} - engines: {node: '>=18'} - dev: false + ob1@0.80.9: {} - /obj-multiplex@1.0.0: - resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + obj-multiplex@1.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 readable-stream: 2.3.8 - dev: false - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + object-assign@4.1.1: {} - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + object-hash@3.0.0: {} - /object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - dev: true + object-inspect@1.13.2: {} - /object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} + object-is@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - dev: true - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true + object-keys@1.1.1: {} - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} + object.groupby@1.0.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 - dev: true - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /ofetch@1.3.4: - resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + ofetch@1.3.4: dependencies: destr: 2.0.3 node-fetch-native: 1.6.4 ufo: 1.5.3 - dev: false - /ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + ohash@1.1.3: {} - /on-exit-leak-free@0.2.0: - resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} - dev: false + on-exit-leak-free@0.2.0: {} - /on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} + on-finished@2.3.0: dependencies: ee-first: 1.1.1 - dev: false - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 - /on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} + on-headers@1.0.2: {} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 - /open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} + open@6.4.0: dependencies: is-wsl: 1.1.0 - dev: false - /open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} + open@7.4.2: dependencies: is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - /openapi-types@12.1.3: - resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - dev: false + openapi-types@12.1.3: {} - /optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} + optimism@https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8: + dependencies: + '@changesets/cli': 2.27.7 + + optionator@0.9.4: dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -19329,11 +23732,8 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.5 - dev: true - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + ora@5.4.1: dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -19345,9 +23745,7 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 - /ora@6.3.1: - resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + ora@6.3.1: dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 @@ -19359,9 +23757,7 @@ packages: strip-ansi: 7.1.0 wcwidth: 1.0.1 - /ora@8.0.1: - resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} - engines: {node: '>=18'} + ora@8.0.1: dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 @@ -19372,169 +23768,103 @@ packages: stdin-discarder: 0.2.2 string-width: 7.2.0 strip-ansi: 7.1.0 - dev: false - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} + os-tmpdir@1.0.2: {} - /outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - dev: false + outdent@0.5.0: {} - /p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - dev: true + p-cancelable@3.0.0: {} - /p-defer@3.0.0: - resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} - engines: {node: '>=8'} - dev: false + p-defer@3.0.0: {} - /p-defer@4.0.1: - resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} - engines: {node: '>=12'} - dev: false + p-defer@4.0.1: {} - /p-fifo@1.0.0: - resolution: {integrity: sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==} + p-fifo@1.0.0: dependencies: fast-fifo: 1.3.2 p-defer: 3.0.0 - dev: false - /p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} + p-filter@2.1.0: dependencies: p-map: 2.1.0 - dev: false - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@2.3.0: dependencies: p-try: 2.2.0 - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@4.0.0: dependencies: yocto-queue: 1.1.1 - /p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} + p-limit@5.0.0: dependencies: yocto-queue: 1.1.1 - dev: true - /p-limit@6.1.0: - resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} - engines: {node: '>=18'} + p-limit@6.1.0: dependencies: yocto-queue: 1.1.1 - dev: false - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} + p-locate@3.0.0: dependencies: p-limit: 2.3.0 - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@6.0.0: dependencies: p-limit: 4.0.0 - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - dev: false + p-map@2.1.0: {} - /p-map@7.0.2: - resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} - engines: {node: '>=18'} - dev: true + p-map@7.0.2: {} - /p-queue@8.0.1: - resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} - engines: {node: '>=18'} + p-queue@8.0.1: dependencies: eventemitter3: 5.0.1 p-timeout: 6.1.2 - dev: false - /p-timeout@6.1.2: - resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} - engines: {node: '>=14.16'} - dev: false + p-timeout@6.1.2: {} - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + p-try@2.2.0: {} - /package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da: {} - /package-json@8.1.1: - resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} - engines: {node: '>=14.16'} + package-json-from-dist@1.0.0: {} + + package-json@8.1.1: dependencies: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 semver: 7.6.3 - dev: true - /pagefind@1.1.0: - resolution: {integrity: sha512-1nmj0/vfYcMxNEQj0YDRp6bTVv9hI7HLdPhK/vBBYlrnwjATndQvHyicj5Y7pUHrpCFZpFnLVQXIF829tpFmaw==} - hasBin: true + pagefind@1.1.0: optionalDependencies: '@pagefind/darwin-arm64': 1.1.0 '@pagefind/darwin-x64': 1.1.0 '@pagefind/linux-arm64': 1.1.0 '@pagefind/linux-x64': 1.1.0 '@pagefind/windows-x64': 1.1.0 - dev: false - /pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - dev: true + pako@0.2.9: {} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - dev: true - /parse-duration@1.1.0: - resolution: {integrity: sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==} - dev: false + parse-duration@1.1.0: {} - /parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + parse-entities@4.0.1: dependencies: '@types/unist': 2.0.10 character-entities: 2.0.2 @@ -19544,28 +23874,20 @@ packages: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - dev: false - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} + parse-json@4.0.0: dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - dev: false - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true - /parse-latin@7.0.0: - resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + parse-latin@7.0.0: dependencies: '@types/nlcst': 2.0.3 '@types/unist': 3.0.2 @@ -19573,154 +23895,93 @@ packages: unist-util-modify-children: 4.0.0 unist-util-visit-children: 3.0.0 vfile: 6.0.2 - dev: false - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@7.1.2: dependencies: entities: 4.5.0 - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} + parseurl@1.3.3: {} - /pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + pascal-case@3.1.2: dependencies: no-case: 3.0.4 tslib: 2.6.3 - dev: true - /path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-browserify@1.0.1: {} - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} + path-exists@3.0.0: {} - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + path-exists@4.0.0: {} - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + path-exists@5.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + path-is-absolute@1.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} + path-key@4.0.0: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-parse@1.0.7: {} - /path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + path-scurry@1.11.1: dependencies: lru-cache: 10.3.0 minipass: 7.1.2 - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - dev: true + path-to-regexp@0.1.7: {} - /path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} - dev: false + path-to-regexp@6.2.2: {} - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + path-type@4.0.0: {} - /path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - dev: true + path-type@5.0.0: {} - /pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathe@1.1.2: {} - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true + pathval@1.1.1: {} - /pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} + pbkdf2@3.1.2: dependencies: create-hash: 1.2.0 create-hmac: 1.1.7 ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: false - /peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + peek-stream@1.1.3: dependencies: buffer-from: 1.1.2 duplexify: 3.7.1 through2: 2.0.5 - dev: true - /periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + periscopic@3.1.0: dependencies: '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 - /picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.0.1: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@2.3.1: {} - /picomatch@3.0.1: - resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} - engines: {node: '>=10'} + picomatch@3.0.1: {} - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + pify@2.3.0: {} - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: false + pify@3.0.0: {} - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} + pify@4.0.1: {} - /pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - dev: false + pify@5.0.0: {} - /pino-abstract-transport@0.5.0: - resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + pino-abstract-transport@0.5.0: dependencies: duplexify: 4.1.3 split2: 4.2.0 - dev: false - /pino-std-serializers@4.0.0: - resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} - dev: false + pino-std-serializers@4.0.0: {} - /pino@7.11.0: - resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} - hasBin: true + pino@7.11.0: dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 @@ -19733,370 +23994,204 @@ packages: safe-stable-stringify: 2.4.3 sonic-boom: 2.8.0 thread-stream: 0.15.2 - dev: false - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + pirates@4.0.6: {} - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} + pkg-dir@3.0.0: dependencies: find-up: 3.0.0 - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - /pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} + pkg-dir@5.0.0: dependencies: find-up: 5.0.0 - dev: true - /pkg-types@1.1.2: - resolution: {integrity: sha512-VEGf1he2DR5yowYRl0XJhWJq5ktm9gYIsH+y8sNJpHlxch7JPDaufgrsl4vYjd9hMUY8QVjoNncKbow9I7exyA==} + pkg-types@1.1.2: dependencies: confbox: 0.1.7 mlly: 1.7.1 pathe: 1.1.2 - /playwright-core@1.45.0: - resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} - engines: {node: '>=18'} - hasBin: true - dev: true + playwright-core@1.45.0: {} - /playwright@1.45.0: - resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} - engines: {node: '>=18'} - hasBin: true + playwright@1.45.0: dependencies: playwright-core: 1.45.0 optionalDependencies: fsevents: 2.3.2 - dev: true - /pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - dev: true + pluralize@8.0.0: {} - /pngjs@5.0.0: - resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} - engines: {node: '>=10.13.0'} - dev: false + pngjs@5.0.0: {} - /polished@4.3.1: - resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} - engines: {node: '>=10'} + polished@4.3.1: dependencies: '@babel/runtime': 7.24.7 - dev: true - /pony-cause@2.1.11: - resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} - engines: {node: '>=12.0.0'} - dev: false + pony-cause@2.1.11: {} - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} + possible-typed-array-names@1.0.0: {} - /postcss-import@15.1.0(postcss@8.4.39): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + postcss-import@15.1.0(postcss@8.4.39): dependencies: postcss: 8.4.39 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - /postcss-import@16.1.0(postcss@8.4.39): - resolution: {integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==} - engines: {node: '>=18.0.0'} - peerDependencies: - postcss: ^8.0.0 + postcss-import@16.1.0(postcss@8.4.39): dependencies: postcss: 8.4.39 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - dev: true - /postcss-js@4.0.1(postcss@8.4.39): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 + postcss-js@4.0.1(postcss@8.4.39): dependencies: camelcase-css: 2.0.1 postcss: 8.4.39 - /postcss-js@4.0.1(postcss@8.4.41): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 + postcss-js@4.0.1(postcss@8.4.41): dependencies: camelcase-css: 2.0.1 postcss: 8.4.41 - dev: false - /postcss-load-config@3.1.4(postcss@8.4.39): - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + postcss-load-config@3.1.4(postcss@8.4.39): dependencies: lilconfig: 2.1.0 postcss: 8.4.39 yaml: 1.10.2 - dev: true - /postcss-load-config@4.0.2(postcss@8.4.39): - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + postcss-load-config@4.0.2(postcss@8.4.39): dependencies: lilconfig: 3.1.2 postcss: 8.4.39 yaml: 2.4.5 - /postcss-nested@5.0.6(postcss@8.4.39): - resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + postcss-nested@5.0.6(postcss@8.4.39): dependencies: postcss: 8.4.39 postcss-selector-parser: 6.1.0 - dev: true - /postcss-nested@6.0.1(postcss@8.4.39): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + postcss-nested@6.0.1(postcss@8.4.39): dependencies: postcss: 8.4.39 postcss-selector-parser: 6.1.0 - /postcss-nesting@12.1.5(postcss@8.4.39): - resolution: {integrity: sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.4 + postcss-nesting@12.1.5(postcss@8.4.39): dependencies: '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.1.0) '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) postcss: 8.4.39 postcss-selector-parser: 6.1.0 - dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.39): - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.3.3 + postcss-safe-parser@6.0.0(postcss@8.4.39): dependencies: postcss: 8.4.39 - dev: true - /postcss-scss@4.0.9(postcss@8.4.39): - resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.4.29 + postcss-scss@4.0.9(postcss@8.4.39): dependencies: postcss: 8.4.39 - dev: true - /postcss-selector-parser@6.1.0: - resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} - engines: {node: '>=4'} + postcss-selector-parser@6.1.0: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss-value-parser@4.2.0: {} - /postcss@8.4.39: - resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.39: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 source-map-js: 1.2.0 - /postcss@8.4.41: - resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.41: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 source-map-js: 1.2.0 - /preact@10.22.1: - resolution: {integrity: sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==} - dev: false + preact@10.22.1: {} - /preferred-pm@3.1.3: - resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} - engines: {node: '>=10'} + preferred-pm@3.1.3: dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 which-pm: 2.0.0 - dev: false - /preferred-pm@4.0.0: - resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==} - engines: {node: '>=18.12'} + preferred-pm@4.0.0: dependencies: find-up-simple: 1.0.0 find-yarn-workspace-root2: 1.2.16 which-pm: 3.0.0 - dev: false - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.2.1: {} - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - dev: true - /prettier-plugin-svelte@3.2.5(prettier@3.3.2)(svelte@4.2.18): - resolution: {integrity: sha512-vP/M/Goc8z4iVIvrwXwbrYVjJgA0Hf8PO1G4LBh/ocSt6vUP6sLvyu9F3ABEGr+dbKyxZjEKLkeFsWy/yYl0HQ==} - peerDependencies: - prettier: ^3.0.0 - svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier-plugin-svelte@3.2.5(prettier@3.3.2)(svelte@4.2.18): dependencies: prettier: 3.3.2 svelte: 4.2.18 - dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - requiresBuild: true + prettier@2.8.8: {} - /prettier@3.3.2: - resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} - engines: {node: '>=14'} - hasBin: true + prettier@3.3.2: {} - /pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} + pretty-format@26.6.2: dependencies: '@jest/types': 26.6.2 ansi-regex: 5.0.1 ansi-styles: 4.3.0 react-is: 17.0.2 - dev: false - /pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 - dev: true - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 - /pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - dev: true + pretty-hrtime@1.0.3: {} - /prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - dev: false + prismjs@1.29.0: {} - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process-nextick-args@2.0.1: {} - /process-warning@1.0.0: - resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} - dev: false + process-warning@1.0.0: {} - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: true + process@0.11.10: {} - /progress-events@1.0.0: - resolution: {integrity: sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + progress-events@1.0.0: {} - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: true + progress@2.0.3: {} - /promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + promise@8.3.0: dependencies: asap: 2.0.6 - dev: false - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - /property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - dev: false + property-information@6.5.0: {} - /proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - dev: true + proto-list@1.2.4: {} - /protobufjs@7.3.2: - resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==} - engines: {node: '>=12.0.0'} - requiresBuild: true + protobufjs@7.3.2: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -20110,277 +24205,160 @@ packages: '@protobufjs/utf8': 1.1.0 '@types/node': 20.14.9 long: 5.2.3 - dev: false - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - dev: true - /proxy-compare@2.5.1: - resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} - dev: false + proxy-compare@2.5.1: {} - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + proxy-from-env@1.1.0: {} - /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: false + pseudomap@1.0.2: {} - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true + psl@1.9.0: {} - /publint@0.1.16: - resolution: {integrity: sha512-wJgk7HnXDT5Ap0DjFYbGz78kPkN44iQvDiaq8P63IEEyNU9mYXvaMd2cAyIM6OgqXM/IA3CK6XWIsRq+wjNpgw==} - engines: {node: '>=16'} - hasBin: true + publint@0.1.16: dependencies: npm-packlist: 5.1.3 picocolors: 1.0.1 sade: 1.8.1 - dev: true - /pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + pump@2.0.1: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: true - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - /pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + pumpify@1.5.1: dependencies: duplexify: 3.7.1 inherits: 2.0.4 pump: 2.0.1 - dev: true - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + punycode@2.3.1: {} - /qr-code-styling@1.6.0-rc.1: - resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} + qr-code-styling@1.6.0-rc.1: dependencies: qrcode-generator: 1.4.4 - dev: false - /qrcode-generator@1.4.4: - resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} - dev: false + qrcode-generator@1.4.4: {} - /qrcode-terminal-nooctal@0.12.1: - resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} - hasBin: true - dev: false + qrcode-terminal-nooctal@0.12.1: {} - /qrcode@1.5.3: - resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} - engines: {node: '>=10.13.0'} - hasBin: true + qrcode@1.5.3: dependencies: dijkstrajs: 1.0.3 encode-utf8: 1.0.3 pngjs: 5.0.0 yargs: 15.4.1 - dev: false - /qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} + qs@6.11.0: dependencies: side-channel: 1.0.6 - dev: true - /qs@6.12.2: - resolution: {integrity: sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==} - engines: {node: '>=0.6'} + qs@6.12.2: dependencies: side-channel: 1.0.6 - dev: true - /query-string@7.1.3: - resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} - engines: {node: '>=6'} + query-string@7.1.3: dependencies: decode-uri-component: 0.2.2 filter-obj: 1.1.0 split-on-first: 1.1.0 strict-uri-encode: 2.0.0 - dev: false - /querystring@0.2.1: - resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: false + querystring@0.2.1: {} - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true + querystringify@2.2.0: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue-microtask@1.2.3: {} - /queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + queue@6.0.2: dependencies: inherits: 2.0.4 - dev: false - /quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - dev: false + quick-format-unescaped@4.0.4: {} - /quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true + quick-lru@5.1.1: {} - /radix3@1.1.2: - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - dev: false + radix3@1.1.2: {} - /ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} - dev: true + ramda@0.29.0: {} - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - dev: false - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} + range-parser@1.2.1: {} - /raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} + raw-body@2.5.2: dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - dev: true - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true + rc@1.2.8: dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: true - /react-colorful@5.6.1(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + react-colorful@5.6.1(react-dom@18.3.1)(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: true - /react-confetti@6.1.0(react@18.3.1): - resolution: {integrity: sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==} - engines: {node: '>=10.18'} - peerDependencies: - react: ^16.3.0 || ^17.0.1 || ^18.0.0 + react-confetti@6.1.0(react@18.3.1): dependencies: react: 18.3.1 tween-functions: 1.2.0 - dev: true - /react-devtools-core@5.3.0: - resolution: {integrity: sha512-IG3T+azv48Oc5VLdHR4XdBNKNZIUOKRtx0sJMRvb++Zom/uqtx73j6u37JCsIBNIaq6vA7RPH5Bbcf/Wj53KXA==} + react-devtools-core@5.3.0: dependencies: shell-quote: 1.8.1 ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /react-dom@18.3.1(react@18.3.1): - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 react: 18.3.1 scheduler: 0.23.2 - dev: true - /react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.3)(react@18.3.1): - resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} - peerDependencies: - i18next: '>= 23.2.3' - react: '>= 16.8.0' - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true + react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.3)(react@18.3.1): dependencies: '@babel/runtime': 7.24.7 html-parse-stringify: 3.0.1 i18next: 22.5.1 react: 18.3.1 react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) - dev: false - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-is@17.0.2: {} - /react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@18.3.1: {} - /react-native-fetch-api@3.0.0: - resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} + react-native-fetch-api@3.0.0: dependencies: p-defer: 3.0.0 - dev: false - /react-native-webview@11.26.1(react-native@0.74.3)(react@18.3.1): - resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} - peerDependencies: - react: '*' - react-native: '*' + react-native-webview@11.26.1(react-native@0.74.3)(react@18.3.1): dependencies: escape-string-regexp: 2.0.0 invariant: 2.2.4 react: 18.3.1 react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) - dev: false - /react-native@0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1): - resolution: {integrity: sha512-UFutCC6WEw6HkxlcpQ2BemKqi0JkwrgDchYB5Svi8Sp4Xwt4HA6LGEjNQgZ+3KM44bjyFRpofQym0uh0jACGng==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@types/react': ^18.2.6 - react: 18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-native@0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native-community/cli': 13.6.9 @@ -20427,38 +24405,17 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - dev: false + react-refresh@0.14.2: {} - /react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): dependencies: '@types/react': 18.3.3 react: 18.3.1 react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) tslib: 2.6.3 - dev: true - /react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): dependencies: '@types/react': 18.3.3 react: 18.3.1 @@ -20467,77 +24424,50 @@ packages: tslib: 2.6.3 use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - dev: true - /react-shallow-renderer@16.15.0(react@18.3.1): - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-shallow-renderer@16.15.0(react@18.3.1): dependencies: object-assign: 4.1.1 react: 18.3.1 react-is: 18.3.1 - dev: false - /react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): dependencies: '@types/react': 18.3.3 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 tslib: 2.6.3 - dev: true - /react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} + react@18.3.1: dependencies: loose-envify: 1.4.0 - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + read-cache@1.0.0: dependencies: pify: 2.3.0 - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} + read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - dev: true - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} + read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 - dev: true - /read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: false - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -20547,103 +24477,68 @@ packages: string_decoder: 1.1.1 util-deprecate: 1.0.2 - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - /readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - dev: false + readline@1.3.0: {} - /real-require@0.1.0: - resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} - engines: {node: '>= 12.13.0'} - dev: false + real-require@0.1.0: {} - /recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} + recast@0.21.5: dependencies: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 tslib: 2.6.3 - dev: false - /recast@0.23.9: - resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} - engines: {node: '>= 4'} + recast@0.23.9: dependencies: ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 tiny-invariant: 1.3.3 tslib: 2.6.3 - dev: true - /receptacle@1.3.2: - resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} + receptacle@1.3.2: dependencies: ms: 2.1.3 - dev: false - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - dev: true - /regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} + regenerate-unicode-properties@10.1.1: dependencies: regenerate: 1.4.2 - /regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + regenerate@1.4.2: {} - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: false + regenerator-runtime@0.13.11: {} - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regenerator-runtime@0.14.1: {} - /regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regenerator-transform@0.15.2: dependencies: '@babel/runtime': 7.24.7 - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - dev: true - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true + regexpp@3.2.0: {} - /regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} + regexpu-core@5.3.2: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 @@ -20652,34 +24547,23 @@ packages: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - /registry-auth-token@5.0.2: - resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} - engines: {node: '>=14'} + registry-auth-token@5.0.2: dependencies: '@pnpm/npm-conf': 2.2.2 - dev: true - /registry-url@6.0.1: - resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} - engines: {node: '>=12'} + registry-url@6.0.1: dependencies: rc: 1.2.8 - dev: true - /regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true + regjsparser@0.9.1: dependencies: jsesc: 0.5.0 - /rehype-expressive-code@0.35.6: - resolution: {integrity: sha512-pPdE+pRcRw01kxMOwHQjuRxgwlblZt5+wAc3w2aPGgmcnn57wYjn07iKO7zaznDxYVxMYVvYlnL+R3vWFQS4Gw==} + rehype-expressive-code@0.35.6: dependencies: expressive-code: 0.35.6 - dev: false - /rehype-external-links@3.0.0: - resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} + rehype-external-links@3.0.0: dependencies: '@types/hast': 3.0.4 '@ungap/structured-clone': 1.2.0 @@ -20687,10 +24571,8 @@ packages: is-absolute-url: 4.0.1 space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 - dev: true - /rehype-format@5.0.0: - resolution: {integrity: sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==} + rehype-format@5.0.0: dependencies: '@types/hast': 3.0.4 hast-util-embedded: 3.0.0 @@ -20700,63 +24582,49 @@ packages: html-whitespace-sensitive-tag-names: 3.0.0 rehype-minify-whitespace: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /rehype-minify-whitespace@6.0.0: - resolution: {integrity: sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==} + rehype-minify-whitespace@6.0.0: dependencies: '@types/hast': 3.0.4 hast-util-embedded: 3.0.0 hast-util-is-element: 3.0.0 hast-util-whitespace: 3.0.0 unist-util-is: 6.0.0 - dev: false - /rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + rehype-parse@9.0.0: dependencies: '@types/hast': 3.0.4 hast-util-from-html: 2.0.1 unified: 11.0.5 - dev: false - /rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 hast-util-raw: 9.0.4 vfile: 6.0.2 - dev: false - /rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + rehype-slug@6.0.0: dependencies: '@types/hast': 3.0.4 github-slugger: 2.0.0 hast-util-heading-rank: 3.0.0 hast-util-to-string: 3.0.0 unist-util-visit: 5.0.0 - dev: true - /rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} + rehype-stringify@10.0.0: dependencies: '@types/hast': 3.0.4 hast-util-to-html: 9.0.1 unified: 11.0.5 - dev: false - /rehype@13.0.1: - resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} + rehype@13.0.1: dependencies: '@types/hast': 3.0.4 rehype-parse: 9.0.0 rehype-stringify: 10.0.0 unified: 11.0.5 - dev: false - /remark-directive@3.0.0: - resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} + remark-directive@3.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-directive: 3.0.0 @@ -20764,10 +24632,8 @@ packages: unified: 11.0.5 transitivePeerDependencies: - supports-color - dev: false - /remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + remark-gfm@4.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0 @@ -20777,19 +24643,15 @@ packages: unified: 11.0.5 transitivePeerDependencies: - supports-color - dev: false - /remark-mdx@3.0.1: - resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} + remark-mdx@3.0.1: dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 transitivePeerDependencies: - supports-color - dev: false - /remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.1 @@ -20797,218 +24659,134 @@ packages: unified: 11.0.5 transitivePeerDependencies: - supports-color - dev: false - /remark-rehype@11.1.0: - resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} + remark-rehype@11.1.0: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.0 unified: 11.0.5 vfile: 6.0.2 - dev: false - /remark-smartypants@3.0.2: - resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} - engines: {node: '>=16.0.0'} + remark-smartypants@3.0.2: dependencies: retext: 9.0.0 retext-smartypants: 6.1.0 unified: 11.0.5 unist-util-visit: 5.0.0 - dev: false - /remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 unified: 11.0.5 - dev: false - /request-light@0.7.0: - resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} - dev: false + request-light@0.7.0: {} - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: false + require-directory@2.1.1: {} - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} + require-from-string@2.0.2: {} - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: false + require-main-filename@2.0.0: {} - /requireindex@1.2.0: - resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} - engines: {node: '>=0.10.5'} - dev: true + requireindex@1.2.0: {} - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true + requires-port@1.0.0: {} - /resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - dev: true + resolve-alpn@1.2.1: {} - /resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - dev: false + resolve-from@3.0.0: {} - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true + resolve-from@4.0.0: {} - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} + resolve-from@5.0.0: {} - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true + resolve-pkg-maps@1.0.0: {} - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + resolve@1.22.8: dependencies: is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} + responselike@3.0.0: dependencies: lowercase-keys: 3.0.0 - dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - /restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + restore-cursor@4.0.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - /retext-latin@4.0.0: - resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} + retext-latin@4.0.0: dependencies: '@types/nlcst': 2.0.3 parse-latin: 7.0.0 unified: 11.0.5 - dev: false - /retext-smartypants@6.1.0: - resolution: {integrity: sha512-LDPXg95346bqFZnDMHo0S7Rq5p64+B+N8Vz733+wPMDtwb9rCOs9LIdIEhrUOU+TAywX9St+ocQWJt8wrzivcQ==} + retext-smartypants@6.1.0: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 unist-util-visit: 5.0.0 - dev: false - /retext-stringify@4.0.0: - resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} + retext-stringify@4.0.0: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 unified: 11.0.5 - dev: false - /retext@9.0.0: - resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} + retext@9.0.0: dependencies: '@types/nlcst': 2.0.3 retext-latin: 4.0.0 retext-stringify: 4.0.0 unified: 11.0.5 - dev: false - /retimer@3.0.0: - resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} - dev: false + retimer@3.0.0: {} - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + reusify@1.0.4: {} - /rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true + rimraf@2.6.3: dependencies: glob: 7.2.3 - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true + rimraf@2.7.1: dependencies: glob: 7.2.3 - dev: true - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - /ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + ripemd160@2.0.2: dependencies: hash-base: 3.1.0 inherits: 2.0.4 - dev: false - /rlp@2.2.7: - resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} - hasBin: true + risc0-ethereum#v1.0.0@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900: {} + + rlp@2.2.7: dependencies: bn.js: 5.2.1 - dev: false - /rollup-plugin-visualizer@5.12.0: - resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rollup: - optional: true + rollup-plugin-visualizer@5.12.0: dependencies: open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.7.2 - dev: false - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true + rollup@3.29.4: optionalDependencies: fsevents: 2.3.3 - dev: true - /rollup@4.18.0: - resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + rollup@4.18.0: dependencies: '@types/estree': 1.0.5 optionalDependencies: @@ -21030,150 +24808,93 @@ packages: '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 - /rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - dev: true + rrweb-cssom@0.6.0: {} - /rrweb-cssom@0.7.1: - resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} - dev: true + rrweb-cssom@0.7.1: {} - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - /sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} + sade@1.8.1: dependencies: mri: 1.2.0 - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-buffer@5.1.2: {} - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true - /safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - dev: false + safe-stable-stringify@2.4.3: {} - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + safer-buffer@2.1.2: {} - /sander@0.5.1: - resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + sander@0.5.1: dependencies: es6-promise: 3.3.1 graceful-fs: 4.2.11 mkdirp: 0.5.6 rimraf: 2.7.1 - dev: true - /sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - dev: false + sax@1.4.1: {} - /saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} + saxes@6.0.0: dependencies: xmlchars: 2.2.0 - dev: true - /scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 - dev: true - /scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + scheduler@0.24.0-canary-efb381bbf-20230505: dependencies: loose-envify: 1.4.0 - dev: false - /scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + scrypt-js@3.0.1: {} - /secp256k1@4.0.3: - resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} - engines: {node: '>=10.0.0'} - requiresBuild: true + secp256k1@4.0.3: dependencies: elliptic: 6.5.5 node-addon-api: 2.0.2 node-gyp-build: 4.8.1 - dev: false - /secp256k1@5.0.0: - resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} - engines: {node: '>=14.0.0'} - requiresBuild: true + secp256k1@5.0.0: dependencies: elliptic: 6.5.5 node-addon-api: 5.1.0 node-gyp-build: 4.8.1 - dev: false - /section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} + section-matter@1.0.0: dependencies: extend-shallow: 2.0.1 kind-of: 6.0.3 - dev: false - /selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} + selfsigned@2.4.1: dependencies: '@types/node-forge': 1.3.11 node-forge: 1.3.1 - dev: false - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true + semver@5.7.2: {} - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true + semver@6.3.1: {} - /semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.2: {} - /semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.3: {} - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} + send@0.18.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -21191,14 +24912,9 @@ packages: transitivePeerDependencies: - supports-color - /serialize-error@2.1.0: - resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} - engines: {node: '>=0.10.0'} - dev: false + serialize-error@2.1.0: {} - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} + serve-static@1.15.0: dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -21207,17 +24923,11 @@ packages: transitivePeerDependencies: - supports-color - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false + set-blocking@2.0.0: {} - /set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - dev: true + set-cookie-parser@2.6.0: {} - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -21226,41 +24936,27 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.2 - /set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} + set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - dev: true - /setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: false + setimmediate@1.0.5: {} - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + setprototypeof@1.2.0: {} - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true + sha.js@2.4.11: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} + shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 - /sharp@0.33.4: - resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} - engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} - requiresBuild: true + sharp@0.33.4: dependencies: color: 4.2.3 detect-libc: 2.0.3 @@ -21285,127 +24981,79 @@ packages: '@img/sharp-wasm32': 0.33.4 '@img/sharp-win32-ia32': 0.33.4 '@img/sharp-win32-x64': 0.33.4 - dev: false - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 - dev: false - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: false + shebang-regex@1.0.0: {} - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + shebang-regex@3.0.0: {} - /shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: false + shell-quote@1.8.1: {} - /shiki@1.10.0: - resolution: {integrity: sha512-YD2sXQ+TMD/F9BimV9Jn0wj35pqOvywvOG/3PB6hGHyGKlM7TJ9tyJ02jOb2kF8F0HfJwKNYrh3sW7jEcuRlXA==} + shiki@1.10.0: dependencies: '@shikijs/core': 1.10.0 - dev: false - /shiki@1.12.1: - resolution: {integrity: sha512-nwmjbHKnOYYAe1aaQyEBHvQymJgfm86ZSS7fT8OaPRr4sbAcBNz7PbfAikMEFSDQ6se2j2zobkXvVKcBOm0ysg==} + shiki@1.12.1: dependencies: '@shikijs/core': 1.12.1 '@types/hast': 3.0.4 - dev: false - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} + side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.2 - dev: true - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true + siginfo@2.0.0: {} - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@3.0.7: {} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + signal-exit@4.1.0: {} - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 - dev: false - /sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} + sirv@2.0.4: dependencies: '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 - dev: true - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + sisteransi@1.0.5: {} - /sitemap@7.1.2: - resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} - hasBin: true + sitemap@7.1.2: dependencies: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 sax: 1.4.1 - dev: false - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} + slash@3.0.0: {} - /slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - dev: true + slash@5.1.0: {} - /slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} + slice-ansi@2.1.0: dependencies: ansi-styles: 3.2.1 astral-regex: 1.0.0 is-fullwidth-code-point: 2.0.0 - dev: false - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} + slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - dev: true - /socket.io-client@4.7.5: - resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} - engines: {node: '>=10.0.0'} + socket.io-client@4.7.5: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.5 @@ -21415,22 +25063,19 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} - engines: {node: '>=10.0.0'} + socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.5 transitivePeerDependencies: - supports-color - dev: false - /solc@0.8.24: - resolution: {integrity: sha512-G5yUqjTUPc8Np74sCFwfsevhBPlUifUOfhYrgyu6CmYlC6feSw0YS6eZW47XDT23k3JYdKx5nJ+Q7whCEmNcoA==} - engines: {node: '>=10.0.0'} - hasBin: true + solady@https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b: {} + + solady@https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d: {} + + solc@0.8.24: dependencies: command-exists: 1.2.9 commander: 8.3.0 @@ -21441,11 +25086,8 @@ packages: tmp: 0.0.33 transitivePeerDependencies: - debug - dev: true - /solhint@4.5.4(typescript@5.5.3): - resolution: {integrity: sha512-Cu1XiJXub2q1eCr9kkJ9VPv1sGcmj3V7Zb76B0CoezDOB9bu3DxKIFFH7ggCl9fWpEPD6xBmRLfZrYijkVmujQ==} - hasBin: true + solhint@4.5.4(typescript@5.5.3): dependencies: '@solidity-parser/parser': 0.18.0 ajv: 6.12.6 @@ -21469,11 +25111,8 @@ packages: prettier: 2.8.8 transitivePeerDependencies: - typescript - dev: true - /solhint@5.0.3(typescript@5.5.3): - resolution: {integrity: sha512-OLCH6qm/mZTCpplTXzXTJGId1zrtNuDYP5c2e6snIv/hdRVxPfBBz/bAlL91bY/Accavkayp2Zp2BaDSrLVXTQ==} - hasBin: true + solhint@5.0.3(typescript@5.5.3): dependencies: '@solidity-parser/parser': 0.18.0 ajv: 6.12.6 @@ -21497,121 +25136,75 @@ packages: prettier: 2.8.8 transitivePeerDependencies: - typescript - dev: true - /sonic-boom@2.8.0: - resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + solidity-stringutils@https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: {} + + sonic-boom@2.8.0: dependencies: atomic-sleep: 1.0.0 - dev: false - /sorcery@0.11.1: - resolution: {integrity: sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==} - hasBin: true + sorcery@0.11.1: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 buffer-crc32: 1.0.0 minimist: 1.2.8 sander: 0.5.1 - dev: true - /source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} + source-map-js@1.2.0: {} - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false + source-map@0.5.7: {} - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + source-map@0.6.1: {} - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: false + source-map@0.7.4: {} - /space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + sp1-contracts#v2.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb: {} - /spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + space-separated-tokens@2.0.2: {} + + spawndamnit@2.0.0: dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 - dev: false - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.18 - dev: true - /spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - dev: true + spdx-exceptions@2.5.0: {} - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.18 - dev: true - /spdx-license-ids@3.0.18: - resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} - dev: true + spdx-license-ids@3.0.18: {} - /split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - dev: false + split-on-first@1.1.0: {} - /split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - dev: false + split2@4.2.0: {} - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: false + sprintf-js@1.0.3: {} - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true + stackback@0.0.2: {} - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: false + stackframe@1.3.4: {} - /stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} + stacktrace-parser@0.1.10: dependencies: type-fest: 0.7.1 - dev: false - /starlight-links-validator@0.8.0(@astrojs/starlight@0.25.4)(astro@4.13.3): - resolution: {integrity: sha512-FYZ5cfV7jSL4wOsWmIkpR+9dH0Z8fxslSQl8IiAv5URfkxLgsaFzjx51FBeSaaS5uVmO5WgfkUjx3N52Jl1/TQ==} - engines: {node: '>=18.14.1'} - peerDependencies: - '@astrojs/starlight': '>=0.15.0' - astro: '>=4.0.0' + starlight-links-validator@0.8.0(@astrojs/starlight@0.25.4)(astro@4.13.3): dependencies: '@astrojs/starlight': 0.25.4(astro@4.13.3) astro: 4.13.3(typescript@5.5.3) @@ -21622,15 +25215,8 @@ packages: kleur: 4.1.5 mdast-util-to-string: 4.0.0 unist-util-visit: 5.0.0 - dev: false - /starlight-openapi@0.6.4(@astrojs/markdown-remark@5.2.0)(@astrojs/starlight@0.25.4)(astro@4.13.3)(openapi-types@12.1.3): - resolution: {integrity: sha512-TIioFhMmSKhKau6g/fx5WgWyPQve7cjP896wQek3sHqCJeLAsTSqUYCb33bBb/4D1/6sUioqlfJd9J3Lc1NQjA==} - engines: {node: '>=18.14.1'} - peerDependencies: - '@astrojs/markdown-remark': '>=4.2.0' - '@astrojs/starlight': '>=0.19.0' - astro: '>=4.2.7' + starlight-openapi@0.6.4(@astrojs/markdown-remark@5.2.0)(@astrojs/starlight@0.25.4)(astro@4.13.3)(openapi-types@12.1.3): dependencies: '@astrojs/markdown-remark': 5.2.0 '@astrojs/starlight': 0.25.4(astro@4.13.3) @@ -21639,38 +25225,22 @@ packages: github-slugger: 2.0.0 transitivePeerDependencies: - openapi-types - dev: false - /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: false + statuses@1.5.0: {} - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} + statuses@2.0.1: {} - /std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + std-env@3.7.0: {} - /stdin-discarder@0.1.0: - resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + stdin-discarder@0.1.0: dependencies: bl: 5.1.0 - /stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - dev: false + stdin-discarder@0.2.2: {} - /store2@2.14.3: - resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==} - dev: true + store2@2.14.3: {} - /storybook@8.1.11(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-3KjIhF8lczXhKKHyHbOqV30dvuRYJSxc0d1as/C8kybuwE7cLaydhWGma7VBv5bTSPv0rDzucx7KcO+achArPg==} - hasBin: true + storybook@8.1.11(react-dom@18.3.1)(react@18.3.1): dependencies: '@storybook/cli': 8.1.11(react-dom@18.3.1)(react@18.3.1) transitivePeerDependencies: @@ -21681,188 +25251,119 @@ packages: - react-dom - supports-color - utf-8-validate - dev: true - /stream-browserify@3.0.0: - resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + stream-browserify@3.0.0: dependencies: inherits: 2.0.4 readable-stream: 3.6.2 - dev: false - /stream-replace-string@2.0.0: - resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} - dev: false + stream-replace-string@2.0.0: {} - /stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + stream-shift@1.0.3: {} - /stream-to-it@0.2.4: - resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} + stream-to-it@0.2.4: dependencies: get-iterator: 1.0.2 - dev: false - /strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - dev: false + strict-uri-encode@2.0.0: {} - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} + string-width@7.2.0: dependencies: emoji-regex: 10.3.0 get-east-asian-width: 1.2.0 strip-ansi: 7.1.0 - dev: false - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - /stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - dev: false - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} + strip-ansi@5.2.0: dependencies: ansi-regex: 4.1.1 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.0.1 - /strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - dev: false + strip-bom-string@1.0.0: {} - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} + strip-bom@3.0.0: {} - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} + strip-final-newline@2.0.0: {} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} + strip-final-newline@3.0.0: {} - /strip-hex-prefix@1.0.0: - resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} - engines: {node: '>=6.5.0', npm: '>=3'} + strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed: 1.0.0 - dev: false - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - dev: true - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: true + strip-json-comments@2.0.1: {} - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + strip-json-comments@3.1.1: {} - /strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + strip-literal@2.1.0: dependencies: js-tokens: 9.0.0 - dev: true - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false + strnum@1.0.5: {} - /style-to-object@0.4.4: - resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + style-to-object@0.4.4: dependencies: inline-style-parser: 0.1.1 - dev: false - /style-to-object@1.0.6: - resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} + style-to-object@1.0.6: dependencies: inline-style-parser: 0.2.3 - dev: false - /sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 @@ -21872,43 +25373,25 @@ packages: pirates: 4.0.6 ts-interface-checker: 0.1.13 - /sudo-prompt@9.2.1: - resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} - dev: false + sudo-prompt@9.2.1: {} - /superstruct@1.0.4: - resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} - engines: {node: '>=14.0.0'} - dev: false + superstruct@1.0.4: {} - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - dev: false - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + supports-preserve-symlinks-flag@1.0.0: {} - /svelte-check@3.8.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18): - resolution: {integrity: sha512-61aHMkdinWyH8BkkTX9jPLYxYzaAAz/FK/VQqdr2FiCQQ/q04WCwDlpGbHff1GdrMYTmW8chlTFvRWL9k0A8vg==} - hasBin: true - peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + svelte-check@3.8.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -21927,13 +25410,8 @@ packages: - sass - stylus - sugarss - dev: true - /svelte-check@3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18): - resolution: {integrity: sha512-61aHMkdinWyH8BkkTX9jPLYxYzaAAz/FK/VQqdr2FiCQQ/q04WCwDlpGbHff1GdrMYTmW8chlTFvRWL9k0A8vg==} - hasBin: true - peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + svelte-check@3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -21952,24 +25430,12 @@ packages: - sass - stylus - sugarss - dev: true - /svelte-copy@1.4.2(svelte@4.2.18): - resolution: {integrity: sha512-Q99JvWDzB58JlbVWX2VxjHX/CQ5ayDLUGGJgL2EqU1+3c9CDOtxLrKFZx5CVN5bN/DDl62nxtazz0j3nGX1Xew==} - peerDependencies: - svelte: ^3.55.0 || ^4.0.0 + svelte-copy@1.4.2(svelte@4.2.18): dependencies: svelte: 4.2.18 - dev: true - /svelte-eslint-parser@0.39.2(svelte@4.2.18): - resolution: {integrity: sha512-87UwLuWTtDIuzWOhOi1zBL5wYVd07M5BK1qZ57YmXJB5/UmjUNJqGy3XSOhPqjckY1dATNV9y+mx+nI0WH6HPA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.115 - peerDependenciesMeta: - svelte: - optional: true + svelte-eslint-parser@0.39.2(svelte@4.2.18): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -21977,23 +25443,12 @@ packages: postcss: 8.4.39 postcss-scss: 4.0.9(postcss@8.4.39) svelte: 4.2.18 - dev: true - /svelte-hmr@0.16.0(svelte@4.2.18): - resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 + svelte-hmr@0.16.0(svelte@4.2.18): dependencies: svelte: 4.2.18 - dev: true - /svelte-i18n@4.0.0(svelte@4.2.18): - resolution: {integrity: sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==} - engines: {node: '>= 16'} - hasBin: true - peerDependencies: - svelte: ^3 || ^4 + svelte-i18n@4.0.0(svelte@4.2.18): dependencies: cli-color: 2.0.4 deepmerge: 4.3.1 @@ -22004,92 +25459,19 @@ packages: svelte: 4.2.18 tiny-glob: 0.2.9 - /svelte-preprocess@5.1.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.3): - resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} - engines: {node: '>= 16.0.0'} - requiresBuild: true - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true + svelte-preprocess@5.1.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.3): dependencies: '@babel/core': 7.24.7 - '@types/pug': 2.0.10 - detect-indent: 6.1.0 - magic-string: 0.30.10 - postcss: 8.4.41 - sorcery: 0.11.1 - strip-indent: 3.0.0 - svelte: 4.2.18 - typescript: 5.5.3 - dev: true - - /svelte-preprocess@5.1.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18)(typescript@5.5.3): - resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} - engines: {node: '>= 16.0.0'} - requiresBuild: true - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true + '@types/pug': 2.0.10 + detect-indent: 6.1.0 + magic-string: 0.30.10 + postcss: 8.4.41 + sorcery: 0.11.1 + strip-indent: 3.0.0 + svelte: 4.2.18 + typescript: 5.5.3 + + svelte-preprocess@5.1.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18)(typescript@5.5.3): dependencies: '@babel/core': 7.25.2 '@types/pug': 2.0.10 @@ -22100,31 +25482,19 @@ packages: strip-indent: 3.0.0 svelte: 4.2.18 typescript: 5.5.3 - dev: true - /svelte-scrolling@1.4.0(svelte@4.2.18): - resolution: {integrity: sha512-1721UrmTODAIhybCR5p/l6lQNSmuk66VgtgxdAEdQiGuYU1wCcKB/9kba0VXlxIeh5vhEaoODAOCizRRtHKQoQ==} - peerDependencies: - svelte: ^3 || ^4 + svelte-scrolling@1.4.0(svelte@4.2.18): dependencies: svelte: 4.2.18 - dev: true - /svelte2tsx@0.7.13(svelte@4.2.18)(typescript@5.5.3): - resolution: {integrity: sha512-aObZ93/kGAiLXA/I/kP+x9FriZM+GboB/ReOIGmLNbVGEd2xC+aTCppm3mk1cc9I/z60VQf7b2QDxC3jOXu3yw==} - peerDependencies: - svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 - typescript: ^4.9.4 || ^5.0.0 + svelte2tsx@0.7.13(svelte@4.2.18)(typescript@5.5.3): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 svelte: 4.2.18 typescript: 5.5.3 - dev: true - /svelte@4.2.18: - resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==} - engines: {node: '>=16'} + svelte@4.2.18: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.4.15 @@ -22141,55 +25511,37 @@ packages: magic-string: 0.30.10 periscopic: 3.1.0 - /sveltedoc-parser@4.2.1: - resolution: {integrity: sha512-sWJRa4qOfRdSORSVw9GhfDEwsbsYsegnDzBevUCF6k/Eis/QqCu9lJ6I0+d/E2wOWCjOhlcJ3+jl/Iur+5mmCw==} - engines: {node: '>=10.0.0'} + sveltedoc-parser@4.2.1: dependencies: eslint: 8.4.1 espree: 9.2.0 htmlparser2-svelte: 4.1.0 transitivePeerDependencies: - supports-color - dev: true - /symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true + symbol-tree@3.2.4: {} - /synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} + synckit@0.8.8: dependencies: '@pkgr/core': 0.1.1 tslib: 2.6.3 - dev: true - /system-architecture@0.1.0: - resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} - engines: {node: '>=18'} - dev: false + system-architecture@0.1.0: {} - /table@6.8.2: - resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} - engines: {node: '>=10.0.0'} + table@6.8.2: dependencies: ajv: 8.16.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /tailwindcss-image-rendering@1.0.2: - resolution: {integrity: sha512-WC3hJd2RbHBYIqtJxwpQ5z94wUNyBrJn1eFz3J/jR7OGrQB8WYbJGvJQ9scNNVzoHEYGoNdZbUI90l9YgpBCwg==} + tailwindcss-image-rendering@1.0.2: dependencies: flat: 4.1.1 lodash: 4.17.21 - /tailwindcss@3.4.4: - resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@3.4.4: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -22216,29 +25568,22 @@ packages: transitivePeerDependencies: - ts-node - /tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + tar-fs@2.1.1: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 - dev: true - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} + tar-stream@2.2.0: dependencies: bl: 4.1.0 end-of-stream: 1.4.4 fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 - dev: true - /tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} + tar@6.2.1: dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -22246,247 +25591,139 @@ packages: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 - dev: true - /telejson@7.2.0: - resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} + telejson@7.2.0: dependencies: memoizerific: 1.11.3 - dev: true - /temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - dev: false + temp-dir@2.0.0: {} - /temp-dir@3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} - engines: {node: '>=14.16'} - dev: true + temp-dir@3.0.0: {} - /temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} + temp@0.8.4: dependencies: rimraf: 2.6.3 - /tempy@3.1.0: - resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} - engines: {node: '>=14.16'} + tempy@3.1.0: dependencies: is-stream: 3.0.0 temp-dir: 3.0.0 type-fest: 2.19.0 unique-string: 3.0.0 - dev: true - /term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: false + term-size@2.2.1: {} - /terser@5.31.1: - resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} - engines: {node: '>=10'} - hasBin: true + terser@5.31.1: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 - dev: false - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: true - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thenify@3.3.1: dependencies: any-promise: 1.3.0 - /thread-stream@0.15.2: - resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + thread-stream@0.15.2: dependencies: real-require: 0.1.0 - dev: false - /throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - dev: false + throat@5.0.0: {} - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + through2@2.0.5: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - /timeout-abort-controller@3.0.0: - resolution: {integrity: sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==} + timeout-abort-controller@3.0.0: dependencies: retimer: 3.0.0 - dev: false - /timers-ext@0.1.8: - resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} - engines: {node: '>=0.12'} + timers-ext@0.1.8: dependencies: es5-ext: 0.10.64 next-tick: 1.1.0 - /tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + tiny-glob@0.2.9: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 - /tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - dev: true + tiny-invariant@1.3.3: {} - /tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - dev: true + tinybench@2.8.0: {} - /tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - dev: true + tinypool@0.8.4: {} - /tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - dev: true + tinyspy@2.2.1: {} - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: false + tmpl@1.0.5: {} - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - /tocbot@4.28.2: - resolution: {integrity: sha512-/MaSa9xI6mIo84IxqqliSCtPlH0oy7sLcY9s26qPMyH/2CxtZ2vNAXYlIdEQ7kjAkCQnc0rbLygf//F5c663oQ==} - dev: true + tocbot@4.28.2: {} - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + toidentifier@1.0.1: {} - /totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - dev: true + totalist@3.0.1: {} - /tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} + tough-cookie@4.1.4: dependencies: psl: 1.9.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 - dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@0.0.3: {} - /tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} - engines: {node: '>=18'} + tr46@5.0.0: dependencies: punycode: 2.3.1 - dev: true - /treeify@1.1.0: - resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} - engines: {node: '>=0.6'} - dev: false + treeify@1.1.0: {} - /trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: false + trim-lines@3.0.1: {} - /trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - dev: false + trough@2.2.0: {} - /ts-api-utils@1.3.0(typescript@5.5.3): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.3.0(typescript@5.5.3): dependencies: typescript: 5.5.3 - dev: true - /ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - dev: true + ts-dedent@2.2.0: {} - /ts-essentials@9.4.2(typescript@5.5.3): - resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} - peerDependencies: - typescript: '>=4.1.0' - peerDependenciesMeta: - typescript: - optional: true + ts-essentials@9.4.2(typescript@5.5.3): dependencies: typescript: 5.5.3 - dev: true - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-interface-checker@0.1.13: {} - /ts-morph@19.0.0: - resolution: {integrity: sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==} + ts-morph@19.0.0: dependencies: '@ts-morph/common': 0.20.0 code-block-writer: 12.0.0 - dev: true - /ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -22503,123 +25740,69 @@ packages: typescript: 5.5.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /tsconfck@3.1.1(typescript@5.5.3): - resolution: {integrity: sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true + tsconfck@3.1.1(typescript@5.5.3): dependencies: typescript: 5.5.3 - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@1.14.1: {} - /tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tslib@2.6.3: {} - /tsutils@3.21.0(typescript@5.5.3): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + tsutils@3.21.0(typescript@5.5.3): dependencies: tslib: 1.14.1 typescript: 5.5.3 - dev: true - /tween-functions@1.2.0: - resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} - dev: true + tween-functions@1.2.0: {} - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} + type-detect@4.0.8: {} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true + type-fest@0.6.0: {} - /type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - dev: false + type-fest@0.7.1: {} - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true + type-fest@0.8.1: {} - /type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - dev: true + type-fest@1.4.0: {} - /type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} + type-fest@2.19.0: {} - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} + type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - dev: true - /type@2.7.3: - resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + type@2.7.3: {} - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -22627,11 +25810,8 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -22639,134 +25819,84 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: true - /typesafe-path@0.2.2: - resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} - dev: false + typesafe-path@0.2.2: {} - /typescript-auto-import-cache@0.3.3: - resolution: {integrity: sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==} + typescript-auto-import-cache@0.3.3: dependencies: semver: 7.6.3 - dev: false - /typescript@5.5.3: - resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} - engines: {node: '>=14.17'} - hasBin: true + typescript@5.5.3: {} - /ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + ufo@1.5.3: {} - /uglify-js@3.18.0: - resolution: {integrity: sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==} - engines: {node: '>=0.8.0'} - hasBin: true - requiresBuild: true - dev: true + uglify-js@3.18.0: optional: true - /uint8-varint@2.0.4: - resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} + uint8-varint@2.0.4: dependencies: uint8arraylist: 2.4.8 uint8arrays: 5.1.0 - dev: false - /uint8arraylist@2.4.8: - resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} + uint8arraylist@2.4.8: dependencies: uint8arrays: 5.1.0 - dev: false - /uint8arrays@3.1.0: - resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + uint8arrays@3.1.0: dependencies: multiformats: 9.9.0 - dev: false - /uint8arrays@3.1.1: - resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + uint8arrays@3.1.1: dependencies: multiformats: 9.9.0 - dev: false - /uint8arrays@4.0.10: - resolution: {integrity: sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==} + uint8arrays@4.0.10: dependencies: multiformats: 12.1.3 - dev: false - /uint8arrays@5.1.0: - resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} + uint8arrays@5.1.0: dependencies: multiformats: 13.1.3 - dev: false - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - /uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - dev: false + uncrypto@0.1.3: {} - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@5.26.5: {} - /undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} - engines: {node: '>=14.0'} + undici@5.28.4: dependencies: '@fastify/busboy': 2.1.1 - dev: false - /unenv@1.9.0: - resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + unenv@1.9.0: dependencies: consola: 3.2.3 defu: 6.1.4 mime: 3.0.0 node-fetch-native: 1.6.4 pathe: 1.1.2 - dev: false - /unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - dev: false + unfetch@4.2.0: {} - /unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} + unicode-canonical-property-names-ecmascript@2.0.0: {} - /unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - /unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} + unicode-match-property-value-ecmascript@2.1.0: {} - /unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} + unicode-property-aliases-ecmascript@2.1.0: {} - /unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - dev: true + unicorn-magic@0.1.0: {} - /unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unified@11.0.5: dependencies: '@types/unist': 3.0.2 bail: 2.0.2 @@ -22775,149 +25905,73 @@ packages: is-plain-obj: 4.1.0 trough: 2.2.0 vfile: 6.0.2 - dev: false - /unique-string@3.0.0: - resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} - engines: {node: '>=12'} + unique-string@3.0.0: dependencies: crypto-random-string: 4.0.0 - dev: true - /unist-util-find-after@5.0.0: - resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + unist-util-find-after@5.0.0: dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 - dev: false - /unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.2 - /unist-util-modify-children@4.0.0: - resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} + unist-util-modify-children@4.0.0: dependencies: '@types/unist': 3.0.2 array-iterate: 2.0.1 - dev: false - /unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + unist-util-position-from-estree@2.0.0: dependencies: '@types/unist': 3.0.2 - dev: false - /unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.2 - dev: false - /unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + unist-util-remove-position@5.0.0: dependencies: '@types/unist': 3.0.2 unist-util-visit: 5.0.0 - dev: false - /unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.2 - dev: false - /unist-util-visit-children@3.0.0: - resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} + unist-util-visit-children@3.0.0: dependencies: '@types/unist': 3.0.2 - dev: false - /unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 - /unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: false + universalify@0.1.2: {} - /universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: true + universalify@0.2.0: {} - /universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} + universalify@2.0.1: {} - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} + unpipe@1.0.0: {} - /unplugin@1.11.0: - resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==} - engines: {node: '>=14.0.0'} + unplugin@1.11.0: dependencies: acorn: 8.12.0 chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.2 - dev: true - /unstorage@1.10.2(idb-keyval@6.2.1): - resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} - peerDependencies: - '@azure/app-configuration': ^1.5.0 - '@azure/cosmos': ^4.0.0 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^4.0.1 - '@azure/keyvault-secrets': ^4.8.0 - '@azure/storage-blob': ^12.17.0 - '@capacitor/preferences': ^5.0.7 - '@netlify/blobs': ^6.5.0 || ^7.0.0 - '@planetscale/database': ^1.16.0 - '@upstash/redis': ^1.28.4 - '@vercel/kv': ^1.0.1 - idb-keyval: ^6.2.1 - ioredis: ^5.3.2 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/kv': - optional: true - idb-keyval: - optional: true - ioredis: - optional: true + unstorage@1.10.2(idb-keyval@6.2.1): dependencies: anymatch: 3.1.3 chokidar: 3.6.0 @@ -22932,112 +25986,62 @@ packages: ufo: 1.5.3 transitivePeerDependencies: - uWebSockets.js - dev: false - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true + untildify@4.0.0: {} - /untun@0.1.3: - resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} - hasBin: true + untun@0.1.3: dependencies: citty: 0.1.6 consola: 3.2.3 pathe: 1.1.2 - dev: false - /update-browserslist-db@1.0.16(browserslist@4.23.1): - resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.16(browserslist@4.23.1): dependencies: browserslist: 4.23.1 escalade: 3.1.2 picocolors: 1.0.1 - /uqr@0.1.2: - resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - dev: false + uqr@0.1.2: {} - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.1 - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + url-parse@1.5.10: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - dev: true - /use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): dependencies: '@types/react': 18.3.3 react: 18.3.1 tslib: 2.6.3 - dev: true - /use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): dependencies: '@types/react': 18.3.3 detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.6.3 - dev: true - /use-sync-external-store@1.2.0(react@18.3.1): - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + use-sync-external-store@1.2.0(react@18.3.1): dependencies: react: 18.3.1 - dev: false - /utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - requiresBuild: true + utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.1 - dev: false - /utf-8-validate@6.0.4: - resolution: {integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==} - engines: {node: '>=6.14.2'} - requiresBuild: true + utf-8-validate@6.0.4: dependencies: node-gyp-build: 4.8.1 - dev: false - /utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - dev: false + utf8@3.0.0: {} - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util-deprecate@1.0.2: {} - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + util@0.12.5: dependencies: inherits: 2.0.4 is-arguments: 1.1.1 @@ -23045,96 +26049,54 @@ packages: is-typed-array: 1.1.13 which-typed-array: 1.1.15 - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} + utils-merge@1.0.1: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false + uuid@8.3.2: {} - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true + uuid@9.0.1: {} - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true + v8-compile-cache-lib@3.0.1: {} - /v8-compile-cache@2.4.0: - resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - dev: true + v8-compile-cache@2.4.0: {} - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - dev: true - /valtio@1.11.2(react@18.3.1): - resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=16.8' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true + valtio@1.11.2(react@18.3.1): dependencies: proxy-compare: 2.5.1 react: 18.3.1 use-sync-external-store: 1.2.0(react@18.3.1) - dev: false - /varint@6.0.0: - resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} - dev: false + varint@6.0.0: {} - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} + vary@1.1.2: {} - /vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + vfile-location@5.0.2: dependencies: '@types/unist': 3.0.2 vfile: 6.0.1 - dev: false - /vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 - dev: false - /vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + vfile@6.0.1: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - dev: false - /vfile@6.0.2: - resolution: {integrity: sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==} + vfile@6.0.2: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - dev: false - /viem@1.21.4(typescript@5.5.3): - resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + viem@1.21.4(typescript@5.5.3): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 @@ -23149,15 +26111,8 @@ packages: - bufferutil - utf-8-validate - zod - dev: false - /viem@2.16.5(typescript@5.5.3)(zod@3.23.8): - resolution: {integrity: sha512-QDESALYDyLSP+pIr7adH3QPZ+3is16aOVMXXZE0X1GVbgL7PDMZQ8xIF1X/B1hgyqkBl2HhMpUaq6ksUdBV/YA==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + viem@2.16.5(typescript@5.5.3)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.4.0 @@ -23173,10 +26128,7 @@ packages: - utf-8-validate - zod - /vite-node@1.6.0(@types/node@20.14.9): - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true + vite-node@1.6.0(@types/node@20.14.9): dependencies: cac: 6.7.14 debug: 4.3.5 @@ -23192,15 +26144,8 @@ packages: - sugarss - supports-color - terser - dev: true - /vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@4.5.3): - resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true + vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@4.5.3): dependencies: debug: 4.3.5 globrex: 0.1.2 @@ -23209,15 +26154,8 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@5.3.2): - resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true + vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@5.3.2): dependencies: debug: 4.3.5 globrex: 0.1.2 @@ -23226,70 +26164,16 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /vite@4.5.3: - resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + vite@4.5.3: dependencies: esbuild: 0.18.20 postcss: 8.4.39 rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 - dev: true - /vite@5.3.2(@types/node@20.14.9): - resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + vite@5.3.2(@types/node@20.14.9): dependencies: '@types/node': 20.14.9 esbuild: 0.21.5 @@ -23297,126 +26181,41 @@ packages: rollup: 4.18.0 optionalDependencies: fsevents: 2.3.3 - dev: true - /vite@5.4.0: - resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + vite@5.4.0: dependencies: esbuild: 0.21.5 postcss: 8.4.41 rollup: 4.18.0 optionalDependencies: fsevents: 2.3.3 - dev: false - /vitefu@0.2.5(vite@4.5.3): - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true + vitefu@0.2.5(vite@4.5.3): dependencies: vite: 4.5.3 - dev: true - /vitefu@0.2.5(vite@5.3.2): - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true + vitefu@0.2.5(vite@5.3.2): dependencies: vite: 5.3.2(@types/node@20.14.9) - dev: true - /vitefu@0.2.5(vite@5.4.0): - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true + vitefu@0.2.5(vite@5.4.0): dependencies: vite: 5.4.0 - dev: false - /vitest-fetch-mock@0.2.2(vitest@1.6.0): - resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} - engines: {node: '>=14.14.0'} - peerDependencies: - vitest: '>=0.16.0' + vitest-fetch-mock@0.2.2(vitest@1.6.0): dependencies: cross-fetch: 3.1.8 vitest: 1.6.0(jsdom@24.1.0) transitivePeerDependencies: - encoding - dev: true - /vitest-mock-extended@1.3.1(typescript@5.5.3)(vitest@1.6.0): - resolution: {integrity: sha512-OpghYjh4BDuQ/Mzs3lFMQ1QRk9D8/2O9T47MLUA5eLn7K4RWIy+MfIivYOWEyxjTENjsBnzgMihDjyNalN/K0Q==} - peerDependencies: - typescript: 3.x || 4.x || 5.x - vitest: '>=0.31.1' + vitest-mock-extended@1.3.1(typescript@5.5.3)(vitest@1.6.0): dependencies: ts-essentials: 9.4.2(typescript@5.5.3) typescript: 5.5.3 vitest: 1.6.0(jsdom@24.1.0) - dev: true - /vitest@1.6.0(@types/node@20.14.9): - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true + vitest@1.6.0(@types/node@20.14.9): dependencies: '@types/node': 20.14.9 '@vitest/expect': 1.6.0 @@ -23447,32 +26246,8 @@ packages: - sugarss - supports-color - terser - dev: true - /vitest@1.6.0(jsdom@24.1.0): - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true + vitest@1.6.0(jsdom@24.1.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -23502,96 +26277,46 @@ packages: - stylus - sugarss - supports-color - - terser - dev: true - - /vlq@1.0.1: - resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - dev: false - - /void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} - dev: false - - /volar-service-css@0.0.59(@volar/language-service@2.4.0-alpha.18): - resolution: {integrity: sha512-gLNjJnECbalPvQB7qeJjhkDN8sR5M3ItbVYjnyio61aHaWptIiXm/HfDahcQ2ApwmvWidkMWWegjGq5L0BENDA==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - peerDependenciesMeta: - '@volar/language-service': - optional: true + - terser + + vlq@1.0.1: {} + + void-elements@3.1.0: {} + + volar-service-css@0.0.59(@volar/language-service@2.4.0-alpha.18): dependencies: '@volar/language-service': 2.4.0-alpha.18 vscode-css-languageservice: 6.3.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - dev: false - /volar-service-emmet@0.0.59(@volar/language-service@2.4.0-alpha.18): - resolution: {integrity: sha512-6EynHcuMwMBETpK29TbZvIMmvzdVG+Tkokk9VWfZeI+SwDptk2tgdhEqiXXvIkqYNgbuu73Itp66lpH76cAU+Q==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - peerDependenciesMeta: - '@volar/language-service': - optional: true + volar-service-emmet@0.0.59(@volar/language-service@2.4.0-alpha.18): dependencies: '@emmetio/css-parser': 0.4.0 '@emmetio/html-matcher': 1.3.0 '@volar/language-service': 2.4.0-alpha.18 '@vscode/emmet-helper': 2.9.3 vscode-uri: 3.0.8 - dev: false - /volar-service-html@0.0.59(@volar/language-service@2.4.0-alpha.18): - resolution: {integrity: sha512-hEXOsYpILDlITZxnqRLV9OepVWD63GZBsyjMxszwdzlxvGZjzbGcBBinJGGJRwFIV8djdJwnt91bkdg1V5tj6Q==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - peerDependenciesMeta: - '@volar/language-service': - optional: true + volar-service-html@0.0.59(@volar/language-service@2.4.0-alpha.18): dependencies: '@volar/language-service': 2.4.0-alpha.18 vscode-html-languageservice: 5.3.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - dev: false - /volar-service-prettier@0.0.59(@volar/language-service@2.4.0-alpha.18)(prettier@3.3.2): - resolution: {integrity: sha512-FmBR4lsgFRGR3V0LnxZZal0WqdOJjuLL6mQSj4p57M15APtQwuocG/FiF+ONGFnwRXMOIBDBTCARdth+TKgL3A==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - prettier: ^2.2 || ^3.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - prettier: - optional: true + volar-service-prettier@0.0.59(@volar/language-service@2.4.0-alpha.18)(prettier@3.3.2): dependencies: '@volar/language-service': 2.4.0-alpha.18 prettier: 3.3.2 vscode-uri: 3.0.8 - dev: false - /volar-service-typescript-twoslash-queries@0.0.59(@volar/language-service@2.4.0-alpha.18): - resolution: {integrity: sha512-skm8e6yhCIkqLwJB6S9MqT5lO9LNFuMD3dYxKpmOZs1CKbXmCZZTmLfEaD5VkJae1xdleEDZFFTHl2O5HLjOGQ==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - peerDependenciesMeta: - '@volar/language-service': - optional: true + volar-service-typescript-twoslash-queries@0.0.59(@volar/language-service@2.4.0-alpha.18): dependencies: '@volar/language-service': 2.4.0-alpha.18 vscode-uri: 3.0.8 - dev: false - /volar-service-typescript@0.0.59(@volar/language-service@2.4.0-alpha.18): - resolution: {integrity: sha512-VCOpfiu+lUo5lapWLB5L5vmQGtwzmNWn5MueV915eku7blpphmE+Z7hCNcL1NApn7AetXWhiblv8ZhmUx/dGIA==} - peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 - peerDependenciesMeta: - '@volar/language-service': - optional: true + volar-service-typescript@0.0.59(@volar/language-service@2.4.0-alpha.18): dependencies: '@volar/language-service': 2.4.0-alpha.18 path-browserify: 1.0.1 @@ -23600,106 +26325,67 @@ packages: vscode-languageserver-textdocument: 1.0.11 vscode-nls: 5.2.0 vscode-uri: 3.0.8 - dev: false - /vscode-css-languageservice@6.3.0: - resolution: {integrity: sha512-nU92imtkgzpCL0xikrIb8WvedV553F2BENzgz23wFuok/HLN5BeQmroMy26pUwFxV2eV8oNRmYCUv8iO7kSMhw==} + vscode-css-languageservice@6.3.0: dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - dev: false - /vscode-html-languageservice@5.3.0: - resolution: {integrity: sha512-C4Z3KsP5Ih+fjHpiBc5jxmvCl+4iEwvXegIrzu2F5pktbWvQaBT3YkVPk8N+QlSSMk8oCG6PKtZ/Sq2YHb5e8g==} + vscode-html-languageservice@5.3.0: dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - dev: false - /vscode-jsonrpc@8.2.0: - resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} - engines: {node: '>=14.0.0'} - dev: false + vscode-jsonrpc@8.2.0: {} - /vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + vscode-languageserver-protocol@3.17.5: dependencies: vscode-jsonrpc: 8.2.0 vscode-languageserver-types: 3.17.5 - dev: false - /vscode-languageserver-textdocument@1.0.11: - resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} - dev: false + vscode-languageserver-textdocument@1.0.11: {} - /vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - dev: false + vscode-languageserver-types@3.17.5: {} - /vscode-languageserver@9.0.1: - resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} - hasBin: true + vscode-languageserver@9.0.1: dependencies: vscode-languageserver-protocol: 3.17.5 - dev: false - /vscode-nls@5.2.0: - resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - dev: false + vscode-nls@5.2.0: {} - /vscode-uri@2.1.2: - resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} - dev: false + vscode-uri@2.1.2: {} - /vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - dev: false + vscode-uri@3.0.8: {} - /w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 - dev: true - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + walker@1.0.8: dependencies: makeerror: 1.0.12 - dev: false - /watchpack@2.4.1: - resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} - engines: {node: '>=10.13.0'} + watchpack@2.4.1: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: true - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 - /web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - dev: false + web-namespaces@2.0.1: {} - /web3-eth-abi@1.10.4: - resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} - engines: {node: '>=8.0.0'} + web3-eth-abi@1.10.4: dependencies: '@ethersproject/abi': 5.7.0 web3-utils: 1.10.4 - dev: false - /web3-utils@1.10.4: - resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} - engines: {node: '>=8.0.0'} + web3-utils@1.10.4: dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 @@ -23709,96 +26395,57 @@ packages: number-to-bn: 1.7.0 randombytes: 2.1.0 utf8: 3.0.0 - dev: false - /webextension-polyfill@0.10.0: - resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} - dev: false + webextension-polyfill@0.10.0: {} - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@3.0.1: {} - /webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - dev: true + webidl-conversions@7.0.0: {} - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: true + webpack-sources@3.2.3: {} - /webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - dev: true + webpack-virtual-modules@0.6.2: {} - /whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 - dev: true - /whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - dev: false + whatwg-fetch@3.6.20: {} - /whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - dev: true + whatwg-mimetype@4.0.0: {} - /whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} - engines: {node: '>=18'} + whatwg-url@14.0.0: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 - dev: true - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: false + which-module@2.0.1: {} - /which-pm-runs@1.1.0: - resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} - engines: {node: '>=4'} - dev: false + which-pm-runs@1.1.0: {} - /which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} + which-pm@2.0.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 - dev: false - /which-pm@3.0.0: - resolution: {integrity: sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==} - engines: {node: '>=18.12'} + which-pm@3.0.0: dependencies: load-yaml-file: 0.2.0 - dev: false - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -23806,217 +26453,99 @@ packages: gopd: 1.0.1 has-tostringtag: 1.0.2 - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true + which@1.3.1: dependencies: isexe: 2.0.0 - dev: false - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - /which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true + which@4.0.0: dependencies: isexe: 3.1.1 - dev: true - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true + why-is-node-running@2.2.2: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - dev: true - /widest-line@4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} + widest-line@4.0.1: dependencies: string-width: 5.1.2 - dev: false - /word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - dev: true + word-wrap@1.2.5: {} - /wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: true + wordwrap@1.0.0: {} - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrappy@1.0.2: {} - /write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + write-file-atomic@2.4.3: dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 - /ws@6.2.3: - resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + ws@6.2.3: dependencies: async-limiter: 1.0.1 - dev: false - /ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true + ws@7.4.6: {} - /ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false + ws@7.5.10: {} - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false + ws@8.13.0: {} - /ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + ws@8.17.1: {} - /xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - dev: true + xml-name-validator@5.0.0: {} - /xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true + xmlchars@2.2.0: {} - /xmlhttprequest-ssl@2.0.0: - resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} - engines: {node: '>=0.4.0'} - dev: false + xmlhttprequest-ssl@2.0.0: {} - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + xtend@4.0.2: {} - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: false + y18n@4.0.3: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: false + y18n@5.0.8: {} - /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: false + yallist@2.1.2: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@3.1.1: {} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true + yallist@4.0.0: {} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true + yaml@1.10.2: {} - /yaml@2.4.5: - resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} - engines: {node: '>= 14'} - hasBin: true + yaml@2.4.5: {} - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - dev: false - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: false + yargs-parser@21.1.1: {} - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + yargs@15.4.1: dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -24029,11 +26558,8 @@ packages: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 - dev: false - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.1.2 @@ -24042,125 +26568,24 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: false - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true + yn@3.1.1: {} - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + yocto-queue@0.1.0: {} - /yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} + yocto-queue@1.1.1: {} - /zod-to-json-schema@3.23.2(zod@3.23.8): - resolution: {integrity: sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==} - peerDependencies: - zod: ^3.23.3 + zod-to-json-schema@3.23.2(zod@3.23.8): dependencies: zod: 3.23.8 - dev: false - /zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - dev: false + zod@3.22.4: {} - /zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zod@3.23.8: {} - /zustand@4.4.1(react@18.3.1): - resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true + zustand@4.4.1(react@18.3.1): dependencies: react: 18.3.1 use-sync-external-store: 1.2.0(react@18.3.1) - dev: false - - /zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: false - - github.com/Arachnid/solidity-stringutils/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: - resolution: {tarball: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461} - name: solidity-stringutils - version: 0.0.0 - dev: false - - github.com/Vectorized/solady/a12a2575c899a328c1bafdada632dabbff27cf6b: - resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b} - name: solady - version: 0.0.231 - dev: false - - github.com/Vectorized/solady/de0f336d2033d04e0f77c923d639c7fbffd48b6d: - resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d} - name: solady - version: 0.0.167 - dev: false - - github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0: - resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} - name: ds-test - version: 1.0.0 - dev: false - - github.com/dmfxyz/murky/5feccd1253d7da820f7cccccdedf64471025455d: - resolution: {tarball: https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d} - name: murky - version: 0.0.0 - dev: false - - github.com/ethereum-optimism/optimism/ab3a54febb36398539fd3b849c222b7e70169dc8: - resolution: {tarball: https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8} - name: optimism - version: 1.0.0 - engines: {node: '>=16', pnpm: '>=9'} - requiresBuild: true - dependencies: - '@changesets/cli': 2.27.7 - dev: false - - github.com/foundry-rs/forge-std/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3} - name: forge-std - version: 1.7.5 - dev: false - - github.com/foundry-rs/forge-std/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32} - name: forge-std - version: 1.9.0 - dev: false - - github.com/risc0/risc0-ethereum/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900: - resolution: {tarball: https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900} - name: risc0-ethereum#v1.0.0 - version: 0.0.0 - dev: false - - github.com/succinctlabs/sp1-contracts/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb: - resolution: {tarball: https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb} - name: sp1-contracts#v2.0.0 - version: 0.0.0 - dev: false - github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da: - resolution: {tarball: https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da} - name: p256-verifier#v0.1.0 - version: 0.0.0 - dev: false + zwitch@2.0.4: {} From 8dda47bf9ee47faa8a0d16dde0b4398d5e7019f8 Mon Sep 17 00:00:00 2001 From: smtmfft <99081233+smtmfft@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:56:58 +0800 Subject: [PATCH 017/205] feat(protocol): add aggregated sgx verify test (#18160) Co-authored-by: smtmfft Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> Co-authored-by: Daniel Wang Co-authored-by: dantaik Co-authored-by: Gavin Yu Co-authored-by: YoGhurt111 Co-authored-by: David --- .../layer1/verifiers/Risc0Verifier.sol | 57 +++++++++++++++--- .../layer1/verifiers/SgxVerifier.sol | 53 +++++++++++++--- .../test/layer1/verifiers/Risc0Verifier.t.sol | 2 +- .../verifiers/RiscZeroGroth16Verifier.t.sol | 60 +++++++++++++++++++ .../test/layer1/verifiers/SgxVerifier.t.sol | 55 +++++++++++++++++ 5 files changed, 211 insertions(+), 16 deletions(-) diff --git a/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol b/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol index dcbac258239..b157b6afc6e 100644 --- a/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol @@ -24,7 +24,11 @@ contract Risc0Verifier is EssentialContract, IVerifier { /// @param trusted True if trusted, false otherwise event ImageTrusted(bytes32 imageId, bool trusted); - error RISC_ZERO_INVALID_IMAGE_ID(); + /// @dev Emitted when a proof is verified + event ProofVerified(bytes32 metaHash, bytes32 publicInputHash); + + error RISC_ZERO_INVALID_BLOCK_PROOF_IMAGE_ID(); + error RISC_ZERO_INVALID_AGGREGATION_IMAGE_ID(); error RISC_ZERO_INVALID_PROOF(); /// @notice Initializes the contract with the provided address manager. @@ -59,7 +63,7 @@ contract Risc0Verifier is EssentialContract, IVerifier { (bytes memory seal, bytes32 imageId) = abi.decode(_proof.data, (bytes, bytes32)); if (!isImageTrusted[imageId]) { - revert RISC_ZERO_INVALID_IMAGE_ID(); + revert RISC_ZERO_INVALID_BLOCK_PROOF_IMAGE_ID(); } bytes32 publicInputHash = LibPublicInput.hashPublicInputs( @@ -80,13 +84,52 @@ contract Risc0Verifier is EssentialContract, IVerifier { /// @inheritdoc IVerifier function verifyBatchProof( - ContextV2[] calldata, /*_ctxs*/ - TaikoData.TierProof calldata /*_proof*/ + ContextV2[] calldata _ctxs, + TaikoData.TierProof calldata _proof ) external - pure - notImplemented - { } + { + // Decode will throw if not proper length/encoding + (bytes memory seal, bytes32 blockImageId, bytes32 aggregationImageId) = + abi.decode(_proof.data, (bytes, bytes32, bytes32)); + + // Check if the aggregation program is trusted + if (!isImageTrusted[aggregationImageId]) { + revert RISC_ZERO_INVALID_AGGREGATION_IMAGE_ID(); + } + // Check if the block proving program is trusted + if (!isImageTrusted[blockImageId]) { + revert RISC_ZERO_INVALID_BLOCK_PROOF_IMAGE_ID(); + } + + // Collect public inputs + bytes32[] memory publicInputs = new bytes32[](_ctxs.length + 1); + // First public input is the block proving program key + publicInputs[0] = blockImageId; + // All other inputs are the block program public inputs (a single 32 byte value) + for (uint256 i; i < _ctxs.length; ++i) { + publicInputs[i + 1] = LibPublicInput.hashPublicInputs( + _ctxs[i].tran, + address(this), + address(0), + _ctxs[i].prover, + _ctxs[i].metaHash, + taikoChainId() + ); + emit ProofVerified(_ctxs[i].metaHash, publicInputs[i + 1]); + } + + // journalDigest is the sha256 hash of the hashed public input + bytes32 journalDigest = sha256(abi.encodePacked(publicInputs)); + + // call risc0 verifier contract + (bool success,) = resolve(LibStrings.B_RISCZERO_GROTH16_VERIFIER, false).staticcall( + abi.encodeCall(IRiscZeroVerifier.verify, (seal, aggregationImageId, journalDigest)) + ); + if (!success) { + revert RISC_ZERO_INVALID_PROOF(); + } + } function taikoChainId() internal view virtual returns (uint64) { return ITaikoL1(resolve(LibStrings.B_TAIKO, false)).getConfig().chainId; diff --git a/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol b/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol index 4a562d94b82..d903abf9757 100644 --- a/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol @@ -131,10 +131,10 @@ contract SgxVerifier is EssentialContract, IVerifier { if (!verified) revert SGX_INVALID_ATTESTATION(); - address[] memory _address = new address[](1); - _address[0] = address(bytes20(_attestation.localEnclaveReport.reportData)); + address[] memory addresses = new address[](1); + addresses[0] = address(bytes20(_attestation.localEnclaveReport.reportData)); - return _addInstances(_address, false)[0]; + return _addInstances(addresses, false)[0]; } /// @inheritdoc IVerifier @@ -172,14 +172,51 @@ contract SgxVerifier is EssentialContract, IVerifier { /// @inheritdoc IVerifier function verifyBatchProof( - ContextV2[] calldata, /*_ctxs*/ - TaikoData.TierProof calldata /*_proof*/ + ContextV2[] calldata _ctxs, + TaikoData.TierProof calldata _proof ) external - view - notImplemented onlyFromNamedEither(LibStrings.B_TAIKO, LibStrings.B_TIER_TEE_ANY) - { } + { + // Size is: 109 bytes + // 4 bytes + 20 bytes + 20 bytes + 65 bytes (signature) = 109 + if (_proof.data.length != 109) revert SGX_INVALID_PROOF(); + + uint32 id = uint32(bytes4(_proof.data[:4])); + address oldInstance = address(bytes20(_proof.data[4:24])); + address newInstance = address(bytes20(_proof.data[24:44])); + bytes memory signature = _proof.data[44:]; + + // Collect public inputs + bytes32[] memory publicInputs = new bytes32[](_ctxs.length + 2); + // First public input is the current instance public key + publicInputs[0] = bytes32(uint256(uint160(oldInstance))); + publicInputs[1] = bytes32(uint256(uint160(newInstance))); + // All other inputs are the block program public inputs (a single 32 byte value) + for (uint256 i; i < _ctxs.length; ++i) { + // TODO: For now this assumes the new instance public key to remain the same + publicInputs[i + 2] = LibPublicInput.hashPublicInputs( + _ctxs[i].tran, + address(this), + newInstance, + _ctxs[i].prover, + _ctxs[i].metaHash, + taikoChainId() + ); + } + + bytes32 signatureHash = keccak256(abi.encodePacked(publicInputs)); + // Verify the blocks + if (oldInstance != ECDSA.recover(signatureHash, signature)) { + revert SGX_INVALID_PROOF(); + } + + if (!_isInstanceValid(id, oldInstance)) revert SGX_INVALID_INSTANCE(); + + if (newInstance != oldInstance && newInstance != address(0)) { + _replaceInstance(id, oldInstance, newInstance); + } + } function taikoChainId() internal view virtual returns (uint64) { return ITaikoL1(resolve(LibStrings.B_TAIKO, false)).getConfig().chainId; diff --git a/packages/protocol/test/layer1/verifiers/Risc0Verifier.t.sol b/packages/protocol/test/layer1/verifiers/Risc0Verifier.t.sol index 67915c77fa3..fcb63f057e7 100644 --- a/packages/protocol/test/layer1/verifiers/Risc0Verifier.t.sol +++ b/packages/protocol/test/layer1/verifiers/Risc0Verifier.t.sol @@ -105,7 +105,7 @@ contract TestRiscZeroVerifier is TaikoL1TestBase { (IVerifier.Context memory ctx, TaikoData.Transition memory transition) = _getDummyContextAndTransition(); - vm.expectRevert(Risc0Verifier.RISC_ZERO_INVALID_IMAGE_ID.selector); + vm.expectRevert(Risc0Verifier.RISC_ZERO_INVALID_BLOCK_PROOF_IMAGE_ID.selector); rv.verifyProof(ctx, transition, proof); vm.stopPrank(); diff --git a/packages/protocol/test/layer1/verifiers/RiscZeroGroth16Verifier.t.sol b/packages/protocol/test/layer1/verifiers/RiscZeroGroth16Verifier.t.sol index 5e3667e58e3..05ba5dab8e2 100644 --- a/packages/protocol/test/layer1/verifiers/RiscZeroGroth16Verifier.t.sol +++ b/packages/protocol/test/layer1/verifiers/RiscZeroGroth16Verifier.t.sol @@ -97,4 +97,64 @@ contract RiscZeroGroth16VerifierTest is TaikoL1TestBase { graffiti: 0x8008500000000000000000000000000000000000000000000000000000000000 }); } + + function test_risc0_verifyBatchProof() public { + vm.startPrank(Emma); + + bytes32 aggProofImageId = 0x83e7411adcc296e0a021ff032a868434aa2a519b9d11ad44d11d443832280b44; + bytes32 blkProofImageId = 0x28879b90699846864c97f8f32e1b12aabd8ce13135302345d6ad242fa81ab40d; + + // proof generation elf + rv.setImageIdTrusted(aggProofImageId, true); + // proof aggregation elf + rv.setImageIdTrusted(blkProofImageId, true); + + vm.startPrank(address(L1)); + + // Context + IVerifier.ContextV2[] memory ctxs = new IVerifier.ContextV2[](2); + ctxs[0] = IVerifier.ContextV2({ + metaHash: 0x207b2833fb6d804612da24d8785b870a19c7a3f25fa4aaeb9799cd442d65b031, + blobHash: 0x01354e8725e60ad91b32ec4ab19158572a0a5b06b2d4d83f6269c9a7d068f49b, + prover: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + msgSender: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + blockId: 393_333, + isContesting: false, + blobUsed: true, + tran: TaikoData.Transition({ + parentHash: 0xce519622a374dc014c005d7857de26d952751a9067d3e23ffe14da247aa8a399, + blockHash: 0x941d557653da2214cbf3d30af8d9cadbc7b5f77b6c3e48bca548eba04eb9cd79, + stateRoot: 0x4203a2fd98d268d272acb24d91e25055a779b443ff3e732f2cee7abcf639b5e9, + graffiti: 0x8008500000000000000000000000000000000000000000000000000000000000 + }) + }); + ctxs[1] = IVerifier.ContextV2({ + metaHash: 0x946ba1a9c02fc2f01da49e31cb5be83c118193d0389987c6be616ce76426b44d, + blobHash: 0x01abac8c1fb54f87ff7b0cbf14259b9d5ee7a8de458c587dd6eda43ef8354b4f, + prover: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + msgSender: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + blockId: 393_334, + isContesting: false, + blobUsed: true, + tran: TaikoData.Transition({ + parentHash: 0x941d557653da2214cbf3d30af8d9cadbc7b5f77b6c3e48bca548eba04eb9cd79, + blockHash: 0xc0dad38646ab264be30995b7b7fd02db65e7115126fb52bfad94c0fc9572287c, + stateRoot: 0x222061caab95b6bd0f8dd398088030979efbe56e282cd566f7abd77838558eb9, + graffiti: 0x8008500000000000000000000000000000000000000000000000000000000000 + }) + }); + + bytes memory seal = + hex"310fe59810425afc4ed2bae56dfd76e9045f6cd41da30ae8f07a239e86fdb157bf37b0f51b937cb8deccab0d201623d530d0800c208f66dad3f6a38bc1df34408994dec1179209a5f94411e015b20e723512150cfb7e295debeb7ef4f8186cddcf19ba6527ee0d2a0fb8825568682a2fe48e2f73fe9fa052379824751c3bd3f1353f44fe1857e07f5b4801846637b68eafb93aba0c8de8fdfffc76af62a513966f92d9750a977bce0568eb7438fa3497848bfce3e5fd815d9c24b4600e12d0d405d1fd76301ccf27547bddd49a2fa12d1a414f49c2030d0cdf29a87684964a171eefb7e82a5f86acbaacd8cd24d6c3bab06a568f4869087e825ee79237770f23315f3c5c"; + // TierProof + TaikoData.TierProof memory proof = TaikoData.TierProof({ + tier: 100, + data: abi.encode(seal, blkProofImageId, aggProofImageId) + }); + + // `verifyProof()` + rv.verifyBatchProof(ctxs, proof); + + vm.stopPrank(); + } } diff --git a/packages/protocol/test/layer1/verifiers/SgxVerifier.t.sol b/packages/protocol/test/layer1/verifiers/SgxVerifier.t.sol index 2618a640bae..5631423fddb 100644 --- a/packages/protocol/test/layer1/verifiers/SgxVerifier.t.sol +++ b/packages/protocol/test/layer1/verifiers/SgxVerifier.t.sol @@ -380,4 +380,59 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { vm.stopPrank(); } + + // Test `verifyBatchProof()` happy path + function test_verifyBatchProofs() public { + // setup instances + address newInstance = address(0x6Aa1108c1903E3AeF092FF46E4C506fD3ac567c0); + address[] memory instances = new address[](1); + instances[0] = newInstance; + uint256[] memory ids = sv.addInstances(instances); + console.log("Instance ID: ", ids[0]); + + vm.startPrank(address(L1)); + + // Context + IVerifier.ContextV2[] memory ctxs = new IVerifier.ContextV2[](2); + ctxs[0] = IVerifier.ContextV2({ + metaHash: 0x207b2833fb6d804612da24d8785b870a19c7a3f25fa4aaeb9799cd442d65b031, + blobHash: 0x01354e8725e60ad91b32ec4ab19158572a0a5b06b2d4d83f6269c9a7d068f49b, + prover: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + msgSender: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + blockId: 393_333, + isContesting: false, + blobUsed: true, + tran: TaikoData.Transition({ + parentHash: 0xce519622a374dc014c005d7857de26d952751a9067d3e23ffe14da247aa8a399, + blockHash: 0x941d557653da2214cbf3d30af8d9cadbc7b5f77b6c3e48bca548eba04eb9cd79, + stateRoot: 0x4203a2fd98d268d272acb24d91e25055a779b443ff3e732f2cee7abcf639b5e9, + graffiti: 0x8008500000000000000000000000000000000000000000000000000000000000 + }) + }); + ctxs[1] = IVerifier.ContextV2({ + metaHash: 0x946ba1a9c02fc2f01da49e31cb5be83c118193d0389987c6be616ce76426b44d, + blobHash: 0x01abac8c1fb54f87ff7b0cbf14259b9d5ee7a8de458c587dd6eda43ef8354b4f, + prover: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + msgSender: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + blockId: 393_334, + isContesting: false, + blobUsed: true, + tran: TaikoData.Transition({ + parentHash: 0x941d557653da2214cbf3d30af8d9cadbc7b5f77b6c3e48bca548eba04eb9cd79, + blockHash: 0xc0dad38646ab264be30995b7b7fd02db65e7115126fb52bfad94c0fc9572287c, + stateRoot: 0x222061caab95b6bd0f8dd398088030979efbe56e282cd566f7abd77838558eb9, + graffiti: 0x8008500000000000000000000000000000000000000000000000000000000000 + }) + }); + + // TierProof + bytes memory data = + hex"000000016aa1108c1903e3aef092ff46e4c506fd3ac567c06aa1108c1903e3aef092ff46e4c506fd3ac567c0dda91ea274c36678a0680bae65216b40bd935e646b6364ea669a6de9b58e0cd11e1c1b86765f98ac5a3113fdc08296aa663378e8e2e44cf08db7a4ba6e5f00f21b"; + TaikoData.TierProof memory proof = TaikoData.TierProof({ tier: 0, data: data }); + + // `verifyProof()` + sv.verifyBatchProof(ctxs, proof); + + vm.stopPrank(); + } } From b93d056479adfc4a1f557578d8b66eda48b104a9 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 27 Sep 2024 07:51:13 +0800 Subject: [PATCH 018/205] refactor(protocol): slightly change defender monitors (#18086) --- .github/workflows/protocol-monitors.yml | 37 + .github/workflows/protocol.yml | 4 + packages/monitors/.gitignore | 1 + .../.defender/deployment-log.mystack.json | 9 + .../monitors/defender/mainnet/.env.example | 2 + .../defender/mainnet}/README.md | 0 .../actions/Bridge-MessageProcessed/index.js} | 2 +- .../ER20Vault-BridgedTokenChanged/index.js} | 0 .../actions/ERC20Vault-BalanceDrop/index.js} | 0 .../GuardianProver-ApprovedCount/index.js} | 6 +- .../index.js} | 8 +- .../GuardianProver-GuardiansUpdated/index.js} | 8 +- .../index.js} | 7 +- .../SGXVerifier-verifyProofFailure/index.js} | 2 +- .../actions/TaikoL1-BlockProposed/index.js} | 12 +- .../actions/TaikoL1-BlockVerified/index.js} | 12 +- .../TaikoL1-CalldataTxListCount/index.js} | 2 +- .../actions/TaikoL1-ProvingPaused/index.js} | 2 +- .../index.js} | 2 +- .../TaikoL1-TransitionProved/index.js} | 2 +- .../Vaults-BridgedTokenDeployed/index.js} | 23 +- .../defender/mainnet}/serverless.yml | 411 +- packages/monitors/package.json | 16 + packages/protocol/.env.example | 2 +- .../ERC1155Vault-BridgedTokenDeployed.js | 162 - .../ERC20Vault-BridgedTokenDeployed.js | 168 - .../ERC721Vault-BridgedTokenDeployed.js | 162 - pnpm-lock.yaml | 17888 +++++++++------- 28 files changed, 11157 insertions(+), 7793 deletions(-) create mode 100644 .github/workflows/protocol-monitors.yml create mode 100644 packages/monitors/.gitignore create mode 100644 packages/monitors/defender/mainnet/.defender/deployment-log.mystack.json create mode 100644 packages/monitors/defender/mainnet/.env.example rename packages/{protocol/monitors => monitors/defender/mainnet}/README.md (100%) rename packages/{protocol/monitors/actions/Bridge-MessageProcessed.js => monitors/defender/mainnet/actions/Bridge-MessageProcessed/index.js} (97%) rename packages/{protocol/monitors/actions/ER20Vault-BridgedTokenChanged.js => monitors/defender/mainnet/actions/ER20Vault-BridgedTokenChanged/index.js} (100%) rename packages/{protocol/monitors/actions/ERC20Vault-BalanceDrop.js => monitors/defender/mainnet/actions/ERC20Vault-BalanceDrop/index.js} (100%) rename packages/{protocol/monitors/actions/GuardianProver-ApprovedCount.js => monitors/defender/mainnet/actions/GuardianProver-ApprovedCount/index.js} (94%) rename packages/{protocol/monitors/actions/GuardianProver-ConflictingProofs.js => monitors/defender/mainnet/actions/GuardianProver-ConflictingProofs/index.js} (94%) rename packages/{protocol/monitors/actions/GuardianProver-GuardiansUpdated.js => monitors/defender/mainnet/actions/GuardianProver-GuardiansUpdated/index.js} (93%) rename packages/{protocol/monitors/actions/GuardianProver-ProvingAutoPauseEnabled.js => monitors/defender/mainnet/actions/GuardianProver-ProvingAutoPauseEnabled/index.js} (93%) rename packages/{protocol/monitors/actions/SGXVerifier-verifyProofFailure.js => monitors/defender/mainnet/actions/SGXVerifier-verifyProofFailure/index.js} (98%) rename packages/{protocol/monitors/actions/TaikoL1-BlockProposed.js => monitors/defender/mainnet/actions/TaikoL1-BlockProposed/index.js} (96%) rename packages/{protocol/monitors/actions/TaikoL1-BlockVerified.js => monitors/defender/mainnet/actions/TaikoL1-BlockVerified/index.js} (91%) rename packages/{protocol/monitors/actions/TaikoL1-CalldataTxListCount.js => monitors/defender/mainnet/actions/TaikoL1-CalldataTxListCount/index.js} (98%) rename packages/{protocol/monitors/actions/TaikoL1-ProvingPaused.js => monitors/defender/mainnet/actions/TaikoL1-ProvingPaused/index.js} (98%) rename packages/{protocol/monitors/actions/TaikoL1-TransitionContestedCount.js => monitors/defender/mainnet/actions/TaikoL1-TransitionContestedCount/index.js} (99%) rename packages/{protocol/monitors/actions/TaikoL1-TransitionProved.js => monitors/defender/mainnet/actions/TaikoL1-TransitionProved/index.js} (99%) rename packages/{protocol/monitors/actions/Vaults-BridgedTokenDeployed.js => monitors/defender/mainnet/actions/Vaults-BridgedTokenDeployed/index.js} (93%) rename packages/{protocol/monitors => monitors/defender/mainnet}/serverless.yml (65%) create mode 100644 packages/monitors/package.json delete mode 100644 packages/protocol/monitors/actions/ERC1155Vault-BridgedTokenDeployed.js delete mode 100644 packages/protocol/monitors/actions/ERC20Vault-BridgedTokenDeployed.js delete mode 100644 packages/protocol/monitors/actions/ERC721Vault-BridgedTokenDeployed.js diff --git a/.github/workflows/protocol-monitors.yml b/.github/workflows/protocol-monitors.yml new file mode 100644 index 00000000000..8c6a051c200 --- /dev/null +++ b/.github/workflows/protocol-monitors.yml @@ -0,0 +1,37 @@ +name: Monitors + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + paths: + - "packages/monitors/**" + +jobs: + deploy-protocol-monitors: + if: github.event.pull_request.draft == false + runs-on: [taiko-runner] + permissions: + # Give the necessary permissions for stefanzweifel/git-auto-commit-action. + contents: write + steps: + - name: Cancel previous runs + uses: styfle/cancel-workflow-action@0.12.1 + with: + access_token: ${{ github.token }} + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install pnpm dependencies + uses: ./.github/actions/install-pnpm-dependencies + + - name: Deploy Monitors on OZ Defender + working-directory: packages/monitors/defender/mainnet + env: + DEFENDER_API_KEY: ${{ secrets.DEFENDER_API_KEY }} + DEFENDER_API_SECRET: ${{ secrets.DEFENDER_API_SECRET }} + SERVERLESS_ACCESS_KEY: ${{ secrets.SERVERLESS_ACCESS_KEY }} + run: | + npx serverless deploy diff --git a/.github/workflows/protocol.yml b/.github/workflows/protocol.yml index a64fdd72c05..59bf0524996 100644 --- a/.github/workflows/protocol.yml +++ b/.github/workflows/protocol.yml @@ -5,6 +5,10 @@ on: types: [opened, synchronize, reopened, ready_for_review] paths: - "packages/protocol/**" + - "!packages/protocol/audit/**" + - "!packages/protocol/docs/**" + - "!packages/protocol/simulation/**" + - "!packages/protocol/deployments/**" jobs: build-protocol: diff --git a/packages/monitors/.gitignore b/packages/monitors/.gitignore new file mode 100644 index 00000000000..86092cef1cb --- /dev/null +++ b/packages/monitors/.gitignore @@ -0,0 +1 @@ +.defender diff --git a/packages/monitors/defender/mainnet/.defender/deployment-log.mystack.json b/packages/monitors/defender/mainnet/.defender/deployment-log.mystack.json new file mode 100644 index 00000000000..cf6a9a2b953 --- /dev/null +++ b/packages/monitors/defender/mainnet/.defender/deployment-log.mystack.json @@ -0,0 +1,9 @@ +{"stack":"mystack","timestamp":"2024-09-18T21:39:53.367Z","monitors":{"removed":[],"created":[],"updated":[{"skipABIValidation":true,"alertThreshold":null,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"Defender Monitor: TaikoL1: Pause/Unpause triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]}],"abi":"[{\"type\":\"error\",\"name\":\"AM_ADDRESS_ALREADY_SET\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"spender\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"approved\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ApprovalForAll\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"operationId\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"approvalBits\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"minGuardiansReached\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Authorized\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"authorized\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"BB_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_MINT_DISALLOWED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_CANNOT_RECEIVE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_BURN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockProposed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"assignedProver\",\"indexed\":true},{\"type\":\"uint96\",\"name\":\"livenessBond\",\"indexed\":false},{\"type\":\"tuple\",\"name\":\"meta\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"depositsProcessed\",\"indexed\":false,\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockVerified\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"stateRoot\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondCredited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondDebited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btokenOld\",\"indexed\":false},{\"type\":\"address\",\"name\":\"btokenNew\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"CalldataTxList\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"txList\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ChainDataSynced\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"kind\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"data\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ConflictingProofs\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"guardian\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"currentProofHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"newProofHash\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"provingPaused\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"fromDelegate\",\"indexed\":true},{\"type\":\"address\",\"name\":\"toDelegate\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegate\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"previousBalance\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"newBalance\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EIP712DomainChanged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EtherPaymentFailed\",\"inputs\":[{\"type\":\"address\",\"name\":\"to\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"maxGas\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardianApproval\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false},{\"type\":\"bytes\",\"name\":\"proofData\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardiansUpdated\",\"inputs\":[{\"type\":\"uint32\",\"name\":\"version\",\"indexed\":false},{\"type\":\"address[]\",\"name\":\"guardians\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_EXPIRED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"LocalReportCheckToggled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"checkLocalEnclaveReport\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"MAX_GAS_PAYING_PROVER\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageProcessed\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"stats\",\"indexed\":false,\"components\":[{\"type\":\"uint32\",\"name\":\"gasUsedInFeeCalc\"},{\"type\":\"uint32\",\"name\":\"proofSize\"},{\"type\":\"uint32\",\"name\":\"numCacheOps\"},{\"type\":\"bool\",\"name\":\"processedByRelayer\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageStatusChanged\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"uint8\",\"name\":\"status\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigratedTo\",\"inputs\":[{\"type\":\"address\",\"name\":\"fromToken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigrationStatusChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"inbound\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrEnclaveUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrEnclave\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrSignerUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrSigner\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"enabled\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingPaused\",\"inputs\":[{\"type\":\"bool\",\"name\":\"paused\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"QeIdentityConfigured\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"indexed\":false,\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"name\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumRemoved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"SignalSent\",\"inputs\":[{\"type\":\"address\",\"name\":\"app\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"slot\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"slotB\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TcbInfoJsonConfigured\",\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"indexed\":false,\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"canonicalChainId\",\"indexed\":false},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferBatch\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256[]\",\"name\":\"ids\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"values\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferSingle\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionContested\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"contester\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"contestBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionProved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"validityBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"URI\",\"inputs\":[{\"type\":\"string\",\"name\":\"value\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_DATA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_ECDSA_SIGNATURE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEAUTHDATA_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEREPORT_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_MEMBER_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_UNSUPPORT_CERTIFICATION_TYPE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INSUFFICIENT_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_CTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"allowance\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"approvals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"bytes32\",\"name\":\"proofHash\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"approvalBits\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\",\"name\":\"approved_\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"authorize\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_addr\"},{\"type\":\"bool\",\"name\":\"_authorize\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"id\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOfBatch\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"accounts\"},{\"type\":\"uint256[]\",\"name\":\"ids\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"batchTransfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"recipients\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_user\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"btokenDenylist\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"denied\"}]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"canonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btoken\"}]},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctoken\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"address\",\"name\":\"_btokenNew\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btokenOld_\"}]},{\"type\":\"function\",\"name\":\"changeMigrationStatus\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_migratingAddress\"},{\"type\":\"bool\",\"name\":\"_migratingInbound\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"checkLocalEnclaveReport\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"checkpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint32\",\"name\":\"pos\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint32\",\"name\":\"fromBlock\"},{\"type\":\"uint224\",\"name\":\"votes\"}]}]},{\"type\":\"function\",\"name\":\"clock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint48\"}]},{\"type\":\"function\",\"name\":\"configureQeIdentityJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"configureTcbInfoJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"context\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"name\":\"ctx_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"}]}]},{\"type\":\"function\",\"name\":\"decimals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint8\"}]},{\"type\":\"function\",\"name\":\"decodeCert\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"der\"},{\"type\":\"bool\",\"name\":\"isPckCert\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"tuple\",\"name\":\"cert\",\"components\":[{\"type\":\"uint256\",\"name\":\"notBefore\"},{\"type\":\"uint256\",\"name\":\"notAfter\"},{\"type\":\"bytes\",\"name\":\"serialNumber\"},{\"type\":\"bytes\",\"name\":\"tbsCertificate\"},{\"type\":\"bytes\",\"name\":\"pubKey\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bool\",\"name\":\"isPck\"},{\"type\":\"tuple\",\"name\":\"pck\",\"components\":[{\"type\":\"string\",\"name\":\"commonName\"},{\"type\":\"string\",\"name\":\"issuerName\"},{\"type\":\"tuple\",\"name\":\"sgxExtension\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint256[]\",\"name\":\"sgxTcbCompSvnArr\"}]}]}]}]},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"subtractedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"delegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegateBySig\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"},{\"type\":\"uint256\",\"name\":\"nonce\"},{\"type\":\"uint256\",\"name\":\"expiry\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegates\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"depositBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"eip712Domain\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes1\",\"name\":\"fields\"},{\"type\":\"string\",\"name\":\"name\"},{\"type\":\"string\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"verifyingContract\"},{\"type\":\"bytes32\",\"name\":\"salt\"},{\"type\":\"uint256[]\",\"name\":\"extensions\"}]},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"failMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getApproved\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"blk_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]}]},{\"type\":\"function\",\"name\":\"getConfig\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"uint64\",\"name\":\"blockMaxProposals\"},{\"type\":\"uint64\",\"name\":\"blockRingBufferSize\"},{\"type\":\"uint64\",\"name\":\"maxBlocksToVerify\"},{\"type\":\"uint32\",\"name\":\"blockMaxGasLimit\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint8\",\"name\":\"stateRootSyncInternal\"},{\"type\":\"bool\",\"name\":\"checkEOAForCalldataDA\"}]}]},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"dataLength\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"getMinTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getPastVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"getStateVariables\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"chainData_\"}]},{\"type\":\"function\",\"name\":\"getTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint16\",\"name\":\"_tierId\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"verifierName\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint24\",\"name\":\"cooldownWindow\"},{\"type\":\"uint16\",\"name\":\"provingWindow\"},{\"type\":\"uint8\",\"name\":\"maxBlocksToVerifyPerProof\"}]}]},{\"type\":\"function\",\"name\":\"getTierIds\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint16[]\",\"name\":\"tiers_\"}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"uint32\",\"name\":\"_tid\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_parentHash\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"prover_\"}]},{\"type\":\"function\",\"name\":\"getVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"guardianIds\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"guardian\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"id\"}]},{\"type\":\"function\",\"name\":\"guardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"hashAssignment\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_assignment\",\"components\":[{\"type\":\"address\",\"name\":\"feeToken\"},{\"type\":\"uint64\",\"name\":\"expiry\"},{\"type\":\"uint64\",\"name\":\"maxBlockId\"},{\"type\":\"uint64\",\"name\":\"maxProposedIn\"},{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"tuple[]\",\"name\":\"tierFees\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint128\",\"name\":\"fee\"}]},{\"type\":\"bytes\",\"name\":\"signature\"}]},{\"type\":\"address\",\"name\":\"_taikoL1Address\"},{\"type\":\"address\",\"name\":\"_blockProposer\"},{\"type\":\"address\",\"name\":\"_assignedProver\"},{\"type\":\"bytes32\",\"name\":\"_blobHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"hashMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"impl\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"addedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"bytes32\",\"name\":\"_genesisBlockHash\"},{\"type\":\"bool\",\"name\":\"_toPause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"sigVerifyLibAddr\"},{\"type\":\"address\",\"name\":\"pemCertLibAddr\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"uint8\",\"name\":\"_decimals\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init2\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"address\",\"name\":\"operator\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isAuthorized\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"addr\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"authorized\"}]},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"enabled_\"},{\"type\":\"address\",\"name\":\"destBridge_\"}]},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isSignalSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"timestamp\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"latestProofHash\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"blockId\"}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"hash\"}]},{\"type\":\"function\",\"name\":\"messageStatus\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status\"}]},{\"type\":\"function\",\"name\":\"migratingAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"migratingInbound\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"minGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mintBatch\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256[]\",\"name\":\"_tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"_amounts\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"nextMessageId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nonces\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"numGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"onBlockProposed\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_blk\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]},{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256[]\"},{\"type\":\"uint256[]\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC721Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"ownerOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseProving\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_pause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pemCertLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"permit\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"uint256\",\"name\":\"deadline\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"processMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status_\"},{\"type\":\"uint8\",\"name\":\"reason_\"}]},{\"type\":\"function\",\"name\":\"proposeBlock\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_params\"},{\"type\":\"bytes\",\"name\":\"_txList\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"meta_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"deposits_\",\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"function\",\"name\":\"proveBlock\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes\",\"name\":\"_input\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"numCacheOps_\"}]},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"qeIdentity\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"}]},{\"type\":\"function\",\"name\":\"recallMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"removeRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"retryMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bool\",\"name\":\"_isLastAttempt\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeBatchTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256[]\",\"name\":\"ids\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"id\"},{\"type\":\"uint256\",\"name\":\"amount\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"selfDelegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_anyToken\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sendMessage\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash_\"},{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendSignal\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256[]\",\"name\":\"tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256\",\"name\":\"amount\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"serialNumIsRevoked\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"idx\"},{\"type\":\"bytes\",\"name\":\"serialNum\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"revoked\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"operator\"},{\"type\":\"bool\",\"name\":\"approved\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setGuardians\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_newGuardians\"},{\"type\":\"uint8\",\"name\":\"_minGuardians\"},{\"type\":\"bool\",\"name\":\"_clearData\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrEnclave\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrEnclave\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrSigner\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrSigner\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sigVerifyLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"signalForChainData\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"source\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"splitCertificateChain\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"pemChain\"},{\"type\":\"uint256\",\"name\":\"size\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"bytes[]\",\"name\":\"certs\"}]},{\"type\":\"function\",\"name\":\"srcChainId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"srcToken\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"state\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"__reserve1\"},{\"type\":\"tuple\",\"name\":\"slotA\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"name\":\"slotB\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"supportsInterface\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes4\",\"name\":\"_interfaceId\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"syncChainData\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"tcbInfo\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"}],\"outputs\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"}]},{\"type\":\"function\",\"name\":\"toggleLocalReportCheck\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"tokenURI\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"topBlockId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"kind\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId\"}]},{\"type\":\"function\",\"name\":\"totalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"transfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"trustedUserMrEnclave\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"enclave\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"trustedUserMrSigner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"signer\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"uri\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"verifyAttestation\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"}]},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_maxBlocksToVerify\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyES256Signature\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"tbs\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bytes\",\"name\":\"publicKey\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"sigValid\"}]},{\"type\":\"function\",\"name\":\"verifyParsedQuote\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"v3quote\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"bool\"},{\"type\":\"bytes\"}]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"version\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"withdrawBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"constructor\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"es256Verifier\"}]}]","addresses":["0x02772b7B3a5Bea0141C993Dbb8D0733C19F46169","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0x39E4C1214e733639d059979079A151911e42791d","0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0x579f40D0BE111b823962043702cabe6Aaa290780","0x67281b15aee4d6b805bc755e439abd524dd8da8d","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0xa25e645ff9897b0282e5f17d36de5bca4ec21d6e","0xaf145913EA4a56BE22E120ED9C24589659881702","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0xc4096E9ff1526Bd1840B65e9f45695135aC12De7","0xcc5d488073FA918cBbd73B9A523F3858C4de7372","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC"]}],"createdAt":"2024-08-27T09:44:01.744Z","subscriberId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","name":"TaikoL1: Pause/Unpause","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","blockWatcherId":"mainnet-6","paused":false,"stackResourceId":"mystack.taiko-l-1-pause-unpause","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"LOW","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet SGX Prover triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceAdded(uint256,address,address,uint256)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceDeleted(uint256,address)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[{"functionSignature":"verifyProof((bytes32,bytes32,address,uint64,bool,bool,address),(bytes32,bytes32,bytes32,bytes32),(uint16,bytes))","expression":null}],"eventConditions":[]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]}]","addresses":["0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81"]}],"createdAt":"2024-05-02T14:09:42.804Z","subscriberId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","name":"Taiko Mainnet SGX Prover","network":"mainnet","riskCategory":"TECHNICAL","monitorId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-sgx-prover","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Address Managers triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AddressSet(uint64,bytes32,address,address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x579f40D0BE111b823962043702cabe6Aaa290780"]}],"createdAt":"2024-05-02T14:00:18.874Z","subscriberId":"3919cb83-487f-4432-88fa-33bbe4361fce","name":"Taiko Mainnet Address Managers","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"3919cb83-487f-4432-88fa-33bbe4361fce","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-address-managers","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Essential Contracts triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AdminChanged(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"BeaconUpgraded(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Initialized(uint8)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferStarted(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferred(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Upgraded(address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0xaf145913EA4a56BE22E120ED9C24589659881702","0x579f40D0BE111b823962043702cabe6Aaa290780","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3"]}],"createdAt":"2024-05-02T13:49:54.192Z","subscriberId":"67a53521-3d4a-4de4-92ab-ede82cc45644","name":"Taiko Mainnet Essential Contracts","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"67a53521-3d4a-4de4-92ab-ede82cc45644","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-essential-contracts","type":"BLOCK"}]},"actions":{"removed":[],"created":[],"updated":[{"autotaskId":"9fc30210-b551-49df-9836-b50fb6d2aaed","actionId":"9fc30210-b551-49df-9836-b50fb6d2aaed","name":"SGXVerifier: VerifyProof failure Alert","paused":false,"trigger":{"cron":null,"frequencyMinutes":5,"type":"schedule"},"codeDigest":"pRCwGRE9kcevXfVaEyCq9VP+R/9tEZp4EwZEM8/9B4Y=","stackResourceId":"mystack.sgx-verifier-verify-proof-failure-alert","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVAKQDUd+QsAAPkLAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCB2ZXJpZnlQcm9vZlNpZ25hdHVyZSA9ICJ2ZXJpZnlQcm9vZihhZGRyZXNzLGJ5dGVzMzIsYnl0ZXMzMikiOwpjb25zdCB2ZXJpZnlQcm9vZlNlbGVjdG9yID0gZXRoZXJzLnV0aWxzCiAgLmtlY2NhazI1NihldGhlcnMudXRpbHMudG9VdGY4Qnl0ZXModmVyaWZ5UHJvb2ZTaWduYXR1cmUpKQogIC5zdWJzdHJpbmcoMCwgMTApOwoKZnVuY3Rpb24gYWxlcnRPcmcobm90aWZpY2F0aW9uQ2xpZW50LCBtZXNzYWdlKSB7CiAgbm90aWZpY2F0aW9uQ2xpZW50LnNlbmQoewogICAgY2hhbm5lbEFsaWFzOiAiZGlzY29yZF9ibG9ja3MiLAogICAgc3ViamVjdDogIuKaoO+4jyBTR1hWZXJpZmllcjogdmVyaWZ5UHJvb2YgRmFpbHVyZSBBbGVydCIsCiAgICBtZXNzYWdlLAogIH0pOwp9CgpmdW5jdGlvbiBjcmVhdGVQcm92aWRlcihhcGlLZXksIGFwaVNlY3JldCwgcmVsYXllckFwaUtleSwgcmVsYXllckFwaVNlY3JldCkgewogIGNvbnN0IGNsaWVudCA9IG5ldyBEZWZlbmRlcih7CiAgICBhcGlLZXksCiAgICBhcGlTZWNyZXQsCiAgICByZWxheWVyQXBpS2V5LAogICAgcmVsYXllckFwaVNlY3JldCwKICB9KTsKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldExhdGVzdEJsb2NrTnVtYmVyKHByb3ZpZGVyKSB7CiAgY29uc3QgY3VycmVudEJsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2soImxhdGVzdCIpOwogIHJldHVybiBjdXJyZW50QmxvY2subnVtYmVyOwp9Cgphc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVCbG9ja1RpbWUocHJvdmlkZXIpIHsKICBjb25zdCBsYXRlc3RCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKCJsYXRlc3QiKTsKICBjb25zdCBwcmV2aW91c0Jsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2sobGF0ZXN0QmxvY2subnVtYmVyIC0gMTAwKTsKCiAgY29uc3QgdGltZURpZmYgPSBsYXRlc3RCbG9jay50aW1lc3RhbXAgLSBwcmV2aW91c0Jsb2NrLnRpbWVzdGFtcDsKICBjb25zdCBibG9ja0RpZmYgPSBsYXRlc3RCbG9jay5udW1iZXIgLSBwcmV2aW91c0Jsb2NrLm51bWJlcjsKCiAgY29uc3QgYmxvY2tUaW1lID0gdGltZURpZmYgLyBibG9ja0RpZmY7CiAgcmV0dXJuIGJsb2NrVGltZTsKfQoKYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlQmxvY2tSYW5nZShwcm92aWRlciwgaG91cnMgPSAyNCkgewogIGNvbnN0IGN1cnJlbnRCbG9ja051bWJlciA9IGF3YWl0IGdldExhdGVzdEJsb2NrTnVtYmVyKHByb3ZpZGVyKTsKICBjb25zdCBibG9ja1RpbWVJblNlY29uZHMgPSBhd2FpdCBjYWxjdWxhdGVCbG9ja1RpbWUocHJvdmlkZXIpOwogIGNvbnN0IGJsb2Nrc0luVGltZUZyYW1lID0gTWF0aC5mbG9vcigoaG91cnMgKiA2MCAqIDYwKSAvIGJsb2NrVGltZUluU2Vjb25kcyk7CgogIGNvbnN0IGZyb21CbG9jayA9IGN1cnJlbnRCbG9ja051bWJlciAtIGJsb2Nrc0luVGltZUZyYW1lOwogIGNvbnN0IHRvQmxvY2sgPSBjdXJyZW50QmxvY2tOdW1iZXI7CgogIGNvbnNvbGUubG9nKGBDYWxjdWxhdGVkIGJsb2NrIHJhbmdlOiBmcm9tICR7ZnJvbUJsb2NrfSB0byAke3RvQmxvY2t9YCk7CgogIHJldHVybiB7IGZyb21CbG9jaywgdG9CbG9jayB9Owp9Cgphc3luYyBmdW5jdGlvbiBtb25pdG9yVHJhbnNhY3Rpb25zKAogIHByb3ZpZGVyLAogIGNvbnRyYWN0QWRkcmVzcywKICBub3RpZmljYXRpb25DbGllbnQsCiAgaG91cnMsCikgewogIGNvbnN0IHsgZnJvbUJsb2NrLCB0b0Jsb2NrIH0gPSBhd2FpdCBjYWxjdWxhdGVCbG9ja1JhbmdlKHByb3ZpZGVyLCBob3Vycyk7CgogIGNvbnN0IGxvZ3MgPSBhd2FpdCBwcm92aWRlci5nZXRMb2dzKHsKICAgIGZyb21CbG9jaywKICAgIHRvQmxvY2ssCiAgICBhZGRyZXNzOiBjb250cmFjdEFkZHJlc3MsCiAgfSk7CgogIGZvciAoY29uc3QgbG9nIG9mIGxvZ3MpIHsKICAgIGNvbnN0IHR4ID0gYXdhaXQgcHJvdmlkZXIuZ2V0VHJhbnNhY3Rpb24obG9nLnRyYW5zYWN0aW9uSGFzaCk7CgogICAgaWYgKHR4LmRhdGEuc3RhcnRzV2l0aCh2ZXJpZnlQcm9vZlNlbGVjdG9yKSkgewogICAgICBjb25zdCB0eFJlY2VpcHQgPSBhd2FpdCBwcm92aWRlci5nZXRUcmFuc2FjdGlvblJlY2VpcHQoCiAgICAgICAgbG9nLnRyYW5zYWN0aW9uSGFzaCwKICAgICAgKTsKCiAgICAgIGlmICh0eFJlY2VpcHQgJiYgdHhSZWNlaXB0LnN0YXR1cyA9PT0gMCkgewogICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgCiAgICAgICAgICBBIGZhaWxlZCB2ZXJpZnlQcm9vZiB0cmFuc2FjdGlvbiB3YXMgZGV0ZWN0ZWQuCiAgICAgICAgICAtIENvbnRyYWN0IEFkZHJlc3M6ICR7bG9nLmFkZHJlc3N9CiAgICAgICAgICAtIFRyYW5zYWN0aW9uIEhhc2g6ICR7bG9nLnRyYW5zYWN0aW9uSGFzaH0KICAgICAgICAgIC0gQmxvY2sgTnVtYmVyOiAke3R4UmVjZWlwdC5ibG9ja051bWJlcn0KICAgICAgICBgOwogICAgICAgIGFsZXJ0T3JnKG5vdGlmaWNhdGlvbkNsaWVudCwgbWVzc2FnZSk7CiAgICAgIH0KICAgIH0KICB9Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnN0IGNvbnRyYWN0QWRkcmVzcyA9ICIweGIwZjMxODZGQzE5NjNmNzc0ZjUyZmY0NTVEQzg2YUVkRDBiMzFGODEiOwoKICBjb25zdCBwcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyKAogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgKTsKCiAgYXdhaXQgbW9uaXRvclRyYW5zYWN0aW9ucyhwcm92aWRlciwgY29udHJhY3RBZGRyZXNzLCBub3RpZmljYXRpb25DbGllbnQsIDI0KTsKCiAgcmV0dXJuIHRydWU7Cn07ClBLAQIUAAoAAAAAAAAAQVAKQDUd+QsAAPkLAAAIAAAAAAAAAAAAAAAAAAAAAABpbmRleC5qc1BLBQYAAAAAAQABADYAAAAfDAAAAAA="},{"autotaskId":"f3e4b61d-acb1-4735-9600-4f78dc407fac","actionId":"f3e4b61d-acb1-4735-9600-4f78dc407fac","name":"TaikoL1: CalldataTxList Count","paused":false,"trigger":{"cron":null,"frequencyMinutes":1440,"type":"schedule"},"codeDigest":"YFe2ZhQm4yRXmMxU51MdCbiCEMWnSNqZJyNxQE6d6BY=","stackResourceId":"mystack.taiko-l-1-calldata-tx-list-count","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVC8yOSKFQ0AABUNAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAiYmxvY2tJZCIsCiAgICAgICAgdHlwZTogInVpbnQyNTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMiLAogICAgICAgIG5hbWU6ICJ0eExpc3QiLAogICAgICAgIHR5cGU6ICJieXRlcyIsCiAgICAgIH0sCiAgICBdLAogICAgbmFtZTogIkNhbGxkYXRhVHhMaXN0IiwKICAgIHR5cGU6ICJldmVudCIsCiAgfSwKXTsKCmZ1bmN0aW9uIGFsZXJ0T3JnKG5vdGlmaWNhdGlvbkNsaWVudCwgbWVzc2FnZSkgewogIG5vdGlmaWNhdGlvbkNsaWVudC5zZW5kKHsKICAgIGNoYW5uZWxBbGlhczogImRpc2NvcmRfYmxvY2tzIiwKICAgIHN1YmplY3Q6ICLihLnvuI8gVGFpa29MMTogQ2FsbGRhdGFUeExpc3QgQ291bnQiLAogICAgbWVzc2FnZSwKICB9KTsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0QmxvY2tOdW1iZXIocHJvdmlkZXIpIHsKICBjb25zdCBjdXJyZW50QmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jaygibGF0ZXN0Iik7CiAgcmV0dXJuIGN1cnJlbnRCbG9jay5udW1iZXI7Cn0KCmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUJsb2NrVGltZShwcm92aWRlcikgewogIGNvbnN0IGxhdGVzdEJsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2soImxhdGVzdCIpOwogIGNvbnN0IHByZXZpb3VzQmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jayhsYXRlc3RCbG9jay5udW1iZXIgLSAxMDApOwoKICBjb25zdCB0aW1lRGlmZiA9IGxhdGVzdEJsb2NrLnRpbWVzdGFtcCAtIHByZXZpb3VzQmxvY2sudGltZXN0YW1wOwogIGNvbnN0IGJsb2NrRGlmZiA9IGxhdGVzdEJsb2NrLm51bWJlciAtIHByZXZpb3VzQmxvY2subnVtYmVyOwoKICBjb25zdCBibG9ja1RpbWUgPSB0aW1lRGlmZiAvIGJsb2NrRGlmZjsKICByZXR1cm4gYmxvY2tUaW1lOwp9Cgphc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVCbG9ja1JhbmdlKHByb3ZpZGVyKSB7CiAgY29uc3QgY3VycmVudEJsb2NrTnVtYmVyID0gYXdhaXQgZ2V0TGF0ZXN0QmxvY2tOdW1iZXIocHJvdmlkZXIpOwogIGNvbnN0IGJsb2NrVGltZUluU2Vjb25kcyA9IGF3YWl0IGNhbGN1bGF0ZUJsb2NrVGltZShwcm92aWRlcik7CiAgY29uc3QgYmxvY2tzSW4yNEhvdXJzID0gTWF0aC5mbG9vcigoMjQgKiA2MCAqIDYwKSAvIGJsb2NrVGltZUluU2Vjb25kcyk7IC8vIDI0IGhvdXJzIGluIHNlY29uZHMKCiAgY29uc3QgZnJvbUJsb2NrID0gY3VycmVudEJsb2NrTnVtYmVyIC0gYmxvY2tzSW4yNEhvdXJzOwogIGNvbnN0IHRvQmxvY2sgPSBjdXJyZW50QmxvY2tOdW1iZXI7CgogIGNvbnNvbGUubG9nKGBDYWxjdWxhdGVkIGJsb2NrIHJhbmdlOiBmcm9tICR7ZnJvbUJsb2NrfSB0byAke3RvQmxvY2t9YCk7CgogIHJldHVybiB7IGZyb21CbG9jaywgdG9CbG9jayB9Owp9Cgphc3luYyBmdW5jdGlvbiBmZXRjaExvZ3NGcm9tTDEoCiAgZXZlbnROYW1lcywKICBmcm9tQmxvY2ssCiAgdG9CbG9jaywKICBhZGRyZXNzLAogIGFiaSwKICBwcm92aWRlciwKKSB7CiAgY29uc3QgaWZhY2UgPSBuZXcgZXRoZXJzLnV0aWxzLkludGVyZmFjZShhYmkpOwogIGNvbnN0IGV2ZW50VG9waWNzID0gZXZlbnROYW1lcy5tYXAoKGV2ZW50TmFtZSkgPT4KICAgIGlmYWNlLmdldEV2ZW50VG9waWMoZXZlbnROYW1lKSwKICApOwoKICBjb25zb2xlLmxvZyhgZXZlbnRUb3BpY3M6ICR7ZXZlbnRUb3BpY3N9YCk7CgogIHRyeSB7CiAgICBjb25zdCBsb2dzID0gYXdhaXQgcHJvdmlkZXIuZ2V0TG9ncyh7CiAgICAgIGFkZHJlc3MsCiAgICAgIGZyb21CbG9jaywKICAgICAgdG9CbG9jaywKICAgICAgdG9waWNzOiBbZXZlbnRUb3BpY3NdLAogICAgfSk7CiAgICBjb25zb2xlLmxvZyhgRmV0Y2hlZCBsb2dzOiAke2xvZ3MubGVuZ3RofWApOwogICAgcmV0dXJuIGxvZ3MubWFwKChsb2cpID0+IHsKICAgICAgY29uc3QgcGFyc2VkTG9nID0gaWZhY2UucGFyc2VMb2cobG9nKTsKICAgICAgY29uc29sZS5sb2coYFBhcnNlZCBsb2c6ICR7SlNPTi5zdHJpbmdpZnkocGFyc2VkTG9nKX1gKTsKICAgICAgcmV0dXJuIHBhcnNlZExvZzsKICAgIH0pOwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICBjb25zb2xlLmVycm9yKCJFcnJvciBmZXRjaGluZyBMMSBsb2dzOiIsIGVycm9yKTsKICAgIHJldHVybiBbXTsKICB9Cn0KCmZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKGFwaUtleSwgYXBpU2VjcmV0LCByZWxheWVyQXBpS2V5LCByZWxheWVyQXBpU2VjcmV0KSB7CiAgY29uc3QgY2xpZW50ID0gbmV3IERlZmVuZGVyKHsKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHJlbGF5ZXJBcGlLZXksCiAgICByZWxheWVyQXBpU2VjcmV0LAogIH0pOwoKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnN0IHRhaWtvTDFQcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyKAogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgKTsKCiAgY29uc3QgeyBmcm9tQmxvY2ssIHRvQmxvY2sgfSA9IGF3YWl0IGNhbGN1bGF0ZUJsb2NrUmFuZ2UodGFpa29MMVByb3ZpZGVyKTsKCiAgY29uc3QgbG9ncyA9IGF3YWl0IGZldGNoTG9nc0Zyb21MMSgKICAgIFsiQ2FsbGRhdGFUeExpc3QiXSwKICAgIGZyb21CbG9jaywKICAgIHRvQmxvY2ssCiAgICAiMHgwNmE5QWIyN2M3ZTIyNTVkZjE4MTVFNkNDMDE2OGQ3NzU1RmViMTlhIiwKICAgIEFCSSwKICAgIHRhaWtvTDFQcm92aWRlciwKICApOwoKICBpZiAobG9ncy5sZW5ndGggPiAwKSB7CiAgICBhbGVydE9yZygKICAgICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgICBgRGV0ZWN0ZWQgJHtsb2dzLmxlbmd0aH0gQ2FsbGRhdGFUeExpc3QgZXZlbnRzIGluIHRoZSBsYXN0IDI0IGhvdXJzIG9uIFRhaWtvTDEhYCwKICAgICk7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfTsKUEsBAhQACgAAAAAAAABBULzI5IoVDQAAFQ0AAAgAAAAAAAAAAAAAAAAAAAAAAGluZGV4LmpzUEsFBgAAAAABAAEANgAAADsNAAAAAA=="},{"autotaskId":"4dba76e1-18d4-4757-b8d3-4d3a8e866625","actionId":"4dba76e1-18d4-4757-b8d3-4d3a8e866625","name":"GuardianProver: ProvingAutoPauseEnabled Alert","paused":false,"trigger":{"cron":null,"frequencyMinutes":4,"type":"schedule"},"codeDigest":"lTr+Hs0WWoe7JBOzEADRpJuTIzc2cvRze6fHvaX5zxE=","stackResourceId":"mystack.guardian-prover-proving-auto-pause-enabled-alert","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVCluHKrdgwAAHYMAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJib29sIiwKICAgICAgICBuYW1lOiAiZW5hYmxlZCIsCiAgICAgICAgdHlwZTogImJvb2wiLAogICAgICB9LAogICAgXSwKICAgIG5hbWU6ICJQcm92aW5nQXV0b1BhdXNlRW5hYmxlZCIsCiAgICB0eXBlOiAiZXZlbnQiLAogIH0sCl07CgpmdW5jdGlvbiBhbGVydE9yZyhub3RpZmljYXRpb25DbGllbnQsIG1lc3NhZ2UpIHsKICBub3RpZmljYXRpb25DbGllbnQuc2VuZCh7CiAgICBjaGFubmVsQWxpYXM6ICJkaXNjb3JkX2NvbmZpZ3MiLAogICAgc3ViamVjdDogIuKaoO+4jyBHdWFyZGlhblByb3ZlcjogUHJvdmluZ0F1dG9QYXVzZUVuYWJsZWQgQWxlcnQiLAogICAgbWVzc2FnZSwKICB9KTsKICBub3RpZmljYXRpb25DbGllbnQuc2VuZCh7CiAgICBjaGFubmVsQWxpYXM6ICJ0Z190YWlrb19ndWFyZGlhbnMiLAogICAgc3ViamVjdDogIuKaoO+4jyBHdWFyZGlhblByb3ZlcjogUHJvdmluZ0F1dG9QYXVzZUVuYWJsZWQgQWxlcnQiLAogICAgbWVzc2FnZSwKICB9KTsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0QmxvY2tOdW1iZXIocHJvdmlkZXIpIHsKICBjb25zdCBjdXJyZW50QmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jaygibGF0ZXN0Iik7CiAgcmV0dXJuIGN1cnJlbnRCbG9jay5udW1iZXI7Cn0KCmFzeW5jIGZ1bmN0aW9uIGZldGNoTG9nc0Zyb21MMSgKICBldmVudE5hbWUsCiAgZnJvbUJsb2NrLAogIHRvQmxvY2ssCiAgYWRkcmVzcywKICBhYmksCiAgcHJvdmlkZXIsCikgewogIGNvbnN0IGlmYWNlID0gbmV3IGV0aGVycy51dGlscy5JbnRlcmZhY2UoYWJpKTsKICBjb25zdCBldmVudFRvcGljID0gaWZhY2UuZ2V0RXZlbnRUb3BpYyhldmVudE5hbWUpOwoKICB0cnkgewogICAgY29uc3QgbG9ncyA9IGF3YWl0IHByb3ZpZGVyLmdldExvZ3MoewogICAgICBhZGRyZXNzLAogICAgICBmcm9tQmxvY2ssCiAgICAgIHRvQmxvY2ssCiAgICAgIHRvcGljczogW2V2ZW50VG9waWNdLAogICAgfSk7CgogICAgcmV0dXJuIGxvZ3MubWFwKChsb2cpID0+CiAgICAgIGlmYWNlLmRlY29kZUV2ZW50TG9nKGV2ZW50TmFtZSwgbG9nLmRhdGEsIGxvZy50b3BpY3MpLAogICAgKTsKICB9IGNhdGNoIChlcnJvcikgewogICAgY29uc29sZS5lcnJvcihgRXJyb3IgZmV0Y2hpbmcgbG9ncyBmb3IgJHtldmVudE5hbWV9OmAsIGVycm9yKTsKICAgIHJldHVybiBbXTsKICB9Cn0KCmZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKGFwaUtleSwgYXBpU2VjcmV0LCByZWxheWVyQXBpS2V5LCByZWxheWVyQXBpU2VjcmV0KSB7CiAgY29uc3QgY2xpZW50ID0gbmV3IERlZmVuZGVyKHsKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHJlbGF5ZXJBcGlLZXksCiAgICByZWxheWVyQXBpU2VjcmV0LAogIH0pOwoKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUJsb2NrVGltZShwcm92aWRlcikgewogIGNvbnN0IGxhdGVzdEJsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2soImxhdGVzdCIpOwogIGNvbnN0IHByZXZpb3VzQmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jayhsYXRlc3RCbG9jay5udW1iZXIgLSAxMDApOwoKICBjb25zdCB0aW1lRGlmZiA9IGxhdGVzdEJsb2NrLnRpbWVzdGFtcCAtIHByZXZpb3VzQmxvY2sudGltZXN0YW1wOwogIGNvbnN0IGJsb2NrRGlmZiA9IGxhdGVzdEJsb2NrLm51bWJlciAtIHByZXZpb3VzQmxvY2subnVtYmVyOwoKICBjb25zdCBibG9ja1RpbWUgPSB0aW1lRGlmZiAvIGJsb2NrRGlmZjsKICByZXR1cm4gYmxvY2tUaW1lOwp9CgpleHBvcnRzLmhhbmRsZXIgPSBhc3luYyBmdW5jdGlvbiAoZXZlbnQsIGNvbnRleHQpIHsKICBjb25zdCB7IG5vdGlmaWNhdGlvbkNsaWVudCB9ID0gY29udGV4dDsKICBjb25zdCB7IGFwaUtleSwgYXBpU2VjcmV0LCB0YWlrb0wxQXBpS2V5LCB0YWlrb0wxQXBpU2VjcmV0IH0gPSBldmVudC5zZWNyZXRzOwoKICBjb25zdCB0YWlrb0wxUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcigKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHRhaWtvTDFBcGlLZXksCiAgICB0YWlrb0wxQXBpU2VjcmV0LAogICk7CgogIGNvbnN0IGN1cnJlbnRCbG9ja051bWJlciA9IGF3YWl0IGdldExhdGVzdEJsb2NrTnVtYmVyKHRhaWtvTDFQcm92aWRlcik7CiAgY29uc3QgYmxvY2tUaW1lSW5TZWNvbmRzID0gYXdhaXQgY2FsY3VsYXRlQmxvY2tUaW1lKHRhaWtvTDFQcm92aWRlcik7CiAgY29uc3QgYmxvY2tzSW5GaXZlTWludXRlcyA9IE1hdGguZmxvb3IoKDUgKiA2MCkgLyBibG9ja1RpbWVJblNlY29uZHMpOwoKICBjb25zdCBmcm9tQmxvY2sgPSBjdXJyZW50QmxvY2tOdW1iZXIgLSBibG9ja3NJbkZpdmVNaW51dGVzOwogIGNvbnN0IHRvQmxvY2sgPSBjdXJyZW50QmxvY2tOdW1iZXI7CgogIGNvbnN0IGxvZ3MgPSBhd2FpdCBmZXRjaExvZ3NGcm9tTDEoCiAgICAiUHJvdmluZ0F1dG9QYXVzZUVuYWJsZWQiLAogICAgZnJvbUJsb2NrLAogICAgdG9CbG9jaywKICAgICIweEUzRDc3NzE0M0VhMjVBNkUwMzFkMWU5MjFGMzk2NzUwODg1ZjQzYUMiLAogICAgQUJJLAogICAgdGFpa29MMVByb3ZpZGVyLAogICk7CgogIGNvbnNvbGUubG9nKGBMb2dzIGZvdW5kOiAke2xvZ3MubGVuZ3RofWApOwoKICBpZiAobG9ncy5sZW5ndGggPiAwKSB7CiAgICBsb2dzLmZvckVhY2goKGxvZykgPT4gewogICAgICBjb25zdCBlbmFibGVkID0gbG9nLmVuYWJsZWQ7CiAgICAgIGNvbnN0IHN0YXR1cyA9IGVuYWJsZWQgPyAiRU5BQkxFRCIgOiAiRElTQUJMRUQiOwogICAgICBjb25zdCBtZXNzYWdlID0gYFByb3ZpbmcgQXV0by1QYXVzZSBoYXMgYmVlbiAke3N0YXR1c30uXG5cbkRldGFpbHM6XG4tIEVuYWJsZWQ6ICR7ZW5hYmxlZH1cbi0gQmxvY2sgTnVtYmVyOiAke2xvZy5ibG9ja051bWJlcn1gOwogICAgICBhbGVydE9yZyhub3RpZmljYXRpb25DbGllbnQsIG1lc3NhZ2UpOwogICAgfSk7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfTsKUEsBAhQACgAAAAAAAABBUKW4cqt2DAAAdgwAAAgAAAAAAAAAAAAAAAAAAAAAAGluZGV4LmpzUEsFBgAAAAABAAEANgAAAJwMAAAAAA=="},{"autotaskId":"a91ec566-0083-40bc-9caf-9f006bb4ec12","actionId":"a91ec566-0083-40bc-9caf-9f006bb4ec12","name":"GuardianProver: ConflictingProofs Alert","paused":false,"trigger":{"cron":null,"frequencyMinutes":4,"type":"schedule"},"codeDigest":"L3HJRJGQ2LLkEO+6zCIg5yh4GpFNvfNl/ZR4bft2EDU=","stackResourceId":"mystack.guardian-prover-conflicting-proofs-alert","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVDcZineqA0AAKgNAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAiYmxvY2tJZCIsCiAgICAgICAgdHlwZTogInVpbnQyNTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzIiwKICAgICAgICBuYW1lOiAiZ3VhcmRpYW4iLAogICAgICAgIHR5cGU6ICJhZGRyZXNzIiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgIG5hbWU6ICJjdXJyZW50UHJvb2ZIYXNoIiwKICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICBuYW1lOiAibmV3UHJvb2ZIYXNoIiwKICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJib29sIiwKICAgICAgICBuYW1lOiAicHJvdmluZ1BhdXNlZCIsCiAgICAgICAgdHlwZTogImJvb2wiLAogICAgICB9LAogICAgXSwKICAgIG5hbWU6ICJDb25mbGljdGluZ1Byb29mcyIsCiAgICB0eXBlOiAiZXZlbnQiLAogIH0sCl07CgpmdW5jdGlvbiBhbGVydE9yZyhub3RpZmljYXRpb25DbGllbnQsIG1lc3NhZ2UpIHsKICBub3RpZmljYXRpb25DbGllbnQuc2VuZCh7CiAgICBjaGFubmVsQWxpYXM6ICJkaXNjb3JkX2NvbmZpZ3MiLAogICAgc3ViamVjdDogIvCfmqggR3VhcmRpYW5Qcm92ZXI6IENvbmZsaWN0aW5nUHJvb2ZzIEFsZXJ0IiwKICAgIG1lc3NhZ2UsCiAgfSk7CgogIG5vdGlmaWNhdGlvbkNsaWVudC5zZW5kKHsKICAgIGNoYW5uZWxBbGlhczogInRnX3RhaWtvX2d1YXJkaWFucyIsCiAgICBzdWJqZWN0OiAi8J+aqCBHdWFyZGlhblByb3ZlcjogQ29uZmxpY3RpbmdQcm9vZnMgQWxlcnQiLAogICAgbWVzc2FnZSwKICB9KTsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0QmxvY2tOdW1iZXIocHJvdmlkZXIpIHsKICBjb25zdCBjdXJyZW50QmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jaygibGF0ZXN0Iik7CiAgcmV0dXJuIGN1cnJlbnRCbG9jay5udW1iZXI7Cn0KCmFzeW5jIGZ1bmN0aW9uIGZldGNoTG9nc0Zyb21MMSgKICBldmVudE5hbWUsCiAgZnJvbUJsb2NrLAogIHRvQmxvY2ssCiAgYWRkcmVzcywKICBhYmksCiAgcHJvdmlkZXIsCikgewogIGNvbnN0IGlmYWNlID0gbmV3IGV0aGVycy51dGlscy5JbnRlcmZhY2UoYWJpKTsKICBjb25zdCBldmVudFRvcGljID0gaWZhY2UuZ2V0RXZlbnRUb3BpYyhldmVudE5hbWUpOwoKICB0cnkgewogICAgY29uc3QgbG9ncyA9IGF3YWl0IHByb3ZpZGVyLmdldExvZ3MoewogICAgICBhZGRyZXNzLAogICAgICBmcm9tQmxvY2ssCiAgICAgIHRvQmxvY2ssCiAgICAgIHRvcGljczogW2V2ZW50VG9waWNdLAogICAgfSk7CgogICAgcmV0dXJuIGxvZ3MubWFwKChsb2cpID0+CiAgICAgIGlmYWNlLmRlY29kZUV2ZW50TG9nKGV2ZW50TmFtZSwgbG9nLmRhdGEsIGxvZy50b3BpY3MpLAogICAgKTsKICB9IGNhdGNoIChlcnJvcikgewogICAgY29uc29sZS5lcnJvcihgRXJyb3IgZmV0Y2hpbmcgbG9ncyBmb3IgJHtldmVudE5hbWV9OmAsIGVycm9yKTsKICAgIHJldHVybiBbXTsKICB9Cn0KCmZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKGFwaUtleSwgYXBpU2VjcmV0LCByZWxheWVyQXBpS2V5LCByZWxheWVyQXBpU2VjcmV0KSB7CiAgY29uc3QgY2xpZW50ID0gbmV3IERlZmVuZGVyKHsKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHJlbGF5ZXJBcGlLZXksCiAgICByZWxheWVyQXBpU2VjcmV0LAogIH0pOwoKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUJsb2NrVGltZShwcm92aWRlcikgewogIGNvbnN0IGxhdGVzdEJsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2soImxhdGVzdCIpOwogIGNvbnN0IHByZXZpb3VzQmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jayhsYXRlc3RCbG9jay5udW1iZXIgLSAxMDApOwoKICBjb25zdCB0aW1lRGlmZiA9IGxhdGVzdEJsb2NrLnRpbWVzdGFtcCAtIHByZXZpb3VzQmxvY2sudGltZXN0YW1wOwogIGNvbnN0IGJsb2NrRGlmZiA9IGxhdGVzdEJsb2NrLm51bWJlciAtIHByZXZpb3VzQmxvY2subnVtYmVyOwoKICBjb25zdCBibG9ja1RpbWUgPSB0aW1lRGlmZiAvIGJsb2NrRGlmZjsKICByZXR1cm4gYmxvY2tUaW1lOwp9CgpleHBvcnRzLmhhbmRsZXIgPSBhc3luYyBmdW5jdGlvbiAoZXZlbnQsIGNvbnRleHQpIHsKICBjb25zdCB7IG5vdGlmaWNhdGlvbkNsaWVudCB9ID0gY29udGV4dDsKICBjb25zdCB7IGFwaUtleSwgYXBpU2VjcmV0LCB0YWlrb0wxQXBpS2V5LCB0YWlrb0wxQXBpU2VjcmV0IH0gPSBldmVudC5zZWNyZXRzOwoKICBjb25zdCB0YWlrb0wxUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcigKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHRhaWtvTDFBcGlLZXksCiAgICB0YWlrb0wxQXBpU2VjcmV0LAogICk7CgogIGNvbnN0IGN1cnJlbnRCbG9ja051bWJlciA9IGF3YWl0IGdldExhdGVzdEJsb2NrTnVtYmVyKHRhaWtvTDFQcm92aWRlcik7CiAgY29uc3QgYmxvY2tUaW1lSW5TZWNvbmRzID0gYXdhaXQgY2FsY3VsYXRlQmxvY2tUaW1lKHRhaWtvTDFQcm92aWRlcik7CiAgY29uc3QgYmxvY2tzSW5GaXZlTWludXRlcyA9IE1hdGguZmxvb3IoKDUgKiA2MCkgLyBibG9ja1RpbWVJblNlY29uZHMpOwoKICBjb25zdCBmcm9tQmxvY2sgPSBjdXJyZW50QmxvY2tOdW1iZXIgLSBibG9ja3NJbkZpdmVNaW51dGVzOwogIGNvbnN0IHRvQmxvY2sgPSBjdXJyZW50QmxvY2tOdW1iZXI7CgogIGNvbnN0IGxvZ3MgPSBhd2FpdCBmZXRjaExvZ3NGcm9tTDEoCiAgICAiQ29uZmxpY3RpbmdQcm9vZnMiLAogICAgZnJvbUJsb2NrLAogICAgdG9CbG9jaywKICAgICIweEUzRDc3NzE0M0VhMjVBNkUwMzFkMWU5MjFGMzk2NzUwODg1ZjQzYUMiLAogICAgQUJJLAogICAgdGFpa29MMVByb3ZpZGVyLAogICk7CgogIGNvbnNvbGUubG9nKGBMb2dzIGZvdW5kOiAke2xvZ3MubGVuZ3RofWApOwoKICBpZiAobG9ncy5sZW5ndGggPiAwKSB7CiAgICBhbGVydE9yZygKICAgICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgICBgQ29uZmxpY3RpbmdQcm9vZnMgZXZlbnQgZGV0ZWN0ZWQhIERldGFpbHM6ICR7SlNPTi5zdHJpbmdpZnkobG9ncyl9YCwKICAgICk7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfTsKUEsBAhQACgAAAAAAAABBUNxmKd6oDQAAqA0AAAgAAAAAAAAAAAAAAAAAAAAAAGluZGV4LmpzUEsFBgAAAAABAAEANgAAAM4NAAAAAA=="},{"autotaskId":"9c132973-b8dc-4406-895c-a4ba343455cf","actionId":"9c132973-b8dc-4406-895c-a4ba343455cf","name":"GuardianProver: Approved Count","paused":false,"trigger":{"cron":null,"frequencyMinutes":15,"type":"schedule"},"codeDigest":"IgyqIUQKGTxW+magdh/AJeYpV0Z95FCzB2cNsfhTCvU=","stackResourceId":"mystack.guardian-prover-approved-count","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVAnSx6hWg0AAFoNAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAib3BlcmF0aW9uSWQiLAogICAgICAgIHR5cGU6ICJ1aW50MjU2IiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogInVpbnQyNTYiLAogICAgICAgIG5hbWU6ICJhcHByb3ZhbEJpdHMiLAogICAgICAgIHR5cGU6ICJ1aW50MjU2IiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogImJvb2wiLAogICAgICAgIG5hbWU6ICJtaW5HdWFyZGlhbnNSZWFjaGVkIiwKICAgICAgICB0eXBlOiAiYm9vbCIsCiAgICAgIH0sCiAgICBdLAogICAgbmFtZTogIkFwcHJvdmVkIiwKICAgIHR5cGU6ICJldmVudCIsCiAgfSwKXTsKCmZ1bmN0aW9uIGFsZXJ0T3JnKG5vdGlmaWNhdGlvbkNsaWVudCwgbWVzc2FnZSkgewogIG5vdGlmaWNhdGlvbkNsaWVudC5zZW5kKHsKICAgIGNoYW5uZWxBbGlhczogImRpc2NvcmRfY29uZmlncyIsCiAgICBzdWJqZWN0OiAi4pqg77iPIEd1YXJkaWFuUHJvdmVyOiBBcHByb3ZlZCBDb3VudCIsCiAgICBtZXNzYWdlLAogIH0pOwp9Cgphc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RCbG9ja051bWJlcihwcm92aWRlcikgewogIGNvbnN0IGN1cnJlbnRCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKCJsYXRlc3QiKTsKICByZXR1cm4gY3VycmVudEJsb2NrLm51bWJlcjsKfQoKYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlQmxvY2tUaW1lKHByb3ZpZGVyKSB7CiAgY29uc3QgbGF0ZXN0QmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jaygibGF0ZXN0Iik7CiAgY29uc3QgcHJldmlvdXNCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKGxhdGVzdEJsb2NrLm51bWJlciAtIDEwMCk7CgogIGNvbnN0IHRpbWVEaWZmID0gbGF0ZXN0QmxvY2sudGltZXN0YW1wIC0gcHJldmlvdXNCbG9jay50aW1lc3RhbXA7CiAgY29uc3QgYmxvY2tEaWZmID0gbGF0ZXN0QmxvY2subnVtYmVyIC0gcHJldmlvdXNCbG9jay5udW1iZXI7CgogIGNvbnN0IGJsb2NrVGltZSA9IHRpbWVEaWZmIC8gYmxvY2tEaWZmOwogIHJldHVybiBibG9ja1RpbWU7Cn0KCmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUJsb2NrUmFuZ2UocHJvdmlkZXIpIHsKICBjb25zdCBjdXJyZW50QmxvY2tOdW1iZXIgPSBhd2FpdCBnZXRMYXRlc3RCbG9ja051bWJlcihwcm92aWRlcik7CiAgY29uc3QgYmxvY2tUaW1lSW5TZWNvbmRzID0gYXdhaXQgY2FsY3VsYXRlQmxvY2tUaW1lKHByb3ZpZGVyKTsKICBjb25zdCBibG9ja3NJbk9uZUhvdXIgPSBNYXRoLmZsb29yKCgxNiAqIDYwKSAvIGJsb2NrVGltZUluU2Vjb25kcyk7CgogIGNvbnN0IGZyb21CbG9jayA9IGN1cnJlbnRCbG9ja051bWJlciAtIGJsb2Nrc0luT25lSG91cjsKICBjb25zdCB0b0Jsb2NrID0gY3VycmVudEJsb2NrTnVtYmVyOwoKICBjb25zb2xlLmxvZyhgQ2FsY3VsYXRlZCBibG9jayByYW5nZTogZnJvbSAke2Zyb21CbG9ja30gdG8gJHt0b0Jsb2NrfWApOwoKICByZXR1cm4geyBmcm9tQmxvY2ssIHRvQmxvY2sgfTsKfQoKYXN5bmMgZnVuY3Rpb24gZmV0Y2hMb2dzRnJvbUwxKAogIGV2ZW50TmFtZSwKICBmcm9tQmxvY2ssCiAgdG9CbG9jaywKICBhZGRyZXNzLAogIGFiaSwKICBwcm92aWRlciwKKSB7CiAgY29uc3QgaWZhY2UgPSBuZXcgZXRoZXJzLnV0aWxzLkludGVyZmFjZShhYmkpOwogIGNvbnN0IGV2ZW50VG9waWMgPSBpZmFjZS5nZXRFdmVudFRvcGljKGV2ZW50TmFtZSk7CiAgY29uc29sZS5sb2coYGV2ZW50VG9waWM6ICR7ZXZlbnRUb3BpY31gKTsKICB0cnkgewogICAgY29uc3QgbG9ncyA9IGF3YWl0IHByb3ZpZGVyLmdldExvZ3MoewogICAgICBhZGRyZXNzLAogICAgICBmcm9tQmxvY2ssCiAgICAgIHRvQmxvY2ssCiAgICAgIHRvcGljczogW2V2ZW50VG9waWNdLAogICAgfSk7CiAgICBjb25zb2xlLmxvZyhgRmV0Y2hlZCBsb2dzOiAke2xvZ3MubGVuZ3RofWApOwogICAgcmV0dXJuIGxvZ3MubWFwKChsb2cpID0+IHsKICAgICAgY29uc3QgcGFyc2VkTG9nID0gaWZhY2UucGFyc2VMb2cobG9nKTsKICAgICAgY29uc29sZS5sb2coYFBhcnNlZCBsb2c6ICR7SlNPTi5zdHJpbmdpZnkocGFyc2VkTG9nKX1gKTsKICAgICAgcmV0dXJuIHBhcnNlZExvZzsKICAgIH0pOwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICBjb25zb2xlLmVycm9yKCJFcnJvciBmZXRjaGluZyBMMSBsb2dzOiIsIGVycm9yKTsKICAgIHJldHVybiBbXTsKICB9Cn0KCmZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKGFwaUtleSwgYXBpU2VjcmV0LCByZWxheWVyQXBpS2V5LCByZWxheWVyQXBpU2VjcmV0KSB7CiAgY29uc3QgY2xpZW50ID0gbmV3IERlZmVuZGVyKHsKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHJlbGF5ZXJBcGlLZXksCiAgICByZWxheWVyQXBpU2VjcmV0LAogIH0pOwoKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnN0IHRhaWtvTDFQcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyKAogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgKTsKCiAgY29uc3QgeyBmcm9tQmxvY2ssIHRvQmxvY2sgfSA9IGF3YWl0IGNhbGN1bGF0ZUJsb2NrUmFuZ2UodGFpa29MMVByb3ZpZGVyKTsKCiAgY29uc3QgbG9ncyA9IGF3YWl0IGZldGNoTG9nc0Zyb21MMSgKICAgICJBcHByb3ZlZCIsCiAgICBmcm9tQmxvY2ssCiAgICB0b0Jsb2NrLAogICAgIjB4RTNENzc3MTQzRWEyNUE2RTAzMWQxZTkyMUYzOTY3NTA4ODVmNDNhQyIsCiAgICBBQkksCiAgICB0YWlrb0wxUHJvdmlkZXIsCiAgKTsKCiAgaWYgKGxvZ3MubGVuZ3RoID4gMCkgewogICAgYWxlcnRPcmcoCiAgICAgIG5vdGlmaWNhdGlvbkNsaWVudCwKICAgICAgYEB0YWlrb3xndWFyZGlhbnMgRGV0ZWN0ZWQgJHtsb2dzLmxlbmd0aH0gQXBwcm92ZWQgZXZlbnRzIGluIHRoZSBsYXN0IDE1IG1pbnMgb24gR3VhcmRpYW4hYCwKICAgICk7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfTsKUEsBAhQACgAAAAAAAABBUCdLHqFaDQAAWg0AAAgAAAAAAAAAAAAAAAAAAAAAAGluZGV4LmpzUEsFBgAAAAABAAEANgAAAIANAAAAAA=="},{"autotaskId":"5b216422-4a62-4c2c-8242-330fa74d6ef1","actionId":"5b216422-4a62-4c2c-8242-330fa74d6ef1","name":"GuardianProver: GuardiansUpdated Alert","paused":false,"trigger":{"cron":null,"frequencyMinutes":4,"type":"schedule"},"codeDigest":"QDrbaB7HNvmMz0Yuifimr0hi+RP7kKbQKyOST8c2FZg=","stackResourceId":"mystack.guardian-prover-guardians-updated-alert","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVCTA5CyKgwAACoMAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDMyIiwKICAgICAgICBuYW1lOiAidmVyc2lvbiIsCiAgICAgICAgdHlwZTogInVpbnQzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzW10iLAogICAgICAgIG5hbWU6ICJndWFyZGlhbnMiLAogICAgICAgIHR5cGU6ICJhZGRyZXNzW10iLAogICAgICB9LAogICAgXSwKICAgIG5hbWU6ICJHdWFyZGlhbnNVcGRhdGVkIiwKICAgIHR5cGU6ICJldmVudCIsCiAgfSwKXTsKCmZ1bmN0aW9uIGFsZXJ0T3JnKG5vdGlmaWNhdGlvbkNsaWVudCwgbWVzc2FnZSkgewogIG5vdGlmaWNhdGlvbkNsaWVudC5zZW5kKHsKICAgIGNoYW5uZWxBbGlhczogImRpc2NvcmRfY29uZmlncyIsCiAgICBzdWJqZWN0OiAi4pqg77iPIEd1YXJkaWFuUHJvdmVyOiBHdWFyZGlhbnNVcGRhdGVkIEFsZXJ0IiwKICAgIG1lc3NhZ2UsCiAgfSk7CgogIG5vdGlmaWNhdGlvbkNsaWVudC5zZW5kKHsKICAgIGNoYW5uZWxBbGlhczogInRnX3RhaWtvX2d1YXJkaWFucyIsCiAgICBzdWJqZWN0OiAi4pqg77iPIEd1YXJkaWFuUHJvdmVyOiBHdWFyZGlhbnNVcGRhdGVkIEFsZXJ0IiwKICAgIG1lc3NhZ2UsCiAgfSk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldExhdGVzdEJsb2NrTnVtYmVyKHByb3ZpZGVyKSB7CiAgY29uc3QgY3VycmVudEJsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2soImxhdGVzdCIpOwogIHJldHVybiBjdXJyZW50QmxvY2subnVtYmVyOwp9Cgphc3luYyBmdW5jdGlvbiBmZXRjaExvZ3NGcm9tTDEoCiAgZXZlbnROYW1lLAogIGZyb21CbG9jaywKICB0b0Jsb2NrLAogIGFkZHJlc3MsCiAgYWJpLAogIHByb3ZpZGVyLAopIHsKICBjb25zdCBpZmFjZSA9IG5ldyBldGhlcnMudXRpbHMuSW50ZXJmYWNlKGFiaSk7CiAgY29uc3QgZXZlbnRUb3BpYyA9IGlmYWNlLmdldEV2ZW50VG9waWMoZXZlbnROYW1lKTsKCiAgdHJ5IHsKICAgIGNvbnN0IGxvZ3MgPSBhd2FpdCBwcm92aWRlci5nZXRMb2dzKHsKICAgICAgYWRkcmVzcywKICAgICAgZnJvbUJsb2NrLAogICAgICB0b0Jsb2NrLAogICAgICB0b3BpY3M6IFtldmVudFRvcGljXSwKICAgIH0pOwoKICAgIHJldHVybiBsb2dzLm1hcCgobG9nKSA9PgogICAgICBpZmFjZS5kZWNvZGVFdmVudExvZyhldmVudE5hbWUsIGxvZy5kYXRhLCBsb2cudG9waWNzKSwKICAgICk7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGZldGNoaW5nIGxvZ3MgZm9yICR7ZXZlbnROYW1lfTpgLCBlcnJvcik7CiAgICByZXR1cm4gW107CiAgfQp9CgpmdW5jdGlvbiBjcmVhdGVQcm92aWRlcihhcGlLZXksIGFwaVNlY3JldCwgcmVsYXllckFwaUtleSwgcmVsYXllckFwaVNlY3JldCkgewogIGNvbnN0IGNsaWVudCA9IG5ldyBEZWZlbmRlcih7CiAgICBhcGlLZXksCiAgICBhcGlTZWNyZXQsCiAgICByZWxheWVyQXBpS2V5LAogICAgcmVsYXllckFwaVNlY3JldCwKICB9KTsKCiAgcmV0dXJuIGNsaWVudC5yZWxheVNpZ25lci5nZXRQcm92aWRlcigpOwp9Cgphc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVCbG9ja1RpbWUocHJvdmlkZXIpIHsKICBjb25zdCBsYXRlc3RCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKCJsYXRlc3QiKTsKICBjb25zdCBwcmV2aW91c0Jsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2sobGF0ZXN0QmxvY2subnVtYmVyIC0gMTAwKTsKCiAgY29uc3QgdGltZURpZmYgPSBsYXRlc3RCbG9jay50aW1lc3RhbXAgLSBwcmV2aW91c0Jsb2NrLnRpbWVzdGFtcDsKICBjb25zdCBibG9ja0RpZmYgPSBsYXRlc3RCbG9jay5udW1iZXIgLSBwcmV2aW91c0Jsb2NrLm51bWJlcjsKCiAgY29uc3QgYmxvY2tUaW1lID0gdGltZURpZmYgLyBibG9ja0RpZmY7CiAgcmV0dXJuIGJsb2NrVGltZTsKfQoKZXhwb3J0cy5oYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKGV2ZW50LCBjb250ZXh0KSB7CiAgY29uc3QgeyBub3RpZmljYXRpb25DbGllbnQgfSA9IGNvbnRleHQ7CiAgY29uc3QgeyBhcGlLZXksIGFwaVNlY3JldCwgdGFpa29MMUFwaUtleSwgdGFpa29MMUFwaVNlY3JldCB9ID0gZXZlbnQuc2VjcmV0czsKCiAgY29uc3QgdGFpa29MMVByb3ZpZGVyID0gY3JlYXRlUHJvdmlkZXIoCiAgICBhcGlLZXksCiAgICBhcGlTZWNyZXQsCiAgICB0YWlrb0wxQXBpS2V5LAogICAgdGFpa29MMUFwaVNlY3JldCwKICApOwoKICBjb25zdCBjdXJyZW50QmxvY2tOdW1iZXIgPSBhd2FpdCBnZXRMYXRlc3RCbG9ja051bWJlcih0YWlrb0wxUHJvdmlkZXIpOwogIGNvbnN0IGJsb2NrVGltZUluU2Vjb25kcyA9IGF3YWl0IGNhbGN1bGF0ZUJsb2NrVGltZSh0YWlrb0wxUHJvdmlkZXIpOwogIGNvbnN0IGJsb2Nrc0luRml2ZU1pbnV0ZXMgPSBNYXRoLmZsb29yKCg1ICogNjApIC8gYmxvY2tUaW1lSW5TZWNvbmRzKTsKCiAgY29uc3QgZnJvbUJsb2NrID0gY3VycmVudEJsb2NrTnVtYmVyIC0gYmxvY2tzSW5GaXZlTWludXRlczsKICBjb25zdCB0b0Jsb2NrID0gY3VycmVudEJsb2NrTnVtYmVyOwoKICBjb25zdCBsb2dzID0gYXdhaXQgZmV0Y2hMb2dzRnJvbUwxKAogICAgIkd1YXJkaWFuc1VwZGF0ZWQiLAogICAgZnJvbUJsb2NrLAogICAgdG9CbG9jaywKICAgICIweEUzRDc3NzE0M0VhMjVBNkUwMzFkMWU5MjFGMzk2NzUwODg1ZjQzYUMiLAogICAgQUJJLAogICAgdGFpa29MMVByb3ZpZGVyLAogICk7CgogIGNvbnNvbGUubG9nKGBMb2dzIGZvdW5kOiAke2xvZ3MubGVuZ3RofWApOwoKICBpZiAobG9ncy5sZW5ndGggPiAwKSB7CiAgICBhbGVydE9yZygKICAgICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgICBgR3VhcmRpYW5zVXBkYXRlZCBldmVudCBkZXRlY3RlZCEgRGV0YWlsczogJHtKU09OLnN0cmluZ2lmeShsb2dzKX1gLAogICAgKTsKICB9CgogIHJldHVybiB0cnVlOwp9OwpQSwECFAAKAAAAAAAAAEFQkwOQsioMAAAqDAAACAAAAAAAAAAAAAAAAAAAAAAAaW5kZXguanNQSwUGAAAAAAEAAQA2AAAAUAwAAAAA"},{"autotaskId":"f219a32c-98db-4c46-bbb4-dc279e65d128","actionId":"f219a32c-98db-4c46-bbb4-dc279e65d128","name":"TaikoL1: ProvingPaused Alert","paused":false,"trigger":{"cron":null,"frequencyMinutes":4,"type":"schedule"},"codeDigest":"YNbpcd3g7dWyoKmrpCa8jkF3st/mY1uhaVd8RNpjwn0=","stackResourceId":"mystack.taiko-l-1-proving-paused-alert","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVAU+JyO+goAAPoKAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAiYm9vbCIsCiAgICAgICAgbmFtZTogInBhdXNlZCIsCiAgICAgICAgdHlwZTogImJvb2wiLAogICAgICB9LAogICAgXSwKICAgIG5hbWU6ICJQcm92aW5nUGF1c2VkIiwKICAgIHR5cGU6ICJldmVudCIsCiAgfSwKXTsKCmZ1bmN0aW9uIGFsZXJ0T3JnKG5vdGlmaWNhdGlvbkNsaWVudCwgbWVzc2FnZSkgewogIG5vdGlmaWNhdGlvbkNsaWVudC5zZW5kKHsKICAgIGNoYW5uZWxBbGlhczogImRpc2NvcmRfY29uZmlncyIsCiAgICBzdWJqZWN0OiAi4pqg77iPIFRhaWtvTDE6IFByb3ZpbmdQYXVzZWQgQWxlcnQiLAogICAgbWVzc2FnZSwKICB9KTsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0QmxvY2tOdW1iZXIocHJvdmlkZXIpIHsKICBjb25zdCBjdXJyZW50QmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jaygibGF0ZXN0Iik7CiAgcmV0dXJuIGN1cnJlbnRCbG9jay5udW1iZXI7Cn0KCmFzeW5jIGZ1bmN0aW9uIGZldGNoTG9nc0Zyb21MMSgKICBldmVudE5hbWUsCiAgZnJvbUJsb2NrLAogIHRvQmxvY2ssCiAgYWRkcmVzcywKICBhYmksCiAgcHJvdmlkZXIsCikgewogIGNvbnN0IGlmYWNlID0gbmV3IGV0aGVycy51dGlscy5JbnRlcmZhY2UoYWJpKTsKICBjb25zdCBldmVudFRvcGljID0gaWZhY2UuZ2V0RXZlbnRUb3BpYyhldmVudE5hbWUpOwoKICB0cnkgewogICAgY29uc3QgbG9ncyA9IGF3YWl0IHByb3ZpZGVyLmdldExvZ3MoewogICAgICBhZGRyZXNzLAogICAgICBmcm9tQmxvY2ssCiAgICAgIHRvQmxvY2ssCiAgICAgIHRvcGljczogW2V2ZW50VG9waWNdLAogICAgfSk7CgogICAgcmV0dXJuIGxvZ3MubWFwKChsb2cpID0+CiAgICAgIGlmYWNlLmRlY29kZUV2ZW50TG9nKGV2ZW50TmFtZSwgbG9nLmRhdGEsIGxvZy50b3BpY3MpLAogICAgKTsKICB9IGNhdGNoIChlcnJvcikgewogICAgY29uc29sZS5lcnJvcihgRXJyb3IgZmV0Y2hpbmcgbG9ncyBmb3IgJHtldmVudE5hbWV9OmAsIGVycm9yKTsKICAgIHJldHVybiBbXTsKICB9Cn0KCmZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKGFwaUtleSwgYXBpU2VjcmV0LCByZWxheWVyQXBpS2V5LCByZWxheWVyQXBpU2VjcmV0KSB7CiAgY29uc3QgY2xpZW50ID0gbmV3IERlZmVuZGVyKHsKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHJlbGF5ZXJBcGlLZXksCiAgICByZWxheWVyQXBpU2VjcmV0LAogIH0pOwoKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUJsb2NrVGltZShwcm92aWRlcikgewogIGNvbnN0IGxhdGVzdEJsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2soImxhdGVzdCIpOwogIGNvbnN0IHByZXZpb3VzQmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jayhsYXRlc3RCbG9jay5udW1iZXIgLSAxMDApOwoKICBjb25zdCB0aW1lRGlmZiA9IGxhdGVzdEJsb2NrLnRpbWVzdGFtcCAtIHByZXZpb3VzQmxvY2sudGltZXN0YW1wOwogIGNvbnN0IGJsb2NrRGlmZiA9IGxhdGVzdEJsb2NrLm51bWJlciAtIHByZXZpb3VzQmxvY2subnVtYmVyOwoKICBjb25zdCBibG9ja1RpbWUgPSB0aW1lRGlmZiAvIGJsb2NrRGlmZjsKICByZXR1cm4gYmxvY2tUaW1lOwp9CgpleHBvcnRzLmhhbmRsZXIgPSBhc3luYyBmdW5jdGlvbiAoZXZlbnQsIGNvbnRleHQpIHsKICBjb25zdCB7IG5vdGlmaWNhdGlvbkNsaWVudCB9ID0gY29udGV4dDsKICBjb25zdCB7IGFwaUtleSwgYXBpU2VjcmV0LCB0YWlrb0wxQXBpS2V5LCB0YWlrb0wxQXBpU2VjcmV0IH0gPSBldmVudC5zZWNyZXRzOwoKICBjb25zdCB0YWlrb0wxUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcigKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHRhaWtvTDFBcGlLZXksCiAgICB0YWlrb0wxQXBpU2VjcmV0LAogICk7CgogIGNvbnN0IGN1cnJlbnRCbG9ja051bWJlciA9IGF3YWl0IGdldExhdGVzdEJsb2NrTnVtYmVyKHRhaWtvTDFQcm92aWRlcik7CiAgY29uc3QgYmxvY2tUaW1lSW5TZWNvbmRzID0gYXdhaXQgY2FsY3VsYXRlQmxvY2tUaW1lKHRhaWtvTDFQcm92aWRlcik7CiAgY29uc3QgYmxvY2tzSW5GaXZlTWludXRlcyA9IE1hdGguZmxvb3IoKDUgKiA2MCkgLyBibG9ja1RpbWVJblNlY29uZHMpOwoKICBjb25zdCBmcm9tQmxvY2sgPSBjdXJyZW50QmxvY2tOdW1iZXIgLSBibG9ja3NJbkZpdmVNaW51dGVzOwogIGNvbnN0IHRvQmxvY2sgPSBjdXJyZW50QmxvY2tOdW1iZXI7CgogIGNvbnN0IGxvZ3MgPSBhd2FpdCBmZXRjaExvZ3NGcm9tTDEoCiAgICAiUHJvdmluZ1BhdXNlZCIsCiAgICBmcm9tQmxvY2ssCiAgICB0b0Jsb2NrLAogICAgIjB4MDZhOUFiMjdjN2UyMjU1ZGYxODE1RTZDQzAxNjhkNzc1NUZlYjE5YSIsCiAgICBBQkksCiAgICB0YWlrb0wxUHJvdmlkZXIsCiAgKTsKCiAgY29uc29sZS5sb2coYExvZ3MgZm91bmQ6ICR7bG9ncy5sZW5ndGh9YCk7CgogIGlmIChsb2dzLmxlbmd0aCA+IDApIHsKICAgIGFsZXJ0T3JnKAogICAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICAgIGBQcm92aW5nUGF1c2VkIGV2ZW50IGRldGVjdGVkISBEZXRhaWxzOiAke0pTT04uc3RyaW5naWZ5KGxvZ3MpfWAsCiAgICApOwogIH0KCiAgcmV0dXJuIHRydWU7Cn07ClBLAQIUAAoAAAAAAAAAQVAU+JyO+goAAPoKAAAIAAAAAAAAAAAAAAAAAAAAAABpbmRleC5qc1BLBQYAAAAAAQABADYAAAAgCwAAAAA="},{"autotaskId":"c79df8d7-deb4-45ea-ad3d-b808bf371405","actionId":"c79df8d7-deb4-45ea-ad3d-b808bf371405","name":"TaikoL1: TransitionContested Count","paused":false,"trigger":{"cron":null,"frequencyMinutes":60,"type":"schedule"},"codeDigest":"mp4o1olYw/ttX2O4d2ALDBqJeYOTaUFo67hiPxmMcmo=","stackResourceId":"mystack.taiko-l-1-transition-contested-count","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-05","encodedZippedCode":"UEsDBAoAAAAAAAAAQVA/+iecuBUAALgVAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAiYmxvY2tJZCIsCiAgICAgICAgdHlwZTogInVpbnQyNTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgY29tcG9uZW50czogWwogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogInBhcmVudEhhc2giLAogICAgICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogImJsb2NrSGFzaCIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAic3RhdGVSb290IiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJncmFmZml0aSIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJzdHJ1Y3QgVGFpa29EYXRhLlRyYW5zaXRpb24iLAogICAgICAgIG5hbWU6ICJ0cmFuIiwKICAgICAgICB0eXBlOiAidHVwbGUiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAiYWRkcmVzcyIsCiAgICAgICAgbmFtZTogImNvbnRlc3RlciIsCiAgICAgICAgdHlwZTogImFkZHJlc3MiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDk2IiwKICAgICAgICBuYW1lOiAiY29udGVzdEJvbmQiLAogICAgICAgIHR5cGU6ICJ1aW50OTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDE2IiwKICAgICAgICBuYW1lOiAidGllciIsCiAgICAgICAgdHlwZTogInVpbnQxNiIsCiAgICAgIH0sCiAgICBdLAogICAgbmFtZTogIlRyYW5zaXRpb25Db250ZXN0ZWQiLAogICAgdHlwZTogImV2ZW50IiwKICB9LAogIHsKICAgIGFub255bW91czogZmFsc2UsCiAgICBpbnB1dHM6IFsKICAgICAgewogICAgICAgIGluZGV4ZWQ6IHRydWUsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDI1NiIsCiAgICAgICAgbmFtZTogImJsb2NrSWQiLAogICAgICAgIHR5cGU6ICJ1aW50MjU2IiwKICAgICAgfSwKICAgICAgewogICAgICAgIGNvbXBvbmVudHM6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJwYXJlbnRIYXNoIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJibG9ja0hhc2giLAogICAgICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogInN0YXRlUm9vdCIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAiZ3JhZmZpdGkiLAogICAgICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAic3RydWN0IFRhaWtvRGF0YS5UcmFuc2l0aW9uIiwKICAgICAgICBuYW1lOiAidHJhbiIsCiAgICAgICAgdHlwZTogInR1cGxlIiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogImFkZHJlc3MiLAogICAgICAgIG5hbWU6ICJjb250ZXN0ZXIiLAogICAgICAgIHR5cGU6ICJhZGRyZXNzIiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogInVpbnQ5NiIsCiAgICAgICAgbmFtZTogImNvbnRlc3RCb25kIiwKICAgICAgICB0eXBlOiAidWludDk2IiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogInVpbnQxNiIsCiAgICAgICAgbmFtZTogInRpZXIiLAogICAgICAgIHR5cGU6ICJ1aW50MTYiLAogICAgICB9LAogICAgXSwKICAgIG5hbWU6ICJUcmFuc2l0aW9uQ29udGVzdGVkVjIiLAogICAgdHlwZTogImV2ZW50IiwKICB9LApdOwoKZnVuY3Rpb24gYWxlcnRPcmcobm90aWZpY2F0aW9uQ2xpZW50LCBtZXNzYWdlKSB7CiAgbm90aWZpY2F0aW9uQ2xpZW50LnNlbmQoewogICAgY2hhbm5lbEFsaWFzOiAiZGlzY29yZF9ibG9ja3MiLAogICAgc3ViamVjdDogIuKEue+4jyBUYWlrb0wxOiBUcmFuc2l0aW9uQ29udGVzdGVkIENvdW50IiwKICAgIG1lc3NhZ2UsCiAgfSk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldExhdGVzdEJsb2NrTnVtYmVyKHByb3ZpZGVyKSB7CiAgY29uc3QgY3VycmVudEJsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2soImxhdGVzdCIpOwogIHJldHVybiBjdXJyZW50QmxvY2subnVtYmVyOwp9Cgphc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVCbG9ja1RpbWUocHJvdmlkZXIpIHsKICBjb25zdCBsYXRlc3RCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKCJsYXRlc3QiKTsKICBjb25zdCBwcmV2aW91c0Jsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2sobGF0ZXN0QmxvY2subnVtYmVyIC0gMTAwKTsKCiAgY29uc3QgdGltZURpZmYgPSBsYXRlc3RCbG9jay50aW1lc3RhbXAgLSBwcmV2aW91c0Jsb2NrLnRpbWVzdGFtcDsKICBjb25zdCBibG9ja0RpZmYgPSBsYXRlc3RCbG9jay5udW1iZXIgLSBwcmV2aW91c0Jsb2NrLm51bWJlcjsKCiAgY29uc3QgYmxvY2tUaW1lID0gdGltZURpZmYgLyBibG9ja0RpZmY7CiAgcmV0dXJuIGJsb2NrVGltZTsKfQoKYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlQmxvY2tSYW5nZShwcm92aWRlcikgewogIGNvbnN0IGN1cnJlbnRCbG9ja051bWJlciA9IGF3YWl0IGdldExhdGVzdEJsb2NrTnVtYmVyKHByb3ZpZGVyKTsKICBjb25zdCBibG9ja1RpbWVJblNlY29uZHMgPSBhd2FpdCBjYWxjdWxhdGVCbG9ja1RpbWUocHJvdmlkZXIpOwogIGNvbnN0IGJsb2Nrc0luT25lSG91ciA9IE1hdGguZmxvb3IoKDYwICogNjApIC8gYmxvY2tUaW1lSW5TZWNvbmRzKTsKCiAgY29uc3QgZnJvbUJsb2NrID0gY3VycmVudEJsb2NrTnVtYmVyIC0gYmxvY2tzSW5PbmVIb3VyOwogIGNvbnN0IHRvQmxvY2sgPSBjdXJyZW50QmxvY2tOdW1iZXI7CgogIGNvbnNvbGUubG9nKGBDYWxjdWxhdGVkIGJsb2NrIHJhbmdlOiBmcm9tICR7ZnJvbUJsb2NrfSB0byAke3RvQmxvY2t9YCk7CgogIHJldHVybiB7IGZyb21CbG9jaywgdG9CbG9jayB9Owp9Cgphc3luYyBmdW5jdGlvbiBmZXRjaExvZ3NGcm9tTDEoCiAgZXZlbnROYW1lcywKICBmcm9tQmxvY2ssCiAgdG9CbG9jaywKICBhZGRyZXNzLAogIGFiaSwKICBwcm92aWRlciwKKSB7CiAgY29uc3QgaWZhY2UgPSBuZXcgZXRoZXJzLnV0aWxzLkludGVyZmFjZShhYmkpOwogIGNvbnN0IGV2ZW50VG9waWNzID0gZXZlbnROYW1lcy5tYXAoKGV2ZW50TmFtZSkgPT4KICAgIGlmYWNlLmdldEV2ZW50VG9waWMoZXZlbnROYW1lKSwKICApOwoKICBjb25zb2xlLmxvZyhgZXZlbnRUb3BpY3M6ICR7ZXZlbnRUb3BpY3N9YCk7CgogIHRyeSB7CiAgICBjb25zdCBsb2dzID0gYXdhaXQgcHJvdmlkZXIuZ2V0TG9ncyh7CiAgICAgIGFkZHJlc3MsCiAgICAgIGZyb21CbG9jaywKICAgICAgdG9CbG9jaywKICAgICAgdG9waWNzOiBbZXZlbnRUb3BpY3NdLAogICAgfSk7CiAgICBjb25zb2xlLmxvZyhgRmV0Y2hlZCBsb2dzOiAke2xvZ3MubGVuZ3RofWApOwogICAgcmV0dXJuIGxvZ3MubWFwKChsb2cpID0+IHsKICAgICAgY29uc3QgcGFyc2VkTG9nID0gaWZhY2UucGFyc2VMb2cobG9nKTsKICAgICAgY29uc29sZS5sb2coYFBhcnNlZCBsb2c6ICR7SlNPTi5zdHJpbmdpZnkocGFyc2VkTG9nKX1gKTsKICAgICAgcmV0dXJuIHBhcnNlZExvZzsKICAgIH0pOwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICBjb25zb2xlLmVycm9yKCJFcnJvciBmZXRjaGluZyBMMSBsb2dzOiIsIGVycm9yKTsKICAgIHJldHVybiBbXTsKICB9Cn0KCmZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKGFwaUtleSwgYXBpU2VjcmV0LCByZWxheWVyQXBpS2V5LCByZWxheWVyQXBpU2VjcmV0KSB7CiAgY29uc3QgY2xpZW50ID0gbmV3IERlZmVuZGVyKHsKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHJlbGF5ZXJBcGlLZXksCiAgICByZWxheWVyQXBpU2VjcmV0LAogIH0pOwoKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnN0IHRhaWtvTDFQcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyKAogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgKTsKCiAgY29uc3QgeyBmcm9tQmxvY2ssIHRvQmxvY2sgfSA9IGF3YWl0IGNhbGN1bGF0ZUJsb2NrUmFuZ2UodGFpa29MMVByb3ZpZGVyKTsKCiAgY29uc3QgbG9ncyA9IGF3YWl0IGZldGNoTG9nc0Zyb21MMSgKICAgIFsiVHJhbnNpdGlvbkNvbnRlc3RlZCIsICJUcmFuc2l0aW9uQ29udGVzdGVkVjIiXSwKICAgIGZyb21CbG9jaywKICAgIHRvQmxvY2ssCiAgICAiMHgwNmE5QWIyN2M3ZTIyNTVkZjE4MTVFNkNDMDE2OGQ3NzU1RmViMTlhIiwKICAgIEFCSSwKICAgIHRhaWtvTDFQcm92aWRlciwKICApOwoKICBpZiAobG9ncy5sZW5ndGggPiAwKSB7CiAgICBhbGVydE9yZygKICAgICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgICBgRGV0ZWN0ZWQgJHtsb2dzLmxlbmd0aH0gVHJhbnNpdGlvbkNvbnRlc3RlZCBhbmQgVHJhbnNpdGlvbkNvbnRlc3RlZFYyIGV2ZW50cyBpbiB0aGUgbGFzdCBob3VyIG9uIFRhaWtvTDEhYCwKICAgICk7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfTsKUEsBAhQACgAAAAAAAABBUD/6J5y4FQAAuBUAAAgAAAAAAAAAAAAAAAAAAAAAAGluZGV4LmpzUEsFBgAAAAABAAEANgAAAN4VAAAAAA=="},{"autotaskId":"06200461-ef64-409c-b027-0a0b54986791","actionId":"06200461-ef64-409c-b027-0a0b54986791","name":"TaikoL1: TransitionProved Alert","paused":false,"trigger":{"cron":null,"frequencyMinutes":4,"type":"schedule"},"codeDigest":"0SM/4ykVO5o7umE96EUaGaOXy2AmZAOOcdjG1e46RUw=","stackResourceId":"mystack.taiko-l-1-transition-proved-alert","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-05","encodedZippedCode":"UEsDBAoAAAAAAAAAQVCdRYy1ABQAAAAUAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAiYmxvY2tJZCIsCiAgICAgICAgdHlwZTogInVpbnQyNTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgY29tcG9uZW50czogWwogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogInBhcmVudEhhc2giLAogICAgICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogImJsb2NrSGFzaCIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAic3RhdGVSb290IiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJncmFmZml0aSIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJzdHJ1Y3QgVGFpa29EYXRhLlRyYW5zaXRpb24iLAogICAgICAgIG5hbWU6ICJ0cmFuIiwKICAgICAgICB0eXBlOiAidHVwbGUiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAiYWRkcmVzcyIsCiAgICAgICAgbmFtZTogInByb3ZlciIsCiAgICAgICAgdHlwZTogImFkZHJlc3MiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDk2IiwKICAgICAgICBuYW1lOiAidmFsaWRpdHlCb25kIiwKICAgICAgICB0eXBlOiAidWludDk2IiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogInVpbnQxNiIsCiAgICAgICAgbmFtZTogInRpZXIiLAogICAgICAgIHR5cGU6ICJ1aW50MTYiLAogICAgICB9LAogICAgXSwKICAgIG5hbWU6ICJUcmFuc2l0aW9uUHJvdmVkIiwKICAgIHR5cGU6ICJldmVudCIsCiAgfSwKICB7CiAgICBhbm9ueW1vdXM6IGZhbHNlLAogICAgaW5wdXRzOiBbCiAgICAgIHsKICAgICAgICBpbmRleGVkOiB0cnVlLAogICAgICAgIGludGVybmFsVHlwZTogInVpbnQyNTYiLAogICAgICAgIG5hbWU6ICJibG9ja0lkIiwKICAgICAgICB0eXBlOiAidWludDI1NiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBjb21wb25lbnRzOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAicGFyZW50SGFzaCIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAiYmxvY2tIYXNoIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJzdGF0ZVJvb3QiLAogICAgICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogImdyYWZmaXRpIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogInN0cnVjdCBUYWlrb0RhdGEuVHJhbnNpdGlvbiIsCiAgICAgICAgbmFtZTogInRyYW4iLAogICAgICAgIHR5cGU6ICJ0dXBsZSIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzIiwKICAgICAgICBuYW1lOiAicHJvdmVyIiwKICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50OTYiLAogICAgICAgIG5hbWU6ICJ2YWxpZGl0eUJvbmQiLAogICAgICAgIHR5cGU6ICJ1aW50OTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDE2IiwKICAgICAgICBuYW1lOiAidGllciIsCiAgICAgICAgdHlwZTogInVpbnQxNiIsCiAgICAgIH0sCiAgICBdLAogICAgbmFtZTogIlRyYW5zaXRpb25Qcm92ZWRWMiIsCiAgICB0eXBlOiAiZXZlbnQiLAogIH0sCl07CgpmdW5jdGlvbiBhbGVydE9yZyhub3RpZmljYXRpb25DbGllbnQsIG1lc3NhZ2UpIHsKICBub3RpZmljYXRpb25DbGllbnQuc2VuZCh7CiAgICBjaGFubmVsQWxpYXM6ICJkaXNjb3JkX2Jsb2NrcyIsCiAgICBzdWJqZWN0OiAi8J+aqCBUYWlrb0wxOiBUcmFuc2l0aW9uUHJvdmVkIEFsZXJ0IiwKICAgIG1lc3NhZ2UsCiAgfSk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldExhdGVzdEJsb2NrTnVtYmVyKHByb3ZpZGVyKSB7CiAgY29uc3QgY3VycmVudEJsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2soImxhdGVzdCIpOwogIHJldHVybiBjdXJyZW50QmxvY2subnVtYmVyOwp9Cgphc3luYyBmdW5jdGlvbiBmZXRjaExvZ3NGcm9tTDEoCiAgZXZlbnROYW1lcywKICBmcm9tQmxvY2ssCiAgdG9CbG9jaywKICBhZGRyZXNzLAogIGFiaSwKICBwcm92aWRlciwKKSB7CiAgY29uc3QgaWZhY2UgPSBuZXcgZXRoZXJzLnV0aWxzLkludGVyZmFjZShhYmkpOwogIGNvbnN0IGV2ZW50VG9waWNzID0gZXZlbnROYW1lcy5tYXAoKGV2ZW50TmFtZSkgPT4KICAgIGlmYWNlLmdldEV2ZW50VG9waWMoZXZlbnROYW1lKSwKICApOwoKICB0cnkgewogICAgY29uc3QgbG9ncyA9IGF3YWl0IHByb3ZpZGVyLmdldExvZ3MoewogICAgICBhZGRyZXNzLAogICAgICBmcm9tQmxvY2ssCiAgICAgIHRvQmxvY2ssCiAgICAgIHRvcGljczogW2V2ZW50VG9waWNzXSwKICAgIH0pOwogICAgY29uc29sZS5sb2coIlJhdyBsb2dzIGZldGNoZWQ6IiwgbG9ncyk7CiAgICByZXR1cm4gbG9ncy5tYXAoKGxvZykgPT4gaWZhY2UucGFyc2VMb2cobG9nKSk7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yIGZldGNoaW5nIEwxIGxvZ3M6IiwgZXJyb3IpOwogICAgcmV0dXJuIFtdOwogIH0KfQoKZnVuY3Rpb24gY3JlYXRlUHJvdmlkZXIoYXBpS2V5LCBhcGlTZWNyZXQsIHJlbGF5ZXJBcGlLZXksIHJlbGF5ZXJBcGlTZWNyZXQpIHsKICBjb25zdCBjbGllbnQgPSBuZXcgRGVmZW5kZXIoewogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgcmVsYXllckFwaUtleSwKICAgIHJlbGF5ZXJBcGlTZWNyZXQsCiAgfSk7CgogIHJldHVybiBjbGllbnQucmVsYXlTaWduZXIuZ2V0UHJvdmlkZXIoKTsKfQoKYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlQmxvY2tUaW1lKHByb3ZpZGVyKSB7CiAgY29uc3QgbGF0ZXN0QmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jaygibGF0ZXN0Iik7CiAgY29uc3QgcHJldmlvdXNCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKGxhdGVzdEJsb2NrLm51bWJlciAtIDEwMCk7CgogIGNvbnN0IHRpbWVEaWZmID0gbGF0ZXN0QmxvY2sudGltZXN0YW1wIC0gcHJldmlvdXNCbG9jay50aW1lc3RhbXA7CiAgY29uc3QgYmxvY2tEaWZmID0gbGF0ZXN0QmxvY2subnVtYmVyIC0gcHJldmlvdXNCbG9jay5udW1iZXI7CgogIGNvbnN0IGJsb2NrVGltZSA9IHRpbWVEaWZmIC8gYmxvY2tEaWZmOwogIHJldHVybiBibG9ja1RpbWU7Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnN0IHRhaWtvTDFQcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyKAogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgKTsKCiAgY29uc3QgY3VycmVudEJsb2NrTnVtYmVyID0gYXdhaXQgZ2V0TGF0ZXN0QmxvY2tOdW1iZXIodGFpa29MMVByb3ZpZGVyKTsKICBjb25zdCBibG9ja1RpbWVJblNlY29uZHMgPSBhd2FpdCBjYWxjdWxhdGVCbG9ja1RpbWUodGFpa29MMVByb3ZpZGVyKTsKICBjb25zdCBibG9ja3NJblRoaXJ0eU1pbnV0ZXMgPSBNYXRoLmZsb29yKCgzMCAqIDYwKSAvIGJsb2NrVGltZUluU2Vjb25kcyk7CgogIGNvbnN0IGZyb21CbG9jayA9IGN1cnJlbnRCbG9ja051bWJlciAtIGJsb2Nrc0luVGhpcnR5TWludXRlczsKICBjb25zdCB0b0Jsb2NrID0gY3VycmVudEJsb2NrTnVtYmVyOwoKICBjb25zdCBsb2dzID0gYXdhaXQgZmV0Y2hMb2dzRnJvbUwxKAogICAgWyJUcmFuc2l0aW9uUHJvdmVkIiwgIlRyYW5zaXRpb25Qcm92ZWRWMiJdLAogICAgZnJvbUJsb2NrLAogICAgdG9CbG9jaywKICAgICIweDA2YTlBYjI3YzdlMjI1NWRmMTgxNUU2Q0MwMTY4ZDc3NTVGZWIxOWEiLAogICAgQUJJLAogICAgdGFpa29MMVByb3ZpZGVyLAogICk7CgogIGlmIChsb2dzLmxlbmd0aCA9PT0gMCkgewogICAgYWxlcnRPcmcoCiAgICAgIG5vdGlmaWNhdGlvbkNsaWVudCwKICAgICAgYE5vIFRyYW5zaXRpb25Qcm92ZWQgZXZlbnQgZGV0ZWN0ZWQgaW4gdGhlIGxhc3QgMzAgbWlucyBvbiBUYWlrb0wxIWAsCiAgICApOwogIH0KCiAgcmV0dXJuIHRydWU7Cn07ClBLAQIUAAoAAAAAAAAAQVCdRYy1ABQAAAAUAAAIAAAAAAAAAAAAAAAAAAAAAABpbmRleC5qc1BLBQYAAAAAAQABADYAAAAmFAAAAAA="},{"autotaskId":"4390573f-1796-4c27-8933-7f157e77c2b4","actionId":"4390573f-1796-4c27-8933-7f157e77c2b4","name":"TaikoL1: BlockVerified Alert","paused":false,"trigger":{"cron":null,"frequencyMinutes":4,"type":"schedule"},"codeDigest":"mqXqyfZDeb1WGdy+nxXiMlsgOop/LSMOh3pARcgugAc=","stackResourceId":"mystack.taiko-l-1-block-verified-alert","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-05","encodedZippedCode":"UEsDBAoAAAAAAAAAQVBa57hUWxAAAFsQAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAiYmxvY2tJZCIsCiAgICAgICAgdHlwZTogInVpbnQyNTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzIiwKICAgICAgICBuYW1lOiAicHJvdmVyIiwKICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICBuYW1lOiAiYmxvY2tIYXNoIiwKICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICBuYW1lOiAic3RhdGVSb290IiwKICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MTYiLAogICAgICAgIG5hbWU6ICJ0aWVyIiwKICAgICAgICB0eXBlOiAidWludDE2IiwKICAgICAgfSwKICAgIF0sCiAgICBuYW1lOiAiQmxvY2tWZXJpZmllZCIsCiAgICB0eXBlOiAiZXZlbnQiLAogIH0sCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAiYmxvY2tJZCIsCiAgICAgICAgdHlwZTogInVpbnQyNTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzIiwKICAgICAgICBuYW1lOiAicHJvdmVyIiwKICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICBuYW1lOiAiYmxvY2tIYXNoIiwKICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICBuYW1lOiAic3RhdGVSb290IiwKICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MTYiLAogICAgICAgIG5hbWU6ICJ0aWVyIiwKICAgICAgICB0eXBlOiAidWludDE2IiwKICAgICAgfSwKICAgIF0sCiAgICBuYW1lOiAiQmxvY2tWZXJpZmllZFYyIiwKICAgIHR5cGU6ICJldmVudCIsCiAgfSwKXTsKCmZ1bmN0aW9uIGFsZXJ0T3JnKG5vdGlmaWNhdGlvbkNsaWVudCwgbWVzc2FnZSkgewogIG5vdGlmaWNhdGlvbkNsaWVudC5zZW5kKHsKICAgIGNoYW5uZWxBbGlhczogImRpc2NvcmRfYmxvY2tzIiwKICAgIHN1YmplY3Q6ICLwn5qoIFRhaWtvTDE6IEJsb2NrVmVyaWZpZWQgQWxlcnQiLAogICAgbWVzc2FnZSwKICB9KTsKCiAgbm90aWZpY2F0aW9uQ2xpZW50LnNlbmQoewogICAgY2hhbm5lbEFsaWFzOiAidGdfdGFpa29fZ3VhcmRpYW5zIiwKICAgIHN1YmplY3Q6ICLwn5qoIFRhaWtvTDE6IEJsb2NrVmVyaWZpZWQgQWxlcnQiLAogICAgbWVzc2FnZSwKICB9KTsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0QmxvY2tOdW1iZXIocHJvdmlkZXIpIHsKICBjb25zdCBjdXJyZW50QmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jaygibGF0ZXN0Iik7CiAgcmV0dXJuIGN1cnJlbnRCbG9jay5udW1iZXI7Cn0KCmFzeW5jIGZ1bmN0aW9uIGZldGNoTG9nc0Zyb21MMSgKICBldmVudE5hbWVzLAogIGZyb21CbG9jaywKICB0b0Jsb2NrLAogIGFkZHJlc3MsCiAgYWJpLAogIHByb3ZpZGVyLAopIHsKICBjb25zdCBpZmFjZSA9IG5ldyBldGhlcnMudXRpbHMuSW50ZXJmYWNlKGFiaSk7CiAgY29uc3QgZXZlbnRUb3BpY3MgPSBldmVudE5hbWVzLm1hcCgoZXZlbnROYW1lKSA9PgogICAgaWZhY2UuZ2V0RXZlbnRUb3BpYyhldmVudE5hbWUpLAogICk7CgogIGNvbnNvbGUubG9nKGBldmVudFRvcGljczogJHtldmVudFRvcGljc31gKTsKCiAgdHJ5IHsKICAgIGNvbnN0IGxvZ3MgPSBhd2FpdCBwcm92aWRlci5nZXRMb2dzKHsKICAgICAgYWRkcmVzcywKICAgICAgZnJvbUJsb2NrLAogICAgICB0b0Jsb2NrLAogICAgICB0b3BpY3M6IFtldmVudFRvcGljc10sCiAgICB9KTsKCiAgICByZXR1cm4gbG9ncy5tYXAoKGxvZykgPT4gaWZhY2UucGFyc2VMb2cobG9nKSk7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yIGZldGNoaW5nIEwxIGxvZ3M6IiwgZXJyb3IpOwogICAgcmV0dXJuIFtdOwogIH0KfQoKZnVuY3Rpb24gY3JlYXRlUHJvdmlkZXIoYXBpS2V5LCBhcGlTZWNyZXQsIHJlbGF5ZXJBcGlLZXksIHJlbGF5ZXJBcGlTZWNyZXQpIHsKICBjb25zdCBjbGllbnQgPSBuZXcgRGVmZW5kZXIoewogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgcmVsYXllckFwaUtleSwKICAgIHJlbGF5ZXJBcGlTZWNyZXQsCiAgfSk7CgogIHJldHVybiBjbGllbnQucmVsYXlTaWduZXIuZ2V0UHJvdmlkZXIoKTsKfQoKYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlQmxvY2tUaW1lKHByb3ZpZGVyKSB7CiAgY29uc3QgbGF0ZXN0QmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jaygibGF0ZXN0Iik7CiAgY29uc3QgcHJldmlvdXNCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKGxhdGVzdEJsb2NrLm51bWJlciAtIDEwMCk7CgogIGNvbnN0IHRpbWVEaWZmID0gbGF0ZXN0QmxvY2sudGltZXN0YW1wIC0gcHJldmlvdXNCbG9jay50aW1lc3RhbXA7CiAgY29uc3QgYmxvY2tEaWZmID0gbGF0ZXN0QmxvY2subnVtYmVyIC0gcHJldmlvdXNCbG9jay5udW1iZXI7CgogIGNvbnN0IGJsb2NrVGltZSA9IHRpbWVEaWZmIC8gYmxvY2tEaWZmOwogIHJldHVybiBibG9ja1RpbWU7Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnN0IHRhaWtvTDFQcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyKAogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgKTsKCiAgY29uc3QgY3VycmVudEJsb2NrTnVtYmVyID0gYXdhaXQgZ2V0TGF0ZXN0QmxvY2tOdW1iZXIodGFpa29MMVByb3ZpZGVyKTsKICBjb25zdCBibG9ja1RpbWVJblNlY29uZHMgPSBhd2FpdCBjYWxjdWxhdGVCbG9ja1RpbWUodGFpa29MMVByb3ZpZGVyKTsKICBjb25zdCBibG9ja3NJbkZpdmVNaW51dGVzID0gTWF0aC5mbG9vcigoNSAqIDYwKSAvIGJsb2NrVGltZUluU2Vjb25kcyk7CgogIGNvbnN0IGZyb21CbG9jayA9IGN1cnJlbnRCbG9ja051bWJlciAtIGJsb2Nrc0luRml2ZU1pbnV0ZXM7CiAgY29uc3QgdG9CbG9jayA9IGN1cnJlbnRCbG9ja051bWJlcjsKCiAgY29uc3QgbG9ncyA9IGF3YWl0IGZldGNoTG9nc0Zyb21MMSgKICAgIFsiQmxvY2tWZXJpZmllZCIsICJCbG9ja1ZlcmlmaWVkVjIiXSwKICAgIGZyb21CbG9jaywKICAgIHRvQmxvY2ssCiAgICAiMHgwNmE5QWIyN2M3ZTIyNTVkZjE4MTVFNkNDMDE2OGQ3NzU1RmViMTlhIiwKICAgIEFCSSwKICAgIHRhaWtvTDFQcm92aWRlciwKICApOwoKICBpZiAobG9ncy5sZW5ndGggPT09IDApIHsKICAgIGFsZXJ0T3JnKAogICAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICAgIGBAZGF2aWRjYWkgQHl1ZWE3NTgzIE5vIEJsb2NrVmVyaWZpZWQgZXZlbnQgZGV0ZWN0ZWQgaW4gdGhlIGxhc3QgMzAgbWlucyBpbiBUYWlrb0wxIWAsCiAgICApOwogIH0KCiAgcmV0dXJuIHRydWU7Cn07ClBLAQIUAAoAAAAAAAAAQVBa57hUWxAAAFsQAAAIAAAAAAAAAAAAAAAAAAAAAABpbmRleC5qc1BLBQYAAAAAAQABADYAAACBEAAAAAA="},{"autotaskId":"3cabb163-79fb-432c-a90a-c111b346a209","actionId":"3cabb163-79fb-432c-a90a-c111b346a209","name":"TaikoL1: BlockProposed Alert","paused":false,"trigger":{"cron":null,"frequencyMinutes":4,"type":"schedule"},"codeDigest":"gJSTtL74IDa0ri990g/XL8plt4cMekIIJhdeceam+MY=","stackResourceId":"mystack.taiko-l-1-block-proposed-alert","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-05","encodedZippedCode":"UEsDBAoAAAAAAAAAQVAcjdf6viEAAL4hAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAiYmxvY2tJZCIsCiAgICAgICAgdHlwZTogInVpbnQyNTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzIiwKICAgICAgICBuYW1lOiAiYXNzaWduZWRQcm92ZXIiLAogICAgICAgIHR5cGU6ICJhZGRyZXNzIiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogInVpbnQ5NiIsCiAgICAgICAgbmFtZTogImxpdmVuZXNzQm9uZCIsCiAgICAgICAgdHlwZTogInVpbnQ5NiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBjb21wb25lbnRzOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAibDFIYXNoIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJkaWZmaWN1bHR5IiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJibG9iSGFzaCIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAiZXh0cmFEYXRhIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJkZXBvc2l0c0hhc2giLAogICAgICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzIiwKICAgICAgICAgICAgbmFtZTogImNvaW5iYXNlIiwKICAgICAgICAgICAgdHlwZTogImFkZHJlc3MiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDY0IiwKICAgICAgICAgICAgbmFtZTogImlkIiwKICAgICAgICAgICAgdHlwZTogInVpbnQ2NCIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MzIiLAogICAgICAgICAgICBuYW1lOiAiZ2FzTGltaXQiLAogICAgICAgICAgICB0eXBlOiAidWludDMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogInVpbnQ2NCIsCiAgICAgICAgICAgIG5hbWU6ICJ0aW1lc3RhbXAiLAogICAgICAgICAgICB0eXBlOiAidWludDY0IiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogInVpbnQ2NCIsCiAgICAgICAgICAgIG5hbWU6ICJsMUhlaWdodCIsCiAgICAgICAgICAgIHR5cGU6ICJ1aW50NjQiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDE2IiwKICAgICAgICAgICAgbmFtZTogIm1pblRpZXIiLAogICAgICAgICAgICB0eXBlOiAidWludDE2IiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJvb2wiLAogICAgICAgICAgICBuYW1lOiAiYmxvYlVzZWQiLAogICAgICAgICAgICB0eXBlOiAiYm9vbCIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogInBhcmVudE1ldGFIYXNoIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYWRkcmVzcyIsCiAgICAgICAgICAgIG5hbWU6ICJzZW5kZXIiLAogICAgICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAic3RydWN0IFRhaWtvRGF0YS5CbG9ja01ldGFkYXRhIiwKICAgICAgICBuYW1lOiAibWV0YSIsCiAgICAgICAgdHlwZTogInR1cGxlIiwKICAgICAgfSwKICAgICAgewogICAgICAgIGNvbXBvbmVudHM6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYWRkcmVzcyIsCiAgICAgICAgICAgIG5hbWU6ICJyZWNpcGllbnQiLAogICAgICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50OTYiLAogICAgICAgICAgICBuYW1lOiAiYW1vdW50IiwKICAgICAgICAgICAgdHlwZTogInVpbnQ5NiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50NjQiLAogICAgICAgICAgICBuYW1lOiAiaWQiLAogICAgICAgICAgICB0eXBlOiAidWludDY0IiwKICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJzdHJ1Y3QgVGFpa29EYXRhLkV0aERlcG9zaXRbXSIsCiAgICAgICAgbmFtZTogImRlcG9zaXRzUHJvY2Vzc2VkIiwKICAgICAgICB0eXBlOiAidHVwbGVbXSIsCiAgICAgIH0sCiAgICBdLAogICAgbmFtZTogIkJsb2NrUHJvcG9zZWQiLAogICAgdHlwZTogImV2ZW50IiwKICB9LAogIHsKICAgIGFub255bW91czogZmFsc2UsCiAgICBpbnB1dHM6IFsKICAgICAgewogICAgICAgIGluZGV4ZWQ6IHRydWUsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDI1NiIsCiAgICAgICAgbmFtZTogImJsb2NrSWQiLAogICAgICAgIHR5cGU6ICJ1aW50MjU2IiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IHRydWUsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAiYWRkcmVzcyIsCiAgICAgICAgbmFtZTogImFzc2lnbmVkUHJvdmVyIiwKICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50OTYiLAogICAgICAgIG5hbWU6ICJsaXZlbmVzc0JvbmQiLAogICAgICAgIHR5cGU6ICJ1aW50OTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgY29tcG9uZW50czogWwogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogImwxSGFzaCIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAiZGlmZmljdWx0eSIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAiYmxvYkhhc2giLAogICAgICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogImV4dHJhRGF0YSIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAiZGVwb3NpdHNIYXNoIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYWRkcmVzcyIsCiAgICAgICAgICAgIG5hbWU6ICJjb2luYmFzZSIsCiAgICAgICAgICAgIHR5cGU6ICJhZGRyZXNzIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogInVpbnQ2NCIsCiAgICAgICAgICAgIG5hbWU6ICJpZCIsCiAgICAgICAgICAgIHR5cGU6ICJ1aW50NjQiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDMyIiwKICAgICAgICAgICAgbmFtZTogImdhc0xpbWl0IiwKICAgICAgICAgICAgdHlwZTogInVpbnQzMiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50NjQiLAogICAgICAgICAgICBuYW1lOiAidGltZXN0YW1wIiwKICAgICAgICAgICAgdHlwZTogInVpbnQ2NCIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50NjQiLAogICAgICAgICAgICBuYW1lOiAibDFIZWlnaHQiLAogICAgICAgICAgICB0eXBlOiAidWludDY0IiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogInVpbnQxNiIsCiAgICAgICAgICAgIG5hbWU6ICJtaW5UaWVyIiwKICAgICAgICAgICAgdHlwZTogInVpbnQxNiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJib29sIiwKICAgICAgICAgICAgbmFtZTogImJsb2JVc2VkIiwKICAgICAgICAgICAgdHlwZTogImJvb2wiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJwYXJlbnRNZXRhSGFzaCIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImFkZHJlc3MiLAogICAgICAgICAgICBuYW1lOiAic2VuZGVyIiwKICAgICAgICAgICAgdHlwZTogImFkZHJlc3MiLAogICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogInN0cnVjdCBUYWlrb0RhdGEuQmxvY2tNZXRhZGF0YSIsCiAgICAgICAgbmFtZTogIm1ldGEiLAogICAgICAgIHR5cGU6ICJ0dXBsZSIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBjb21wb25lbnRzOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImFkZHJlc3MiLAogICAgICAgICAgICBuYW1lOiAicmVjaXBpZW50IiwKICAgICAgICAgICAgdHlwZTogImFkZHJlc3MiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDk2IiwKICAgICAgICAgICAgbmFtZTogImFtb3VudCIsCiAgICAgICAgICAgIHR5cGU6ICJ1aW50OTYiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDY0IiwKICAgICAgICAgICAgbmFtZTogImlkIiwKICAgICAgICAgICAgdHlwZTogInVpbnQ2NCIsCiAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAic3RydWN0IFRhaWtvRGF0YS5FdGhEZXBvc2l0W10iLAogICAgICAgIG5hbWU6ICJkZXBvc2l0c1Byb2Nlc3NlZCIsCiAgICAgICAgdHlwZTogInR1cGxlW10iLAogICAgICB9LAogICAgXSwKICAgIG5hbWU6ICJCbG9ja1Byb3Bvc2VkVjIiLAogICAgdHlwZTogImV2ZW50IiwKICB9LApdOwoKZnVuY3Rpb24gYWxlcnRPcmcobm90aWZpY2F0aW9uQ2xpZW50LCBtZXNzYWdlKSB7CiAgbm90aWZpY2F0aW9uQ2xpZW50LnNlbmQoewogICAgY2hhbm5lbEFsaWFzOiAiZGlzY29yZF9ibG9ja3MiLAogICAgc3ViamVjdDogIvCfmqggVGFpa29MMTogQmxvY2tQcm9wb3NlZCBBbGVydCIsCiAgICBtZXNzYWdlLAogIH0pOwoKICBub3RpZmljYXRpb25DbGllbnQuc2VuZCh7CiAgICBjaGFubmVsQWxpYXM6ICJ0Z190YWlrb19ndWFyZGlhbnMiLAogICAgc3ViamVjdDogIvCfmqggVGFpa29MMTogQmxvY2tQcm9wb3NlZCBBbGVydCIsCiAgICBtZXNzYWdlLAogIH0pOwp9Cgphc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RCbG9ja051bWJlcihwcm92aWRlcikgewogIGNvbnN0IGN1cnJlbnRCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKCJsYXRlc3QiKTsKICByZXR1cm4gY3VycmVudEJsb2NrLm51bWJlcjsKfQoKYXN5bmMgZnVuY3Rpb24gZmV0Y2hMb2dzRnJvbUwxKAogIGV2ZW50TmFtZXMsCiAgZnJvbUJsb2NrLAogIHRvQmxvY2ssCiAgYWRkcmVzcywKICBhYmksCiAgcHJvdmlkZXIsCikgewogIGNvbnN0IGlmYWNlID0gbmV3IGV0aGVycy51dGlscy5JbnRlcmZhY2UoYWJpKTsKCiAgY29uc3QgYWxsTG9ncyA9IFtdOwoKICBmb3IgKGNvbnN0IGV2ZW50TmFtZSBvZiBldmVudE5hbWVzKSB7CiAgICBjb25zdCBldmVudFRvcGljID0gaWZhY2UuZ2V0RXZlbnRUb3BpYyhldmVudE5hbWUpOwoKICAgIHRyeSB7CiAgICAgIGNvbnN0IGxvZ3MgPSBhd2FpdCBwcm92aWRlci5nZXRMb2dzKHsKICAgICAgICBhZGRyZXNzLAogICAgICAgIGZyb21CbG9jaywKICAgICAgICB0b0Jsb2NrLAogICAgICAgIHRvcGljczogW2V2ZW50VG9waWNdLAogICAgICB9KTsKCiAgICAgIGFsbExvZ3MucHVzaCgKICAgICAgICAuLi5sb2dzLm1hcCgobG9nKSA9PgogICAgICAgICAgaWZhY2UuZGVjb2RlRXZlbnRMb2coZXZlbnROYW1lLCBsb2cuZGF0YSwgbG9nLnRvcGljcyksCiAgICAgICAgKSwKICAgICAgKTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGZldGNoaW5nIGxvZ3MgZm9yICR7ZXZlbnROYW1lfTpgLCBlcnJvcik7CiAgICB9CiAgfQoKICByZXR1cm4gYWxsTG9nczsKfQoKZnVuY3Rpb24gY3JlYXRlUHJvdmlkZXIoYXBpS2V5LCBhcGlTZWNyZXQsIHJlbGF5ZXJBcGlLZXksIHJlbGF5ZXJBcGlTZWNyZXQpIHsKICBjb25zdCBjbGllbnQgPSBuZXcgRGVmZW5kZXIoewogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgcmVsYXllckFwaUtleSwKICAgIHJlbGF5ZXJBcGlTZWNyZXQsCiAgfSk7CgogIHJldHVybiBjbGllbnQucmVsYXlTaWduZXIuZ2V0UHJvdmlkZXIoKTsKfQoKYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlQmxvY2tUaW1lKHByb3ZpZGVyKSB7CiAgY29uc3QgbGF0ZXN0QmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jaygibGF0ZXN0Iik7CiAgY29uc3QgcHJldmlvdXNCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKGxhdGVzdEJsb2NrLm51bWJlciAtIDEwMCk7CgogIGNvbnN0IHRpbWVEaWZmID0gbGF0ZXN0QmxvY2sudGltZXN0YW1wIC0gcHJldmlvdXNCbG9jay50aW1lc3RhbXA7CiAgY29uc3QgYmxvY2tEaWZmID0gbGF0ZXN0QmxvY2subnVtYmVyIC0gcHJldmlvdXNCbG9jay5udW1iZXI7CgogIGNvbnN0IGJsb2NrVGltZSA9IHRpbWVEaWZmIC8gYmxvY2tEaWZmOwogIHJldHVybiBibG9ja1RpbWU7Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnN0IHRhaWtvTDFQcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyKAogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgKTsKCiAgY29uc3QgY3VycmVudEJsb2NrTnVtYmVyID0gYXdhaXQgZ2V0TGF0ZXN0QmxvY2tOdW1iZXIodGFpa29MMVByb3ZpZGVyKTsKICBjb25zdCBibG9ja1RpbWVJblNlY29uZHMgPSBhd2FpdCBjYWxjdWxhdGVCbG9ja1RpbWUodGFpa29MMVByb3ZpZGVyKTsKICBjb25zdCBibG9ja3NJbkZpdmVNaW51dGVzID0gTWF0aC5mbG9vcigoNSAqIDYwKSAvIGJsb2NrVGltZUluU2Vjb25kcyk7CgogIGNvbnN0IGZyb21CbG9jayA9IGN1cnJlbnRCbG9ja051bWJlciAtIGJsb2Nrc0luRml2ZU1pbnV0ZXM7CiAgY29uc3QgdG9CbG9jayA9IGN1cnJlbnRCbG9ja051bWJlcjsKCiAgY29uc3QgbG9ncyA9IGF3YWl0IGZldGNoTG9nc0Zyb21MMSgKICAgIFsiQmxvY2tQcm9wb3NlZCIsICJCbG9ja1Byb3Bvc2VkVjIiXSwKICAgIGZyb21CbG9jaywKICAgIHRvQmxvY2ssCiAgICAiMHgwNmE5QWIyN2M3ZTIyNTVkZjE4MTVFNkNDMDE2OGQ3NzU1RmViMTlhIiwKICAgIEFCSSwKICAgIHRhaWtvTDFQcm92aWRlciwKICApOwoKICBjb25zb2xlLmxvZyhgTG9ncyBmb3VuZDogJHtsb2dzLmxlbmd0aH1gKTsKCiAgaWYgKGxvZ3MubGVuZ3RoID09PSAwKSB7CiAgICBhbGVydE9yZygKICAgICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgICBgTm8gQmxvY2tQcm9wb3NlZCBldmVudCBkZXRlY3RlZCBpbiB0aGUgbGFzdCAxNSBtaW5zIG9uIFRhaWtvTDEhYCwKICAgICk7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfTsKUEsBAhQACgAAAAAAAABBUByN1/q+IQAAviEAAAgAAAAAAAAAAAAAAAAAAAAAAGluZGV4LmpzUEsFBgAAAAABAAEANgAAAOQhAAAAAA=="}]},"contracts":{"removed":[],"created":[],"updated":[]},"relayers":{"removed":[],"created":[],"updated":[],"relayerKeys":{"removed":[],"created":[],"updated":[]}},"notifications":{"removed":[],"created":[],"updated":[]},"secrets":{"removed":[],"created":[],"updated":[]},"blockExplorerApiKeys":{"removed":[],"created":[],"updated":[]},"forkedNetworks":{"removed":[],"created":[],"updated":[]},"privateNetworks":{"removed":[],"created":[],"updated":[]}} +{"stack":"mystack","timestamp":"2024-09-18T21:48:09.627Z","monitors":{"removed":[],"created":[],"updated":[{"skipABIValidation":true,"alertThreshold":null,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"Defender Monitor: TaikoL1: Pause/Unpause triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]}],"abi":"[{\"type\":\"error\",\"name\":\"AM_ADDRESS_ALREADY_SET\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"spender\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"approved\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ApprovalForAll\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"operationId\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"approvalBits\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"minGuardiansReached\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Authorized\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"authorized\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"BB_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_MINT_DISALLOWED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_CANNOT_RECEIVE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_BURN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockProposed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"assignedProver\",\"indexed\":true},{\"type\":\"uint96\",\"name\":\"livenessBond\",\"indexed\":false},{\"type\":\"tuple\",\"name\":\"meta\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"depositsProcessed\",\"indexed\":false,\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockVerified\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"stateRoot\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondCredited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondDebited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btokenOld\",\"indexed\":false},{\"type\":\"address\",\"name\":\"btokenNew\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"CalldataTxList\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"txList\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ChainDataSynced\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"kind\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"data\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ConflictingProofs\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"guardian\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"currentProofHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"newProofHash\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"provingPaused\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"fromDelegate\",\"indexed\":true},{\"type\":\"address\",\"name\":\"toDelegate\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegate\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"previousBalance\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"newBalance\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EIP712DomainChanged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EtherPaymentFailed\",\"inputs\":[{\"type\":\"address\",\"name\":\"to\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"maxGas\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardianApproval\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false},{\"type\":\"bytes\",\"name\":\"proofData\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardiansUpdated\",\"inputs\":[{\"type\":\"uint32\",\"name\":\"version\",\"indexed\":false},{\"type\":\"address[]\",\"name\":\"guardians\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_EXPIRED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"LocalReportCheckToggled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"checkLocalEnclaveReport\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"MAX_GAS_PAYING_PROVER\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageProcessed\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"stats\",\"indexed\":false,\"components\":[{\"type\":\"uint32\",\"name\":\"gasUsedInFeeCalc\"},{\"type\":\"uint32\",\"name\":\"proofSize\"},{\"type\":\"uint32\",\"name\":\"numCacheOps\"},{\"type\":\"bool\",\"name\":\"processedByRelayer\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageStatusChanged\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"uint8\",\"name\":\"status\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigratedTo\",\"inputs\":[{\"type\":\"address\",\"name\":\"fromToken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigrationStatusChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"inbound\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrEnclaveUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrEnclave\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrSignerUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrSigner\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"enabled\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingPaused\",\"inputs\":[{\"type\":\"bool\",\"name\":\"paused\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"QeIdentityConfigured\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"indexed\":false,\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"name\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumRemoved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"SignalSent\",\"inputs\":[{\"type\":\"address\",\"name\":\"app\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"slot\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"slotB\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TcbInfoJsonConfigured\",\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"indexed\":false,\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"canonicalChainId\",\"indexed\":false},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferBatch\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256[]\",\"name\":\"ids\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"values\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferSingle\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionContested\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"contester\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"contestBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionProved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"validityBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"URI\",\"inputs\":[{\"type\":\"string\",\"name\":\"value\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_DATA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_ECDSA_SIGNATURE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEAUTHDATA_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEREPORT_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_MEMBER_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_UNSUPPORT_CERTIFICATION_TYPE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INSUFFICIENT_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_CTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"allowance\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"approvals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"bytes32\",\"name\":\"proofHash\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"approvalBits\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\",\"name\":\"approved_\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"authorize\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_addr\"},{\"type\":\"bool\",\"name\":\"_authorize\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"id\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOfBatch\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"accounts\"},{\"type\":\"uint256[]\",\"name\":\"ids\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"batchTransfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"recipients\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_user\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"btokenDenylist\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"denied\"}]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"canonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btoken\"}]},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctoken\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"address\",\"name\":\"_btokenNew\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btokenOld_\"}]},{\"type\":\"function\",\"name\":\"changeMigrationStatus\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_migratingAddress\"},{\"type\":\"bool\",\"name\":\"_migratingInbound\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"checkLocalEnclaveReport\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"checkpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint32\",\"name\":\"pos\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint32\",\"name\":\"fromBlock\"},{\"type\":\"uint224\",\"name\":\"votes\"}]}]},{\"type\":\"function\",\"name\":\"clock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint48\"}]},{\"type\":\"function\",\"name\":\"configureQeIdentityJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"configureTcbInfoJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"context\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"name\":\"ctx_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"}]}]},{\"type\":\"function\",\"name\":\"decimals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint8\"}]},{\"type\":\"function\",\"name\":\"decodeCert\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"der\"},{\"type\":\"bool\",\"name\":\"isPckCert\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"tuple\",\"name\":\"cert\",\"components\":[{\"type\":\"uint256\",\"name\":\"notBefore\"},{\"type\":\"uint256\",\"name\":\"notAfter\"},{\"type\":\"bytes\",\"name\":\"serialNumber\"},{\"type\":\"bytes\",\"name\":\"tbsCertificate\"},{\"type\":\"bytes\",\"name\":\"pubKey\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bool\",\"name\":\"isPck\"},{\"type\":\"tuple\",\"name\":\"pck\",\"components\":[{\"type\":\"string\",\"name\":\"commonName\"},{\"type\":\"string\",\"name\":\"issuerName\"},{\"type\":\"tuple\",\"name\":\"sgxExtension\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint256[]\",\"name\":\"sgxTcbCompSvnArr\"}]}]}]}]},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"subtractedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"delegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegateBySig\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"},{\"type\":\"uint256\",\"name\":\"nonce\"},{\"type\":\"uint256\",\"name\":\"expiry\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegates\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"depositBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"eip712Domain\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes1\",\"name\":\"fields\"},{\"type\":\"string\",\"name\":\"name\"},{\"type\":\"string\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"verifyingContract\"},{\"type\":\"bytes32\",\"name\":\"salt\"},{\"type\":\"uint256[]\",\"name\":\"extensions\"}]},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"failMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getApproved\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"blk_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]}]},{\"type\":\"function\",\"name\":\"getConfig\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"uint64\",\"name\":\"blockMaxProposals\"},{\"type\":\"uint64\",\"name\":\"blockRingBufferSize\"},{\"type\":\"uint64\",\"name\":\"maxBlocksToVerify\"},{\"type\":\"uint32\",\"name\":\"blockMaxGasLimit\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint8\",\"name\":\"stateRootSyncInternal\"},{\"type\":\"bool\",\"name\":\"checkEOAForCalldataDA\"}]}]},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"dataLength\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"getMinTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getPastVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"getStateVariables\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"chainData_\"}]},{\"type\":\"function\",\"name\":\"getTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint16\",\"name\":\"_tierId\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"verifierName\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint24\",\"name\":\"cooldownWindow\"},{\"type\":\"uint16\",\"name\":\"provingWindow\"},{\"type\":\"uint8\",\"name\":\"maxBlocksToVerifyPerProof\"}]}]},{\"type\":\"function\",\"name\":\"getTierIds\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint16[]\",\"name\":\"tiers_\"}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"uint32\",\"name\":\"_tid\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_parentHash\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"prover_\"}]},{\"type\":\"function\",\"name\":\"getVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"guardianIds\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"guardian\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"id\"}]},{\"type\":\"function\",\"name\":\"guardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"hashAssignment\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_assignment\",\"components\":[{\"type\":\"address\",\"name\":\"feeToken\"},{\"type\":\"uint64\",\"name\":\"expiry\"},{\"type\":\"uint64\",\"name\":\"maxBlockId\"},{\"type\":\"uint64\",\"name\":\"maxProposedIn\"},{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"tuple[]\",\"name\":\"tierFees\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint128\",\"name\":\"fee\"}]},{\"type\":\"bytes\",\"name\":\"signature\"}]},{\"type\":\"address\",\"name\":\"_taikoL1Address\"},{\"type\":\"address\",\"name\":\"_blockProposer\"},{\"type\":\"address\",\"name\":\"_assignedProver\"},{\"type\":\"bytes32\",\"name\":\"_blobHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"hashMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"impl\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"addedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"bytes32\",\"name\":\"_genesisBlockHash\"},{\"type\":\"bool\",\"name\":\"_toPause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"sigVerifyLibAddr\"},{\"type\":\"address\",\"name\":\"pemCertLibAddr\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"uint8\",\"name\":\"_decimals\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init2\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"address\",\"name\":\"operator\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isAuthorized\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"addr\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"authorized\"}]},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"enabled_\"},{\"type\":\"address\",\"name\":\"destBridge_\"}]},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isSignalSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"timestamp\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"latestProofHash\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"blockId\"}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"hash\"}]},{\"type\":\"function\",\"name\":\"messageStatus\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status\"}]},{\"type\":\"function\",\"name\":\"migratingAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"migratingInbound\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"minGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mintBatch\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256[]\",\"name\":\"_tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"_amounts\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"nextMessageId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nonces\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"numGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"onBlockProposed\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_blk\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]},{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256[]\"},{\"type\":\"uint256[]\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC721Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"ownerOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseProving\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_pause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pemCertLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"permit\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"uint256\",\"name\":\"deadline\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"processMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status_\"},{\"type\":\"uint8\",\"name\":\"reason_\"}]},{\"type\":\"function\",\"name\":\"proposeBlock\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_params\"},{\"type\":\"bytes\",\"name\":\"_txList\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"meta_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"deposits_\",\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"function\",\"name\":\"proveBlock\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes\",\"name\":\"_input\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"numCacheOps_\"}]},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"qeIdentity\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"}]},{\"type\":\"function\",\"name\":\"recallMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"removeRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"retryMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bool\",\"name\":\"_isLastAttempt\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeBatchTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256[]\",\"name\":\"ids\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"id\"},{\"type\":\"uint256\",\"name\":\"amount\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"selfDelegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_anyToken\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sendMessage\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash_\"},{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendSignal\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256[]\",\"name\":\"tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256\",\"name\":\"amount\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"serialNumIsRevoked\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"idx\"},{\"type\":\"bytes\",\"name\":\"serialNum\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"revoked\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"operator\"},{\"type\":\"bool\",\"name\":\"approved\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setGuardians\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_newGuardians\"},{\"type\":\"uint8\",\"name\":\"_minGuardians\"},{\"type\":\"bool\",\"name\":\"_clearData\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrEnclave\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrEnclave\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrSigner\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrSigner\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sigVerifyLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"signalForChainData\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"source\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"splitCertificateChain\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"pemChain\"},{\"type\":\"uint256\",\"name\":\"size\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"bytes[]\",\"name\":\"certs\"}]},{\"type\":\"function\",\"name\":\"srcChainId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"srcToken\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"state\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"__reserve1\"},{\"type\":\"tuple\",\"name\":\"slotA\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"name\":\"slotB\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"supportsInterface\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes4\",\"name\":\"_interfaceId\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"syncChainData\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"tcbInfo\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"}],\"outputs\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"}]},{\"type\":\"function\",\"name\":\"toggleLocalReportCheck\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"tokenURI\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"topBlockId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"kind\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId\"}]},{\"type\":\"function\",\"name\":\"totalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"transfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"trustedUserMrEnclave\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"enclave\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"trustedUserMrSigner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"signer\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"uri\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"verifyAttestation\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"}]},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_maxBlocksToVerify\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyES256Signature\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"tbs\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bytes\",\"name\":\"publicKey\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"sigValid\"}]},{\"type\":\"function\",\"name\":\"verifyParsedQuote\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"v3quote\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"bool\"},{\"type\":\"bytes\"}]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"version\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"withdrawBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"constructor\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"es256Verifier\"}]}]","addresses":["0x02772b7B3a5Bea0141C993Dbb8D0733C19F46169","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0x39E4C1214e733639d059979079A151911e42791d","0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0x579f40D0BE111b823962043702cabe6Aaa290780","0x67281b15aee4d6b805bc755e439abd524dd8da8d","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0xa25e645ff9897b0282e5f17d36de5bca4ec21d6e","0xaf145913EA4a56BE22E120ED9C24589659881702","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0xc4096E9ff1526Bd1840B65e9f45695135aC12De7","0xcc5d488073FA918cBbd73B9A523F3858C4de7372","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC"]}],"createdAt":"2024-08-27T09:44:01.744Z","subscriberId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","name":"TaikoL1: Pause/Unpause","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","blockWatcherId":"mainnet-6","paused":false,"stackResourceId":"mystack.taiko-l-1-pause-unpause","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"LOW","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet SGX Prover triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceAdded(uint256,address,address,uint256)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceDeleted(uint256,address)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[{"functionSignature":"verifyProof((bytes32,bytes32,address,uint64,bool,bool,address),(bytes32,bytes32,bytes32,bytes32),(uint16,bytes))","expression":null}],"eventConditions":[]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]}]","addresses":["0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81"]}],"createdAt":"2024-05-02T14:09:42.804Z","subscriberId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","name":"Taiko Mainnet SGX Prover","network":"mainnet","riskCategory":"TECHNICAL","monitorId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-sgx-prover","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Address Managers triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AddressSet(uint64,bytes32,address,address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x579f40D0BE111b823962043702cabe6Aaa290780"]}],"createdAt":"2024-05-02T14:00:18.874Z","subscriberId":"3919cb83-487f-4432-88fa-33bbe4361fce","name":"Taiko Mainnet Address Managers","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"3919cb83-487f-4432-88fa-33bbe4361fce","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-address-managers","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Essential Contracts triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AdminChanged(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"BeaconUpgraded(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Initialized(uint8)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferStarted(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferred(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Upgraded(address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0xaf145913EA4a56BE22E120ED9C24589659881702","0x579f40D0BE111b823962043702cabe6Aaa290780","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3"]}],"createdAt":"2024-05-02T13:49:54.192Z","subscriberId":"67a53521-3d4a-4de4-92ab-ede82cc45644","name":"Taiko Mainnet Essential Contracts","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"67a53521-3d4a-4de4-92ab-ede82cc45644","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-essential-contracts","type":"BLOCK"}]},"actions":{"removed":[],"created":[],"updated":[]},"contracts":{"removed":[],"created":[],"updated":[]},"relayers":{"removed":[],"created":[],"updated":[],"relayerKeys":{"removed":[],"created":[],"updated":[]}},"notifications":{"removed":[],"created":[],"updated":[]},"secrets":{"removed":[],"created":[],"updated":[]},"blockExplorerApiKeys":{"removed":[],"created":[],"updated":[]},"forkedNetworks":{"removed":[],"created":[],"updated":[]},"privateNetworks":{"removed":[],"created":[],"updated":[]}} +{"stack":"mystack","timestamp":"2024-09-18T21:51:21.150Z","monitors":{"removed":[],"created":[],"updated":[{"skipABIValidation":true,"alertThreshold":null,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"Defender Monitor: TaikoL1: Pause/Unpause triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]}],"abi":"[{\"type\":\"error\",\"name\":\"AM_ADDRESS_ALREADY_SET\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"spender\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"approved\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ApprovalForAll\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"operationId\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"approvalBits\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"minGuardiansReached\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Authorized\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"authorized\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"BB_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_MINT_DISALLOWED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_CANNOT_RECEIVE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_BURN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockProposed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"assignedProver\",\"indexed\":true},{\"type\":\"uint96\",\"name\":\"livenessBond\",\"indexed\":false},{\"type\":\"tuple\",\"name\":\"meta\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"depositsProcessed\",\"indexed\":false,\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockVerified\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"stateRoot\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondCredited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondDebited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btokenOld\",\"indexed\":false},{\"type\":\"address\",\"name\":\"btokenNew\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"CalldataTxList\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"txList\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ChainDataSynced\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"kind\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"data\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ConflictingProofs\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"guardian\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"currentProofHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"newProofHash\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"provingPaused\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"fromDelegate\",\"indexed\":true},{\"type\":\"address\",\"name\":\"toDelegate\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegate\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"previousBalance\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"newBalance\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EIP712DomainChanged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EtherPaymentFailed\",\"inputs\":[{\"type\":\"address\",\"name\":\"to\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"maxGas\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardianApproval\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false},{\"type\":\"bytes\",\"name\":\"proofData\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardiansUpdated\",\"inputs\":[{\"type\":\"uint32\",\"name\":\"version\",\"indexed\":false},{\"type\":\"address[]\",\"name\":\"guardians\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_EXPIRED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"LocalReportCheckToggled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"checkLocalEnclaveReport\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"MAX_GAS_PAYING_PROVER\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageProcessed\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"stats\",\"indexed\":false,\"components\":[{\"type\":\"uint32\",\"name\":\"gasUsedInFeeCalc\"},{\"type\":\"uint32\",\"name\":\"proofSize\"},{\"type\":\"uint32\",\"name\":\"numCacheOps\"},{\"type\":\"bool\",\"name\":\"processedByRelayer\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageStatusChanged\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"uint8\",\"name\":\"status\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigratedTo\",\"inputs\":[{\"type\":\"address\",\"name\":\"fromToken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigrationStatusChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"inbound\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrEnclaveUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrEnclave\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrSignerUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrSigner\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"enabled\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingPaused\",\"inputs\":[{\"type\":\"bool\",\"name\":\"paused\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"QeIdentityConfigured\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"indexed\":false,\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"name\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumRemoved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"SignalSent\",\"inputs\":[{\"type\":\"address\",\"name\":\"app\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"slot\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"slotB\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TcbInfoJsonConfigured\",\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"indexed\":false,\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"canonicalChainId\",\"indexed\":false},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferBatch\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256[]\",\"name\":\"ids\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"values\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferSingle\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionContested\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"contester\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"contestBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionProved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"validityBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"URI\",\"inputs\":[{\"type\":\"string\",\"name\":\"value\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_DATA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_ECDSA_SIGNATURE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEAUTHDATA_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEREPORT_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_MEMBER_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_UNSUPPORT_CERTIFICATION_TYPE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INSUFFICIENT_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_CTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"allowance\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"approvals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"bytes32\",\"name\":\"proofHash\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"approvalBits\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\",\"name\":\"approved_\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"authorize\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_addr\"},{\"type\":\"bool\",\"name\":\"_authorize\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"id\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOfBatch\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"accounts\"},{\"type\":\"uint256[]\",\"name\":\"ids\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"batchTransfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"recipients\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_user\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"btokenDenylist\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"denied\"}]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"canonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btoken\"}]},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctoken\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"address\",\"name\":\"_btokenNew\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btokenOld_\"}]},{\"type\":\"function\",\"name\":\"changeMigrationStatus\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_migratingAddress\"},{\"type\":\"bool\",\"name\":\"_migratingInbound\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"checkLocalEnclaveReport\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"checkpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint32\",\"name\":\"pos\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint32\",\"name\":\"fromBlock\"},{\"type\":\"uint224\",\"name\":\"votes\"}]}]},{\"type\":\"function\",\"name\":\"clock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint48\"}]},{\"type\":\"function\",\"name\":\"configureQeIdentityJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"configureTcbInfoJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"context\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"name\":\"ctx_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"}]}]},{\"type\":\"function\",\"name\":\"decimals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint8\"}]},{\"type\":\"function\",\"name\":\"decodeCert\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"der\"},{\"type\":\"bool\",\"name\":\"isPckCert\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"tuple\",\"name\":\"cert\",\"components\":[{\"type\":\"uint256\",\"name\":\"notBefore\"},{\"type\":\"uint256\",\"name\":\"notAfter\"},{\"type\":\"bytes\",\"name\":\"serialNumber\"},{\"type\":\"bytes\",\"name\":\"tbsCertificate\"},{\"type\":\"bytes\",\"name\":\"pubKey\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bool\",\"name\":\"isPck\"},{\"type\":\"tuple\",\"name\":\"pck\",\"components\":[{\"type\":\"string\",\"name\":\"commonName\"},{\"type\":\"string\",\"name\":\"issuerName\"},{\"type\":\"tuple\",\"name\":\"sgxExtension\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint256[]\",\"name\":\"sgxTcbCompSvnArr\"}]}]}]}]},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"subtractedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"delegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegateBySig\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"},{\"type\":\"uint256\",\"name\":\"nonce\"},{\"type\":\"uint256\",\"name\":\"expiry\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegates\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"depositBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"eip712Domain\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes1\",\"name\":\"fields\"},{\"type\":\"string\",\"name\":\"name\"},{\"type\":\"string\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"verifyingContract\"},{\"type\":\"bytes32\",\"name\":\"salt\"},{\"type\":\"uint256[]\",\"name\":\"extensions\"}]},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"failMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getApproved\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"blk_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]}]},{\"type\":\"function\",\"name\":\"getConfig\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"uint64\",\"name\":\"blockMaxProposals\"},{\"type\":\"uint64\",\"name\":\"blockRingBufferSize\"},{\"type\":\"uint64\",\"name\":\"maxBlocksToVerify\"},{\"type\":\"uint32\",\"name\":\"blockMaxGasLimit\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint8\",\"name\":\"stateRootSyncInternal\"},{\"type\":\"bool\",\"name\":\"checkEOAForCalldataDA\"}]}]},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"dataLength\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"getMinTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getPastVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"getStateVariables\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"chainData_\"}]},{\"type\":\"function\",\"name\":\"getTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint16\",\"name\":\"_tierId\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"verifierName\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint24\",\"name\":\"cooldownWindow\"},{\"type\":\"uint16\",\"name\":\"provingWindow\"},{\"type\":\"uint8\",\"name\":\"maxBlocksToVerifyPerProof\"}]}]},{\"type\":\"function\",\"name\":\"getTierIds\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint16[]\",\"name\":\"tiers_\"}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"uint32\",\"name\":\"_tid\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_parentHash\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"prover_\"}]},{\"type\":\"function\",\"name\":\"getVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"guardianIds\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"guardian\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"id\"}]},{\"type\":\"function\",\"name\":\"guardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"hashAssignment\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_assignment\",\"components\":[{\"type\":\"address\",\"name\":\"feeToken\"},{\"type\":\"uint64\",\"name\":\"expiry\"},{\"type\":\"uint64\",\"name\":\"maxBlockId\"},{\"type\":\"uint64\",\"name\":\"maxProposedIn\"},{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"tuple[]\",\"name\":\"tierFees\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint128\",\"name\":\"fee\"}]},{\"type\":\"bytes\",\"name\":\"signature\"}]},{\"type\":\"address\",\"name\":\"_taikoL1Address\"},{\"type\":\"address\",\"name\":\"_blockProposer\"},{\"type\":\"address\",\"name\":\"_assignedProver\"},{\"type\":\"bytes32\",\"name\":\"_blobHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"hashMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"impl\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"addedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"bytes32\",\"name\":\"_genesisBlockHash\"},{\"type\":\"bool\",\"name\":\"_toPause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"sigVerifyLibAddr\"},{\"type\":\"address\",\"name\":\"pemCertLibAddr\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"uint8\",\"name\":\"_decimals\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init2\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"address\",\"name\":\"operator\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isAuthorized\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"addr\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"authorized\"}]},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"enabled_\"},{\"type\":\"address\",\"name\":\"destBridge_\"}]},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isSignalSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"timestamp\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"latestProofHash\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"blockId\"}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"hash\"}]},{\"type\":\"function\",\"name\":\"messageStatus\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status\"}]},{\"type\":\"function\",\"name\":\"migratingAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"migratingInbound\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"minGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mintBatch\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256[]\",\"name\":\"_tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"_amounts\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"nextMessageId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nonces\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"numGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"onBlockProposed\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_blk\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]},{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256[]\"},{\"type\":\"uint256[]\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC721Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"ownerOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseProving\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_pause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pemCertLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"permit\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"uint256\",\"name\":\"deadline\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"processMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status_\"},{\"type\":\"uint8\",\"name\":\"reason_\"}]},{\"type\":\"function\",\"name\":\"proposeBlock\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_params\"},{\"type\":\"bytes\",\"name\":\"_txList\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"meta_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"deposits_\",\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"function\",\"name\":\"proveBlock\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes\",\"name\":\"_input\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"numCacheOps_\"}]},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"qeIdentity\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"}]},{\"type\":\"function\",\"name\":\"recallMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"removeRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"retryMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bool\",\"name\":\"_isLastAttempt\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeBatchTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256[]\",\"name\":\"ids\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"id\"},{\"type\":\"uint256\",\"name\":\"amount\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"selfDelegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_anyToken\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sendMessage\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash_\"},{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendSignal\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256[]\",\"name\":\"tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256\",\"name\":\"amount\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"serialNumIsRevoked\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"idx\"},{\"type\":\"bytes\",\"name\":\"serialNum\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"revoked\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"operator\"},{\"type\":\"bool\",\"name\":\"approved\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setGuardians\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_newGuardians\"},{\"type\":\"uint8\",\"name\":\"_minGuardians\"},{\"type\":\"bool\",\"name\":\"_clearData\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrEnclave\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrEnclave\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrSigner\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrSigner\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sigVerifyLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"signalForChainData\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"source\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"splitCertificateChain\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"pemChain\"},{\"type\":\"uint256\",\"name\":\"size\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"bytes[]\",\"name\":\"certs\"}]},{\"type\":\"function\",\"name\":\"srcChainId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"srcToken\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"state\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"__reserve1\"},{\"type\":\"tuple\",\"name\":\"slotA\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"name\":\"slotB\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"supportsInterface\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes4\",\"name\":\"_interfaceId\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"syncChainData\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"tcbInfo\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"}],\"outputs\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"}]},{\"type\":\"function\",\"name\":\"toggleLocalReportCheck\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"tokenURI\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"topBlockId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"kind\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId\"}]},{\"type\":\"function\",\"name\":\"totalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"transfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"trustedUserMrEnclave\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"enclave\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"trustedUserMrSigner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"signer\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"uri\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"verifyAttestation\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"}]},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_maxBlocksToVerify\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyES256Signature\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"tbs\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bytes\",\"name\":\"publicKey\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"sigValid\"}]},{\"type\":\"function\",\"name\":\"verifyParsedQuote\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"v3quote\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"bool\"},{\"type\":\"bytes\"}]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"version\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"withdrawBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"constructor\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"es256Verifier\"}]}]","addresses":["0x02772b7B3a5Bea0141C993Dbb8D0733C19F46169","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0x39E4C1214e733639d059979079A151911e42791d","0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0x579f40D0BE111b823962043702cabe6Aaa290780","0x67281b15aee4d6b805bc755e439abd524dd8da8d","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0xa25e645ff9897b0282e5f17d36de5bca4ec21d6e","0xaf145913EA4a56BE22E120ED9C24589659881702","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0xc4096E9ff1526Bd1840B65e9f45695135aC12De7","0xcc5d488073FA918cBbd73B9A523F3858C4de7372","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC"]}],"createdAt":"2024-08-27T09:44:01.744Z","subscriberId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","name":"TaikoL1: Pause/Unpause","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","blockWatcherId":"mainnet-6","paused":false,"stackResourceId":"mystack.taiko-l-1-pause-unpause","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"LOW","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet SGX Prover triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceAdded(uint256,address,address,uint256)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceDeleted(uint256,address)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[{"functionSignature":"verifyProof((bytes32,bytes32,address,uint64,bool,bool,address),(bytes32,bytes32,bytes32,bytes32),(uint16,bytes))","expression":null}],"eventConditions":[]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]}]","addresses":["0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81"]}],"createdAt":"2024-05-02T14:09:42.804Z","subscriberId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","name":"Taiko Mainnet SGX Prover","network":"mainnet","riskCategory":"TECHNICAL","monitorId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-sgx-prover","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Address Managers triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AddressSet(uint64,bytes32,address,address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x579f40D0BE111b823962043702cabe6Aaa290780"]}],"createdAt":"2024-05-02T14:00:18.874Z","subscriberId":"3919cb83-487f-4432-88fa-33bbe4361fce","name":"Taiko Mainnet Address Managers","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"3919cb83-487f-4432-88fa-33bbe4361fce","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-address-managers","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Essential Contracts triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AdminChanged(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"BeaconUpgraded(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Initialized(uint8)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferStarted(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferred(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Upgraded(address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0xaf145913EA4a56BE22E120ED9C24589659881702","0x579f40D0BE111b823962043702cabe6Aaa290780","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3"]}],"createdAt":"2024-05-02T13:49:54.192Z","subscriberId":"67a53521-3d4a-4de4-92ab-ede82cc45644","name":"Taiko Mainnet Essential Contracts","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"67a53521-3d4a-4de4-92ab-ede82cc45644","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-essential-contracts","type":"BLOCK"}]},"actions":{"removed":[],"created":[],"updated":[{"autotaskId":"86964fd3-3da8-4501-a572-cbf51045f861","actionId":"86964fd3-3da8-4501-a572-cbf51045f861","name":"ERC20Vault: Balance Drop Test","paused":false,"trigger":{"cron":null,"frequencyMinutes":15,"type":"schedule"},"codeDigest":"+Y75bpyOzEuCm0y95ZczKkySm4PgLyQQt6ASpaB08Lk=","stackResourceId":"mystack.erc-20-vault-balance-drop","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVASVlLscBMAAHATAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBFUkMyMF9BQkkgPSBbCiAgewogICAgY29uc3RhbnQ6IHRydWUsCiAgICBpbnB1dHM6IFt7IG5hbWU6ICJfb3duZXIiLCB0eXBlOiAiYWRkcmVzcyIgfV0sCiAgICBuYW1lOiAiYmFsYW5jZU9mIiwKICAgIG91dHB1dHM6IFt7IG5hbWU6ICJiYWxhbmNlIiwgdHlwZTogInVpbnQyNTYiIH1dLAogICAgcGF5YWJsZTogZmFsc2UsCiAgICBzdGF0ZU11dGFiaWxpdHk6ICJ2aWV3IiwKICAgIHR5cGU6ICJmdW5jdGlvbiIsCiAgfSwKXTsKCmFzeW5jIGZ1bmN0aW9uIGdldEVSQzIwQmFsYW5jZShwcm92aWRlciwgdG9rZW5BZGRyZXNzLCB2YXVsdEFkZHJlc3MpIHsKICBjb25zdCBjb250cmFjdCA9IG5ldyBldGhlcnMuQ29udHJhY3QodG9rZW5BZGRyZXNzLCBFUkMyMF9BQkksIHByb3ZpZGVyKTsKICByZXR1cm4gYXdhaXQgY29udHJhY3QuYmFsYW5jZU9mKHZhdWx0QWRkcmVzcyk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldE5hdGl2ZVRva2VuQmFsYW5jZShwcm92aWRlciwgdmF1bHRBZGRyZXNzKSB7CiAgcmV0dXJuIGF3YWl0IHByb3ZpZGVyLmdldEJhbGFuY2UodmF1bHRBZGRyZXNzKTsKfQoKYXN5bmMgZnVuY3Rpb24gbW9uaXRvclRva2VuQmFsYW5jZSgKICBwcm92aWRlciwKICB0b2tlbkFkZHJlc3MsCiAgdmF1bHRBZGRyZXNzLAogIHByZXZpb3VzQmFsYW5jZUtleSwKICBub3RpZmljYXRpb25DbGllbnQsCiAgc2VjcmV0cywKICBjbGllbnQsCiAgdG9rZW5OYW1lLAogIG5ldHdvcmtOYW1lLAopIHsKICBjb25zb2xlLmxvZyhgTW9uaXRvcmluZyAke3Rva2VuTmFtZX0gYmFsYW5jZSBvbiAke25ldHdvcmtOYW1lfWApOwogIGNvbnN0IHByZXZpb3VzQmFsYW5jZSA9IGV0aGVycy5CaWdOdW1iZXIuZnJvbSgKICAgIHNlY3JldHNbcHJldmlvdXNCYWxhbmNlS2V5XSB8fCAiMCIsCiAgKTsKICBjb25zb2xlLmxvZygKICAgIGBQcmV2aW91cyAke3Rva2VuTmFtZX0gQmFsYW5jZTogJHtldGhlcnMudXRpbHMuZm9ybWF0VW5pdHMoCiAgICAgIHByZXZpb3VzQmFsYW5jZSwKICAgICAgMTgsCiAgICApfWAsCiAgKTsKCiAgbGV0IGN1cnJlbnRCYWxhbmNlOwogIGlmICh0b2tlbk5hbWUgPT09ICJFVEgiKSB7CiAgICBjdXJyZW50QmFsYW5jZSA9IGF3YWl0IGdldE5hdGl2ZVRva2VuQmFsYW5jZShwcm92aWRlciwgdmF1bHRBZGRyZXNzKTsKICB9IGVsc2UgewogICAgY3VycmVudEJhbGFuY2UgPSBhd2FpdCBnZXRFUkMyMEJhbGFuY2UoCiAgICAgIHByb3ZpZGVyLAogICAgICB0b2tlbkFkZHJlc3MsCiAgICAgIHZhdWx0QWRkcmVzcywKICAgICk7CiAgfQogIGNvbnNvbGUubG9nKAogICAgYEN1cnJlbnQgJHt0b2tlbk5hbWV9IEJhbGFuY2U6ICR7ZXRoZXJzLnV0aWxzLmZvcm1hdFVuaXRzKAogICAgICBjdXJyZW50QmFsYW5jZSwKICAgICAgMTgsCiAgICApfWAsCiAgKTsKCiAgaWYgKCFwcmV2aW91c0JhbGFuY2UuaXNaZXJvKCkpIHsKICAgIGNvbnN0IGRyb3BQZXJjZW50YWdlID0gcHJldmlvdXNCYWxhbmNlCiAgICAgIC5zdWIoY3VycmVudEJhbGFuY2UpCiAgICAgIC5tdWwoMTAwKQogICAgICAuZGl2KHByZXZpb3VzQmFsYW5jZSkKICAgICAgLnRvTnVtYmVyKCk7CiAgICBjb25zb2xlLmxvZygKICAgICAgYENhbGN1bGF0ZWQgZHJvcCBwZXJjZW50YWdlIGZvciAke3Rva2VuTmFtZX06ICR7ZHJvcFBlcmNlbnRhZ2V9JWAsCiAgICApOwoKICAgIGlmIChkcm9wUGVyY2VudGFnZSA+PSA1KSB7CiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQWxlcnQ6ICR7dG9rZW5OYW1lfSBiYWxhbmNlIGhhcyBkcm9wcGVkIGJ5ICR7ZHJvcFBlcmNlbnRhZ2V9JSBvbiAke25ldHdvcmtOYW1lfS5cblByZXZpb3VzIEJhbGFuY2U6ICR7ZXRoZXJzLnV0aWxzLmZvcm1hdFVuaXRzKAogICAgICAgIHByZXZpb3VzQmFsYW5jZSwKICAgICAgICAxOCwKICAgICAgKX1cbkN1cnJlbnQgQmFsYW5jZTogJHtldGhlcnMudXRpbHMuZm9ybWF0VW5pdHMoY3VycmVudEJhbGFuY2UsIDE4KX1gOwogICAgICBhbGVydE9yZygKICAgICAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICAgICAgYOKaoO+4jyAke25ldHdvcmtOYW1lfTogJHt0b2tlbk5hbWV9IEJhbGFuY2UgRHJvcCBBbGVydGAsCiAgICAgICAgbWVzc2FnZSwKICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnNvbGUubG9nKAogICAgICAgIGBObyBzaWduaWZpY2FudCAke3Rva2VuTmFtZX0gYmFsYW5jZSBkcm9wIGRldGVjdGVkIG9uICR7bmV0d29ya05hbWV9YCwKICAgICAgKTsKICAgIH0KICB9IGVsc2UgewogICAgY29uc29sZS5sb2coCiAgICAgIGBObyBwcmV2aW91cyAke3Rva2VuTmFtZX0gYmFsYW5jZSB0byBjb21wYXJlIG9uICR7bmV0d29ya05hbWV9YCwKICAgICk7CiAgfQoKICBhd2FpdCBzdG9yZVByZXZpb3VzQmFsYW5jZShjbGllbnQsIHByZXZpb3VzQmFsYW5jZUtleSwgY3VycmVudEJhbGFuY2UpOwp9CgpmdW5jdGlvbiBhbGVydE9yZyhub3RpZmljYXRpb25DbGllbnQsIHN1YmplY3QsIG1lc3NhZ2UpIHsKICBub3RpZmljYXRpb25DbGllbnQuc2VuZCh7CiAgICBjaGFubmVsQWxpYXM6ICJkaXNjb3JkX2JyaWRnaW5nIiwKICAgIHN1YmplY3QsCiAgICBtZXNzYWdlLAogIH0pOwp9Cgphc3luYyBmdW5jdGlvbiBzdG9yZVByZXZpb3VzQmFsYW5jZShjbGllbnQsIGtleSwgbmV3QmFsYW5jZSkgewogIGNvbnNvbGUubG9nKAogICAgYFN0b3JpbmcgcHJldmlvdXMgYmFsYW5jZSB1bmRlciBrZXk6ICR7a2V5fSwgdmFsdWU6ICR7bmV3QmFsYW5jZS50b1N0cmluZygpfWAsCiAgKTsKICBjb25zdCBib2R5ID0gewogICAgZGVsZXRlczogW10sCiAgICBzZWNyZXRzOiB7CiAgICAgIFtrZXldOiBuZXdCYWxhbmNlLnRvU3RyaW5nKCksCiAgICB9LAogIH07CiAgYXdhaXQgY2xpZW50LmFjdGlvbi5jcmVhdGVTZWNyZXRzKGJvZHkpOwp9CgpmdW5jdGlvbiBjcmVhdGVQcm92aWRlcihhcGlLZXksIGFwaVNlY3JldCwgcmVsYXllckFwaUtleSwgcmVsYXllckFwaVNlY3JldCkgewogIGNvbnNvbGUubG9nKGBDcmVhdGluZyBwcm92aWRlciB3aXRoIEFQSSBrZXlzYCk7CiAgY29uc3QgY2xpZW50ID0gbmV3IERlZmVuZGVyKHsKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHJlbGF5ZXJBcGlLZXksCiAgICByZWxheWVyQXBpU2VjcmV0LAogIH0pOwoKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnNvbGUubG9nKGBTdGFydGluZyBiYWxhbmNlIG1vbml0b3JpbmcgZm9yIEwxYCk7CgogIGNvbnN0IGwxUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcigKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHRhaWtvTDFBcGlLZXksCiAgICB0YWlrb0wxQXBpU2VjcmV0LAogICk7CgogIGNvbnN0IGwxVmF1bHRBZGRyZXNzID0gIjB4OTk2MjgyY0ExMUU1REViNkI1RDEyMkNDM0I5QTFGY0FBRDQ0MTVBYiI7CgogIGNvbnN0IGwxVG9rZW5BZGRyZXNzZXMgPSB7CiAgICBFVEg6IG51bGwsCiAgICBUQUlLTzogZXRoZXJzLnV0aWxzLmdldEFkZHJlc3MoCiAgICAgICIweDEwZGVhNjc0NzhjNUY4QzVFMkQ5MGU1RTlCMjZkQmU2MGM1NGQ4MDAiLAogICAgKSwKICAgIFVTREM6IGV0aGVycy51dGlscy5nZXRBZGRyZXNzKCIweEEwYjg2OTkxYzYyMThiMzZjMWQxOUQ0YTJlOUViMGNFMzYwNmVCNDgiKSwKICAgIFVTRFQ6IGV0aGVycy51dGlscy5nZXRBZGRyZXNzKCIweGRBQzE3Rjk1OEQyZWU1MjNhMjIwNjIwNjk5NDU5N0MxM0Q4MzFlYzciKSwKICB9OwoKICBjb25zdCBjbGllbnQgPSBuZXcgRGVmZW5kZXIoewogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgfSk7CgogIGF3YWl0IG1vbml0b3JUb2tlbkJhbGFuY2UoCiAgICBsMVByb3ZpZGVyLAogICAgbDFUb2tlbkFkZHJlc3Nlcy5FVEgsCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfRVRIIiwKICAgIG5vdGlmaWNhdGlvbkNsaWVudCwKICAgIGV2ZW50LnNlY3JldHMsCiAgICBjbGllbnQsCiAgICAiRVRIIiwKICAgICJMMSIsCiAgKTsKICBhd2FpdCBtb25pdG9yVG9rZW5CYWxhbmNlKAogICAgbDFQcm92aWRlciwKICAgIGwxVG9rZW5BZGRyZXNzZXMuVEFJS08sCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfVEFJS08iLAogICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgZXZlbnQuc2VjcmV0cywKICAgIGNsaWVudCwKICAgICJUQUlLTyIsCiAgICAiTDEiLAogICk7CiAgYXdhaXQgbW9uaXRvclRva2VuQmFsYW5jZSgKICAgIGwxUHJvdmlkZXIsCiAgICBsMVRva2VuQWRkcmVzc2VzLlVTREMsCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfVVNEQyIsCiAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICBldmVudC5zZWNyZXRzLAogICAgY2xpZW50LAogICAgIlVTREMiLAogICAgIkwxIiwKICApOwogIGF3YWl0IG1vbml0b3JUb2tlbkJhbGFuY2UoCiAgICBsMVByb3ZpZGVyLAogICAgbDFUb2tlbkFkZHJlc3Nlcy5VU0RULAogICAgbDFWYXVsdEFkZHJlc3MsCiAgICAicHJldmlvdXNCYWxhbmNlX0wxX1VTRFQiLAogICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgZXZlbnQuc2VjcmV0cywKICAgIGNsaWVudCwKICAgICJVU0RUIiwKICAgICJMMSIsCiAgKTsKCiAgY29uc29sZS5sb2coYEJhbGFuY2UgbW9uaXRvcmluZyBjb21wbGV0ZWRgKTsKCiAgcmV0dXJuIHRydWU7Cn07ClBLAQIUAAoAAAAAAAAAQVASVlLscBMAAHATAAAIAAAAAAAAAAAAAAAAAAAAAABpbmRleC5qc1BLBQYAAAAAAQABADYAAACWEwAAAAA="}]},"contracts":{"removed":[],"created":[],"updated":[]},"relayers":{"removed":[],"created":[],"updated":[],"relayerKeys":{"removed":[],"created":[],"updated":[]}},"notifications":{"removed":[],"created":[],"updated":[]},"secrets":{"removed":[],"created":[],"updated":[]},"blockExplorerApiKeys":{"removed":[],"created":[],"updated":[]},"forkedNetworks":{"removed":[],"created":[],"updated":[]},"privateNetworks":{"removed":[],"created":[],"updated":[]}} +{"stack":"mystack","timestamp":"2024-09-18T21:53:56.270Z","monitors":{"removed":[],"created":[],"updated":[{"skipABIValidation":true,"alertThreshold":null,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"Defender Monitor: TaikoL1: Pause/Unpause triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]}],"abi":"[{\"type\":\"error\",\"name\":\"AM_ADDRESS_ALREADY_SET\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"spender\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"approved\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ApprovalForAll\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"operationId\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"approvalBits\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"minGuardiansReached\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Authorized\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"authorized\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"BB_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_MINT_DISALLOWED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_CANNOT_RECEIVE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_BURN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockProposed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"assignedProver\",\"indexed\":true},{\"type\":\"uint96\",\"name\":\"livenessBond\",\"indexed\":false},{\"type\":\"tuple\",\"name\":\"meta\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"depositsProcessed\",\"indexed\":false,\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockVerified\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"stateRoot\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondCredited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondDebited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btokenOld\",\"indexed\":false},{\"type\":\"address\",\"name\":\"btokenNew\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"CalldataTxList\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"txList\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ChainDataSynced\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"kind\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"data\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ConflictingProofs\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"guardian\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"currentProofHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"newProofHash\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"provingPaused\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"fromDelegate\",\"indexed\":true},{\"type\":\"address\",\"name\":\"toDelegate\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegate\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"previousBalance\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"newBalance\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EIP712DomainChanged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EtherPaymentFailed\",\"inputs\":[{\"type\":\"address\",\"name\":\"to\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"maxGas\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardianApproval\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false},{\"type\":\"bytes\",\"name\":\"proofData\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardiansUpdated\",\"inputs\":[{\"type\":\"uint32\",\"name\":\"version\",\"indexed\":false},{\"type\":\"address[]\",\"name\":\"guardians\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_EXPIRED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"LocalReportCheckToggled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"checkLocalEnclaveReport\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"MAX_GAS_PAYING_PROVER\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageProcessed\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"stats\",\"indexed\":false,\"components\":[{\"type\":\"uint32\",\"name\":\"gasUsedInFeeCalc\"},{\"type\":\"uint32\",\"name\":\"proofSize\"},{\"type\":\"uint32\",\"name\":\"numCacheOps\"},{\"type\":\"bool\",\"name\":\"processedByRelayer\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageStatusChanged\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"uint8\",\"name\":\"status\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigratedTo\",\"inputs\":[{\"type\":\"address\",\"name\":\"fromToken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigrationStatusChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"inbound\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrEnclaveUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrEnclave\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrSignerUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrSigner\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"enabled\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingPaused\",\"inputs\":[{\"type\":\"bool\",\"name\":\"paused\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"QeIdentityConfigured\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"indexed\":false,\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"name\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumRemoved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"SignalSent\",\"inputs\":[{\"type\":\"address\",\"name\":\"app\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"slot\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"slotB\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TcbInfoJsonConfigured\",\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"indexed\":false,\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"canonicalChainId\",\"indexed\":false},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferBatch\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256[]\",\"name\":\"ids\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"values\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferSingle\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionContested\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"contester\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"contestBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionProved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"validityBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"URI\",\"inputs\":[{\"type\":\"string\",\"name\":\"value\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_DATA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_ECDSA_SIGNATURE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEAUTHDATA_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEREPORT_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_MEMBER_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_UNSUPPORT_CERTIFICATION_TYPE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INSUFFICIENT_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_CTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"allowance\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"approvals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"bytes32\",\"name\":\"proofHash\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"approvalBits\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\",\"name\":\"approved_\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"authorize\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_addr\"},{\"type\":\"bool\",\"name\":\"_authorize\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"id\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOfBatch\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"accounts\"},{\"type\":\"uint256[]\",\"name\":\"ids\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"batchTransfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"recipients\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_user\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"btokenDenylist\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"denied\"}]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"canonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btoken\"}]},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctoken\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"address\",\"name\":\"_btokenNew\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btokenOld_\"}]},{\"type\":\"function\",\"name\":\"changeMigrationStatus\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_migratingAddress\"},{\"type\":\"bool\",\"name\":\"_migratingInbound\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"checkLocalEnclaveReport\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"checkpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint32\",\"name\":\"pos\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint32\",\"name\":\"fromBlock\"},{\"type\":\"uint224\",\"name\":\"votes\"}]}]},{\"type\":\"function\",\"name\":\"clock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint48\"}]},{\"type\":\"function\",\"name\":\"configureQeIdentityJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"configureTcbInfoJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"context\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"name\":\"ctx_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"}]}]},{\"type\":\"function\",\"name\":\"decimals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint8\"}]},{\"type\":\"function\",\"name\":\"decodeCert\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"der\"},{\"type\":\"bool\",\"name\":\"isPckCert\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"tuple\",\"name\":\"cert\",\"components\":[{\"type\":\"uint256\",\"name\":\"notBefore\"},{\"type\":\"uint256\",\"name\":\"notAfter\"},{\"type\":\"bytes\",\"name\":\"serialNumber\"},{\"type\":\"bytes\",\"name\":\"tbsCertificate\"},{\"type\":\"bytes\",\"name\":\"pubKey\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bool\",\"name\":\"isPck\"},{\"type\":\"tuple\",\"name\":\"pck\",\"components\":[{\"type\":\"string\",\"name\":\"commonName\"},{\"type\":\"string\",\"name\":\"issuerName\"},{\"type\":\"tuple\",\"name\":\"sgxExtension\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint256[]\",\"name\":\"sgxTcbCompSvnArr\"}]}]}]}]},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"subtractedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"delegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegateBySig\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"},{\"type\":\"uint256\",\"name\":\"nonce\"},{\"type\":\"uint256\",\"name\":\"expiry\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegates\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"depositBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"eip712Domain\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes1\",\"name\":\"fields\"},{\"type\":\"string\",\"name\":\"name\"},{\"type\":\"string\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"verifyingContract\"},{\"type\":\"bytes32\",\"name\":\"salt\"},{\"type\":\"uint256[]\",\"name\":\"extensions\"}]},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"failMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getApproved\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"blk_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]}]},{\"type\":\"function\",\"name\":\"getConfig\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"uint64\",\"name\":\"blockMaxProposals\"},{\"type\":\"uint64\",\"name\":\"blockRingBufferSize\"},{\"type\":\"uint64\",\"name\":\"maxBlocksToVerify\"},{\"type\":\"uint32\",\"name\":\"blockMaxGasLimit\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint8\",\"name\":\"stateRootSyncInternal\"},{\"type\":\"bool\",\"name\":\"checkEOAForCalldataDA\"}]}]},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"dataLength\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"getMinTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getPastVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"getStateVariables\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"chainData_\"}]},{\"type\":\"function\",\"name\":\"getTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint16\",\"name\":\"_tierId\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"verifierName\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint24\",\"name\":\"cooldownWindow\"},{\"type\":\"uint16\",\"name\":\"provingWindow\"},{\"type\":\"uint8\",\"name\":\"maxBlocksToVerifyPerProof\"}]}]},{\"type\":\"function\",\"name\":\"getTierIds\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint16[]\",\"name\":\"tiers_\"}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"uint32\",\"name\":\"_tid\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_parentHash\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"prover_\"}]},{\"type\":\"function\",\"name\":\"getVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"guardianIds\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"guardian\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"id\"}]},{\"type\":\"function\",\"name\":\"guardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"hashAssignment\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_assignment\",\"components\":[{\"type\":\"address\",\"name\":\"feeToken\"},{\"type\":\"uint64\",\"name\":\"expiry\"},{\"type\":\"uint64\",\"name\":\"maxBlockId\"},{\"type\":\"uint64\",\"name\":\"maxProposedIn\"},{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"tuple[]\",\"name\":\"tierFees\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint128\",\"name\":\"fee\"}]},{\"type\":\"bytes\",\"name\":\"signature\"}]},{\"type\":\"address\",\"name\":\"_taikoL1Address\"},{\"type\":\"address\",\"name\":\"_blockProposer\"},{\"type\":\"address\",\"name\":\"_assignedProver\"},{\"type\":\"bytes32\",\"name\":\"_blobHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"hashMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"impl\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"addedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"bytes32\",\"name\":\"_genesisBlockHash\"},{\"type\":\"bool\",\"name\":\"_toPause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"sigVerifyLibAddr\"},{\"type\":\"address\",\"name\":\"pemCertLibAddr\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"uint8\",\"name\":\"_decimals\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init2\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"address\",\"name\":\"operator\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isAuthorized\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"addr\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"authorized\"}]},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"enabled_\"},{\"type\":\"address\",\"name\":\"destBridge_\"}]},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isSignalSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"timestamp\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"latestProofHash\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"blockId\"}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"hash\"}]},{\"type\":\"function\",\"name\":\"messageStatus\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status\"}]},{\"type\":\"function\",\"name\":\"migratingAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"migratingInbound\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"minGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mintBatch\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256[]\",\"name\":\"_tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"_amounts\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"nextMessageId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nonces\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"numGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"onBlockProposed\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_blk\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]},{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256[]\"},{\"type\":\"uint256[]\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC721Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"ownerOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseProving\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_pause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pemCertLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"permit\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"uint256\",\"name\":\"deadline\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"processMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status_\"},{\"type\":\"uint8\",\"name\":\"reason_\"}]},{\"type\":\"function\",\"name\":\"proposeBlock\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_params\"},{\"type\":\"bytes\",\"name\":\"_txList\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"meta_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"deposits_\",\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"function\",\"name\":\"proveBlock\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes\",\"name\":\"_input\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"numCacheOps_\"}]},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"qeIdentity\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"}]},{\"type\":\"function\",\"name\":\"recallMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"removeRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"retryMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bool\",\"name\":\"_isLastAttempt\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeBatchTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256[]\",\"name\":\"ids\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"id\"},{\"type\":\"uint256\",\"name\":\"amount\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"selfDelegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_anyToken\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sendMessage\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash_\"},{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendSignal\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256[]\",\"name\":\"tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256\",\"name\":\"amount\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"serialNumIsRevoked\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"idx\"},{\"type\":\"bytes\",\"name\":\"serialNum\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"revoked\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"operator\"},{\"type\":\"bool\",\"name\":\"approved\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setGuardians\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_newGuardians\"},{\"type\":\"uint8\",\"name\":\"_minGuardians\"},{\"type\":\"bool\",\"name\":\"_clearData\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrEnclave\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrEnclave\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrSigner\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrSigner\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sigVerifyLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"signalForChainData\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"source\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"splitCertificateChain\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"pemChain\"},{\"type\":\"uint256\",\"name\":\"size\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"bytes[]\",\"name\":\"certs\"}]},{\"type\":\"function\",\"name\":\"srcChainId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"srcToken\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"state\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"__reserve1\"},{\"type\":\"tuple\",\"name\":\"slotA\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"name\":\"slotB\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"supportsInterface\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes4\",\"name\":\"_interfaceId\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"syncChainData\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"tcbInfo\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"}],\"outputs\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"}]},{\"type\":\"function\",\"name\":\"toggleLocalReportCheck\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"tokenURI\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"topBlockId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"kind\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId\"}]},{\"type\":\"function\",\"name\":\"totalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"transfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"trustedUserMrEnclave\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"enclave\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"trustedUserMrSigner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"signer\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"uri\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"verifyAttestation\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"}]},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_maxBlocksToVerify\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyES256Signature\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"tbs\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bytes\",\"name\":\"publicKey\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"sigValid\"}]},{\"type\":\"function\",\"name\":\"verifyParsedQuote\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"v3quote\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"bool\"},{\"type\":\"bytes\"}]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"version\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"withdrawBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"constructor\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"es256Verifier\"}]}]","addresses":["0x02772b7B3a5Bea0141C993Dbb8D0733C19F46169","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0x39E4C1214e733639d059979079A151911e42791d","0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0x579f40D0BE111b823962043702cabe6Aaa290780","0x67281b15aee4d6b805bc755e439abd524dd8da8d","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0xa25e645ff9897b0282e5f17d36de5bca4ec21d6e","0xaf145913EA4a56BE22E120ED9C24589659881702","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0xc4096E9ff1526Bd1840B65e9f45695135aC12De7","0xcc5d488073FA918cBbd73B9A523F3858C4de7372","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC"]}],"createdAt":"2024-08-27T09:44:01.744Z","subscriberId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","name":"TaikoL1: Pause/Unpause","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","blockWatcherId":"mainnet-6","paused":false,"stackResourceId":"mystack.taiko-l-1-pause-unpause","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"LOW","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet SGX Prover triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceAdded(uint256,address,address,uint256)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceDeleted(uint256,address)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[{"functionSignature":"verifyProof((bytes32,bytes32,address,uint64,bool,bool,address),(bytes32,bytes32,bytes32,bytes32),(uint16,bytes))","expression":null}],"eventConditions":[]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]}]","addresses":["0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81"]}],"createdAt":"2024-05-02T14:09:42.804Z","subscriberId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","name":"Taiko Mainnet SGX Prover","network":"mainnet","riskCategory":"TECHNICAL","monitorId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-sgx-prover","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Address Managers triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AddressSet(uint64,bytes32,address,address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x579f40D0BE111b823962043702cabe6Aaa290780"]}],"createdAt":"2024-05-02T14:00:18.874Z","subscriberId":"3919cb83-487f-4432-88fa-33bbe4361fce","name":"Taiko Mainnet Address Managers","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"3919cb83-487f-4432-88fa-33bbe4361fce","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-address-managers","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Essential Contracts triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AdminChanged(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"BeaconUpgraded(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Initialized(uint8)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferStarted(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferred(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Upgraded(address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0xaf145913EA4a56BE22E120ED9C24589659881702","0x579f40D0BE111b823962043702cabe6Aaa290780","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3"]}],"createdAt":"2024-05-02T13:49:54.192Z","subscriberId":"67a53521-3d4a-4de4-92ab-ede82cc45644","name":"Taiko Mainnet Essential Contracts","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"67a53521-3d4a-4de4-92ab-ede82cc45644","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-essential-contracts","type":"BLOCK"}]},"actions":{"removed":[],"created":[],"updated":[{"autotaskId":"86964fd3-3da8-4501-a572-cbf51045f861","actionId":"86964fd3-3da8-4501-a572-cbf51045f861","name":"ERC20Vault: Balance Drop","paused":false,"trigger":{"cron":null,"frequencyMinutes":15,"type":"schedule"},"codeDigest":"+Y75bpyOzEuCm0y95ZczKkySm4PgLyQQt6ASpaB08Lk=","stackResourceId":"mystack.erc-20-vault-balance-drop","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVASVlLscBMAAHATAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBFUkMyMF9BQkkgPSBbCiAgewogICAgY29uc3RhbnQ6IHRydWUsCiAgICBpbnB1dHM6IFt7IG5hbWU6ICJfb3duZXIiLCB0eXBlOiAiYWRkcmVzcyIgfV0sCiAgICBuYW1lOiAiYmFsYW5jZU9mIiwKICAgIG91dHB1dHM6IFt7IG5hbWU6ICJiYWxhbmNlIiwgdHlwZTogInVpbnQyNTYiIH1dLAogICAgcGF5YWJsZTogZmFsc2UsCiAgICBzdGF0ZU11dGFiaWxpdHk6ICJ2aWV3IiwKICAgIHR5cGU6ICJmdW5jdGlvbiIsCiAgfSwKXTsKCmFzeW5jIGZ1bmN0aW9uIGdldEVSQzIwQmFsYW5jZShwcm92aWRlciwgdG9rZW5BZGRyZXNzLCB2YXVsdEFkZHJlc3MpIHsKICBjb25zdCBjb250cmFjdCA9IG5ldyBldGhlcnMuQ29udHJhY3QodG9rZW5BZGRyZXNzLCBFUkMyMF9BQkksIHByb3ZpZGVyKTsKICByZXR1cm4gYXdhaXQgY29udHJhY3QuYmFsYW5jZU9mKHZhdWx0QWRkcmVzcyk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldE5hdGl2ZVRva2VuQmFsYW5jZShwcm92aWRlciwgdmF1bHRBZGRyZXNzKSB7CiAgcmV0dXJuIGF3YWl0IHByb3ZpZGVyLmdldEJhbGFuY2UodmF1bHRBZGRyZXNzKTsKfQoKYXN5bmMgZnVuY3Rpb24gbW9uaXRvclRva2VuQmFsYW5jZSgKICBwcm92aWRlciwKICB0b2tlbkFkZHJlc3MsCiAgdmF1bHRBZGRyZXNzLAogIHByZXZpb3VzQmFsYW5jZUtleSwKICBub3RpZmljYXRpb25DbGllbnQsCiAgc2VjcmV0cywKICBjbGllbnQsCiAgdG9rZW5OYW1lLAogIG5ldHdvcmtOYW1lLAopIHsKICBjb25zb2xlLmxvZyhgTW9uaXRvcmluZyAke3Rva2VuTmFtZX0gYmFsYW5jZSBvbiAke25ldHdvcmtOYW1lfWApOwogIGNvbnN0IHByZXZpb3VzQmFsYW5jZSA9IGV0aGVycy5CaWdOdW1iZXIuZnJvbSgKICAgIHNlY3JldHNbcHJldmlvdXNCYWxhbmNlS2V5XSB8fCAiMCIsCiAgKTsKICBjb25zb2xlLmxvZygKICAgIGBQcmV2aW91cyAke3Rva2VuTmFtZX0gQmFsYW5jZTogJHtldGhlcnMudXRpbHMuZm9ybWF0VW5pdHMoCiAgICAgIHByZXZpb3VzQmFsYW5jZSwKICAgICAgMTgsCiAgICApfWAsCiAgKTsKCiAgbGV0IGN1cnJlbnRCYWxhbmNlOwogIGlmICh0b2tlbk5hbWUgPT09ICJFVEgiKSB7CiAgICBjdXJyZW50QmFsYW5jZSA9IGF3YWl0IGdldE5hdGl2ZVRva2VuQmFsYW5jZShwcm92aWRlciwgdmF1bHRBZGRyZXNzKTsKICB9IGVsc2UgewogICAgY3VycmVudEJhbGFuY2UgPSBhd2FpdCBnZXRFUkMyMEJhbGFuY2UoCiAgICAgIHByb3ZpZGVyLAogICAgICB0b2tlbkFkZHJlc3MsCiAgICAgIHZhdWx0QWRkcmVzcywKICAgICk7CiAgfQogIGNvbnNvbGUubG9nKAogICAgYEN1cnJlbnQgJHt0b2tlbk5hbWV9IEJhbGFuY2U6ICR7ZXRoZXJzLnV0aWxzLmZvcm1hdFVuaXRzKAogICAgICBjdXJyZW50QmFsYW5jZSwKICAgICAgMTgsCiAgICApfWAsCiAgKTsKCiAgaWYgKCFwcmV2aW91c0JhbGFuY2UuaXNaZXJvKCkpIHsKICAgIGNvbnN0IGRyb3BQZXJjZW50YWdlID0gcHJldmlvdXNCYWxhbmNlCiAgICAgIC5zdWIoY3VycmVudEJhbGFuY2UpCiAgICAgIC5tdWwoMTAwKQogICAgICAuZGl2KHByZXZpb3VzQmFsYW5jZSkKICAgICAgLnRvTnVtYmVyKCk7CiAgICBjb25zb2xlLmxvZygKICAgICAgYENhbGN1bGF0ZWQgZHJvcCBwZXJjZW50YWdlIGZvciAke3Rva2VuTmFtZX06ICR7ZHJvcFBlcmNlbnRhZ2V9JWAsCiAgICApOwoKICAgIGlmIChkcm9wUGVyY2VudGFnZSA+PSA1KSB7CiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQWxlcnQ6ICR7dG9rZW5OYW1lfSBiYWxhbmNlIGhhcyBkcm9wcGVkIGJ5ICR7ZHJvcFBlcmNlbnRhZ2V9JSBvbiAke25ldHdvcmtOYW1lfS5cblByZXZpb3VzIEJhbGFuY2U6ICR7ZXRoZXJzLnV0aWxzLmZvcm1hdFVuaXRzKAogICAgICAgIHByZXZpb3VzQmFsYW5jZSwKICAgICAgICAxOCwKICAgICAgKX1cbkN1cnJlbnQgQmFsYW5jZTogJHtldGhlcnMudXRpbHMuZm9ybWF0VW5pdHMoY3VycmVudEJhbGFuY2UsIDE4KX1gOwogICAgICBhbGVydE9yZygKICAgICAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICAgICAgYOKaoO+4jyAke25ldHdvcmtOYW1lfTogJHt0b2tlbk5hbWV9IEJhbGFuY2UgRHJvcCBBbGVydGAsCiAgICAgICAgbWVzc2FnZSwKICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnNvbGUubG9nKAogICAgICAgIGBObyBzaWduaWZpY2FudCAke3Rva2VuTmFtZX0gYmFsYW5jZSBkcm9wIGRldGVjdGVkIG9uICR7bmV0d29ya05hbWV9YCwKICAgICAgKTsKICAgIH0KICB9IGVsc2UgewogICAgY29uc29sZS5sb2coCiAgICAgIGBObyBwcmV2aW91cyAke3Rva2VuTmFtZX0gYmFsYW5jZSB0byBjb21wYXJlIG9uICR7bmV0d29ya05hbWV9YCwKICAgICk7CiAgfQoKICBhd2FpdCBzdG9yZVByZXZpb3VzQmFsYW5jZShjbGllbnQsIHByZXZpb3VzQmFsYW5jZUtleSwgY3VycmVudEJhbGFuY2UpOwp9CgpmdW5jdGlvbiBhbGVydE9yZyhub3RpZmljYXRpb25DbGllbnQsIHN1YmplY3QsIG1lc3NhZ2UpIHsKICBub3RpZmljYXRpb25DbGllbnQuc2VuZCh7CiAgICBjaGFubmVsQWxpYXM6ICJkaXNjb3JkX2JyaWRnaW5nIiwKICAgIHN1YmplY3QsCiAgICBtZXNzYWdlLAogIH0pOwp9Cgphc3luYyBmdW5jdGlvbiBzdG9yZVByZXZpb3VzQmFsYW5jZShjbGllbnQsIGtleSwgbmV3QmFsYW5jZSkgewogIGNvbnNvbGUubG9nKAogICAgYFN0b3JpbmcgcHJldmlvdXMgYmFsYW5jZSB1bmRlciBrZXk6ICR7a2V5fSwgdmFsdWU6ICR7bmV3QmFsYW5jZS50b1N0cmluZygpfWAsCiAgKTsKICBjb25zdCBib2R5ID0gewogICAgZGVsZXRlczogW10sCiAgICBzZWNyZXRzOiB7CiAgICAgIFtrZXldOiBuZXdCYWxhbmNlLnRvU3RyaW5nKCksCiAgICB9LAogIH07CiAgYXdhaXQgY2xpZW50LmFjdGlvbi5jcmVhdGVTZWNyZXRzKGJvZHkpOwp9CgpmdW5jdGlvbiBjcmVhdGVQcm92aWRlcihhcGlLZXksIGFwaVNlY3JldCwgcmVsYXllckFwaUtleSwgcmVsYXllckFwaVNlY3JldCkgewogIGNvbnNvbGUubG9nKGBDcmVhdGluZyBwcm92aWRlciB3aXRoIEFQSSBrZXlzYCk7CiAgY29uc3QgY2xpZW50ID0gbmV3IERlZmVuZGVyKHsKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHJlbGF5ZXJBcGlLZXksCiAgICByZWxheWVyQXBpU2VjcmV0LAogIH0pOwoKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnNvbGUubG9nKGBTdGFydGluZyBiYWxhbmNlIG1vbml0b3JpbmcgZm9yIEwxYCk7CgogIGNvbnN0IGwxUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcigKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHRhaWtvTDFBcGlLZXksCiAgICB0YWlrb0wxQXBpU2VjcmV0LAogICk7CgogIGNvbnN0IGwxVmF1bHRBZGRyZXNzID0gIjB4OTk2MjgyY0ExMUU1REViNkI1RDEyMkNDM0I5QTFGY0FBRDQ0MTVBYiI7CgogIGNvbnN0IGwxVG9rZW5BZGRyZXNzZXMgPSB7CiAgICBFVEg6IG51bGwsCiAgICBUQUlLTzogZXRoZXJzLnV0aWxzLmdldEFkZHJlc3MoCiAgICAgICIweDEwZGVhNjc0NzhjNUY4QzVFMkQ5MGU1RTlCMjZkQmU2MGM1NGQ4MDAiLAogICAgKSwKICAgIFVTREM6IGV0aGVycy51dGlscy5nZXRBZGRyZXNzKCIweEEwYjg2OTkxYzYyMThiMzZjMWQxOUQ0YTJlOUViMGNFMzYwNmVCNDgiKSwKICAgIFVTRFQ6IGV0aGVycy51dGlscy5nZXRBZGRyZXNzKCIweGRBQzE3Rjk1OEQyZWU1MjNhMjIwNjIwNjk5NDU5N0MxM0Q4MzFlYzciKSwKICB9OwoKICBjb25zdCBjbGllbnQgPSBuZXcgRGVmZW5kZXIoewogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgfSk7CgogIGF3YWl0IG1vbml0b3JUb2tlbkJhbGFuY2UoCiAgICBsMVByb3ZpZGVyLAogICAgbDFUb2tlbkFkZHJlc3Nlcy5FVEgsCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfRVRIIiwKICAgIG5vdGlmaWNhdGlvbkNsaWVudCwKICAgIGV2ZW50LnNlY3JldHMsCiAgICBjbGllbnQsCiAgICAiRVRIIiwKICAgICJMMSIsCiAgKTsKICBhd2FpdCBtb25pdG9yVG9rZW5CYWxhbmNlKAogICAgbDFQcm92aWRlciwKICAgIGwxVG9rZW5BZGRyZXNzZXMuVEFJS08sCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfVEFJS08iLAogICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgZXZlbnQuc2VjcmV0cywKICAgIGNsaWVudCwKICAgICJUQUlLTyIsCiAgICAiTDEiLAogICk7CiAgYXdhaXQgbW9uaXRvclRva2VuQmFsYW5jZSgKICAgIGwxUHJvdmlkZXIsCiAgICBsMVRva2VuQWRkcmVzc2VzLlVTREMsCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfVVNEQyIsCiAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICBldmVudC5zZWNyZXRzLAogICAgY2xpZW50LAogICAgIlVTREMiLAogICAgIkwxIiwKICApOwogIGF3YWl0IG1vbml0b3JUb2tlbkJhbGFuY2UoCiAgICBsMVByb3ZpZGVyLAogICAgbDFUb2tlbkFkZHJlc3Nlcy5VU0RULAogICAgbDFWYXVsdEFkZHJlc3MsCiAgICAicHJldmlvdXNCYWxhbmNlX0wxX1VTRFQiLAogICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgZXZlbnQuc2VjcmV0cywKICAgIGNsaWVudCwKICAgICJVU0RUIiwKICAgICJMMSIsCiAgKTsKCiAgY29uc29sZS5sb2coYEJhbGFuY2UgbW9uaXRvcmluZyBjb21wbGV0ZWRgKTsKCiAgcmV0dXJuIHRydWU7Cn07ClBLAQIUAAoAAAAAAAAAQVASVlLscBMAAHATAAAIAAAAAAAAAAAAAAAAAAAAAABpbmRleC5qc1BLBQYAAAAAAQABADYAAACWEwAAAAA="}]},"contracts":{"removed":[],"created":[],"updated":[]},"relayers":{"removed":[],"created":[],"updated":[],"relayerKeys":{"removed":[],"created":[],"updated":[]}},"notifications":{"removed":[],"created":[],"updated":[]},"secrets":{"removed":[],"created":[],"updated":[]},"blockExplorerApiKeys":{"removed":[],"created":[],"updated":[]},"forkedNetworks":{"removed":[],"created":[],"updated":[]},"privateNetworks":{"removed":[],"created":[],"updated":[]}} +{"stack":"mystack","timestamp":"2024-09-19T10:45:56.109Z","monitors":{"removed":[],"created":[],"updated":[{"skipABIValidation":true,"alertThreshold":null,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"Defender Monitor: TaikoL1: Pause/Unpause triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]}],"abi":"[{\"type\":\"error\",\"name\":\"AM_ADDRESS_ALREADY_SET\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"spender\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"approved\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ApprovalForAll\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"operationId\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"approvalBits\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"minGuardiansReached\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Authorized\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"authorized\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"BB_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_MINT_DISALLOWED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_CANNOT_RECEIVE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_BURN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockProposed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"assignedProver\",\"indexed\":true},{\"type\":\"uint96\",\"name\":\"livenessBond\",\"indexed\":false},{\"type\":\"tuple\",\"name\":\"meta\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"depositsProcessed\",\"indexed\":false,\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockVerified\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"stateRoot\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondCredited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondDebited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btokenOld\",\"indexed\":false},{\"type\":\"address\",\"name\":\"btokenNew\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"CalldataTxList\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"txList\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ChainDataSynced\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"kind\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"data\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ConflictingProofs\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"guardian\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"currentProofHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"newProofHash\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"provingPaused\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"fromDelegate\",\"indexed\":true},{\"type\":\"address\",\"name\":\"toDelegate\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegate\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"previousBalance\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"newBalance\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EIP712DomainChanged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EtherPaymentFailed\",\"inputs\":[{\"type\":\"address\",\"name\":\"to\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"maxGas\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardianApproval\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false},{\"type\":\"bytes\",\"name\":\"proofData\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardiansUpdated\",\"inputs\":[{\"type\":\"uint32\",\"name\":\"version\",\"indexed\":false},{\"type\":\"address[]\",\"name\":\"guardians\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_EXPIRED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"LocalReportCheckToggled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"checkLocalEnclaveReport\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"MAX_GAS_PAYING_PROVER\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageProcessed\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"stats\",\"indexed\":false,\"components\":[{\"type\":\"uint32\",\"name\":\"gasUsedInFeeCalc\"},{\"type\":\"uint32\",\"name\":\"proofSize\"},{\"type\":\"uint32\",\"name\":\"numCacheOps\"},{\"type\":\"bool\",\"name\":\"processedByRelayer\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageStatusChanged\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"uint8\",\"name\":\"status\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigratedTo\",\"inputs\":[{\"type\":\"address\",\"name\":\"fromToken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigrationStatusChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"inbound\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrEnclaveUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrEnclave\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrSignerUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrSigner\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"enabled\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingPaused\",\"inputs\":[{\"type\":\"bool\",\"name\":\"paused\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"QeIdentityConfigured\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"indexed\":false,\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"name\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumRemoved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"SignalSent\",\"inputs\":[{\"type\":\"address\",\"name\":\"app\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"slot\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"slotB\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TcbInfoJsonConfigured\",\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"indexed\":false,\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"canonicalChainId\",\"indexed\":false},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferBatch\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256[]\",\"name\":\"ids\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"values\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferSingle\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionContested\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"contester\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"contestBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionProved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"validityBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"URI\",\"inputs\":[{\"type\":\"string\",\"name\":\"value\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_DATA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_ECDSA_SIGNATURE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEAUTHDATA_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEREPORT_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_MEMBER_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_UNSUPPORT_CERTIFICATION_TYPE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INSUFFICIENT_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_CTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"allowance\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"approvals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"bytes32\",\"name\":\"proofHash\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"approvalBits\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\",\"name\":\"approved_\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"authorize\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_addr\"},{\"type\":\"bool\",\"name\":\"_authorize\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"id\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOfBatch\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"accounts\"},{\"type\":\"uint256[]\",\"name\":\"ids\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"batchTransfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"recipients\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_user\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"btokenDenylist\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"denied\"}]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"canonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btoken\"}]},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctoken\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"address\",\"name\":\"_btokenNew\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btokenOld_\"}]},{\"type\":\"function\",\"name\":\"changeMigrationStatus\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_migratingAddress\"},{\"type\":\"bool\",\"name\":\"_migratingInbound\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"checkLocalEnclaveReport\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"checkpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint32\",\"name\":\"pos\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint32\",\"name\":\"fromBlock\"},{\"type\":\"uint224\",\"name\":\"votes\"}]}]},{\"type\":\"function\",\"name\":\"clock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint48\"}]},{\"type\":\"function\",\"name\":\"configureQeIdentityJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"configureTcbInfoJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"context\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"name\":\"ctx_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"}]}]},{\"type\":\"function\",\"name\":\"decimals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint8\"}]},{\"type\":\"function\",\"name\":\"decodeCert\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"der\"},{\"type\":\"bool\",\"name\":\"isPckCert\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"tuple\",\"name\":\"cert\",\"components\":[{\"type\":\"uint256\",\"name\":\"notBefore\"},{\"type\":\"uint256\",\"name\":\"notAfter\"},{\"type\":\"bytes\",\"name\":\"serialNumber\"},{\"type\":\"bytes\",\"name\":\"tbsCertificate\"},{\"type\":\"bytes\",\"name\":\"pubKey\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bool\",\"name\":\"isPck\"},{\"type\":\"tuple\",\"name\":\"pck\",\"components\":[{\"type\":\"string\",\"name\":\"commonName\"},{\"type\":\"string\",\"name\":\"issuerName\"},{\"type\":\"tuple\",\"name\":\"sgxExtension\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint256[]\",\"name\":\"sgxTcbCompSvnArr\"}]}]}]}]},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"subtractedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"delegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegateBySig\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"},{\"type\":\"uint256\",\"name\":\"nonce\"},{\"type\":\"uint256\",\"name\":\"expiry\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegates\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"depositBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"eip712Domain\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes1\",\"name\":\"fields\"},{\"type\":\"string\",\"name\":\"name\"},{\"type\":\"string\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"verifyingContract\"},{\"type\":\"bytes32\",\"name\":\"salt\"},{\"type\":\"uint256[]\",\"name\":\"extensions\"}]},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"failMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getApproved\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"blk_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]}]},{\"type\":\"function\",\"name\":\"getConfig\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"uint64\",\"name\":\"blockMaxProposals\"},{\"type\":\"uint64\",\"name\":\"blockRingBufferSize\"},{\"type\":\"uint64\",\"name\":\"maxBlocksToVerify\"},{\"type\":\"uint32\",\"name\":\"blockMaxGasLimit\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint8\",\"name\":\"stateRootSyncInternal\"},{\"type\":\"bool\",\"name\":\"checkEOAForCalldataDA\"}]}]},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"dataLength\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"getMinTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getPastVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"getStateVariables\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"chainData_\"}]},{\"type\":\"function\",\"name\":\"getTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint16\",\"name\":\"_tierId\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"verifierName\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint24\",\"name\":\"cooldownWindow\"},{\"type\":\"uint16\",\"name\":\"provingWindow\"},{\"type\":\"uint8\",\"name\":\"maxBlocksToVerifyPerProof\"}]}]},{\"type\":\"function\",\"name\":\"getTierIds\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint16[]\",\"name\":\"tiers_\"}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"uint32\",\"name\":\"_tid\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_parentHash\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"prover_\"}]},{\"type\":\"function\",\"name\":\"getVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"guardianIds\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"guardian\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"id\"}]},{\"type\":\"function\",\"name\":\"guardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"hashAssignment\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_assignment\",\"components\":[{\"type\":\"address\",\"name\":\"feeToken\"},{\"type\":\"uint64\",\"name\":\"expiry\"},{\"type\":\"uint64\",\"name\":\"maxBlockId\"},{\"type\":\"uint64\",\"name\":\"maxProposedIn\"},{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"tuple[]\",\"name\":\"tierFees\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint128\",\"name\":\"fee\"}]},{\"type\":\"bytes\",\"name\":\"signature\"}]},{\"type\":\"address\",\"name\":\"_taikoL1Address\"},{\"type\":\"address\",\"name\":\"_blockProposer\"},{\"type\":\"address\",\"name\":\"_assignedProver\"},{\"type\":\"bytes32\",\"name\":\"_blobHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"hashMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"impl\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"addedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"bytes32\",\"name\":\"_genesisBlockHash\"},{\"type\":\"bool\",\"name\":\"_toPause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"sigVerifyLibAddr\"},{\"type\":\"address\",\"name\":\"pemCertLibAddr\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"uint8\",\"name\":\"_decimals\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init2\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"address\",\"name\":\"operator\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isAuthorized\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"addr\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"authorized\"}]},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"enabled_\"},{\"type\":\"address\",\"name\":\"destBridge_\"}]},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isSignalSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"timestamp\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"latestProofHash\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"blockId\"}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"hash\"}]},{\"type\":\"function\",\"name\":\"messageStatus\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status\"}]},{\"type\":\"function\",\"name\":\"migratingAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"migratingInbound\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"minGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mintBatch\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256[]\",\"name\":\"_tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"_amounts\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"nextMessageId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nonces\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"numGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"onBlockProposed\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_blk\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]},{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256[]\"},{\"type\":\"uint256[]\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC721Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"ownerOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseProving\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_pause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pemCertLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"permit\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"uint256\",\"name\":\"deadline\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"processMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status_\"},{\"type\":\"uint8\",\"name\":\"reason_\"}]},{\"type\":\"function\",\"name\":\"proposeBlock\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_params\"},{\"type\":\"bytes\",\"name\":\"_txList\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"meta_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"deposits_\",\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"function\",\"name\":\"proveBlock\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes\",\"name\":\"_input\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"numCacheOps_\"}]},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"qeIdentity\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"}]},{\"type\":\"function\",\"name\":\"recallMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"removeRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"retryMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bool\",\"name\":\"_isLastAttempt\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeBatchTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256[]\",\"name\":\"ids\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"id\"},{\"type\":\"uint256\",\"name\":\"amount\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"selfDelegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_anyToken\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sendMessage\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash_\"},{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendSignal\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256[]\",\"name\":\"tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256\",\"name\":\"amount\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"serialNumIsRevoked\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"idx\"},{\"type\":\"bytes\",\"name\":\"serialNum\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"revoked\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"operator\"},{\"type\":\"bool\",\"name\":\"approved\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setGuardians\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_newGuardians\"},{\"type\":\"uint8\",\"name\":\"_minGuardians\"},{\"type\":\"bool\",\"name\":\"_clearData\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrEnclave\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrEnclave\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrSigner\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrSigner\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sigVerifyLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"signalForChainData\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"source\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"splitCertificateChain\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"pemChain\"},{\"type\":\"uint256\",\"name\":\"size\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"bytes[]\",\"name\":\"certs\"}]},{\"type\":\"function\",\"name\":\"srcChainId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"srcToken\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"state\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"__reserve1\"},{\"type\":\"tuple\",\"name\":\"slotA\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"name\":\"slotB\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"supportsInterface\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes4\",\"name\":\"_interfaceId\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"syncChainData\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"tcbInfo\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"}],\"outputs\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"}]},{\"type\":\"function\",\"name\":\"toggleLocalReportCheck\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"tokenURI\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"topBlockId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"kind\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId\"}]},{\"type\":\"function\",\"name\":\"totalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"transfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"trustedUserMrEnclave\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"enclave\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"trustedUserMrSigner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"signer\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"uri\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"verifyAttestation\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"}]},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_maxBlocksToVerify\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyES256Signature\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"tbs\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bytes\",\"name\":\"publicKey\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"sigValid\"}]},{\"type\":\"function\",\"name\":\"verifyParsedQuote\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"v3quote\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"bool\"},{\"type\":\"bytes\"}]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"version\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"withdrawBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"constructor\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"es256Verifier\"}]}]","addresses":["0x02772b7B3a5Bea0141C993Dbb8D0733C19F46169","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0x39E4C1214e733639d059979079A151911e42791d","0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0x579f40D0BE111b823962043702cabe6Aaa290780","0x67281b15aee4d6b805bc755e439abd524dd8da8d","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0xa25e645ff9897b0282e5f17d36de5bca4ec21d6e","0xaf145913EA4a56BE22E120ED9C24589659881702","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0xc4096E9ff1526Bd1840B65e9f45695135aC12De7","0xcc5d488073FA918cBbd73B9A523F3858C4de7372","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC"]}],"createdAt":"2024-08-27T09:44:01.744Z","subscriberId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","name":"TaikoL1: Pause/Unpause","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","blockWatcherId":"mainnet-6","paused":false,"stackResourceId":"mystack.taiko-l-1-pause-unpause","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"LOW","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet SGX Prover triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceAdded(uint256,address,address,uint256)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceDeleted(uint256,address)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[{"functionSignature":"verifyProof((bytes32,bytes32,address,uint64,bool,bool,address),(bytes32,bytes32,bytes32,bytes32),(uint16,bytes))","expression":null}],"eventConditions":[]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]}]","addresses":["0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81"]}],"createdAt":"2024-05-02T14:09:42.804Z","subscriberId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","name":"Taiko Mainnet SGX Prover","network":"mainnet","riskCategory":"TECHNICAL","monitorId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-sgx-prover","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Address Managers triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AddressSet(uint64,bytes32,address,address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x579f40D0BE111b823962043702cabe6Aaa290780"]}],"createdAt":"2024-05-02T14:00:18.874Z","subscriberId":"3919cb83-487f-4432-88fa-33bbe4361fce","name":"Taiko Mainnet Address Managers","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"3919cb83-487f-4432-88fa-33bbe4361fce","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-address-managers","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Essential Contracts triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AdminChanged(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"BeaconUpgraded(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Initialized(uint8)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferStarted(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferred(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Upgraded(address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0xaf145913EA4a56BE22E120ED9C24589659881702","0x579f40D0BE111b823962043702cabe6Aaa290780","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3"]}],"createdAt":"2024-05-02T13:49:54.192Z","subscriberId":"67a53521-3d4a-4de4-92ab-ede82cc45644","name":"Taiko Mainnet Essential Contracts","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"67a53521-3d4a-4de4-92ab-ede82cc45644","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-essential-contracts","type":"BLOCK"}]},"actions":{"removed":[],"created":[],"updated":[{"autotaskId":"86964fd3-3da8-4501-a572-cbf51045f861","actionId":"86964fd3-3da8-4501-a572-cbf51045f861","name":"ERC20Vault: Balance Drop Test","paused":false,"trigger":{"cron":null,"frequencyMinutes":15,"type":"schedule"},"codeDigest":"+Y75bpyOzEuCm0y95ZczKkySm4PgLyQQt6ASpaB08Lk=","stackResourceId":"mystack.erc-20-vault-balance-drop","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVASVlLscBMAAHATAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBFUkMyMF9BQkkgPSBbCiAgewogICAgY29uc3RhbnQ6IHRydWUsCiAgICBpbnB1dHM6IFt7IG5hbWU6ICJfb3duZXIiLCB0eXBlOiAiYWRkcmVzcyIgfV0sCiAgICBuYW1lOiAiYmFsYW5jZU9mIiwKICAgIG91dHB1dHM6IFt7IG5hbWU6ICJiYWxhbmNlIiwgdHlwZTogInVpbnQyNTYiIH1dLAogICAgcGF5YWJsZTogZmFsc2UsCiAgICBzdGF0ZU11dGFiaWxpdHk6ICJ2aWV3IiwKICAgIHR5cGU6ICJmdW5jdGlvbiIsCiAgfSwKXTsKCmFzeW5jIGZ1bmN0aW9uIGdldEVSQzIwQmFsYW5jZShwcm92aWRlciwgdG9rZW5BZGRyZXNzLCB2YXVsdEFkZHJlc3MpIHsKICBjb25zdCBjb250cmFjdCA9IG5ldyBldGhlcnMuQ29udHJhY3QodG9rZW5BZGRyZXNzLCBFUkMyMF9BQkksIHByb3ZpZGVyKTsKICByZXR1cm4gYXdhaXQgY29udHJhY3QuYmFsYW5jZU9mKHZhdWx0QWRkcmVzcyk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldE5hdGl2ZVRva2VuQmFsYW5jZShwcm92aWRlciwgdmF1bHRBZGRyZXNzKSB7CiAgcmV0dXJuIGF3YWl0IHByb3ZpZGVyLmdldEJhbGFuY2UodmF1bHRBZGRyZXNzKTsKfQoKYXN5bmMgZnVuY3Rpb24gbW9uaXRvclRva2VuQmFsYW5jZSgKICBwcm92aWRlciwKICB0b2tlbkFkZHJlc3MsCiAgdmF1bHRBZGRyZXNzLAogIHByZXZpb3VzQmFsYW5jZUtleSwKICBub3RpZmljYXRpb25DbGllbnQsCiAgc2VjcmV0cywKICBjbGllbnQsCiAgdG9rZW5OYW1lLAogIG5ldHdvcmtOYW1lLAopIHsKICBjb25zb2xlLmxvZyhgTW9uaXRvcmluZyAke3Rva2VuTmFtZX0gYmFsYW5jZSBvbiAke25ldHdvcmtOYW1lfWApOwogIGNvbnN0IHByZXZpb3VzQmFsYW5jZSA9IGV0aGVycy5CaWdOdW1iZXIuZnJvbSgKICAgIHNlY3JldHNbcHJldmlvdXNCYWxhbmNlS2V5XSB8fCAiMCIsCiAgKTsKICBjb25zb2xlLmxvZygKICAgIGBQcmV2aW91cyAke3Rva2VuTmFtZX0gQmFsYW5jZTogJHtldGhlcnMudXRpbHMuZm9ybWF0VW5pdHMoCiAgICAgIHByZXZpb3VzQmFsYW5jZSwKICAgICAgMTgsCiAgICApfWAsCiAgKTsKCiAgbGV0IGN1cnJlbnRCYWxhbmNlOwogIGlmICh0b2tlbk5hbWUgPT09ICJFVEgiKSB7CiAgICBjdXJyZW50QmFsYW5jZSA9IGF3YWl0IGdldE5hdGl2ZVRva2VuQmFsYW5jZShwcm92aWRlciwgdmF1bHRBZGRyZXNzKTsKICB9IGVsc2UgewogICAgY3VycmVudEJhbGFuY2UgPSBhd2FpdCBnZXRFUkMyMEJhbGFuY2UoCiAgICAgIHByb3ZpZGVyLAogICAgICB0b2tlbkFkZHJlc3MsCiAgICAgIHZhdWx0QWRkcmVzcywKICAgICk7CiAgfQogIGNvbnNvbGUubG9nKAogICAgYEN1cnJlbnQgJHt0b2tlbk5hbWV9IEJhbGFuY2U6ICR7ZXRoZXJzLnV0aWxzLmZvcm1hdFVuaXRzKAogICAgICBjdXJyZW50QmFsYW5jZSwKICAgICAgMTgsCiAgICApfWAsCiAgKTsKCiAgaWYgKCFwcmV2aW91c0JhbGFuY2UuaXNaZXJvKCkpIHsKICAgIGNvbnN0IGRyb3BQZXJjZW50YWdlID0gcHJldmlvdXNCYWxhbmNlCiAgICAgIC5zdWIoY3VycmVudEJhbGFuY2UpCiAgICAgIC5tdWwoMTAwKQogICAgICAuZGl2KHByZXZpb3VzQmFsYW5jZSkKICAgICAgLnRvTnVtYmVyKCk7CiAgICBjb25zb2xlLmxvZygKICAgICAgYENhbGN1bGF0ZWQgZHJvcCBwZXJjZW50YWdlIGZvciAke3Rva2VuTmFtZX06ICR7ZHJvcFBlcmNlbnRhZ2V9JWAsCiAgICApOwoKICAgIGlmIChkcm9wUGVyY2VudGFnZSA+PSA1KSB7CiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQWxlcnQ6ICR7dG9rZW5OYW1lfSBiYWxhbmNlIGhhcyBkcm9wcGVkIGJ5ICR7ZHJvcFBlcmNlbnRhZ2V9JSBvbiAke25ldHdvcmtOYW1lfS5cblByZXZpb3VzIEJhbGFuY2U6ICR7ZXRoZXJzLnV0aWxzLmZvcm1hdFVuaXRzKAogICAgICAgIHByZXZpb3VzQmFsYW5jZSwKICAgICAgICAxOCwKICAgICAgKX1cbkN1cnJlbnQgQmFsYW5jZTogJHtldGhlcnMudXRpbHMuZm9ybWF0VW5pdHMoY3VycmVudEJhbGFuY2UsIDE4KX1gOwogICAgICBhbGVydE9yZygKICAgICAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICAgICAgYOKaoO+4jyAke25ldHdvcmtOYW1lfTogJHt0b2tlbk5hbWV9IEJhbGFuY2UgRHJvcCBBbGVydGAsCiAgICAgICAgbWVzc2FnZSwKICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnNvbGUubG9nKAogICAgICAgIGBObyBzaWduaWZpY2FudCAke3Rva2VuTmFtZX0gYmFsYW5jZSBkcm9wIGRldGVjdGVkIG9uICR7bmV0d29ya05hbWV9YCwKICAgICAgKTsKICAgIH0KICB9IGVsc2UgewogICAgY29uc29sZS5sb2coCiAgICAgIGBObyBwcmV2aW91cyAke3Rva2VuTmFtZX0gYmFsYW5jZSB0byBjb21wYXJlIG9uICR7bmV0d29ya05hbWV9YCwKICAgICk7CiAgfQoKICBhd2FpdCBzdG9yZVByZXZpb3VzQmFsYW5jZShjbGllbnQsIHByZXZpb3VzQmFsYW5jZUtleSwgY3VycmVudEJhbGFuY2UpOwp9CgpmdW5jdGlvbiBhbGVydE9yZyhub3RpZmljYXRpb25DbGllbnQsIHN1YmplY3QsIG1lc3NhZ2UpIHsKICBub3RpZmljYXRpb25DbGllbnQuc2VuZCh7CiAgICBjaGFubmVsQWxpYXM6ICJkaXNjb3JkX2JyaWRnaW5nIiwKICAgIHN1YmplY3QsCiAgICBtZXNzYWdlLAogIH0pOwp9Cgphc3luYyBmdW5jdGlvbiBzdG9yZVByZXZpb3VzQmFsYW5jZShjbGllbnQsIGtleSwgbmV3QmFsYW5jZSkgewogIGNvbnNvbGUubG9nKAogICAgYFN0b3JpbmcgcHJldmlvdXMgYmFsYW5jZSB1bmRlciBrZXk6ICR7a2V5fSwgdmFsdWU6ICR7bmV3QmFsYW5jZS50b1N0cmluZygpfWAsCiAgKTsKICBjb25zdCBib2R5ID0gewogICAgZGVsZXRlczogW10sCiAgICBzZWNyZXRzOiB7CiAgICAgIFtrZXldOiBuZXdCYWxhbmNlLnRvU3RyaW5nKCksCiAgICB9LAogIH07CiAgYXdhaXQgY2xpZW50LmFjdGlvbi5jcmVhdGVTZWNyZXRzKGJvZHkpOwp9CgpmdW5jdGlvbiBjcmVhdGVQcm92aWRlcihhcGlLZXksIGFwaVNlY3JldCwgcmVsYXllckFwaUtleSwgcmVsYXllckFwaVNlY3JldCkgewogIGNvbnNvbGUubG9nKGBDcmVhdGluZyBwcm92aWRlciB3aXRoIEFQSSBrZXlzYCk7CiAgY29uc3QgY2xpZW50ID0gbmV3IERlZmVuZGVyKHsKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHJlbGF5ZXJBcGlLZXksCiAgICByZWxheWVyQXBpU2VjcmV0LAogIH0pOwoKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnNvbGUubG9nKGBTdGFydGluZyBiYWxhbmNlIG1vbml0b3JpbmcgZm9yIEwxYCk7CgogIGNvbnN0IGwxUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcigKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHRhaWtvTDFBcGlLZXksCiAgICB0YWlrb0wxQXBpU2VjcmV0LAogICk7CgogIGNvbnN0IGwxVmF1bHRBZGRyZXNzID0gIjB4OTk2MjgyY0ExMUU1REViNkI1RDEyMkNDM0I5QTFGY0FBRDQ0MTVBYiI7CgogIGNvbnN0IGwxVG9rZW5BZGRyZXNzZXMgPSB7CiAgICBFVEg6IG51bGwsCiAgICBUQUlLTzogZXRoZXJzLnV0aWxzLmdldEFkZHJlc3MoCiAgICAgICIweDEwZGVhNjc0NzhjNUY4QzVFMkQ5MGU1RTlCMjZkQmU2MGM1NGQ4MDAiLAogICAgKSwKICAgIFVTREM6IGV0aGVycy51dGlscy5nZXRBZGRyZXNzKCIweEEwYjg2OTkxYzYyMThiMzZjMWQxOUQ0YTJlOUViMGNFMzYwNmVCNDgiKSwKICAgIFVTRFQ6IGV0aGVycy51dGlscy5nZXRBZGRyZXNzKCIweGRBQzE3Rjk1OEQyZWU1MjNhMjIwNjIwNjk5NDU5N0MxM0Q4MzFlYzciKSwKICB9OwoKICBjb25zdCBjbGllbnQgPSBuZXcgRGVmZW5kZXIoewogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgfSk7CgogIGF3YWl0IG1vbml0b3JUb2tlbkJhbGFuY2UoCiAgICBsMVByb3ZpZGVyLAogICAgbDFUb2tlbkFkZHJlc3Nlcy5FVEgsCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfRVRIIiwKICAgIG5vdGlmaWNhdGlvbkNsaWVudCwKICAgIGV2ZW50LnNlY3JldHMsCiAgICBjbGllbnQsCiAgICAiRVRIIiwKICAgICJMMSIsCiAgKTsKICBhd2FpdCBtb25pdG9yVG9rZW5CYWxhbmNlKAogICAgbDFQcm92aWRlciwKICAgIGwxVG9rZW5BZGRyZXNzZXMuVEFJS08sCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfVEFJS08iLAogICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgZXZlbnQuc2VjcmV0cywKICAgIGNsaWVudCwKICAgICJUQUlLTyIsCiAgICAiTDEiLAogICk7CiAgYXdhaXQgbW9uaXRvclRva2VuQmFsYW5jZSgKICAgIGwxUHJvdmlkZXIsCiAgICBsMVRva2VuQWRkcmVzc2VzLlVTREMsCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfVVNEQyIsCiAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICBldmVudC5zZWNyZXRzLAogICAgY2xpZW50LAogICAgIlVTREMiLAogICAgIkwxIiwKICApOwogIGF3YWl0IG1vbml0b3JUb2tlbkJhbGFuY2UoCiAgICBsMVByb3ZpZGVyLAogICAgbDFUb2tlbkFkZHJlc3Nlcy5VU0RULAogICAgbDFWYXVsdEFkZHJlc3MsCiAgICAicHJldmlvdXNCYWxhbmNlX0wxX1VTRFQiLAogICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgZXZlbnQuc2VjcmV0cywKICAgIGNsaWVudCwKICAgICJVU0RUIiwKICAgICJMMSIsCiAgKTsKCiAgY29uc29sZS5sb2coYEJhbGFuY2UgbW9uaXRvcmluZyBjb21wbGV0ZWRgKTsKCiAgcmV0dXJuIHRydWU7Cn07ClBLAQIUAAoAAAAAAAAAQVASVlLscBMAAHATAAAIAAAAAAAAAAAAAAAAAAAAAABpbmRleC5qc1BLBQYAAAAAAQABADYAAACWEwAAAAA="}]},"contracts":{"removed":[],"created":[],"updated":[]},"relayers":{"removed":[],"created":[],"updated":[],"relayerKeys":{"removed":[],"created":[],"updated":[]}},"notifications":{"removed":[],"created":[],"updated":[{"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","type":"discord","name":"discord_bridging","paused":false,"config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"stackResourceId":"mystack.discord-bridging"}]},"secrets":{"removed":[],"created":[],"updated":[]},"blockExplorerApiKeys":{"removed":[],"created":[],"updated":[]},"forkedNetworks":{"removed":[],"created":[],"updated":[]},"privateNetworks":{"removed":[],"created":[],"updated":[]}} +{"stack":"mystack","timestamp":"2024-09-20T10:05:14.785Z","monitors":{"removed":[],"created":[],"updated":[{"skipABIValidation":true,"alertThreshold":null,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"Defender Monitor: TaikoL1: Pause/Unpause triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]}],"abi":"[{\"type\":\"error\",\"name\":\"AM_ADDRESS_ALREADY_SET\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"spender\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"approved\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ApprovalForAll\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"operationId\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"approvalBits\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"minGuardiansReached\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Authorized\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"authorized\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"BB_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_MINT_DISALLOWED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_CANNOT_RECEIVE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_BURN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockProposed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"assignedProver\",\"indexed\":true},{\"type\":\"uint96\",\"name\":\"livenessBond\",\"indexed\":false},{\"type\":\"tuple\",\"name\":\"meta\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"depositsProcessed\",\"indexed\":false,\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockVerified\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"stateRoot\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondCredited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondDebited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btokenOld\",\"indexed\":false},{\"type\":\"address\",\"name\":\"btokenNew\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"CalldataTxList\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"txList\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ChainDataSynced\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"kind\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"data\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ConflictingProofs\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"guardian\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"currentProofHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"newProofHash\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"provingPaused\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"fromDelegate\",\"indexed\":true},{\"type\":\"address\",\"name\":\"toDelegate\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegate\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"previousBalance\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"newBalance\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EIP712DomainChanged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EtherPaymentFailed\",\"inputs\":[{\"type\":\"address\",\"name\":\"to\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"maxGas\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardianApproval\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false},{\"type\":\"bytes\",\"name\":\"proofData\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardiansUpdated\",\"inputs\":[{\"type\":\"uint32\",\"name\":\"version\",\"indexed\":false},{\"type\":\"address[]\",\"name\":\"guardians\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_EXPIRED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"LocalReportCheckToggled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"checkLocalEnclaveReport\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"MAX_GAS_PAYING_PROVER\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageProcessed\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"stats\",\"indexed\":false,\"components\":[{\"type\":\"uint32\",\"name\":\"gasUsedInFeeCalc\"},{\"type\":\"uint32\",\"name\":\"proofSize\"},{\"type\":\"uint32\",\"name\":\"numCacheOps\"},{\"type\":\"bool\",\"name\":\"processedByRelayer\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageStatusChanged\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"uint8\",\"name\":\"status\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigratedTo\",\"inputs\":[{\"type\":\"address\",\"name\":\"fromToken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigrationStatusChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"inbound\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrEnclaveUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrEnclave\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrSignerUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrSigner\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"enabled\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingPaused\",\"inputs\":[{\"type\":\"bool\",\"name\":\"paused\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"QeIdentityConfigured\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"indexed\":false,\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"name\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumRemoved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"SignalSent\",\"inputs\":[{\"type\":\"address\",\"name\":\"app\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"slot\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"slotB\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TcbInfoJsonConfigured\",\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"indexed\":false,\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"canonicalChainId\",\"indexed\":false},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferBatch\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256[]\",\"name\":\"ids\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"values\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferSingle\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionContested\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"contester\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"contestBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionProved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"validityBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"URI\",\"inputs\":[{\"type\":\"string\",\"name\":\"value\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_DATA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_ECDSA_SIGNATURE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEAUTHDATA_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEREPORT_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_MEMBER_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_UNSUPPORT_CERTIFICATION_TYPE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INSUFFICIENT_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_CTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"allowance\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"approvals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"bytes32\",\"name\":\"proofHash\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"approvalBits\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\",\"name\":\"approved_\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"authorize\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_addr\"},{\"type\":\"bool\",\"name\":\"_authorize\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"id\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOfBatch\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"accounts\"},{\"type\":\"uint256[]\",\"name\":\"ids\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"batchTransfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"recipients\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_user\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"btokenDenylist\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"denied\"}]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"canonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btoken\"}]},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctoken\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"address\",\"name\":\"_btokenNew\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btokenOld_\"}]},{\"type\":\"function\",\"name\":\"changeMigrationStatus\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_migratingAddress\"},{\"type\":\"bool\",\"name\":\"_migratingInbound\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"checkLocalEnclaveReport\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"checkpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint32\",\"name\":\"pos\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint32\",\"name\":\"fromBlock\"},{\"type\":\"uint224\",\"name\":\"votes\"}]}]},{\"type\":\"function\",\"name\":\"clock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint48\"}]},{\"type\":\"function\",\"name\":\"configureQeIdentityJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"configureTcbInfoJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"context\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"name\":\"ctx_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"}]}]},{\"type\":\"function\",\"name\":\"decimals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint8\"}]},{\"type\":\"function\",\"name\":\"decodeCert\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"der\"},{\"type\":\"bool\",\"name\":\"isPckCert\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"tuple\",\"name\":\"cert\",\"components\":[{\"type\":\"uint256\",\"name\":\"notBefore\"},{\"type\":\"uint256\",\"name\":\"notAfter\"},{\"type\":\"bytes\",\"name\":\"serialNumber\"},{\"type\":\"bytes\",\"name\":\"tbsCertificate\"},{\"type\":\"bytes\",\"name\":\"pubKey\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bool\",\"name\":\"isPck\"},{\"type\":\"tuple\",\"name\":\"pck\",\"components\":[{\"type\":\"string\",\"name\":\"commonName\"},{\"type\":\"string\",\"name\":\"issuerName\"},{\"type\":\"tuple\",\"name\":\"sgxExtension\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint256[]\",\"name\":\"sgxTcbCompSvnArr\"}]}]}]}]},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"subtractedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"delegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegateBySig\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"},{\"type\":\"uint256\",\"name\":\"nonce\"},{\"type\":\"uint256\",\"name\":\"expiry\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegates\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"depositBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"eip712Domain\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes1\",\"name\":\"fields\"},{\"type\":\"string\",\"name\":\"name\"},{\"type\":\"string\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"verifyingContract\"},{\"type\":\"bytes32\",\"name\":\"salt\"},{\"type\":\"uint256[]\",\"name\":\"extensions\"}]},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"failMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getApproved\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"blk_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]}]},{\"type\":\"function\",\"name\":\"getConfig\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"uint64\",\"name\":\"blockMaxProposals\"},{\"type\":\"uint64\",\"name\":\"blockRingBufferSize\"},{\"type\":\"uint64\",\"name\":\"maxBlocksToVerify\"},{\"type\":\"uint32\",\"name\":\"blockMaxGasLimit\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint8\",\"name\":\"stateRootSyncInternal\"},{\"type\":\"bool\",\"name\":\"checkEOAForCalldataDA\"}]}]},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"dataLength\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"getMinTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getPastVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"getStateVariables\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"chainData_\"}]},{\"type\":\"function\",\"name\":\"getTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint16\",\"name\":\"_tierId\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"verifierName\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint24\",\"name\":\"cooldownWindow\"},{\"type\":\"uint16\",\"name\":\"provingWindow\"},{\"type\":\"uint8\",\"name\":\"maxBlocksToVerifyPerProof\"}]}]},{\"type\":\"function\",\"name\":\"getTierIds\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint16[]\",\"name\":\"tiers_\"}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"uint32\",\"name\":\"_tid\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_parentHash\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"prover_\"}]},{\"type\":\"function\",\"name\":\"getVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"guardianIds\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"guardian\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"id\"}]},{\"type\":\"function\",\"name\":\"guardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"hashAssignment\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_assignment\",\"components\":[{\"type\":\"address\",\"name\":\"feeToken\"},{\"type\":\"uint64\",\"name\":\"expiry\"},{\"type\":\"uint64\",\"name\":\"maxBlockId\"},{\"type\":\"uint64\",\"name\":\"maxProposedIn\"},{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"tuple[]\",\"name\":\"tierFees\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint128\",\"name\":\"fee\"}]},{\"type\":\"bytes\",\"name\":\"signature\"}]},{\"type\":\"address\",\"name\":\"_taikoL1Address\"},{\"type\":\"address\",\"name\":\"_blockProposer\"},{\"type\":\"address\",\"name\":\"_assignedProver\"},{\"type\":\"bytes32\",\"name\":\"_blobHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"hashMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"impl\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"addedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"bytes32\",\"name\":\"_genesisBlockHash\"},{\"type\":\"bool\",\"name\":\"_toPause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"sigVerifyLibAddr\"},{\"type\":\"address\",\"name\":\"pemCertLibAddr\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"uint8\",\"name\":\"_decimals\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init2\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"address\",\"name\":\"operator\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isAuthorized\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"addr\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"authorized\"}]},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"enabled_\"},{\"type\":\"address\",\"name\":\"destBridge_\"}]},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isSignalSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"timestamp\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"latestProofHash\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"blockId\"}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"hash\"}]},{\"type\":\"function\",\"name\":\"messageStatus\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status\"}]},{\"type\":\"function\",\"name\":\"migratingAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"migratingInbound\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"minGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mintBatch\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256[]\",\"name\":\"_tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"_amounts\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"nextMessageId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nonces\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"numGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"onBlockProposed\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_blk\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]},{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256[]\"},{\"type\":\"uint256[]\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC721Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"ownerOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseProving\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_pause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pemCertLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"permit\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"uint256\",\"name\":\"deadline\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"processMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status_\"},{\"type\":\"uint8\",\"name\":\"reason_\"}]},{\"type\":\"function\",\"name\":\"proposeBlock\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_params\"},{\"type\":\"bytes\",\"name\":\"_txList\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"meta_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"deposits_\",\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"function\",\"name\":\"proveBlock\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes\",\"name\":\"_input\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"numCacheOps_\"}]},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"qeIdentity\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"}]},{\"type\":\"function\",\"name\":\"recallMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"removeRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"retryMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bool\",\"name\":\"_isLastAttempt\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeBatchTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256[]\",\"name\":\"ids\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"id\"},{\"type\":\"uint256\",\"name\":\"amount\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"selfDelegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_anyToken\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sendMessage\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash_\"},{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendSignal\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256[]\",\"name\":\"tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256\",\"name\":\"amount\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"serialNumIsRevoked\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"idx\"},{\"type\":\"bytes\",\"name\":\"serialNum\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"revoked\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"operator\"},{\"type\":\"bool\",\"name\":\"approved\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setGuardians\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_newGuardians\"},{\"type\":\"uint8\",\"name\":\"_minGuardians\"},{\"type\":\"bool\",\"name\":\"_clearData\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrEnclave\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrEnclave\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrSigner\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrSigner\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sigVerifyLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"signalForChainData\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"source\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"splitCertificateChain\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"pemChain\"},{\"type\":\"uint256\",\"name\":\"size\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"bytes[]\",\"name\":\"certs\"}]},{\"type\":\"function\",\"name\":\"srcChainId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"srcToken\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"state\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"__reserve1\"},{\"type\":\"tuple\",\"name\":\"slotA\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"name\":\"slotB\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"supportsInterface\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes4\",\"name\":\"_interfaceId\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"syncChainData\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"tcbInfo\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"}],\"outputs\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"}]},{\"type\":\"function\",\"name\":\"toggleLocalReportCheck\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"tokenURI\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"topBlockId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"kind\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId\"}]},{\"type\":\"function\",\"name\":\"totalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"transfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"trustedUserMrEnclave\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"enclave\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"trustedUserMrSigner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"signer\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"uri\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"verifyAttestation\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"}]},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_maxBlocksToVerify\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyES256Signature\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"tbs\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bytes\",\"name\":\"publicKey\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"sigValid\"}]},{\"type\":\"function\",\"name\":\"verifyParsedQuote\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"v3quote\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"bool\"},{\"type\":\"bytes\"}]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"version\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"withdrawBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"constructor\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"es256Verifier\"}]}]","addresses":["0x02772b7B3a5Bea0141C993Dbb8D0733C19F46169","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0x39E4C1214e733639d059979079A151911e42791d","0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0x579f40D0BE111b823962043702cabe6Aaa290780","0x67281b15aee4d6b805bc755e439abd524dd8da8d","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0xa25e645ff9897b0282e5f17d36de5bca4ec21d6e","0xaf145913EA4a56BE22E120ED9C24589659881702","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0xc4096E9ff1526Bd1840B65e9f45695135aC12De7","0xcc5d488073FA918cBbd73B9A523F3858C4de7372","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC"]}],"createdAt":"2024-08-27T09:44:01.744Z","subscriberId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","name":"TaikoL1: Pause/Unpause","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","blockWatcherId":"mainnet-6","paused":false,"stackResourceId":"mystack.taiko-l-1-pause-unpause","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"LOW","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet SGX Prover triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceAdded(uint256,address,address,uint256)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceDeleted(uint256,address)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[{"functionSignature":"verifyProof((bytes32,bytes32,address,uint64,bool,bool,address),(bytes32,bytes32,bytes32,bytes32),(uint16,bytes))","expression":null}],"eventConditions":[]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]}]","addresses":["0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81"]}],"createdAt":"2024-05-02T14:09:42.804Z","subscriberId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","name":"Taiko Mainnet SGX Prover","network":"mainnet","riskCategory":"TECHNICAL","monitorId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-sgx-prover","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Address Managers triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AddressSet(uint64,bytes32,address,address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x579f40D0BE111b823962043702cabe6Aaa290780"]}],"createdAt":"2024-05-02T14:00:18.874Z","subscriberId":"3919cb83-487f-4432-88fa-33bbe4361fce","name":"Taiko Mainnet Address Managers","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"3919cb83-487f-4432-88fa-33bbe4361fce","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-address-managers","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Essential Contracts triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AdminChanged(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"BeaconUpgraded(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Initialized(uint8)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferStarted(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferred(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Upgraded(address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0xaf145913EA4a56BE22E120ED9C24589659881702","0x579f40D0BE111b823962043702cabe6Aaa290780","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3"]}],"createdAt":"2024-05-02T13:49:54.192Z","subscriberId":"67a53521-3d4a-4de4-92ab-ede82cc45644","name":"Taiko Mainnet Essential Contracts","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"67a53521-3d4a-4de4-92ab-ede82cc45644","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-essential-contracts","type":"BLOCK"}]},"actions":{"removed":[],"created":[],"updated":[{"autotaskId":"4390573f-1796-4c27-8933-7f157e77c2b4","actionId":"4390573f-1796-4c27-8933-7f157e77c2b4","name":"TaikoL1: BlockVerified Alert","paused":false,"trigger":{"cron":null,"frequencyMinutes":4,"type":"schedule"},"codeDigest":"KOTnS1Yf5tvLYRNPMJ0JnrGAv66lJy5ms0M9KHsmVZI=","stackResourceId":"mystack.taiko-l-1-block-verified-alert","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-05","encodedZippedCode":"UEsDBAoAAAAAAAAAQVDHg6kMXRAAAF0QAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAiYmxvY2tJZCIsCiAgICAgICAgdHlwZTogInVpbnQyNTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzIiwKICAgICAgICBuYW1lOiAicHJvdmVyIiwKICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICBuYW1lOiAiYmxvY2tIYXNoIiwKICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICBuYW1lOiAic3RhdGVSb290IiwKICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MTYiLAogICAgICAgIG5hbWU6ICJ0aWVyIiwKICAgICAgICB0eXBlOiAidWludDE2IiwKICAgICAgfSwKICAgIF0sCiAgICBuYW1lOiAiQmxvY2tWZXJpZmllZCIsCiAgICB0eXBlOiAiZXZlbnQiLAogIH0sCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAiYmxvY2tJZCIsCiAgICAgICAgdHlwZTogInVpbnQyNTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzIiwKICAgICAgICBuYW1lOiAicHJvdmVyIiwKICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICBuYW1lOiAiYmxvY2tIYXNoIiwKICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICBuYW1lOiAic3RhdGVSb290IiwKICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MTYiLAogICAgICAgIG5hbWU6ICJ0aWVyIiwKICAgICAgICB0eXBlOiAidWludDE2IiwKICAgICAgfSwKICAgIF0sCiAgICBuYW1lOiAiQmxvY2tWZXJpZmllZFYyIiwKICAgIHR5cGU6ICJldmVudCIsCiAgfSwKXTsKCmZ1bmN0aW9uIGFsZXJ0T3JnKG5vdGlmaWNhdGlvbkNsaWVudCwgbWVzc2FnZSkgewogIG5vdGlmaWNhdGlvbkNsaWVudC5zZW5kKHsKICAgIGNoYW5uZWxBbGlhczogImRpc2NvcmRfYnJpZGdpbmciLAogICAgc3ViamVjdDogIvCfmqggVGFpa29MMTogQmxvY2tWZXJpZmllZCBBbGVydCIsCiAgICBtZXNzYWdlLAogIH0pOwoKICBub3RpZmljYXRpb25DbGllbnQuc2VuZCh7CiAgICBjaGFubmVsQWxpYXM6ICJ0Z190YWlrb19ndWFyZGlhbnMiLAogICAgc3ViamVjdDogIvCfmqggVGFpa29MMTogQmxvY2tWZXJpZmllZCBBbGVydCIsCiAgICBtZXNzYWdlLAogIH0pOwp9Cgphc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RCbG9ja051bWJlcihwcm92aWRlcikgewogIGNvbnN0IGN1cnJlbnRCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKCJsYXRlc3QiKTsKICByZXR1cm4gY3VycmVudEJsb2NrLm51bWJlcjsKfQoKYXN5bmMgZnVuY3Rpb24gZmV0Y2hMb2dzRnJvbUwxKAogIGV2ZW50TmFtZXMsCiAgZnJvbUJsb2NrLAogIHRvQmxvY2ssCiAgYWRkcmVzcywKICBhYmksCiAgcHJvdmlkZXIsCikgewogIGNvbnN0IGlmYWNlID0gbmV3IGV0aGVycy51dGlscy5JbnRlcmZhY2UoYWJpKTsKICBjb25zdCBldmVudFRvcGljcyA9IGV2ZW50TmFtZXMubWFwKChldmVudE5hbWUpID0+CiAgICBpZmFjZS5nZXRFdmVudFRvcGljKGV2ZW50TmFtZSksCiAgKTsKCiAgY29uc29sZS5sb2coYGV2ZW50VG9waWNzOiAke2V2ZW50VG9waWNzfWApOwoKICB0cnkgewogICAgY29uc3QgbG9ncyA9IGF3YWl0IHByb3ZpZGVyLmdldExvZ3MoewogICAgICBhZGRyZXNzLAogICAgICBmcm9tQmxvY2ssCiAgICAgIHRvQmxvY2ssCiAgICAgIHRvcGljczogW2V2ZW50VG9waWNzXSwKICAgIH0pOwoKICAgIHJldHVybiBsb2dzLm1hcCgobG9nKSA9PiBpZmFjZS5wYXJzZUxvZyhsb2cpKTsKICB9IGNhdGNoIChlcnJvcikgewogICAgY29uc29sZS5lcnJvcigiRXJyb3IgZmV0Y2hpbmcgTDEgbG9nczoiLCBlcnJvcik7CiAgICByZXR1cm4gW107CiAgfQp9CgpmdW5jdGlvbiBjcmVhdGVQcm92aWRlcihhcGlLZXksIGFwaVNlY3JldCwgcmVsYXllckFwaUtleSwgcmVsYXllckFwaVNlY3JldCkgewogIGNvbnN0IGNsaWVudCA9IG5ldyBEZWZlbmRlcih7CiAgICBhcGlLZXksCiAgICBhcGlTZWNyZXQsCiAgICByZWxheWVyQXBpS2V5LAogICAgcmVsYXllckFwaVNlY3JldCwKICB9KTsKCiAgcmV0dXJuIGNsaWVudC5yZWxheVNpZ25lci5nZXRQcm92aWRlcigpOwp9Cgphc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVCbG9ja1RpbWUocHJvdmlkZXIpIHsKICBjb25zdCBsYXRlc3RCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKCJsYXRlc3QiKTsKICBjb25zdCBwcmV2aW91c0Jsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2sobGF0ZXN0QmxvY2subnVtYmVyIC0gMTAwKTsKCiAgY29uc3QgdGltZURpZmYgPSBsYXRlc3RCbG9jay50aW1lc3RhbXAgLSBwcmV2aW91c0Jsb2NrLnRpbWVzdGFtcDsKICBjb25zdCBibG9ja0RpZmYgPSBsYXRlc3RCbG9jay5udW1iZXIgLSBwcmV2aW91c0Jsb2NrLm51bWJlcjsKCiAgY29uc3QgYmxvY2tUaW1lID0gdGltZURpZmYgLyBibG9ja0RpZmY7CiAgcmV0dXJuIGJsb2NrVGltZTsKfQoKZXhwb3J0cy5oYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKGV2ZW50LCBjb250ZXh0KSB7CiAgY29uc3QgeyBub3RpZmljYXRpb25DbGllbnQgfSA9IGNvbnRleHQ7CiAgY29uc3QgeyBhcGlLZXksIGFwaVNlY3JldCwgdGFpa29MMUFwaUtleSwgdGFpa29MMUFwaVNlY3JldCB9ID0gZXZlbnQuc2VjcmV0czsKCiAgY29uc3QgdGFpa29MMVByb3ZpZGVyID0gY3JlYXRlUHJvdmlkZXIoCiAgICBhcGlLZXksCiAgICBhcGlTZWNyZXQsCiAgICB0YWlrb0wxQXBpS2V5LAogICAgdGFpa29MMUFwaVNlY3JldCwKICApOwoKICBjb25zdCBjdXJyZW50QmxvY2tOdW1iZXIgPSBhd2FpdCBnZXRMYXRlc3RCbG9ja051bWJlcih0YWlrb0wxUHJvdmlkZXIpOwogIGNvbnN0IGJsb2NrVGltZUluU2Vjb25kcyA9IGF3YWl0IGNhbGN1bGF0ZUJsb2NrVGltZSh0YWlrb0wxUHJvdmlkZXIpOwogIGNvbnN0IGJsb2Nrc0luRml2ZU1pbnV0ZXMgPSBNYXRoLmZsb29yKCg1ICogNjApIC8gYmxvY2tUaW1lSW5TZWNvbmRzKTsKCiAgY29uc3QgZnJvbUJsb2NrID0gY3VycmVudEJsb2NrTnVtYmVyIC0gYmxvY2tzSW5GaXZlTWludXRlczsKICBjb25zdCB0b0Jsb2NrID0gY3VycmVudEJsb2NrTnVtYmVyOwoKICBjb25zdCBsb2dzID0gYXdhaXQgZmV0Y2hMb2dzRnJvbUwxKAogICAgWyJCbG9ja1ZlcmlmaWVkIiwgIkJsb2NrVmVyaWZpZWRWMiJdLAogICAgZnJvbUJsb2NrLAogICAgdG9CbG9jaywKICAgICIweDA2YTlBYjI3YzdlMjI1NWRmMTgxNUU2Q0MwMTY4ZDc3NTVGZWIxOWEiLAogICAgQUJJLAogICAgdGFpa29MMVByb3ZpZGVyLAogICk7CgogIGlmIChsb2dzLmxlbmd0aCA9PT0gMCkgewogICAgYWxlcnRPcmcoCiAgICAgIG5vdGlmaWNhdGlvbkNsaWVudCwKICAgICAgYEBkYXZpZGNhaSBAeXVlYTc1ODMgTm8gQmxvY2tWZXJpZmllZCBldmVudCBkZXRlY3RlZCBpbiB0aGUgbGFzdCAzMCBtaW5zIGluIFRhaWtvTDEhYCwKICAgICk7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfTsKUEsBAhQACgAAAAAAAABBUMeDqQxdEAAAXRAAAAgAAAAAAAAAAAAAAAAAAAAAAGluZGV4LmpzUEsFBgAAAAABAAEANgAAAIMQAAAAAA=="}]},"contracts":{"removed":[],"created":[],"updated":[]},"relayers":{"removed":[],"created":[],"updated":[],"relayerKeys":{"removed":[],"created":[],"updated":[]}},"notifications":{"removed":[],"created":[],"updated":[]},"secrets":{"removed":[],"created":[],"updated":[]},"blockExplorerApiKeys":{"removed":[],"created":[],"updated":[]},"forkedNetworks":{"removed":[],"created":[],"updated":[]},"privateNetworks":{"removed":[],"created":[],"updated":[]}} +{"stack":"mystack","timestamp":"2024-09-20T10:34:25.843Z","monitors":{"removed":[],"created":[{"type":"BLOCK","network":"mainnet","tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","subscriberId":"1bc1012e-54fc-4fbc-8971-54c5b2a5146e","monitorId":"1bc1012e-54fc-4fbc-8971-54c5b2a5146e","createdAt":"2024-09-20T10:36:31.684Z","name":"TaikoL1: ProvingPaused Alert","paused":false,"notifyConfig":{"notifications":[{"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"updatedAt":"2024-09-19T10:48:03.908Z","tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","paused":false,"stackResourceId":"mystack.discord-bridging","type":"discord"}],"severityLevel":"HIGH","timeoutMs":60000,"messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"⚠️ TaikoL1: ProvingPaused Alert"},"stackResourceId":"mystack.taiko-l-1-proving-paused-alert","skipABIValidation":false,"blockWatcherId":"mainnet-1","addressRules":[{"conditions":[],"addresses":["0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a"]}]},{"type":"BLOCK","network":"mainnet","tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","subscriberId":"8e05b9b7-09d2-4b2e-b843-96a62f03c80a","monitorId":"8e05b9b7-09d2-4b2e-b843-96a62f03c80a","createdAt":"2024-09-20T10:36:35.701Z","name":"GuardianProver: GuardiansUpdated Alert","paused":false,"notifyConfig":{"notifications":[{"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"updatedAt":"2024-09-19T10:48:03.908Z","tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","paused":false,"stackResourceId":"mystack.discord-bridging","type":"discord"}],"severityLevel":"MEDIUM","timeoutMs":60000,"messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"⚠️ GuardianProver: GuardiansUpdated Alert"},"stackResourceId":"mystack.guardian-prover-guardians-updated-alert","skipABIValidation":false,"blockWatcherId":"mainnet-1","addressRules":[{"conditions":[],"addresses":["0xE3D777143Ea25A6E031d1e921F396750885f43aC"]}]},{"type":"BLOCK","network":"mainnet","tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","subscriberId":"deb988aa-3550-4690-9f9b-b45486a45af0","monitorId":"deb988aa-3550-4690-9f9b-b45486a45af0","createdAt":"2024-09-20T10:36:39.801Z","name":"GuardianProver: ConflictingProofs Alert","paused":false,"notifyConfig":{"notifications":[{"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"updatedAt":"2024-09-19T10:48:03.908Z","tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","paused":false,"stackResourceId":"mystack.discord-bridging","type":"discord"}],"severityLevel":"MEDIUM","timeoutMs":60000,"messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"🚨 GuardianProver: ConflictingProofs Alert"},"stackResourceId":"mystack.guardian-prover-conflicting-proofs-alert","skipABIValidation":false,"blockWatcherId":"mainnet-1","addressRules":[{"conditions":[],"addresses":["0xE3D777143Ea25A6E031d1e921F396750885f43aC"]}]},{"type":"BLOCK","network":"mainnet","tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","subscriberId":"cf7ea759-183f-4761-96cc-ec6cf9052d3b","monitorId":"cf7ea759-183f-4761-96cc-ec6cf9052d3b","createdAt":"2024-09-20T10:36:44.961Z","name":"GuardianProver: ProvingAutoPauseEnabled Alert","paused":false,"notifyConfig":{"notifications":[{"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"updatedAt":"2024-09-19T10:48:03.908Z","tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","paused":false,"stackResourceId":"mystack.discord-bridging","type":"discord"}],"severityLevel":"MEDIUM","timeoutMs":60000,"messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"⚠️ GuardianProver: ProvingAutoPauseEnabled Alert"},"stackResourceId":"mystack.guardian-prover-proving-auto-pause-enabled-alert","skipABIValidation":false,"blockWatcherId":"mainnet-1","addressRules":[{"conditions":[],"addresses":["0xE3D777143Ea25A6E031d1e921F396750885f43aC"]}]}],"updated":[{"skipABIValidation":true,"alertThreshold":null,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"Defender Monitor: TaikoL1: Pause/Unpause triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]}],"abi":"[{\"type\":\"error\",\"name\":\"AM_ADDRESS_ALREADY_SET\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"spender\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"approved\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ApprovalForAll\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"operationId\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"approvalBits\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"minGuardiansReached\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Authorized\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"authorized\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"BB_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_MINT_DISALLOWED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_CANNOT_RECEIVE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_BURN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockProposed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"assignedProver\",\"indexed\":true},{\"type\":\"uint96\",\"name\":\"livenessBond\",\"indexed\":false},{\"type\":\"tuple\",\"name\":\"meta\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"depositsProcessed\",\"indexed\":false,\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockVerified\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"stateRoot\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondCredited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondDebited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btokenOld\",\"indexed\":false},{\"type\":\"address\",\"name\":\"btokenNew\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"CalldataTxList\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"txList\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ChainDataSynced\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"kind\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"data\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ConflictingProofs\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"guardian\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"currentProofHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"newProofHash\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"provingPaused\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"fromDelegate\",\"indexed\":true},{\"type\":\"address\",\"name\":\"toDelegate\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegate\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"previousBalance\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"newBalance\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EIP712DomainChanged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EtherPaymentFailed\",\"inputs\":[{\"type\":\"address\",\"name\":\"to\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"maxGas\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardianApproval\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false},{\"type\":\"bytes\",\"name\":\"proofData\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardiansUpdated\",\"inputs\":[{\"type\":\"uint32\",\"name\":\"version\",\"indexed\":false},{\"type\":\"address[]\",\"name\":\"guardians\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_EXPIRED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"LocalReportCheckToggled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"checkLocalEnclaveReport\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"MAX_GAS_PAYING_PROVER\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageProcessed\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"stats\",\"indexed\":false,\"components\":[{\"type\":\"uint32\",\"name\":\"gasUsedInFeeCalc\"},{\"type\":\"uint32\",\"name\":\"proofSize\"},{\"type\":\"uint32\",\"name\":\"numCacheOps\"},{\"type\":\"bool\",\"name\":\"processedByRelayer\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageStatusChanged\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"uint8\",\"name\":\"status\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigratedTo\",\"inputs\":[{\"type\":\"address\",\"name\":\"fromToken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigrationStatusChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"inbound\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrEnclaveUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrEnclave\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrSignerUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrSigner\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"enabled\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingPaused\",\"inputs\":[{\"type\":\"bool\",\"name\":\"paused\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"QeIdentityConfigured\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"indexed\":false,\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"name\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumRemoved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"SignalSent\",\"inputs\":[{\"type\":\"address\",\"name\":\"app\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"slot\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"slotB\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TcbInfoJsonConfigured\",\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"indexed\":false,\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"canonicalChainId\",\"indexed\":false},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferBatch\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256[]\",\"name\":\"ids\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"values\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferSingle\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionContested\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"contester\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"contestBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionProved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"validityBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"URI\",\"inputs\":[{\"type\":\"string\",\"name\":\"value\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_DATA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_ECDSA_SIGNATURE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEAUTHDATA_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEREPORT_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_MEMBER_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_UNSUPPORT_CERTIFICATION_TYPE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INSUFFICIENT_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_CTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"allowance\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"approvals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"bytes32\",\"name\":\"proofHash\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"approvalBits\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\",\"name\":\"approved_\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"authorize\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_addr\"},{\"type\":\"bool\",\"name\":\"_authorize\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"id\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOfBatch\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"accounts\"},{\"type\":\"uint256[]\",\"name\":\"ids\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"batchTransfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"recipients\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_user\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"btokenDenylist\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"denied\"}]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"canonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btoken\"}]},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctoken\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"address\",\"name\":\"_btokenNew\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btokenOld_\"}]},{\"type\":\"function\",\"name\":\"changeMigrationStatus\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_migratingAddress\"},{\"type\":\"bool\",\"name\":\"_migratingInbound\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"checkLocalEnclaveReport\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"checkpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint32\",\"name\":\"pos\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint32\",\"name\":\"fromBlock\"},{\"type\":\"uint224\",\"name\":\"votes\"}]}]},{\"type\":\"function\",\"name\":\"clock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint48\"}]},{\"type\":\"function\",\"name\":\"configureQeIdentityJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"configureTcbInfoJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"context\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"name\":\"ctx_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"}]}]},{\"type\":\"function\",\"name\":\"decimals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint8\"}]},{\"type\":\"function\",\"name\":\"decodeCert\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"der\"},{\"type\":\"bool\",\"name\":\"isPckCert\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"tuple\",\"name\":\"cert\",\"components\":[{\"type\":\"uint256\",\"name\":\"notBefore\"},{\"type\":\"uint256\",\"name\":\"notAfter\"},{\"type\":\"bytes\",\"name\":\"serialNumber\"},{\"type\":\"bytes\",\"name\":\"tbsCertificate\"},{\"type\":\"bytes\",\"name\":\"pubKey\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bool\",\"name\":\"isPck\"},{\"type\":\"tuple\",\"name\":\"pck\",\"components\":[{\"type\":\"string\",\"name\":\"commonName\"},{\"type\":\"string\",\"name\":\"issuerName\"},{\"type\":\"tuple\",\"name\":\"sgxExtension\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint256[]\",\"name\":\"sgxTcbCompSvnArr\"}]}]}]}]},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"subtractedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"delegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegateBySig\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"},{\"type\":\"uint256\",\"name\":\"nonce\"},{\"type\":\"uint256\",\"name\":\"expiry\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegates\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"depositBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"eip712Domain\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes1\",\"name\":\"fields\"},{\"type\":\"string\",\"name\":\"name\"},{\"type\":\"string\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"verifyingContract\"},{\"type\":\"bytes32\",\"name\":\"salt\"},{\"type\":\"uint256[]\",\"name\":\"extensions\"}]},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"failMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getApproved\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"blk_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]}]},{\"type\":\"function\",\"name\":\"getConfig\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"uint64\",\"name\":\"blockMaxProposals\"},{\"type\":\"uint64\",\"name\":\"blockRingBufferSize\"},{\"type\":\"uint64\",\"name\":\"maxBlocksToVerify\"},{\"type\":\"uint32\",\"name\":\"blockMaxGasLimit\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint8\",\"name\":\"stateRootSyncInternal\"},{\"type\":\"bool\",\"name\":\"checkEOAForCalldataDA\"}]}]},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"dataLength\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"getMinTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getPastVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"getStateVariables\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"chainData_\"}]},{\"type\":\"function\",\"name\":\"getTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint16\",\"name\":\"_tierId\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"verifierName\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint24\",\"name\":\"cooldownWindow\"},{\"type\":\"uint16\",\"name\":\"provingWindow\"},{\"type\":\"uint8\",\"name\":\"maxBlocksToVerifyPerProof\"}]}]},{\"type\":\"function\",\"name\":\"getTierIds\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint16[]\",\"name\":\"tiers_\"}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"uint32\",\"name\":\"_tid\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_parentHash\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"prover_\"}]},{\"type\":\"function\",\"name\":\"getVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"guardianIds\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"guardian\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"id\"}]},{\"type\":\"function\",\"name\":\"guardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"hashAssignment\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_assignment\",\"components\":[{\"type\":\"address\",\"name\":\"feeToken\"},{\"type\":\"uint64\",\"name\":\"expiry\"},{\"type\":\"uint64\",\"name\":\"maxBlockId\"},{\"type\":\"uint64\",\"name\":\"maxProposedIn\"},{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"tuple[]\",\"name\":\"tierFees\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint128\",\"name\":\"fee\"}]},{\"type\":\"bytes\",\"name\":\"signature\"}]},{\"type\":\"address\",\"name\":\"_taikoL1Address\"},{\"type\":\"address\",\"name\":\"_blockProposer\"},{\"type\":\"address\",\"name\":\"_assignedProver\"},{\"type\":\"bytes32\",\"name\":\"_blobHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"hashMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"impl\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"addedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"bytes32\",\"name\":\"_genesisBlockHash\"},{\"type\":\"bool\",\"name\":\"_toPause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"sigVerifyLibAddr\"},{\"type\":\"address\",\"name\":\"pemCertLibAddr\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"uint8\",\"name\":\"_decimals\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init2\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"address\",\"name\":\"operator\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isAuthorized\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"addr\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"authorized\"}]},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"enabled_\"},{\"type\":\"address\",\"name\":\"destBridge_\"}]},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isSignalSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"timestamp\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"latestProofHash\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"blockId\"}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"hash\"}]},{\"type\":\"function\",\"name\":\"messageStatus\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status\"}]},{\"type\":\"function\",\"name\":\"migratingAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"migratingInbound\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"minGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mintBatch\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256[]\",\"name\":\"_tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"_amounts\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"nextMessageId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nonces\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"numGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"onBlockProposed\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_blk\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]},{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256[]\"},{\"type\":\"uint256[]\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC721Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"ownerOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseProving\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_pause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pemCertLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"permit\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"uint256\",\"name\":\"deadline\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"processMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status_\"},{\"type\":\"uint8\",\"name\":\"reason_\"}]},{\"type\":\"function\",\"name\":\"proposeBlock\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_params\"},{\"type\":\"bytes\",\"name\":\"_txList\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"meta_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"deposits_\",\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"function\",\"name\":\"proveBlock\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes\",\"name\":\"_input\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"numCacheOps_\"}]},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"qeIdentity\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"}]},{\"type\":\"function\",\"name\":\"recallMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"removeRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"retryMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bool\",\"name\":\"_isLastAttempt\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeBatchTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256[]\",\"name\":\"ids\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"id\"},{\"type\":\"uint256\",\"name\":\"amount\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"selfDelegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_anyToken\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sendMessage\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash_\"},{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendSignal\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256[]\",\"name\":\"tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256\",\"name\":\"amount\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"serialNumIsRevoked\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"idx\"},{\"type\":\"bytes\",\"name\":\"serialNum\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"revoked\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"operator\"},{\"type\":\"bool\",\"name\":\"approved\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setGuardians\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_newGuardians\"},{\"type\":\"uint8\",\"name\":\"_minGuardians\"},{\"type\":\"bool\",\"name\":\"_clearData\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrEnclave\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrEnclave\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrSigner\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrSigner\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sigVerifyLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"signalForChainData\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"source\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"splitCertificateChain\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"pemChain\"},{\"type\":\"uint256\",\"name\":\"size\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"bytes[]\",\"name\":\"certs\"}]},{\"type\":\"function\",\"name\":\"srcChainId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"srcToken\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"state\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"__reserve1\"},{\"type\":\"tuple\",\"name\":\"slotA\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"name\":\"slotB\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"supportsInterface\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes4\",\"name\":\"_interfaceId\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"syncChainData\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"tcbInfo\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"}],\"outputs\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"}]},{\"type\":\"function\",\"name\":\"toggleLocalReportCheck\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"tokenURI\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"topBlockId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"kind\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId\"}]},{\"type\":\"function\",\"name\":\"totalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"transfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"trustedUserMrEnclave\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"enclave\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"trustedUserMrSigner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"signer\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"uri\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"verifyAttestation\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"}]},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_maxBlocksToVerify\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyES256Signature\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"tbs\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bytes\",\"name\":\"publicKey\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"sigValid\"}]},{\"type\":\"function\",\"name\":\"verifyParsedQuote\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"v3quote\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"bool\"},{\"type\":\"bytes\"}]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"version\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"withdrawBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"constructor\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"es256Verifier\"}]}]","addresses":["0x02772b7B3a5Bea0141C993Dbb8D0733C19F46169","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0x39E4C1214e733639d059979079A151911e42791d","0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0x579f40D0BE111b823962043702cabe6Aaa290780","0x67281b15aee4d6b805bc755e439abd524dd8da8d","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0xa25e645ff9897b0282e5f17d36de5bca4ec21d6e","0xaf145913EA4a56BE22E120ED9C24589659881702","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0xc4096E9ff1526Bd1840B65e9f45695135aC12De7","0xcc5d488073FA918cBbd73B9A523F3858C4de7372","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC"]}],"createdAt":"2024-08-27T09:44:01.744Z","subscriberId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","name":"TaikoL1: Pause/Unpause","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","blockWatcherId":"mainnet-6","paused":false,"stackResourceId":"mystack.taiko-l-1-pause-unpause","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"LOW","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet SGX Prover triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceAdded(uint256,address,address,uint256)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceDeleted(uint256,address)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[{"functionSignature":"verifyProof((bytes32,bytes32,address,uint64,bool,bool,address),(bytes32,bytes32,bytes32,bytes32),(uint16,bytes))","expression":null}],"eventConditions":[]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]}]","addresses":["0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81"]}],"createdAt":"2024-05-02T14:09:42.804Z","subscriberId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","name":"Taiko Mainnet SGX Prover","network":"mainnet","riskCategory":"TECHNICAL","monitorId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-sgx-prover","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Address Managers triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AddressSet(uint64,bytes32,address,address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x579f40D0BE111b823962043702cabe6Aaa290780"]}],"createdAt":"2024-05-02T14:00:18.874Z","subscriberId":"3919cb83-487f-4432-88fa-33bbe4361fce","name":"Taiko Mainnet Address Managers","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"3919cb83-487f-4432-88fa-33bbe4361fce","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-address-managers","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Essential Contracts triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AdminChanged(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"BeaconUpgraded(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Initialized(uint8)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferStarted(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferred(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Upgraded(address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0xaf145913EA4a56BE22E120ED9C24589659881702","0x579f40D0BE111b823962043702cabe6Aaa290780","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3"]}],"createdAt":"2024-05-02T13:49:54.192Z","subscriberId":"67a53521-3d4a-4de4-92ab-ede82cc45644","name":"Taiko Mainnet Essential Contracts","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"67a53521-3d4a-4de4-92ab-ede82cc45644","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-essential-contracts","type":"BLOCK"}]},"actions":{"removed":[],"created":[],"updated":[]},"contracts":{"removed":[],"created":[],"updated":[]},"relayers":{"removed":[],"created":[],"updated":[],"relayerKeys":{"removed":[],"created":[],"updated":[]}},"notifications":{"removed":[],"created":[],"updated":[]},"secrets":{"removed":[],"created":[],"updated":[]},"blockExplorerApiKeys":{"removed":[],"created":[],"updated":[]},"forkedNetworks":{"removed":[],"created":[],"updated":[]},"privateNetworks":{"removed":[],"created":[],"updated":[]}} +{"stack":"mystack","timestamp":"2024-09-20T11:03:25.435Z","monitors":{"removed":[],"created":[],"updated":[{"skipABIValidation":false,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"⚠️ TaikoL1: ProvingPaused Alert","notifications":[{"paused":false,"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","type":"discord","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"stackResourceId":"mystack.discord-bridging","updatedAt":"2024-09-19T10:48:03.908Z"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[],"addresses":["0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a"]}],"createdAt":"2024-09-20T10:36:31.684Z","subscriberId":"1bc1012e-54fc-4fbc-8971-54c5b2a5146e","name":"TaikoL1: ProvingPaused Alert","network":"mainnet","monitorId":"1bc1012e-54fc-4fbc-8971-54c5b2a5146e","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-l-1-proving-paused-alert","type":"BLOCK"},{"skipABIValidation":false,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"⚠️ GuardianProver: GuardiansUpdated Alert","notifications":[{"paused":false,"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","type":"discord","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"stackResourceId":"mystack.discord-bridging","updatedAt":"2024-09-19T10:48:03.908Z"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[],"addresses":["0xE3D777143Ea25A6E031d1e921F396750885f43aC"]}],"createdAt":"2024-09-20T10:36:35.701Z","subscriberId":"8e05b9b7-09d2-4b2e-b843-96a62f03c80a","name":"GuardianProver: GuardiansUpdated Alert","network":"mainnet","monitorId":"8e05b9b7-09d2-4b2e-b843-96a62f03c80a","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.guardian-prover-guardians-updated-alert","type":"BLOCK"},{"skipABIValidation":false,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"🚨 GuardianProver: ConflictingProofs Alert","notifications":[{"paused":false,"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","type":"discord","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"stackResourceId":"mystack.discord-bridging","updatedAt":"2024-09-19T10:48:03.908Z"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[],"addresses":["0xE3D777143Ea25A6E031d1e921F396750885f43aC"]}],"createdAt":"2024-09-20T10:36:39.801Z","subscriberId":"deb988aa-3550-4690-9f9b-b45486a45af0","name":"GuardianProver: ConflictingProofs Alert","network":"mainnet","monitorId":"deb988aa-3550-4690-9f9b-b45486a45af0","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.guardian-prover-conflicting-proofs-alert","type":"BLOCK"},{"skipABIValidation":false,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"⚠️ GuardianProver: ProvingAutoPauseEnabled Alert","notifications":[{"paused":false,"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","type":"discord","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"stackResourceId":"mystack.discord-bridging","updatedAt":"2024-09-19T10:48:03.908Z"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[],"addresses":["0xE3D777143Ea25A6E031d1e921F396750885f43aC"]}],"createdAt":"2024-09-20T10:36:44.961Z","subscriberId":"cf7ea759-183f-4761-96cc-ec6cf9052d3b","name":"GuardianProver: ProvingAutoPauseEnabled Alert","network":"mainnet","monitorId":"cf7ea759-183f-4761-96cc-ec6cf9052d3b","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.guardian-prover-proving-auto-pause-enabled-alert","type":"BLOCK"},{"skipABIValidation":true,"alertThreshold":null,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"Defender Monitor: TaikoL1: Pause/Unpause triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]}],"abi":"[{\"type\":\"error\",\"name\":\"AM_ADDRESS_ALREADY_SET\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"spender\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"approved\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ApprovalForAll\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"operationId\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"approvalBits\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"minGuardiansReached\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Authorized\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"authorized\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"BB_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_MINT_DISALLOWED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_CANNOT_RECEIVE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_BURN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockProposed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"assignedProver\",\"indexed\":true},{\"type\":\"uint96\",\"name\":\"livenessBond\",\"indexed\":false},{\"type\":\"tuple\",\"name\":\"meta\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"depositsProcessed\",\"indexed\":false,\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockVerified\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"stateRoot\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondCredited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondDebited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btokenOld\",\"indexed\":false},{\"type\":\"address\",\"name\":\"btokenNew\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"CalldataTxList\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"txList\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ChainDataSynced\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"kind\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"data\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ConflictingProofs\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"guardian\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"currentProofHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"newProofHash\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"provingPaused\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"fromDelegate\",\"indexed\":true},{\"type\":\"address\",\"name\":\"toDelegate\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegate\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"previousBalance\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"newBalance\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EIP712DomainChanged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EtherPaymentFailed\",\"inputs\":[{\"type\":\"address\",\"name\":\"to\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"maxGas\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardianApproval\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false},{\"type\":\"bytes\",\"name\":\"proofData\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardiansUpdated\",\"inputs\":[{\"type\":\"uint32\",\"name\":\"version\",\"indexed\":false},{\"type\":\"address[]\",\"name\":\"guardians\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_EXPIRED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"LocalReportCheckToggled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"checkLocalEnclaveReport\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"MAX_GAS_PAYING_PROVER\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageProcessed\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"stats\",\"indexed\":false,\"components\":[{\"type\":\"uint32\",\"name\":\"gasUsedInFeeCalc\"},{\"type\":\"uint32\",\"name\":\"proofSize\"},{\"type\":\"uint32\",\"name\":\"numCacheOps\"},{\"type\":\"bool\",\"name\":\"processedByRelayer\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageStatusChanged\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"uint8\",\"name\":\"status\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigratedTo\",\"inputs\":[{\"type\":\"address\",\"name\":\"fromToken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigrationStatusChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"inbound\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrEnclaveUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrEnclave\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrSignerUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrSigner\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"enabled\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingPaused\",\"inputs\":[{\"type\":\"bool\",\"name\":\"paused\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"QeIdentityConfigured\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"indexed\":false,\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"name\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumRemoved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"SignalSent\",\"inputs\":[{\"type\":\"address\",\"name\":\"app\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"slot\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"slotB\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TcbInfoJsonConfigured\",\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"indexed\":false,\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"canonicalChainId\",\"indexed\":false},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferBatch\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256[]\",\"name\":\"ids\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"values\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferSingle\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionContested\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"contester\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"contestBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionProved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"validityBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"URI\",\"inputs\":[{\"type\":\"string\",\"name\":\"value\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_DATA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_ECDSA_SIGNATURE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEAUTHDATA_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEREPORT_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_MEMBER_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_UNSUPPORT_CERTIFICATION_TYPE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INSUFFICIENT_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_CTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"allowance\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"approvals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"bytes32\",\"name\":\"proofHash\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"approvalBits\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\",\"name\":\"approved_\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"authorize\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_addr\"},{\"type\":\"bool\",\"name\":\"_authorize\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"id\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOfBatch\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"accounts\"},{\"type\":\"uint256[]\",\"name\":\"ids\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"batchTransfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"recipients\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_user\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"btokenDenylist\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"denied\"}]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"canonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btoken\"}]},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctoken\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"address\",\"name\":\"_btokenNew\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btokenOld_\"}]},{\"type\":\"function\",\"name\":\"changeMigrationStatus\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_migratingAddress\"},{\"type\":\"bool\",\"name\":\"_migratingInbound\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"checkLocalEnclaveReport\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"checkpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint32\",\"name\":\"pos\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint32\",\"name\":\"fromBlock\"},{\"type\":\"uint224\",\"name\":\"votes\"}]}]},{\"type\":\"function\",\"name\":\"clock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint48\"}]},{\"type\":\"function\",\"name\":\"configureQeIdentityJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"configureTcbInfoJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"context\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"name\":\"ctx_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"}]}]},{\"type\":\"function\",\"name\":\"decimals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint8\"}]},{\"type\":\"function\",\"name\":\"decodeCert\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"der\"},{\"type\":\"bool\",\"name\":\"isPckCert\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"tuple\",\"name\":\"cert\",\"components\":[{\"type\":\"uint256\",\"name\":\"notBefore\"},{\"type\":\"uint256\",\"name\":\"notAfter\"},{\"type\":\"bytes\",\"name\":\"serialNumber\"},{\"type\":\"bytes\",\"name\":\"tbsCertificate\"},{\"type\":\"bytes\",\"name\":\"pubKey\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bool\",\"name\":\"isPck\"},{\"type\":\"tuple\",\"name\":\"pck\",\"components\":[{\"type\":\"string\",\"name\":\"commonName\"},{\"type\":\"string\",\"name\":\"issuerName\"},{\"type\":\"tuple\",\"name\":\"sgxExtension\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint256[]\",\"name\":\"sgxTcbCompSvnArr\"}]}]}]}]},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"subtractedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"delegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegateBySig\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"},{\"type\":\"uint256\",\"name\":\"nonce\"},{\"type\":\"uint256\",\"name\":\"expiry\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegates\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"depositBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"eip712Domain\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes1\",\"name\":\"fields\"},{\"type\":\"string\",\"name\":\"name\"},{\"type\":\"string\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"verifyingContract\"},{\"type\":\"bytes32\",\"name\":\"salt\"},{\"type\":\"uint256[]\",\"name\":\"extensions\"}]},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"failMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getApproved\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"blk_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]}]},{\"type\":\"function\",\"name\":\"getConfig\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"uint64\",\"name\":\"blockMaxProposals\"},{\"type\":\"uint64\",\"name\":\"blockRingBufferSize\"},{\"type\":\"uint64\",\"name\":\"maxBlocksToVerify\"},{\"type\":\"uint32\",\"name\":\"blockMaxGasLimit\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint8\",\"name\":\"stateRootSyncInternal\"},{\"type\":\"bool\",\"name\":\"checkEOAForCalldataDA\"}]}]},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"dataLength\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"getMinTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getPastVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"getStateVariables\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"chainData_\"}]},{\"type\":\"function\",\"name\":\"getTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint16\",\"name\":\"_tierId\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"verifierName\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint24\",\"name\":\"cooldownWindow\"},{\"type\":\"uint16\",\"name\":\"provingWindow\"},{\"type\":\"uint8\",\"name\":\"maxBlocksToVerifyPerProof\"}]}]},{\"type\":\"function\",\"name\":\"getTierIds\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint16[]\",\"name\":\"tiers_\"}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"uint32\",\"name\":\"_tid\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_parentHash\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"prover_\"}]},{\"type\":\"function\",\"name\":\"getVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"guardianIds\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"guardian\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"id\"}]},{\"type\":\"function\",\"name\":\"guardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"hashAssignment\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_assignment\",\"components\":[{\"type\":\"address\",\"name\":\"feeToken\"},{\"type\":\"uint64\",\"name\":\"expiry\"},{\"type\":\"uint64\",\"name\":\"maxBlockId\"},{\"type\":\"uint64\",\"name\":\"maxProposedIn\"},{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"tuple[]\",\"name\":\"tierFees\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint128\",\"name\":\"fee\"}]},{\"type\":\"bytes\",\"name\":\"signature\"}]},{\"type\":\"address\",\"name\":\"_taikoL1Address\"},{\"type\":\"address\",\"name\":\"_blockProposer\"},{\"type\":\"address\",\"name\":\"_assignedProver\"},{\"type\":\"bytes32\",\"name\":\"_blobHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"hashMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"impl\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"addedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"bytes32\",\"name\":\"_genesisBlockHash\"},{\"type\":\"bool\",\"name\":\"_toPause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"sigVerifyLibAddr\"},{\"type\":\"address\",\"name\":\"pemCertLibAddr\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"uint8\",\"name\":\"_decimals\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init2\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"address\",\"name\":\"operator\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isAuthorized\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"addr\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"authorized\"}]},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"enabled_\"},{\"type\":\"address\",\"name\":\"destBridge_\"}]},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isSignalSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"timestamp\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"latestProofHash\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"blockId\"}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"hash\"}]},{\"type\":\"function\",\"name\":\"messageStatus\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status\"}]},{\"type\":\"function\",\"name\":\"migratingAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"migratingInbound\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"minGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mintBatch\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256[]\",\"name\":\"_tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"_amounts\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"nextMessageId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nonces\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"numGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"onBlockProposed\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_blk\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]},{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256[]\"},{\"type\":\"uint256[]\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC721Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"ownerOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseProving\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_pause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pemCertLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"permit\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"uint256\",\"name\":\"deadline\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"processMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status_\"},{\"type\":\"uint8\",\"name\":\"reason_\"}]},{\"type\":\"function\",\"name\":\"proposeBlock\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_params\"},{\"type\":\"bytes\",\"name\":\"_txList\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"meta_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"deposits_\",\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"function\",\"name\":\"proveBlock\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes\",\"name\":\"_input\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"numCacheOps_\"}]},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"qeIdentity\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"}]},{\"type\":\"function\",\"name\":\"recallMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"removeRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"retryMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bool\",\"name\":\"_isLastAttempt\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeBatchTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256[]\",\"name\":\"ids\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"id\"},{\"type\":\"uint256\",\"name\":\"amount\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"selfDelegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_anyToken\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sendMessage\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash_\"},{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendSignal\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256[]\",\"name\":\"tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256\",\"name\":\"amount\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"serialNumIsRevoked\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"idx\"},{\"type\":\"bytes\",\"name\":\"serialNum\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"revoked\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"operator\"},{\"type\":\"bool\",\"name\":\"approved\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setGuardians\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_newGuardians\"},{\"type\":\"uint8\",\"name\":\"_minGuardians\"},{\"type\":\"bool\",\"name\":\"_clearData\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrEnclave\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrEnclave\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrSigner\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrSigner\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sigVerifyLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"signalForChainData\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"source\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"splitCertificateChain\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"pemChain\"},{\"type\":\"uint256\",\"name\":\"size\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"bytes[]\",\"name\":\"certs\"}]},{\"type\":\"function\",\"name\":\"srcChainId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"srcToken\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"state\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"__reserve1\"},{\"type\":\"tuple\",\"name\":\"slotA\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"name\":\"slotB\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"supportsInterface\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes4\",\"name\":\"_interfaceId\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"syncChainData\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"tcbInfo\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"}],\"outputs\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"}]},{\"type\":\"function\",\"name\":\"toggleLocalReportCheck\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"tokenURI\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"topBlockId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"kind\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId\"}]},{\"type\":\"function\",\"name\":\"totalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"transfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"trustedUserMrEnclave\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"enclave\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"trustedUserMrSigner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"signer\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"uri\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"verifyAttestation\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"}]},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_maxBlocksToVerify\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyES256Signature\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"tbs\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bytes\",\"name\":\"publicKey\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"sigValid\"}]},{\"type\":\"function\",\"name\":\"verifyParsedQuote\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"v3quote\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"bool\"},{\"type\":\"bytes\"}]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"version\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"withdrawBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"constructor\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"es256Verifier\"}]}]","addresses":["0x02772b7B3a5Bea0141C993Dbb8D0733C19F46169","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0x39E4C1214e733639d059979079A151911e42791d","0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0x579f40D0BE111b823962043702cabe6Aaa290780","0x67281b15aee4d6b805bc755e439abd524dd8da8d","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0xa25e645ff9897b0282e5f17d36de5bca4ec21d6e","0xaf145913EA4a56BE22E120ED9C24589659881702","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0xc4096E9ff1526Bd1840B65e9f45695135aC12De7","0xcc5d488073FA918cBbd73B9A523F3858C4de7372","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC"]}],"createdAt":"2024-08-27T09:44:01.744Z","subscriberId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","name":"TaikoL1: Pause/Unpause","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","blockWatcherId":"mainnet-6","paused":false,"stackResourceId":"mystack.taiko-l-1-pause-unpause","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"LOW","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet SGX Prover triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceAdded(uint256,address,address,uint256)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceDeleted(uint256,address)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[{"functionSignature":"verifyProof((bytes32,bytes32,address,uint64,bool,bool,address),(bytes32,bytes32,bytes32,bytes32),(uint16,bytes))","expression":null}],"eventConditions":[]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]}]","addresses":["0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81"]}],"createdAt":"2024-05-02T14:09:42.804Z","subscriberId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","name":"Taiko Mainnet SGX Prover","network":"mainnet","riskCategory":"TECHNICAL","monitorId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-sgx-prover","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Address Managers triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AddressSet(uint64,bytes32,address,address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x579f40D0BE111b823962043702cabe6Aaa290780"]}],"createdAt":"2024-05-02T14:00:18.874Z","subscriberId":"3919cb83-487f-4432-88fa-33bbe4361fce","name":"Taiko Mainnet Address Managers","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"3919cb83-487f-4432-88fa-33bbe4361fce","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-address-managers","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Essential Contracts triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AdminChanged(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"BeaconUpgraded(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Initialized(uint8)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferStarted(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferred(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Upgraded(address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0xaf145913EA4a56BE22E120ED9C24589659881702","0x579f40D0BE111b823962043702cabe6Aaa290780","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3"]}],"createdAt":"2024-05-02T13:49:54.192Z","subscriberId":"67a53521-3d4a-4de4-92ab-ede82cc45644","name":"Taiko Mainnet Essential Contracts","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"67a53521-3d4a-4de4-92ab-ede82cc45644","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-essential-contracts","type":"BLOCK"}]},"actions":{"removed":[],"created":[],"updated":[{"autotaskId":"86964fd3-3da8-4501-a572-cbf51045f861","actionId":"86964fd3-3da8-4501-a572-cbf51045f861","name":"ERC20Vault: Balance Drop","paused":false,"trigger":{"cron":null,"frequencyMinutes":15,"type":"schedule"},"codeDigest":"+Y75bpyOzEuCm0y95ZczKkySm4PgLyQQt6ASpaB08Lk=","stackResourceId":"mystack.erc-20-vault-balance-drop","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVASVlLscBMAAHATAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBFUkMyMF9BQkkgPSBbCiAgewogICAgY29uc3RhbnQ6IHRydWUsCiAgICBpbnB1dHM6IFt7IG5hbWU6ICJfb3duZXIiLCB0eXBlOiAiYWRkcmVzcyIgfV0sCiAgICBuYW1lOiAiYmFsYW5jZU9mIiwKICAgIG91dHB1dHM6IFt7IG5hbWU6ICJiYWxhbmNlIiwgdHlwZTogInVpbnQyNTYiIH1dLAogICAgcGF5YWJsZTogZmFsc2UsCiAgICBzdGF0ZU11dGFiaWxpdHk6ICJ2aWV3IiwKICAgIHR5cGU6ICJmdW5jdGlvbiIsCiAgfSwKXTsKCmFzeW5jIGZ1bmN0aW9uIGdldEVSQzIwQmFsYW5jZShwcm92aWRlciwgdG9rZW5BZGRyZXNzLCB2YXVsdEFkZHJlc3MpIHsKICBjb25zdCBjb250cmFjdCA9IG5ldyBldGhlcnMuQ29udHJhY3QodG9rZW5BZGRyZXNzLCBFUkMyMF9BQkksIHByb3ZpZGVyKTsKICByZXR1cm4gYXdhaXQgY29udHJhY3QuYmFsYW5jZU9mKHZhdWx0QWRkcmVzcyk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldE5hdGl2ZVRva2VuQmFsYW5jZShwcm92aWRlciwgdmF1bHRBZGRyZXNzKSB7CiAgcmV0dXJuIGF3YWl0IHByb3ZpZGVyLmdldEJhbGFuY2UodmF1bHRBZGRyZXNzKTsKfQoKYXN5bmMgZnVuY3Rpb24gbW9uaXRvclRva2VuQmFsYW5jZSgKICBwcm92aWRlciwKICB0b2tlbkFkZHJlc3MsCiAgdmF1bHRBZGRyZXNzLAogIHByZXZpb3VzQmFsYW5jZUtleSwKICBub3RpZmljYXRpb25DbGllbnQsCiAgc2VjcmV0cywKICBjbGllbnQsCiAgdG9rZW5OYW1lLAogIG5ldHdvcmtOYW1lLAopIHsKICBjb25zb2xlLmxvZyhgTW9uaXRvcmluZyAke3Rva2VuTmFtZX0gYmFsYW5jZSBvbiAke25ldHdvcmtOYW1lfWApOwogIGNvbnN0IHByZXZpb3VzQmFsYW5jZSA9IGV0aGVycy5CaWdOdW1iZXIuZnJvbSgKICAgIHNlY3JldHNbcHJldmlvdXNCYWxhbmNlS2V5XSB8fCAiMCIsCiAgKTsKICBjb25zb2xlLmxvZygKICAgIGBQcmV2aW91cyAke3Rva2VuTmFtZX0gQmFsYW5jZTogJHtldGhlcnMudXRpbHMuZm9ybWF0VW5pdHMoCiAgICAgIHByZXZpb3VzQmFsYW5jZSwKICAgICAgMTgsCiAgICApfWAsCiAgKTsKCiAgbGV0IGN1cnJlbnRCYWxhbmNlOwogIGlmICh0b2tlbk5hbWUgPT09ICJFVEgiKSB7CiAgICBjdXJyZW50QmFsYW5jZSA9IGF3YWl0IGdldE5hdGl2ZVRva2VuQmFsYW5jZShwcm92aWRlciwgdmF1bHRBZGRyZXNzKTsKICB9IGVsc2UgewogICAgY3VycmVudEJhbGFuY2UgPSBhd2FpdCBnZXRFUkMyMEJhbGFuY2UoCiAgICAgIHByb3ZpZGVyLAogICAgICB0b2tlbkFkZHJlc3MsCiAgICAgIHZhdWx0QWRkcmVzcywKICAgICk7CiAgfQogIGNvbnNvbGUubG9nKAogICAgYEN1cnJlbnQgJHt0b2tlbk5hbWV9IEJhbGFuY2U6ICR7ZXRoZXJzLnV0aWxzLmZvcm1hdFVuaXRzKAogICAgICBjdXJyZW50QmFsYW5jZSwKICAgICAgMTgsCiAgICApfWAsCiAgKTsKCiAgaWYgKCFwcmV2aW91c0JhbGFuY2UuaXNaZXJvKCkpIHsKICAgIGNvbnN0IGRyb3BQZXJjZW50YWdlID0gcHJldmlvdXNCYWxhbmNlCiAgICAgIC5zdWIoY3VycmVudEJhbGFuY2UpCiAgICAgIC5tdWwoMTAwKQogICAgICAuZGl2KHByZXZpb3VzQmFsYW5jZSkKICAgICAgLnRvTnVtYmVyKCk7CiAgICBjb25zb2xlLmxvZygKICAgICAgYENhbGN1bGF0ZWQgZHJvcCBwZXJjZW50YWdlIGZvciAke3Rva2VuTmFtZX06ICR7ZHJvcFBlcmNlbnRhZ2V9JWAsCiAgICApOwoKICAgIGlmIChkcm9wUGVyY2VudGFnZSA+PSA1KSB7CiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQWxlcnQ6ICR7dG9rZW5OYW1lfSBiYWxhbmNlIGhhcyBkcm9wcGVkIGJ5ICR7ZHJvcFBlcmNlbnRhZ2V9JSBvbiAke25ldHdvcmtOYW1lfS5cblByZXZpb3VzIEJhbGFuY2U6ICR7ZXRoZXJzLnV0aWxzLmZvcm1hdFVuaXRzKAogICAgICAgIHByZXZpb3VzQmFsYW5jZSwKICAgICAgICAxOCwKICAgICAgKX1cbkN1cnJlbnQgQmFsYW5jZTogJHtldGhlcnMudXRpbHMuZm9ybWF0VW5pdHMoY3VycmVudEJhbGFuY2UsIDE4KX1gOwogICAgICBhbGVydE9yZygKICAgICAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICAgICAgYOKaoO+4jyAke25ldHdvcmtOYW1lfTogJHt0b2tlbk5hbWV9IEJhbGFuY2UgRHJvcCBBbGVydGAsCiAgICAgICAgbWVzc2FnZSwKICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnNvbGUubG9nKAogICAgICAgIGBObyBzaWduaWZpY2FudCAke3Rva2VuTmFtZX0gYmFsYW5jZSBkcm9wIGRldGVjdGVkIG9uICR7bmV0d29ya05hbWV9YCwKICAgICAgKTsKICAgIH0KICB9IGVsc2UgewogICAgY29uc29sZS5sb2coCiAgICAgIGBObyBwcmV2aW91cyAke3Rva2VuTmFtZX0gYmFsYW5jZSB0byBjb21wYXJlIG9uICR7bmV0d29ya05hbWV9YCwKICAgICk7CiAgfQoKICBhd2FpdCBzdG9yZVByZXZpb3VzQmFsYW5jZShjbGllbnQsIHByZXZpb3VzQmFsYW5jZUtleSwgY3VycmVudEJhbGFuY2UpOwp9CgpmdW5jdGlvbiBhbGVydE9yZyhub3RpZmljYXRpb25DbGllbnQsIHN1YmplY3QsIG1lc3NhZ2UpIHsKICBub3RpZmljYXRpb25DbGllbnQuc2VuZCh7CiAgICBjaGFubmVsQWxpYXM6ICJkaXNjb3JkX2JyaWRnaW5nIiwKICAgIHN1YmplY3QsCiAgICBtZXNzYWdlLAogIH0pOwp9Cgphc3luYyBmdW5jdGlvbiBzdG9yZVByZXZpb3VzQmFsYW5jZShjbGllbnQsIGtleSwgbmV3QmFsYW5jZSkgewogIGNvbnNvbGUubG9nKAogICAgYFN0b3JpbmcgcHJldmlvdXMgYmFsYW5jZSB1bmRlciBrZXk6ICR7a2V5fSwgdmFsdWU6ICR7bmV3QmFsYW5jZS50b1N0cmluZygpfWAsCiAgKTsKICBjb25zdCBib2R5ID0gewogICAgZGVsZXRlczogW10sCiAgICBzZWNyZXRzOiB7CiAgICAgIFtrZXldOiBuZXdCYWxhbmNlLnRvU3RyaW5nKCksCiAgICB9LAogIH07CiAgYXdhaXQgY2xpZW50LmFjdGlvbi5jcmVhdGVTZWNyZXRzKGJvZHkpOwp9CgpmdW5jdGlvbiBjcmVhdGVQcm92aWRlcihhcGlLZXksIGFwaVNlY3JldCwgcmVsYXllckFwaUtleSwgcmVsYXllckFwaVNlY3JldCkgewogIGNvbnNvbGUubG9nKGBDcmVhdGluZyBwcm92aWRlciB3aXRoIEFQSSBrZXlzYCk7CiAgY29uc3QgY2xpZW50ID0gbmV3IERlZmVuZGVyKHsKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHJlbGF5ZXJBcGlLZXksCiAgICByZWxheWVyQXBpU2VjcmV0LAogIH0pOwoKICByZXR1cm4gY2xpZW50LnJlbGF5U2lnbmVyLmdldFByb3ZpZGVyKCk7Cn0KCmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkgewogIGNvbnN0IHsgbm90aWZpY2F0aW9uQ2xpZW50IH0gPSBjb250ZXh0OwogIGNvbnN0IHsgYXBpS2V5LCBhcGlTZWNyZXQsIHRhaWtvTDFBcGlLZXksIHRhaWtvTDFBcGlTZWNyZXQgfSA9IGV2ZW50LnNlY3JldHM7CgogIGNvbnNvbGUubG9nKGBTdGFydGluZyBiYWxhbmNlIG1vbml0b3JpbmcgZm9yIEwxYCk7CgogIGNvbnN0IGwxUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcigKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHRhaWtvTDFBcGlLZXksCiAgICB0YWlrb0wxQXBpU2VjcmV0LAogICk7CgogIGNvbnN0IGwxVmF1bHRBZGRyZXNzID0gIjB4OTk2MjgyY0ExMUU1REViNkI1RDEyMkNDM0I5QTFGY0FBRDQ0MTVBYiI7CgogIGNvbnN0IGwxVG9rZW5BZGRyZXNzZXMgPSB7CiAgICBFVEg6IG51bGwsCiAgICBUQUlLTzogZXRoZXJzLnV0aWxzLmdldEFkZHJlc3MoCiAgICAgICIweDEwZGVhNjc0NzhjNUY4QzVFMkQ5MGU1RTlCMjZkQmU2MGM1NGQ4MDAiLAogICAgKSwKICAgIFVTREM6IGV0aGVycy51dGlscy5nZXRBZGRyZXNzKCIweEEwYjg2OTkxYzYyMThiMzZjMWQxOUQ0YTJlOUViMGNFMzYwNmVCNDgiKSwKICAgIFVTRFQ6IGV0aGVycy51dGlscy5nZXRBZGRyZXNzKCIweGRBQzE3Rjk1OEQyZWU1MjNhMjIwNjIwNjk5NDU5N0MxM0Q4MzFlYzciKSwKICB9OwoKICBjb25zdCBjbGllbnQgPSBuZXcgRGVmZW5kZXIoewogICAgYXBpS2V5LAogICAgYXBpU2VjcmV0LAogICAgdGFpa29MMUFwaUtleSwKICAgIHRhaWtvTDFBcGlTZWNyZXQsCiAgfSk7CgogIGF3YWl0IG1vbml0b3JUb2tlbkJhbGFuY2UoCiAgICBsMVByb3ZpZGVyLAogICAgbDFUb2tlbkFkZHJlc3Nlcy5FVEgsCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfRVRIIiwKICAgIG5vdGlmaWNhdGlvbkNsaWVudCwKICAgIGV2ZW50LnNlY3JldHMsCiAgICBjbGllbnQsCiAgICAiRVRIIiwKICAgICJMMSIsCiAgKTsKICBhd2FpdCBtb25pdG9yVG9rZW5CYWxhbmNlKAogICAgbDFQcm92aWRlciwKICAgIGwxVG9rZW5BZGRyZXNzZXMuVEFJS08sCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfVEFJS08iLAogICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgZXZlbnQuc2VjcmV0cywKICAgIGNsaWVudCwKICAgICJUQUlLTyIsCiAgICAiTDEiLAogICk7CiAgYXdhaXQgbW9uaXRvclRva2VuQmFsYW5jZSgKICAgIGwxUHJvdmlkZXIsCiAgICBsMVRva2VuQWRkcmVzc2VzLlVTREMsCiAgICBsMVZhdWx0QWRkcmVzcywKICAgICJwcmV2aW91c0JhbGFuY2VfTDFfVVNEQyIsCiAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICBldmVudC5zZWNyZXRzLAogICAgY2xpZW50LAogICAgIlVTREMiLAogICAgIkwxIiwKICApOwogIGF3YWl0IG1vbml0b3JUb2tlbkJhbGFuY2UoCiAgICBsMVByb3ZpZGVyLAogICAgbDFUb2tlbkFkZHJlc3Nlcy5VU0RULAogICAgbDFWYXVsdEFkZHJlc3MsCiAgICAicHJldmlvdXNCYWxhbmNlX0wxX1VTRFQiLAogICAgbm90aWZpY2F0aW9uQ2xpZW50LAogICAgZXZlbnQuc2VjcmV0cywKICAgIGNsaWVudCwKICAgICJVU0RUIiwKICAgICJMMSIsCiAgKTsKCiAgY29uc29sZS5sb2coYEJhbGFuY2UgbW9uaXRvcmluZyBjb21wbGV0ZWRgKTsKCiAgcmV0dXJuIHRydWU7Cn07ClBLAQIUAAoAAAAAAAAAQVASVlLscBMAAHATAAAIAAAAAAAAAAAAAAAAAAAAAABpbmRleC5qc1BLBQYAAAAAAQABADYAAACWEwAAAAA="},{"autotaskId":"9c132973-b8dc-4406-895c-a4ba343455cf","actionId":"9c132973-b8dc-4406-895c-a4ba343455cf","name":"GuardianProver: Approved Count","paused":false,"trigger":{"cron":null,"frequencyMinutes":15,"type":"schedule"},"codeDigest":"uAUUlOAM2ITq1/WSZHtl4SydkwiCxNgrhR21sTpxmfc=","stackResourceId":"mystack.guardian-prover-approved-count","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-21","encodedZippedCode":"UEsDBAoAAAAAAAAAQVCjgTWbWw0AAFsNAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAib3BlcmF0aW9uSWQiLAogICAgICAgIHR5cGU6ICJ1aW50MjU2IiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogInVpbnQyNTYiLAogICAgICAgIG5hbWU6ICJhcHByb3ZhbEJpdHMiLAogICAgICAgIHR5cGU6ICJ1aW50MjU2IiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogImJvb2wiLAogICAgICAgIG5hbWU6ICJtaW5HdWFyZGlhbnNSZWFjaGVkIiwKICAgICAgICB0eXBlOiAiYm9vbCIsCiAgICAgIH0sCiAgICBdLAogICAgbmFtZTogIkFwcHJvdmVkIiwKICAgIHR5cGU6ICJldmVudCIsCiAgfSwKXTsKCmZ1bmN0aW9uIGFsZXJ0T3JnKG5vdGlmaWNhdGlvbkNsaWVudCwgbWVzc2FnZSkgewogIG5vdGlmaWNhdGlvbkNsaWVudC5zZW5kKHsKICAgIGNoYW5uZWxBbGlhczogImRpc2NvcmRfYnJpZGdpbmciLAogICAgc3ViamVjdDogIuKaoO+4jyBHdWFyZGlhblByb3ZlcjogQXBwcm92ZWQgQ291bnQiLAogICAgbWVzc2FnZSwKICB9KTsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0QmxvY2tOdW1iZXIocHJvdmlkZXIpIHsKICBjb25zdCBjdXJyZW50QmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jaygibGF0ZXN0Iik7CiAgcmV0dXJuIGN1cnJlbnRCbG9jay5udW1iZXI7Cn0KCmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUJsb2NrVGltZShwcm92aWRlcikgewogIGNvbnN0IGxhdGVzdEJsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2soImxhdGVzdCIpOwogIGNvbnN0IHByZXZpb3VzQmxvY2sgPSBhd2FpdCBwcm92aWRlci5nZXRCbG9jayhsYXRlc3RCbG9jay5udW1iZXIgLSAxMDApOwoKICBjb25zdCB0aW1lRGlmZiA9IGxhdGVzdEJsb2NrLnRpbWVzdGFtcCAtIHByZXZpb3VzQmxvY2sudGltZXN0YW1wOwogIGNvbnN0IGJsb2NrRGlmZiA9IGxhdGVzdEJsb2NrLm51bWJlciAtIHByZXZpb3VzQmxvY2subnVtYmVyOwoKICBjb25zdCBibG9ja1RpbWUgPSB0aW1lRGlmZiAvIGJsb2NrRGlmZjsKICByZXR1cm4gYmxvY2tUaW1lOwp9Cgphc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVCbG9ja1JhbmdlKHByb3ZpZGVyKSB7CiAgY29uc3QgY3VycmVudEJsb2NrTnVtYmVyID0gYXdhaXQgZ2V0TGF0ZXN0QmxvY2tOdW1iZXIocHJvdmlkZXIpOwogIGNvbnN0IGJsb2NrVGltZUluU2Vjb25kcyA9IGF3YWl0IGNhbGN1bGF0ZUJsb2NrVGltZShwcm92aWRlcik7CiAgY29uc3QgYmxvY2tzSW5PbmVIb3VyID0gTWF0aC5mbG9vcigoMTYgKiA2MCkgLyBibG9ja1RpbWVJblNlY29uZHMpOwoKICBjb25zdCBmcm9tQmxvY2sgPSBjdXJyZW50QmxvY2tOdW1iZXIgLSBibG9ja3NJbk9uZUhvdXI7CiAgY29uc3QgdG9CbG9jayA9IGN1cnJlbnRCbG9ja051bWJlcjsKCiAgY29uc29sZS5sb2coYENhbGN1bGF0ZWQgYmxvY2sgcmFuZ2U6IGZyb20gJHtmcm9tQmxvY2t9IHRvICR7dG9CbG9ja31gKTsKCiAgcmV0dXJuIHsgZnJvbUJsb2NrLCB0b0Jsb2NrIH07Cn0KCmFzeW5jIGZ1bmN0aW9uIGZldGNoTG9nc0Zyb21MMSgKICBldmVudE5hbWUsCiAgZnJvbUJsb2NrLAogIHRvQmxvY2ssCiAgYWRkcmVzcywKICBhYmksCiAgcHJvdmlkZXIsCikgewogIGNvbnN0IGlmYWNlID0gbmV3IGV0aGVycy51dGlscy5JbnRlcmZhY2UoYWJpKTsKICBjb25zdCBldmVudFRvcGljID0gaWZhY2UuZ2V0RXZlbnRUb3BpYyhldmVudE5hbWUpOwogIGNvbnNvbGUubG9nKGBldmVudFRvcGljOiAke2V2ZW50VG9waWN9YCk7CiAgdHJ5IHsKICAgIGNvbnN0IGxvZ3MgPSBhd2FpdCBwcm92aWRlci5nZXRMb2dzKHsKICAgICAgYWRkcmVzcywKICAgICAgZnJvbUJsb2NrLAogICAgICB0b0Jsb2NrLAogICAgICB0b3BpY3M6IFtldmVudFRvcGljXSwKICAgIH0pOwogICAgY29uc29sZS5sb2coYEZldGNoZWQgbG9nczogJHtsb2dzLmxlbmd0aH1gKTsKICAgIHJldHVybiBsb2dzLm1hcCgobG9nKSA9PiB7CiAgICAgIGNvbnN0IHBhcnNlZExvZyA9IGlmYWNlLnBhcnNlTG9nKGxvZyk7CiAgICAgIGNvbnNvbGUubG9nKGBQYXJzZWQgbG9nOiAke0pTT04uc3RyaW5naWZ5KHBhcnNlZExvZyl9YCk7CiAgICAgIHJldHVybiBwYXJzZWRMb2c7CiAgICB9KTsKICB9IGNhdGNoIChlcnJvcikgewogICAgY29uc29sZS5lcnJvcigiRXJyb3IgZmV0Y2hpbmcgTDEgbG9nczoiLCBlcnJvcik7CiAgICByZXR1cm4gW107CiAgfQp9CgpmdW5jdGlvbiBjcmVhdGVQcm92aWRlcihhcGlLZXksIGFwaVNlY3JldCwgcmVsYXllckFwaUtleSwgcmVsYXllckFwaVNlY3JldCkgewogIGNvbnN0IGNsaWVudCA9IG5ldyBEZWZlbmRlcih7CiAgICBhcGlLZXksCiAgICBhcGlTZWNyZXQsCiAgICByZWxheWVyQXBpS2V5LAogICAgcmVsYXllckFwaVNlY3JldCwKICB9KTsKCiAgcmV0dXJuIGNsaWVudC5yZWxheVNpZ25lci5nZXRQcm92aWRlcigpOwp9CgpleHBvcnRzLmhhbmRsZXIgPSBhc3luYyBmdW5jdGlvbiAoZXZlbnQsIGNvbnRleHQpIHsKICBjb25zdCB7IG5vdGlmaWNhdGlvbkNsaWVudCB9ID0gY29udGV4dDsKICBjb25zdCB7IGFwaUtleSwgYXBpU2VjcmV0LCB0YWlrb0wxQXBpS2V5LCB0YWlrb0wxQXBpU2VjcmV0IH0gPSBldmVudC5zZWNyZXRzOwoKICBjb25zdCB0YWlrb0wxUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcigKICAgIGFwaUtleSwKICAgIGFwaVNlY3JldCwKICAgIHRhaWtvTDFBcGlLZXksCiAgICB0YWlrb0wxQXBpU2VjcmV0LAogICk7CgogIGNvbnN0IHsgZnJvbUJsb2NrLCB0b0Jsb2NrIH0gPSBhd2FpdCBjYWxjdWxhdGVCbG9ja1JhbmdlKHRhaWtvTDFQcm92aWRlcik7CgogIGNvbnN0IGxvZ3MgPSBhd2FpdCBmZXRjaExvZ3NGcm9tTDEoCiAgICAiQXBwcm92ZWQiLAogICAgZnJvbUJsb2NrLAogICAgdG9CbG9jaywKICAgICIweEUzRDc3NzE0M0VhMjVBNkUwMzFkMWU5MjFGMzk2NzUwODg1ZjQzYUMiLAogICAgQUJJLAogICAgdGFpa29MMVByb3ZpZGVyLAogICk7CgogIGlmIChsb2dzLmxlbmd0aCA+IDApIHsKICAgIGFsZXJ0T3JnKAogICAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICAgIGBAdGFpa298Z3VhcmRpYW5zIERldGVjdGVkICR7bG9ncy5sZW5ndGh9IEFwcHJvdmVkIGV2ZW50cyBpbiB0aGUgbGFzdCAxNSBtaW5zIG9uIEd1YXJkaWFuIWAsCiAgICApOwogIH0KCiAgcmV0dXJuIHRydWU7Cn07ClBLAQIUAAoAAAAAAAAAQVCjgTWbWw0AAFsNAAAIAAAAAAAAAAAAAAAAAAAAAABpbmRleC5qc1BLBQYAAAAAAQABADYAAACBDQAAAAA="},{"autotaskId":"3cabb163-79fb-432c-a90a-c111b346a209","actionId":"3cabb163-79fb-432c-a90a-c111b346a209","name":"TaikoL1: BlockProposed Alert","paused":false,"trigger":{"cron":null,"frequencyMinutes":4,"type":"schedule"},"codeDigest":"vJWyfL6uhkwr/JAecuiNP9OlAKXck8QKPr4RG7swqew=","stackResourceId":"mystack.taiko-l-1-block-proposed-alert","runtime":"nodejs20.x","dependenciesVersion":"v2024-08-05","encodedZippedCode":"UEsDBAoAAAAAAAAAQVDWZSrfwCEAAMAhAAAIAAAAaW5kZXguanNjb25zdCB7IGV0aGVycyB9ID0gcmVxdWlyZSgiZXRoZXJzIik7CmNvbnN0IHsgRGVmZW5kZXIgfSA9IHJlcXVpcmUoIkBvcGVuemVwcGVsaW4vZGVmZW5kZXItc2RrIik7Cgpjb25zdCBBQkkgPSBbCiAgewogICAgYW5vbnltb3VzOiBmYWxzZSwKICAgIGlucHV0czogWwogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MjU2IiwKICAgICAgICBuYW1lOiAiYmxvY2tJZCIsCiAgICAgICAgdHlwZTogInVpbnQyNTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgaW5kZXhlZDogdHJ1ZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzIiwKICAgICAgICBuYW1lOiAiYXNzaWduZWRQcm92ZXIiLAogICAgICAgIHR5cGU6ICJhZGRyZXNzIiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogInVpbnQ5NiIsCiAgICAgICAgbmFtZTogImxpdmVuZXNzQm9uZCIsCiAgICAgICAgdHlwZTogInVpbnQ5NiIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBjb21wb25lbnRzOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAibDFIYXNoIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJkaWZmaWN1bHR5IiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJibG9iSGFzaCIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAiZXh0cmFEYXRhIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJkZXBvc2l0c0hhc2giLAogICAgICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJhZGRyZXNzIiwKICAgICAgICAgICAgbmFtZTogImNvaW5iYXNlIiwKICAgICAgICAgICAgdHlwZTogImFkZHJlc3MiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDY0IiwKICAgICAgICAgICAgbmFtZTogImlkIiwKICAgICAgICAgICAgdHlwZTogInVpbnQ2NCIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50MzIiLAogICAgICAgICAgICBuYW1lOiAiZ2FzTGltaXQiLAogICAgICAgICAgICB0eXBlOiAidWludDMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogInVpbnQ2NCIsCiAgICAgICAgICAgIG5hbWU6ICJ0aW1lc3RhbXAiLAogICAgICAgICAgICB0eXBlOiAidWludDY0IiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogInVpbnQ2NCIsCiAgICAgICAgICAgIG5hbWU6ICJsMUhlaWdodCIsCiAgICAgICAgICAgIHR5cGU6ICJ1aW50NjQiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDE2IiwKICAgICAgICAgICAgbmFtZTogIm1pblRpZXIiLAogICAgICAgICAgICB0eXBlOiAidWludDE2IiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJvb2wiLAogICAgICAgICAgICBuYW1lOiAiYmxvYlVzZWQiLAogICAgICAgICAgICB0eXBlOiAiYm9vbCIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogInBhcmVudE1ldGFIYXNoIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYWRkcmVzcyIsCiAgICAgICAgICAgIG5hbWU6ICJzZW5kZXIiLAogICAgICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAic3RydWN0IFRhaWtvRGF0YS5CbG9ja01ldGFkYXRhIiwKICAgICAgICBuYW1lOiAibWV0YSIsCiAgICAgICAgdHlwZTogInR1cGxlIiwKICAgICAgfSwKICAgICAgewogICAgICAgIGNvbXBvbmVudHM6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYWRkcmVzcyIsCiAgICAgICAgICAgIG5hbWU6ICJyZWNpcGllbnQiLAogICAgICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50OTYiLAogICAgICAgICAgICBuYW1lOiAiYW1vdW50IiwKICAgICAgICAgICAgdHlwZTogInVpbnQ5NiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50NjQiLAogICAgICAgICAgICBuYW1lOiAiaWQiLAogICAgICAgICAgICB0eXBlOiAidWludDY0IiwKICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJzdHJ1Y3QgVGFpa29EYXRhLkV0aERlcG9zaXRbXSIsCiAgICAgICAgbmFtZTogImRlcG9zaXRzUHJvY2Vzc2VkIiwKICAgICAgICB0eXBlOiAidHVwbGVbXSIsCiAgICAgIH0sCiAgICBdLAogICAgbmFtZTogIkJsb2NrUHJvcG9zZWQiLAogICAgdHlwZTogImV2ZW50IiwKICB9LAogIHsKICAgIGFub255bW91czogZmFsc2UsCiAgICBpbnB1dHM6IFsKICAgICAgewogICAgICAgIGluZGV4ZWQ6IHRydWUsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDI1NiIsCiAgICAgICAgbmFtZTogImJsb2NrSWQiLAogICAgICAgIHR5cGU6ICJ1aW50MjU2IiwKICAgICAgfSwKICAgICAgewogICAgICAgIGluZGV4ZWQ6IHRydWUsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAiYWRkcmVzcyIsCiAgICAgICAgbmFtZTogImFzc2lnbmVkUHJvdmVyIiwKICAgICAgICB0eXBlOiAiYWRkcmVzcyIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpbmRleGVkOiBmYWxzZSwKICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50OTYiLAogICAgICAgIG5hbWU6ICJsaXZlbmVzc0JvbmQiLAogICAgICAgIHR5cGU6ICJ1aW50OTYiLAogICAgICB9LAogICAgICB7CiAgICAgICAgY29tcG9uZW50czogWwogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogImwxSGFzaCIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAiZGlmZmljdWx0eSIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAiYmxvYkhhc2giLAogICAgICAgICAgICB0eXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJieXRlczMyIiwKICAgICAgICAgICAgbmFtZTogImV4dHJhRGF0YSIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgICBuYW1lOiAiZGVwb3NpdHNIYXNoIiwKICAgICAgICAgICAgdHlwZTogImJ5dGVzMzIiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYWRkcmVzcyIsCiAgICAgICAgICAgIG5hbWU6ICJjb2luYmFzZSIsCiAgICAgICAgICAgIHR5cGU6ICJhZGRyZXNzIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogInVpbnQ2NCIsCiAgICAgICAgICAgIG5hbWU6ICJpZCIsCiAgICAgICAgICAgIHR5cGU6ICJ1aW50NjQiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDMyIiwKICAgICAgICAgICAgbmFtZTogImdhc0xpbWl0IiwKICAgICAgICAgICAgdHlwZTogInVpbnQzMiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50NjQiLAogICAgICAgICAgICBuYW1lOiAidGltZXN0YW1wIiwKICAgICAgICAgICAgdHlwZTogInVpbnQ2NCIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJ1aW50NjQiLAogICAgICAgICAgICBuYW1lOiAibDFIZWlnaHQiLAogICAgICAgICAgICB0eXBlOiAidWludDY0IiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogInVpbnQxNiIsCiAgICAgICAgICAgIG5hbWU6ICJtaW5UaWVyIiwKICAgICAgICAgICAgdHlwZTogInVpbnQxNiIsCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBpbnRlcm5hbFR5cGU6ICJib29sIiwKICAgICAgICAgICAgbmFtZTogImJsb2JVc2VkIiwKICAgICAgICAgICAgdHlwZTogImJvb2wiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAiYnl0ZXMzMiIsCiAgICAgICAgICAgIG5hbWU6ICJwYXJlbnRNZXRhSGFzaCIsCiAgICAgICAgICAgIHR5cGU6ICJieXRlczMyIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImFkZHJlc3MiLAogICAgICAgICAgICBuYW1lOiAic2VuZGVyIiwKICAgICAgICAgICAgdHlwZTogImFkZHJlc3MiLAogICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIGluZGV4ZWQ6IGZhbHNlLAogICAgICAgIGludGVybmFsVHlwZTogInN0cnVjdCBUYWlrb0RhdGEuQmxvY2tNZXRhZGF0YSIsCiAgICAgICAgbmFtZTogIm1ldGEiLAogICAgICAgIHR5cGU6ICJ0dXBsZSIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBjb21wb25lbnRzOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgIGludGVybmFsVHlwZTogImFkZHJlc3MiLAogICAgICAgICAgICBuYW1lOiAicmVjaXBpZW50IiwKICAgICAgICAgICAgdHlwZTogImFkZHJlc3MiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDk2IiwKICAgICAgICAgICAgbmFtZTogImFtb3VudCIsCiAgICAgICAgICAgIHR5cGU6ICJ1aW50OTYiLAogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgaW50ZXJuYWxUeXBlOiAidWludDY0IiwKICAgICAgICAgICAgbmFtZTogImlkIiwKICAgICAgICAgICAgdHlwZTogInVpbnQ2NCIsCiAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgaW5kZXhlZDogZmFsc2UsCiAgICAgICAgaW50ZXJuYWxUeXBlOiAic3RydWN0IFRhaWtvRGF0YS5FdGhEZXBvc2l0W10iLAogICAgICAgIG5hbWU6ICJkZXBvc2l0c1Byb2Nlc3NlZCIsCiAgICAgICAgdHlwZTogInR1cGxlW10iLAogICAgICB9LAogICAgXSwKICAgIG5hbWU6ICJCbG9ja1Byb3Bvc2VkVjIiLAogICAgdHlwZTogImV2ZW50IiwKICB9LApdOwoKZnVuY3Rpb24gYWxlcnRPcmcobm90aWZpY2F0aW9uQ2xpZW50LCBtZXNzYWdlKSB7CiAgbm90aWZpY2F0aW9uQ2xpZW50LnNlbmQoewogICAgY2hhbm5lbEFsaWFzOiAiZGlzY29yZF9icmlkZ2luZyIsCiAgICBzdWJqZWN0OiAi8J+aqCBUYWlrb0wxOiBCbG9ja1Byb3Bvc2VkIEFsZXJ0IiwKICAgIG1lc3NhZ2UsCiAgfSk7CgogIG5vdGlmaWNhdGlvbkNsaWVudC5zZW5kKHsKICAgIGNoYW5uZWxBbGlhczogInRnX3RhaWtvX2d1YXJkaWFucyIsCiAgICBzdWJqZWN0OiAi8J+aqCBUYWlrb0wxOiBCbG9ja1Byb3Bvc2VkIEFsZXJ0IiwKICAgIG1lc3NhZ2UsCiAgfSk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldExhdGVzdEJsb2NrTnVtYmVyKHByb3ZpZGVyKSB7CiAgY29uc3QgY3VycmVudEJsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2soImxhdGVzdCIpOwogIHJldHVybiBjdXJyZW50QmxvY2subnVtYmVyOwp9Cgphc3luYyBmdW5jdGlvbiBmZXRjaExvZ3NGcm9tTDEoCiAgZXZlbnROYW1lcywKICBmcm9tQmxvY2ssCiAgdG9CbG9jaywKICBhZGRyZXNzLAogIGFiaSwKICBwcm92aWRlciwKKSB7CiAgY29uc3QgaWZhY2UgPSBuZXcgZXRoZXJzLnV0aWxzLkludGVyZmFjZShhYmkpOwoKICBjb25zdCBhbGxMb2dzID0gW107CgogIGZvciAoY29uc3QgZXZlbnROYW1lIG9mIGV2ZW50TmFtZXMpIHsKICAgIGNvbnN0IGV2ZW50VG9waWMgPSBpZmFjZS5nZXRFdmVudFRvcGljKGV2ZW50TmFtZSk7CgogICAgdHJ5IHsKICAgICAgY29uc3QgbG9ncyA9IGF3YWl0IHByb3ZpZGVyLmdldExvZ3MoewogICAgICAgIGFkZHJlc3MsCiAgICAgICAgZnJvbUJsb2NrLAogICAgICAgIHRvQmxvY2ssCiAgICAgICAgdG9waWNzOiBbZXZlbnRUb3BpY10sCiAgICAgIH0pOwoKICAgICAgYWxsTG9ncy5wdXNoKAogICAgICAgIC4uLmxvZ3MubWFwKChsb2cpID0+CiAgICAgICAgICBpZmFjZS5kZWNvZGVFdmVudExvZyhldmVudE5hbWUsIGxvZy5kYXRhLCBsb2cudG9waWNzKSwKICAgICAgICApLAogICAgICApOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgZmV0Y2hpbmcgbG9ncyBmb3IgJHtldmVudE5hbWV9OmAsIGVycm9yKTsKICAgIH0KICB9CgogIHJldHVybiBhbGxMb2dzOwp9CgpmdW5jdGlvbiBjcmVhdGVQcm92aWRlcihhcGlLZXksIGFwaVNlY3JldCwgcmVsYXllckFwaUtleSwgcmVsYXllckFwaVNlY3JldCkgewogIGNvbnN0IGNsaWVudCA9IG5ldyBEZWZlbmRlcih7CiAgICBhcGlLZXksCiAgICBhcGlTZWNyZXQsCiAgICByZWxheWVyQXBpS2V5LAogICAgcmVsYXllckFwaVNlY3JldCwKICB9KTsKCiAgcmV0dXJuIGNsaWVudC5yZWxheVNpZ25lci5nZXRQcm92aWRlcigpOwp9Cgphc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVCbG9ja1RpbWUocHJvdmlkZXIpIHsKICBjb25zdCBsYXRlc3RCbG9jayA9IGF3YWl0IHByb3ZpZGVyLmdldEJsb2NrKCJsYXRlc3QiKTsKICBjb25zdCBwcmV2aW91c0Jsb2NrID0gYXdhaXQgcHJvdmlkZXIuZ2V0QmxvY2sobGF0ZXN0QmxvY2subnVtYmVyIC0gMTAwKTsKCiAgY29uc3QgdGltZURpZmYgPSBsYXRlc3RCbG9jay50aW1lc3RhbXAgLSBwcmV2aW91c0Jsb2NrLnRpbWVzdGFtcDsKICBjb25zdCBibG9ja0RpZmYgPSBsYXRlc3RCbG9jay5udW1iZXIgLSBwcmV2aW91c0Jsb2NrLm51bWJlcjsKCiAgY29uc3QgYmxvY2tUaW1lID0gdGltZURpZmYgLyBibG9ja0RpZmY7CiAgcmV0dXJuIGJsb2NrVGltZTsKfQoKZXhwb3J0cy5oYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKGV2ZW50LCBjb250ZXh0KSB7CiAgY29uc3QgeyBub3RpZmljYXRpb25DbGllbnQgfSA9IGNvbnRleHQ7CiAgY29uc3QgeyBhcGlLZXksIGFwaVNlY3JldCwgdGFpa29MMUFwaUtleSwgdGFpa29MMUFwaVNlY3JldCB9ID0gZXZlbnQuc2VjcmV0czsKCiAgY29uc3QgdGFpa29MMVByb3ZpZGVyID0gY3JlYXRlUHJvdmlkZXIoCiAgICBhcGlLZXksCiAgICBhcGlTZWNyZXQsCiAgICB0YWlrb0wxQXBpS2V5LAogICAgdGFpa29MMUFwaVNlY3JldCwKICApOwoKICBjb25zdCBjdXJyZW50QmxvY2tOdW1iZXIgPSBhd2FpdCBnZXRMYXRlc3RCbG9ja051bWJlcih0YWlrb0wxUHJvdmlkZXIpOwogIGNvbnN0IGJsb2NrVGltZUluU2Vjb25kcyA9IGF3YWl0IGNhbGN1bGF0ZUJsb2NrVGltZSh0YWlrb0wxUHJvdmlkZXIpOwogIGNvbnN0IGJsb2Nrc0luRml2ZU1pbnV0ZXMgPSBNYXRoLmZsb29yKCg1ICogNjApIC8gYmxvY2tUaW1lSW5TZWNvbmRzKTsKCiAgY29uc3QgZnJvbUJsb2NrID0gY3VycmVudEJsb2NrTnVtYmVyIC0gYmxvY2tzSW5GaXZlTWludXRlczsKICBjb25zdCB0b0Jsb2NrID0gY3VycmVudEJsb2NrTnVtYmVyOwoKICBjb25zdCBsb2dzID0gYXdhaXQgZmV0Y2hMb2dzRnJvbUwxKAogICAgWyJCbG9ja1Byb3Bvc2VkIiwgIkJsb2NrUHJvcG9zZWRWMiJdLAogICAgZnJvbUJsb2NrLAogICAgdG9CbG9jaywKICAgICIweDA2YTlBYjI3YzdlMjI1NWRmMTgxNUU2Q0MwMTY4ZDc3NTVGZWIxOWEiLAogICAgQUJJLAogICAgdGFpa29MMVByb3ZpZGVyLAogICk7CgogIGNvbnNvbGUubG9nKGBMb2dzIGZvdW5kOiAke2xvZ3MubGVuZ3RofWApOwoKICBpZiAobG9ncy5sZW5ndGggPT09IDApIHsKICAgIGFsZXJ0T3JnKAogICAgICBub3RpZmljYXRpb25DbGllbnQsCiAgICAgIGBObyBCbG9ja1Byb3Bvc2VkIGV2ZW50IGRldGVjdGVkIGluIHRoZSBsYXN0IDE1IG1pbnMgb24gVGFpa29MMSFgLAogICAgKTsKICB9CgogIHJldHVybiB0cnVlOwp9OwpQSwECFAAKAAAAAAAAAEFQ1mUq38AhAADAIQAACAAAAAAAAAAAAAAAAAAAAAAAaW5kZXguanNQSwUGAAAAAAEAAQA2AAAA5iEAAAAA"}]},"contracts":{"removed":[],"created":[],"updated":[]},"relayers":{"removed":[],"created":[],"updated":[],"relayerKeys":{"removed":[],"created":[],"updated":[]}},"notifications":{"removed":[],"created":[],"updated":[]},"secrets":{"removed":[],"created":[],"updated":[]},"blockExplorerApiKeys":{"removed":[],"created":[],"updated":[]},"forkedNetworks":{"removed":[],"created":[],"updated":[]},"privateNetworks":{"removed":[],"created":[],"updated":[]}} +{"stack":"mystack","timestamp":"2024-09-20T11:10:56.918Z","monitors":{"removed":[],"created":[],"updated":[{"skipABIValidation":false,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"⚠️ TaikoL1: ProvingPaused Alert","notifications":[{"paused":false,"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","type":"discord","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"stackResourceId":"mystack.discord-bridging","updatedAt":"2024-09-19T10:48:03.908Z"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[],"addresses":["0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a"]}],"createdAt":"2024-09-20T10:36:31.684Z","subscriberId":"1bc1012e-54fc-4fbc-8971-54c5b2a5146e","name":"TaikoL1: ProvingPaused Alert","network":"mainnet","monitorId":"1bc1012e-54fc-4fbc-8971-54c5b2a5146e","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-l-1-proving-paused-alert","type":"BLOCK"},{"skipABIValidation":false,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"⚠️ GuardianProver: GuardiansUpdated Alert","notifications":[{"paused":false,"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","type":"discord","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"stackResourceId":"mystack.discord-bridging","updatedAt":"2024-09-19T10:48:03.908Z"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[],"addresses":["0xE3D777143Ea25A6E031d1e921F396750885f43aC"]}],"createdAt":"2024-09-20T10:36:35.701Z","subscriberId":"8e05b9b7-09d2-4b2e-b843-96a62f03c80a","name":"GuardianProver: GuardiansUpdated Alert","network":"mainnet","monitorId":"8e05b9b7-09d2-4b2e-b843-96a62f03c80a","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.guardian-prover-guardians-updated-alert","type":"BLOCK"},{"skipABIValidation":false,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"🚨 GuardianProver: ConflictingProofs Alert","notifications":[{"paused":false,"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","type":"discord","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"stackResourceId":"mystack.discord-bridging","updatedAt":"2024-09-19T10:48:03.908Z"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[],"addresses":["0xE3D777143Ea25A6E031d1e921F396750885f43aC"]}],"createdAt":"2024-09-20T10:36:39.801Z","subscriberId":"deb988aa-3550-4690-9f9b-b45486a45af0","name":"GuardianProver: ConflictingProofs Alert","network":"mainnet","monitorId":"deb988aa-3550-4690-9f9b-b45486a45af0","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.guardian-prover-conflicting-proofs-alert","type":"BLOCK"},{"skipABIValidation":false,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"⚠️ GuardianProver: ProvingAutoPauseEnabled Alert","notifications":[{"paused":false,"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","name":"discord_bridging","notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827","type":"discord","config":{"url":"https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s"},"stackResourceId":"mystack.discord-bridging","updatedAt":"2024-09-19T10:48:03.908Z"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[],"addresses":["0xE3D777143Ea25A6E031d1e921F396750885f43aC"]}],"createdAt":"2024-09-20T10:36:44.961Z","subscriberId":"cf7ea759-183f-4761-96cc-ec6cf9052d3b","name":"GuardianProver: ProvingAutoPauseEnabled Alert","network":"mainnet","monitorId":"cf7ea759-183f-4761-96cc-ec6cf9052d3b","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.guardian-prover-proving-auto-pause-enabled-alert","type":"BLOCK"},{"skipABIValidation":true,"alertThreshold":null,"notifyConfig":{"severityLevel":"MEDIUM","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n**Match Reasons**\n\n{{ matchReasonsFormatted }}\n\n**Metadata**\n\n{{ metadataFormatted }}","messageSubject":"Defender Monitor: TaikoL1: Pause/Unpause triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":60000},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]}],"abi":"[{\"type\":\"error\",\"name\":\"AM_ADDRESS_ALREADY_SET\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"spender\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approval\",\"inputs\":[{\"type\":\"address\",\"name\":\"owner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"approved\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ApprovalForAll\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Approved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"operationId\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"approvalBits\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"minGuardiansReached\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Authorized\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"authorized\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"BB_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_MINT_DISALLOWED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BB_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_CANNOT_RECEIVE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_BURN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BTOKEN_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PROOF_TOO_LARGE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockProposed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"assignedProver\",\"indexed\":true},{\"type\":\"uint96\",\"name\":\"livenessBond\",\"indexed\":false},{\"type\":\"tuple\",\"name\":\"meta\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"depositsProcessed\",\"indexed\":false,\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BlockVerified\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"stateRoot\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondCredited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BondDebited\",\"inputs\":[{\"type\":\"address\",\"name\":\"user\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btokenOld\",\"indexed\":false},{\"type\":\"address\",\"name\":\"btokenNew\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"srcChainId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"btoken\",\"indexed\":true},{\"type\":\"string\",\"name\":\"ctokenSymbol\",\"indexed\":false},{\"type\":\"string\",\"name\":\"ctokenName\",\"indexed\":false},{\"type\":\"uint8\",\"name\":\"ctokenDecimal\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"CalldataTxList\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"txList\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ChainDataSynced\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"kind\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"data\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ConflictingProofs\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"address\",\"name\":\"guardian\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"currentProofHash\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"newProofHash\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"provingPaused\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"fromDelegate\",\"indexed\":true},{\"type\":\"address\",\"name\":\"toDelegate\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"delegate\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"previousBalance\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"newBalance\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EIP712DomainChanged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"EtherPaymentFailed\",\"inputs\":[{\"type\":\"address\",\"name\":\"to\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"maxGas\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardianApproval\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"blockHash\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"approved\",\"indexed\":false},{\"type\":\"bytes\",\"name\":\"proofData\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"GuardiansUpdated\",\"inputs\":[{\"type\":\"uint32\",\"name\":\"version\",\"indexed\":false},{\"type\":\"address[]\",\"name\":\"guardians\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_EXPIRED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"LocalReportCheckToggled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"checkLocalEnclaveReport\",\"indexed\":false}]},{\"type\":\"function\",\"name\":\"MAX_GAS_PAYING_PROVER\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageProcessed\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"stats\",\"indexed\":false,\"components\":[{\"type\":\"uint32\",\"name\":\"gasUsedInFeeCalc\"},{\"type\":\"uint32\",\"name\":\"proofSize\"},{\"type\":\"uint32\",\"name\":\"numCacheOps\"},{\"type\":\"bool\",\"name\":\"processedByRelayer\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"message\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MessageStatusChanged\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"uint8\",\"name\":\"status\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigratedTo\",\"inputs\":[{\"type\":\"address\",\"name\":\"fromToken\",\"indexed\":true},{\"type\":\"address\",\"name\":\"account\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MigrationStatusChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"addr\",\"indexed\":false},{\"type\":\"bool\",\"name\":\"inbound\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrEnclaveUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrEnclave\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"MrSignerUpdated\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"mrSigner\",\"indexed\":true},{\"type\":\"bool\",\"name\":\"trusted\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"type\":\"bool\",\"name\":\"enabled\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"ProvingPaused\",\"inputs\":[{\"type\":\"bool\",\"name\":\"paused\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"QeIdentityConfigured\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"indexed\":false,\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"RELAYER_MAX_PROOF_BYTES\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"name\"}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"RevokedCertSerialNumRemoved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\",\"indexed\":true},{\"type\":\"bytes\",\"name\":\"serialNum\",\"indexed\":false}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"SignalSent\",\"inputs\":[{\"type\":\"address\",\"name\":\"app\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"signal\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"slot\",\"indexed\":false},{\"type\":\"bytes32\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"type\":\"tuple\",\"name\":\"slotB\",\"indexed\":false,\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TcbInfoJsonConfigured\",\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"indexed\":false,\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReceived\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"srcChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenReleased\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"tokenIds\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"amounts\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TokenSent\",\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint64\",\"name\":\"canonicalChainId\",\"indexed\":false},{\"type\":\"uint64\",\"name\":\"destChainId\",\"indexed\":false},{\"type\":\"address\",\"name\":\"ctoken\",\"indexed\":false},{\"type\":\"address\",\"name\":\"token\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"amount\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Transfer\",\"inputs\":[{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"tokenId\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferBatch\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256[]\",\"name\":\"ids\",\"indexed\":false},{\"type\":\"uint256[]\",\"name\":\"values\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransferSingle\",\"inputs\":[{\"type\":\"address\",\"name\":\"operator\",\"indexed\":true},{\"type\":\"address\",\"name\":\"from\",\"indexed\":true},{\"type\":\"address\",\"name\":\"to\",\"indexed\":true},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"value\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionContested\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"contester\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"contestBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"TransitionProved\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"blockId\",\"indexed\":true},{\"type\":\"tuple\",\"name\":\"tran\",\"indexed\":false,\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"address\",\"name\":\"prover\",\"indexed\":false},{\"type\":\"uint96\",\"name\":\"validityBond\",\"indexed\":false},{\"type\":\"uint16\",\"name\":\"tier\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"URI\",\"inputs\":[{\"type\":\"string\",\"name\":\"value\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_DATA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_CERTIFICATION_CHAIN_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_ECDSA_SIGNATURE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEAUTHDATA_SIZE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QEREPORT_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_INVALID_QUOTE_MEMBER_LENGTN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"V3PARSER_UNSUPPORT_CERTIFICATION_TYPE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INSUFFICIENT_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_CTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"allowance\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"approvals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"bytes32\",\"name\":\"proofHash\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"approvalBits\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\",\"name\":\"approved_\"}]},{\"type\":\"function\",\"name\":\"approve\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"authorize\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_addr\"},{\"type\":\"bool\",\"name\":\"_authorize\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"id\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"balanceOfBatch\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"accounts\"},{\"type\":\"uint256[]\",\"name\":\"ids\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"batchTransfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"recipients\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_user\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"function\",\"name\":\"btokenDenylist\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"btoken\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"denied\"}]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"burn\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"canonical\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btoken\"}]},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctoken\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint8\",\"name\":\"decimals\"},{\"type\":\"string\",\"name\":\"symbol\"},{\"type\":\"string\",\"name\":\"name\"}]},{\"type\":\"address\",\"name\":\"_btokenNew\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"btokenOld_\"}]},{\"type\":\"function\",\"name\":\"changeMigrationStatus\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_migratingAddress\"},{\"type\":\"bool\",\"name\":\"_migratingInbound\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"checkLocalEnclaveReport\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"checkpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint32\",\"name\":\"pos\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint32\",\"name\":\"fromBlock\"},{\"type\":\"uint224\",\"name\":\"votes\"}]}]},{\"type\":\"function\",\"name\":\"clock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint48\"}]},{\"type\":\"function\",\"name\":\"configureQeIdentityJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"qeIdentityInput\",\"components\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"tuple\",\"name\":\"tcb\",\"components\":[{\"type\":\"uint16\",\"name\":\"isvsvn\"}]},{\"type\":\"uint8\",\"name\":\"tcbStatus\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"configureTcbInfoJson\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple\",\"name\":\"tcbInfoInput\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"tuple[]\",\"name\":\"tcbLevels\",\"components\":[{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint8[]\",\"name\":\"sgxTcbCompSvnArr\"},{\"type\":\"uint8\",\"name\":\"status\"}]}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"context\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"name\":\"ctx_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"}]}]},{\"type\":\"function\",\"name\":\"decimals\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint8\"}]},{\"type\":\"function\",\"name\":\"decodeCert\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"der\"},{\"type\":\"bool\",\"name\":\"isPckCert\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"tuple\",\"name\":\"cert\",\"components\":[{\"type\":\"uint256\",\"name\":\"notBefore\"},{\"type\":\"uint256\",\"name\":\"notAfter\"},{\"type\":\"bytes\",\"name\":\"serialNumber\"},{\"type\":\"bytes\",\"name\":\"tbsCertificate\"},{\"type\":\"bytes\",\"name\":\"pubKey\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bool\",\"name\":\"isPck\"},{\"type\":\"tuple\",\"name\":\"pck\",\"components\":[{\"type\":\"string\",\"name\":\"commonName\"},{\"type\":\"string\",\"name\":\"issuerName\"},{\"type\":\"tuple\",\"name\":\"sgxExtension\",\"components\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"},{\"type\":\"uint256\",\"name\":\"pcesvn\"},{\"type\":\"uint256[]\",\"name\":\"sgxTcbCompSvnArr\"}]}]}]}]},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"subtractedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"delegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegateBySig\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"delegatee\"},{\"type\":\"uint256\",\"name\":\"nonce\"},{\"type\":\"uint256\",\"name\":\"expiry\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"delegates\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"depositBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"eip712Domain\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes1\",\"name\":\"fields\"},{\"type\":\"string\",\"name\":\"name\"},{\"type\":\"string\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"verifyingContract\"},{\"type\":\"bytes32\",\"name\":\"salt\"},{\"type\":\"uint256[]\",\"name\":\"extensions\"}]},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_enable\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"failMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getApproved\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"blk_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]}]},{\"type\":\"function\",\"name\":\"getConfig\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"uint64\",\"name\":\"blockMaxProposals\"},{\"type\":\"uint64\",\"name\":\"blockRingBufferSize\"},{\"type\":\"uint64\",\"name\":\"maxBlocksToVerify\"},{\"type\":\"uint32\",\"name\":\"blockMaxGasLimit\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint8\",\"name\":\"stateRootSyncInternal\"},{\"type\":\"bool\",\"name\":\"checkEOAForCalldataDA\"}]}]},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"blockHash_\"},{\"type\":\"bytes32\",\"name\":\"stateRoot_\"}]},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"dataLength\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"getMinTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getPastVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"uint256\",\"name\":\"timepoint\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"getStateVariables\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId_\"},{\"type\":\"bytes32\",\"name\":\"chainData_\"}]},{\"type\":\"function\",\"name\":\"getTier\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint16\",\"name\":\"_tierId\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"verifierName\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint24\",\"name\":\"cooldownWindow\"},{\"type\":\"uint16\",\"name\":\"provingWindow\"},{\"type\":\"uint8\",\"name\":\"maxBlocksToVerifyPerProof\"}]}]},{\"type\":\"function\",\"name\":\"getTierIds\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint16[]\",\"name\":\"tiers_\"}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"uint32\",\"name\":\"_tid\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getTransition\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_parentHash\"}],\"outputs\":[{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"key\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint96\",\"name\":\"validityBond\"},{\"type\":\"address\",\"name\":\"contester\"},{\"type\":\"uint96\",\"name\":\"contestBond\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint8\",\"name\":\"__reserved1\"}]}]},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"prover_\"}]},{\"type\":\"function\",\"name\":\"getVotes\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"guardianIds\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"guardian\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"id\"}]},{\"type\":\"function\",\"name\":\"guardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"hashAssignment\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_assignment\",\"components\":[{\"type\":\"address\",\"name\":\"feeToken\"},{\"type\":\"uint64\",\"name\":\"expiry\"},{\"type\":\"uint64\",\"name\":\"maxBlockId\"},{\"type\":\"uint64\",\"name\":\"maxProposedIn\"},{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"tuple[]\",\"name\":\"tierFees\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"uint128\",\"name\":\"fee\"}]},{\"type\":\"bytes\",\"name\":\"signature\"}]},{\"type\":\"address\",\"name\":\"_taikoL1Address\"},{\"type\":\"address\",\"name\":\"_blockProposer\"},{\"type\":\"address\",\"name\":\"_assignedProver\"},{\"type\":\"bytes32\",\"name\":\"_blobHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"hashMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"impl\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"addedValue\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"bytes32\",\"name\":\"_genesisBlockHash\"},{\"type\":\"bool\",\"name\":\"_toPause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"sigVerifyLibAddr\"},{\"type\":\"address\",\"name\":\"pemCertLibAddr\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"},{\"type\":\"address\",\"name\":\"_srcToken\"},{\"type\":\"uint256\",\"name\":\"_srcChainId\"},{\"type\":\"uint8\",\"name\":\"_decimals\"},{\"type\":\"string\",\"name\":\"_symbol\"},{\"type\":\"string\",\"name\":\"_name\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init2\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"},{\"type\":\"address\",\"name\":\"operator\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isAuthorized\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"addr\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"authorized\"}]},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"enabled_\"},{\"type\":\"address\",\"name\":\"destBridge_\"}]},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isMessageSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"isSignalSent\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"chainId\"},{\"type\":\"address\",\"name\":\"ctoken\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"timestamp\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"latestProofHash\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"version\"},{\"type\":\"uint256\",\"name\":\"blockId\"}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"hash\"}]},{\"type\":\"function\",\"name\":\"messageStatus\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status\"}]},{\"type\":\"function\",\"name\":\"migratingAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"migratingInbound\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"minGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mint\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_account\"},{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"mintBatch\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256[]\",\"name\":\"_tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"_amounts\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"name\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"nextMessageId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nonces\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"account\"}],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"numGuardians\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"onBlockProposed\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_blk\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"address\",\"name\":\"assignedProver\"},{\"type\":\"uint96\",\"name\":\"livenessBond\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"uint64\",\"name\":\"proposedAt\"},{\"type\":\"uint64\",\"name\":\"proposedIn\"},{\"type\":\"uint32\",\"name\":\"nextTransitionId\"},{\"type\":\"uint32\",\"name\":\"verifiedTransitionId\"}]},{\"type\":\"tuple\",\"name\":\"_meta\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256[]\"},{\"type\":\"uint256[]\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onERC721Received\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"address\"},{\"type\":\"address\"},{\"type\":\"uint256\"},{\"type\":\"bytes\"}],\"outputs\":[{\"type\":\"bytes4\"}]},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"ownerOf\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseProving\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bool\",\"name\":\"_pause\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pemCertLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"permit\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"owner\"},{\"type\":\"address\",\"name\":\"spender\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"uint256\",\"name\":\"deadline\"},{\"type\":\"uint8\",\"name\":\"v\"},{\"type\":\"bytes32\",\"name\":\"r\"},{\"type\":\"bytes32\",\"name\":\"s\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"processMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint8\",\"name\":\"status_\"},{\"type\":\"uint8\",\"name\":\"reason_\"}]},{\"type\":\"function\",\"name\":\"proposeBlock\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"bytes\",\"name\":\"_params\"},{\"type\":\"bytes\",\"name\":\"_txList\"}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"meta_\",\"components\":[{\"type\":\"bytes32\",\"name\":\"l1Hash\"},{\"type\":\"bytes32\",\"name\":\"difficulty\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"bytes32\",\"name\":\"extraData\"},{\"type\":\"bytes32\",\"name\":\"depositsHash\"},{\"type\":\"address\",\"name\":\"coinbase\"},{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint64\",\"name\":\"timestamp\"},{\"type\":\"uint64\",\"name\":\"l1Height\"},{\"type\":\"uint16\",\"name\":\"minTier\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"bytes32\",\"name\":\"parentMetaHash\"},{\"type\":\"address\",\"name\":\"sender\"}]},{\"type\":\"tuple[]\",\"name\":\"deposits_\",\"components\":[{\"type\":\"address\",\"name\":\"recipient\"},{\"type\":\"uint96\",\"name\":\"amount\"},{\"type\":\"uint64\",\"name\":\"id\"}]}]},{\"type\":\"function\",\"name\":\"proveBlock\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes\",\"name\":\"_input\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[{\"type\":\"uint256\",\"name\":\"numCacheOps_\"}]},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"qeIdentity\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes4\",\"name\":\"miscselect\"},{\"type\":\"bytes4\",\"name\":\"miscselectMask\"},{\"type\":\"uint16\",\"name\":\"isvprodid\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes16\",\"name\":\"attributesMask\"},{\"type\":\"bytes32\",\"name\":\"mrsigner\"}]},{\"type\":\"function\",\"name\":\"recallMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"removeRevokedCertSerialNum\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"index\"},{\"type\":\"bytes[]\",\"name\":\"serialNumBatch\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"retryMessage\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"bool\",\"name\":\"_isLastAttempt\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeBatchTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256[]\",\"name\":\"ids\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"id\"},{\"type\":\"uint256\",\"name\":\"amount\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"selfDelegate\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_anyToken\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sendMessage\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_message\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"msgHash_\"},{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendSignal\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_signal\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256[]\",\"name\":\"tokenIds\"},{\"type\":\"uint256[]\",\"name\":\"amounts\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"sendToken\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_op\",\"components\":[{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"address\",\"name\":\"token\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"uint256\",\"name\":\"amount\"}]}],\"outputs\":[{\"type\":\"tuple\",\"name\":\"message_\",\"components\":[{\"type\":\"uint64\",\"name\":\"id\"},{\"type\":\"uint64\",\"name\":\"fee\"},{\"type\":\"uint32\",\"name\":\"gasLimit\"},{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"uint64\",\"name\":\"srcChainId\"},{\"type\":\"address\",\"name\":\"srcOwner\"},{\"type\":\"uint64\",\"name\":\"destChainId\"},{\"type\":\"address\",\"name\":\"destOwner\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"value\"},{\"type\":\"bytes\",\"name\":\"data\"}]}]},{\"type\":\"function\",\"name\":\"serialNumIsRevoked\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"idx\"},{\"type\":\"bytes\",\"name\":\"serialNum\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"revoked\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"operator\"},{\"type\":\"bool\",\"name\":\"approved\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setGuardians\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_newGuardians\"},{\"type\":\"uint8\",\"name\":\"_minGuardians\"},{\"type\":\"bool\",\"name\":\"_clearData\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrEnclave\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrEnclave\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"setMrSigner\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_mrSigner\"},{\"type\":\"bool\",\"name\":\"_trusted\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"sigVerifyLib\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"signalForChainData\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"_msgHash\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"source\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"},{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"splitCertificateChain\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"pemChain\"},{\"type\":\"uint256\",\"name\":\"size\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"},{\"type\":\"bytes[]\",\"name\":\"certs\"}]},{\"type\":\"function\",\"name\":\"srcChainId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"srcToken\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"state\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\",\"name\":\"__reserve1\"},{\"type\":\"tuple\",\"name\":\"slotA\",\"components\":[{\"type\":\"uint64\",\"name\":\"genesisHeight\"},{\"type\":\"uint64\",\"name\":\"genesisTimestamp\"},{\"type\":\"uint64\",\"name\":\"lastSyncedBlockId\"},{\"type\":\"uint64\",\"name\":\"lastSynecdAt\"}]},{\"type\":\"tuple\",\"name\":\"slotB\",\"components\":[{\"type\":\"uint64\",\"name\":\"numBlocks\"},{\"type\":\"uint64\",\"name\":\"lastVerifiedBlockId\"},{\"type\":\"bool\",\"name\":\"provingPaused\"},{\"type\":\"uint8\",\"name\":\"__reservedB1\"},{\"type\":\"uint16\",\"name\":\"__reservedB2\"},{\"type\":\"uint32\",\"name\":\"__reservedB3\"},{\"type\":\"uint64\",\"name\":\"lastUnpausedAt\"}]}]},{\"type\":\"function\",\"name\":\"supportsInterface\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes4\",\"name\":\"_interfaceId\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"pure\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"symbol\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"syncChainData\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_kind\"},{\"type\":\"uint64\",\"name\":\"_blockId\"},{\"type\":\"bytes32\",\"name\":\"_chainData\"}],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"tcbInfo\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"string\",\"name\":\"fmspc\"}],\"outputs\":[{\"type\":\"string\",\"name\":\"pceid\"},{\"type\":\"string\",\"name\":\"fmspc\"}]},{\"type\":\"function\",\"name\":\"toggleLocalReportCheck\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"tokenURI\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_tokenId\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"topBlockId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\"},{\"type\":\"bytes32\",\"name\":\"kind\"}],\"outputs\":[{\"type\":\"uint64\",\"name\":\"blockId\"}]},{\"type\":\"function\",\"name\":\"totalSupply\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"transfer\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"amount\"}],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"transferFrom\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"from\"},{\"type\":\"address\",\"name\":\"to\"},{\"type\":\"uint256\",\"name\":\"tokenId\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"trustedUserMrEnclave\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"enclave\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"trustedUserMrSigner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes32\",\"name\":\"signer\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"trusted\"}]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"uri\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\"}],\"outputs\":[{\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"verifyAttestation\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"success\"}]},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_maxBlocksToVerify\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyES256Signature\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"bytes\",\"name\":\"tbs\"},{\"type\":\"bytes\",\"name\":\"signature\"},{\"type\":\"bytes\",\"name\":\"publicKey\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"sigValid\"}]},{\"type\":\"function\",\"name\":\"verifyParsedQuote\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"v3quote\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"bool\"},{\"type\":\"bytes\"}]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"address\",\"name\":\"_app\"},{\"type\":\"bytes32\",\"name\":\"_signal\"},{\"type\":\"bytes\",\"name\":\"_proof\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"version\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"withdrawBond\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_to\"},{\"type\":\"uint256\",\"name\":\"_amount\"}],\"outputs\":[]},{\"type\":\"constructor\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"es256Verifier\"}]}]","addresses":["0x02772b7B3a5Bea0141C993Dbb8D0733C19F46169","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0x39E4C1214e733639d059979079A151911e42791d","0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0x579f40D0BE111b823962043702cabe6Aaa290780","0x67281b15aee4d6b805bc755e439abd524dd8da8d","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0xa25e645ff9897b0282e5f17d36de5bca4ec21d6e","0xaf145913EA4a56BE22E120ED9C24589659881702","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0xc4096E9ff1526Bd1840B65e9f45695135aC12De7","0xcc5d488073FA918cBbd73B9A523F3858C4de7372","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC"]}],"createdAt":"2024-08-27T09:44:01.744Z","subscriberId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","name":"TaikoL1: Pause/Unpause","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"d1b49dd5-72bd-480e-b5d7-649ce0aadd09","blockWatcherId":"mainnet-6","paused":false,"stackResourceId":"mystack.taiko-l-1-pause-unpause","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"LOW","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet SGX Prover triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceAdded(uint256,address,address,uint256)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[],"eventConditions":[{"eventSignature":"InstanceDeleted(uint256,address)","expression":null}]},{"txConditions":[{"status":"any","expression":"status == \"failed\""}],"functionConditions":[{"functionSignature":"verifyProof((bytes32,bytes32,address,uint64,bool,bool,address),(bytes32,bytes32,bytes32,bytes32),(uint16,bytes))","expression":null}],"eventConditions":[]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceAdded\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true},{\"type\":\"address\",\"name\":\"replaced\",\"indexed\":false},{\"type\":\"uint256\",\"name\":\"validSince\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"InstanceDeleted\",\"inputs\":[{\"type\":\"uint256\",\"name\":\"id\",\"indexed\":true},{\"type\":\"address\",\"name\":\"instance\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address[]\",\"name\":\"_instances\"}],\"outputs\":[{\"type\":\"uint256[]\"}]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"addressRegistered\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"instanceAddress\"}],\"outputs\":[{\"type\":\"bool\",\"name\":\"alreadyAttested\"}]},{\"type\":\"function\",\"name\":\"deleteInstances\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint256[]\",\"name\":\"_ids\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"},{\"type\":\"address\",\"name\":\"_addressManager\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"instances\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint256\",\"name\":\"instanceId\"}],\"outputs\":[{\"type\":\"address\",\"name\":\"addr\"},{\"type\":\"uint64\",\"name\":\"validSince\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"registerInstance\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_attestation\",\"components\":[{\"type\":\"tuple\",\"name\":\"header\",\"components\":[{\"type\":\"bytes2\",\"name\":\"version\"},{\"type\":\"bytes2\",\"name\":\"attestationKeyType\"},{\"type\":\"bytes4\",\"name\":\"teeType\"},{\"type\":\"bytes2\",\"name\":\"qeSvn\"},{\"type\":\"bytes2\",\"name\":\"pceSvn\"},{\"type\":\"bytes16\",\"name\":\"qeVendorId\"},{\"type\":\"bytes20\",\"name\":\"userData\"}]},{\"type\":\"tuple\",\"name\":\"localEnclaveReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"tuple\",\"name\":\"v3AuthData\",\"components\":[{\"type\":\"bytes\",\"name\":\"ecdsa256BitSignature\"},{\"type\":\"bytes\",\"name\":\"ecdsaAttestationKey\"},{\"type\":\"tuple\",\"name\":\"pckSignedQeReport\",\"components\":[{\"type\":\"bytes16\",\"name\":\"cpuSvn\"},{\"type\":\"bytes4\",\"name\":\"miscSelect\"},{\"type\":\"bytes28\",\"name\":\"reserved1\"},{\"type\":\"bytes16\",\"name\":\"attributes\"},{\"type\":\"bytes32\",\"name\":\"mrEnclave\"},{\"type\":\"bytes32\",\"name\":\"reserved2\"},{\"type\":\"bytes32\",\"name\":\"mrSigner\"},{\"type\":\"bytes\",\"name\":\"reserved3\"},{\"type\":\"uint16\",\"name\":\"isvProdId\"},{\"type\":\"uint16\",\"name\":\"isvSvn\"},{\"type\":\"bytes\",\"name\":\"reserved4\"},{\"type\":\"bytes\",\"name\":\"reportData\"}]},{\"type\":\"bytes\",\"name\":\"qeReportSignature\"},{\"type\":\"tuple\",\"name\":\"qeAuthData\",\"components\":[{\"type\":\"uint16\",\"name\":\"parsedDataSize\"},{\"type\":\"bytes\",\"name\":\"data\"}]},{\"type\":\"tuple\",\"name\":\"certification\",\"components\":[{\"type\":\"uint16\",\"name\":\"certType\"},{\"type\":\"uint32\",\"name\":\"certDataSize\"},{\"type\":\"bytes[3]\",\"name\":\"decodedCertDataArray\"}]}]}]}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"verifyProof\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"tuple\",\"name\":\"_ctx\",\"components\":[{\"type\":\"bytes32\",\"name\":\"metaHash\"},{\"type\":\"bytes32\",\"name\":\"blobHash\"},{\"type\":\"address\",\"name\":\"prover\"},{\"type\":\"uint64\",\"name\":\"blockId\"},{\"type\":\"bool\",\"name\":\"isContesting\"},{\"type\":\"bool\",\"name\":\"blobUsed\"},{\"type\":\"address\",\"name\":\"msgSender\"}]},{\"type\":\"tuple\",\"name\":\"_tran\",\"components\":[{\"type\":\"bytes32\",\"name\":\"parentHash\"},{\"type\":\"bytes32\",\"name\":\"blockHash\"},{\"type\":\"bytes32\",\"name\":\"stateRoot\"},{\"type\":\"bytes32\",\"name\":\"graffiti\"}]},{\"type\":\"tuple\",\"name\":\"_proof\",\"components\":[{\"type\":\"uint16\",\"name\":\"tier\"},{\"type\":\"bytes\",\"name\":\"data\"}]}],\"outputs\":[]}]","addresses":["0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81"]}],"createdAt":"2024-05-02T14:09:42.804Z","subscriberId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","name":"Taiko Mainnet SGX Prover","network":"mainnet","riskCategory":"TECHNICAL","monitorId":"d49a2a9b-268d-4d30-9553-ec55ed952d87","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-sgx-prover","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Address Managers triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AddressSet(uint64,bytes32,address,address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AddressSet\",\"inputs\":[{\"type\":\"uint64\",\"name\":\"chainId\",\"indexed\":true},{\"type\":\"bytes32\",\"name\":\"name\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newAddress\",\"indexed\":false},{\"type\":\"address\",\"name\":\"oldAddress\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"getAddress\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"init\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"_owner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"setAddress\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"address\",\"name\":\"_newAddress\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x579f40D0BE111b823962043702cabe6Aaa290780"]}],"createdAt":"2024-05-02T14:00:18.874Z","subscriberId":"3919cb83-487f-4432-88fa-33bbe4361fce","name":"Taiko Mainnet Address Managers","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"3919cb83-487f-4432-88fa-33bbe4361fce","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-address-managers","type":"BLOCK"},{"skipABIValidation":false,"alertThreshold":null,"notifyConfig":{"severityLevel":"HIGH","messageBody":"**Defender Monitor {{ sentinel.name }} Triggered**\n\n**Network**\n\n{{ sentinel.network }}\n\n**Block Hash**\n\n{{ blockHash }}\n\n**Transaction Hash**\n\n{{ transaction.transactionHash }}\n\n**Explorer Link**\n\n{{ transaction.link }}\n\n{{ matchReasonsFormatted }}","messageSubject":"Defender Monitor: Taiko Mainnet Essential Contracts triggered","notifications":[{"type":"discord","sendCount":0,"notificationId":"93e8dbf2-4f87-4793-b3c3-6ff0dd6cf827"}],"timeoutMs":0},"tenantId":"0691b59e-8b53-4ae2-b874-959de8a9f2ee","addressRules":[{"conditions":[{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"AdminChanged(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"BeaconUpgraded(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Initialized(uint8)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferStarted(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"OwnershipTransferred(address,address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Paused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Unpaused(address)","expression":null}]},{"txConditions":[],"functionConditions":[],"eventConditions":[{"eventSignature":"Upgraded(address)","expression":null}]}],"abi":"[{\"type\":\"event\",\"anonymous\":false,\"name\":\"AdminChanged\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousAdmin\",\"indexed\":false},{\"type\":\"address\",\"name\":\"newAdmin\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"BeaconUpgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"beacon\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Initialized\",\"inputs\":[{\"type\":\"uint8\",\"name\":\"version\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"OwnershipTransferred\",\"inputs\":[{\"type\":\"address\",\"name\":\"previousOwner\",\"indexed\":true},{\"type\":\"address\",\"name\":\"newOwner\",\"indexed\":true}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Paused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Unpaused\",\"inputs\":[{\"type\":\"address\",\"name\":\"account\",\"indexed\":false}]},{\"type\":\"event\",\"anonymous\":false,\"name\":\"Upgraded\",\"inputs\":[{\"type\":\"address\",\"name\":\"implementation\",\"indexed\":true}]},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"addressManager\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"uint64\"}]},{\"type\":\"function\",\"name\":\"owner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"pause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"paused\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"pendingOwner\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[],\"outputs\":[{\"type\":\"bytes32\"}]},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"resolve\",\"constant\":true,\"stateMutability\":\"view\",\"payable\":false,\"inputs\":[{\"type\":\"uint64\",\"name\":\"_chainId\"},{\"type\":\"bytes32\",\"name\":\"_name\"},{\"type\":\"bool\",\"name\":\"_allowZeroAddress\"}],\"outputs\":[{\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"transferOwnership\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newOwner\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"unpause\",\"constant\":false,\"payable\":false,\"inputs\":[],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeTo\",\"constant\":false,\"payable\":false,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"}],\"outputs\":[]},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"constant\":false,\"stateMutability\":\"payable\",\"payable\":true,\"inputs\":[{\"type\":\"address\",\"name\":\"newImplementation\"},{\"type\":\"bytes\",\"name\":\"data\"}],\"outputs\":[]}]","addresses":["0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa","0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800","0x9e0a24964e5397B566c1ed39258e21aB5E35C77C","0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC","0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa","0xaf145913EA4a56BE22E120ED9C24589659881702","0x579f40D0BE111b823962043702cabe6Aaa290780","0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a","0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6","0x33879cDF01121dc7bCe011b461e64d791aE931F2","0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81","0x579A8d63a2Db646284CBFE31FE5082c9989E985c","0xE3D777143Ea25A6E031d1e921F396750885f43aC","0x8d7C954960a36a7596d7eA4945dDf891967ca8A3"]}],"createdAt":"2024-05-02T13:49:54.192Z","subscriberId":"67a53521-3d4a-4de4-92ab-ede82cc45644","name":"Taiko Mainnet Essential Contracts","network":"mainnet","riskCategory":"ACCESS-CONTROL","monitorId":"67a53521-3d4a-4de4-92ab-ede82cc45644","blockWatcherId":"mainnet-1","paused":false,"stackResourceId":"mystack.taiko-mainnet-essential-contracts","type":"BLOCK"}]},"actions":{"removed":[],"created":[],"updated":[]},"contracts":{"removed":[],"created":[],"updated":[]},"relayers":{"removed":[],"created":[],"updated":[],"relayerKeys":{"removed":[],"created":[],"updated":[]}},"notifications":{"removed":[],"created":[],"updated":[]},"secrets":{"removed":[],"created":[],"updated":[]},"blockExplorerApiKeys":{"removed":[],"created":[],"updated":[]},"forkedNetworks":{"removed":[],"created":[],"updated":[]},"privateNetworks":{"removed":[],"created":[],"updated":[]}} diff --git a/packages/monitors/defender/mainnet/.env.example b/packages/monitors/defender/mainnet/.env.example new file mode 100644 index 00000000000..dc8a45401c3 --- /dev/null +++ b/packages/monitors/defender/mainnet/.env.example @@ -0,0 +1,2 @@ +DEFENDER_API_SECRET= +DEFENDER_API_KEY= diff --git a/packages/protocol/monitors/README.md b/packages/monitors/defender/mainnet/README.md similarity index 100% rename from packages/protocol/monitors/README.md rename to packages/monitors/defender/mainnet/README.md diff --git a/packages/protocol/monitors/actions/Bridge-MessageProcessed.js b/packages/monitors/defender/mainnet/actions/Bridge-MessageProcessed/index.js similarity index 97% rename from packages/protocol/monitors/actions/Bridge-MessageProcessed.js rename to packages/monitors/defender/mainnet/actions/Bridge-MessageProcessed/index.js index 09f4227e481..06936f591c9 100644 --- a/packages/protocol/monitors/actions/Bridge-MessageProcessed.js +++ b/packages/monitors/defender/mainnet/actions/Bridge-MessageProcessed/index.js @@ -262,7 +262,7 @@ function findUnmatchedMessages(processedMessages, sentMessages) { } function alertOrg(notificationClient, missingCount) { - const outputMessage = `Bridge Health Alert! \nThere are ${missingCount} missing MessageSent events for the processed messages on the other chain.`; + const outputMessage = `@cyberhorsey @soylent_ @xiaodino007 Bridge Health Alert! \nThere are ${missingCount} missing MessageSent events for the processed messages on the other chain.`; notificationClient.send({ channelAlias: "discord_bridging", diff --git a/packages/protocol/monitors/actions/ER20Vault-BridgedTokenChanged.js b/packages/monitors/defender/mainnet/actions/ER20Vault-BridgedTokenChanged/index.js similarity index 100% rename from packages/protocol/monitors/actions/ER20Vault-BridgedTokenChanged.js rename to packages/monitors/defender/mainnet/actions/ER20Vault-BridgedTokenChanged/index.js diff --git a/packages/protocol/monitors/actions/ERC20Vault-BalanceDrop.js b/packages/monitors/defender/mainnet/actions/ERC20Vault-BalanceDrop/index.js similarity index 100% rename from packages/protocol/monitors/actions/ERC20Vault-BalanceDrop.js rename to packages/monitors/defender/mainnet/actions/ERC20Vault-BalanceDrop/index.js diff --git a/packages/protocol/monitors/actions/GuardianProver-ApprovedCount.js b/packages/monitors/defender/mainnet/actions/GuardianProver-ApprovedCount/index.js similarity index 94% rename from packages/protocol/monitors/actions/GuardianProver-ApprovedCount.js rename to packages/monitors/defender/mainnet/actions/GuardianProver-ApprovedCount/index.js index 919e2db9d7a..ae37c7da0ef 100644 --- a/packages/protocol/monitors/actions/GuardianProver-ApprovedCount.js +++ b/packages/monitors/defender/mainnet/actions/GuardianProver-ApprovedCount/index.js @@ -31,7 +31,7 @@ const ABI = [ function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_configs", + channelAlias: "discord_bridging", subject: "⚠️ GuardianProver: Approved Count", message, }); @@ -56,7 +56,7 @@ async function calculateBlockTime(provider) { async function calculateBlockRange(provider) { const currentBlockNumber = await getLatestBlockNumber(provider); const blockTimeInSeconds = await calculateBlockTime(provider); - const blocksInOneHour = Math.floor((16 * 60) / blockTimeInSeconds); + const blocksInOneHour = Math.floor((15 * 60) / blockTimeInSeconds); const fromBlock = currentBlockNumber - blocksInOneHour; const toBlock = currentBlockNumber; @@ -132,7 +132,7 @@ exports.handler = async function (event, context) { if (logs.length > 0) { alertOrg( notificationClient, - `Detected ${logs.length} Approved events in the last 15 mins on Guardian!`, + `@taiko|guardians Detected ${logs.length} Approved events in the last 15 mins on Guardian!`, ); } diff --git a/packages/protocol/monitors/actions/GuardianProver-ConflictingProofs.js b/packages/monitors/defender/mainnet/actions/GuardianProver-ConflictingProofs/index.js similarity index 94% rename from packages/protocol/monitors/actions/GuardianProver-ConflictingProofs.js rename to packages/monitors/defender/mainnet/actions/GuardianProver-ConflictingProofs/index.js index 913fde80ff3..bf9e9e00c8d 100644 --- a/packages/protocol/monitors/actions/GuardianProver-ConflictingProofs.js +++ b/packages/monitors/defender/mainnet/actions/GuardianProver-ConflictingProofs/index.js @@ -43,7 +43,13 @@ const ABI = [ function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_configs", + channelAlias: "discord_bridging", + subject: "🚨 GuardianProver: ConflictingProofs Alert", + message, + }); + + notificationClient.send({ + channelAlias: "tg_taiko_guardians", subject: "🚨 GuardianProver: ConflictingProofs Alert", message, }); diff --git a/packages/protocol/monitors/actions/GuardianProver-GuardiansUpdated.js b/packages/monitors/defender/mainnet/actions/GuardianProver-GuardiansUpdated/index.js similarity index 93% rename from packages/protocol/monitors/actions/GuardianProver-GuardiansUpdated.js rename to packages/monitors/defender/mainnet/actions/GuardianProver-GuardiansUpdated/index.js index b5be10015e7..e6250747ec3 100644 --- a/packages/protocol/monitors/actions/GuardianProver-GuardiansUpdated.js +++ b/packages/monitors/defender/mainnet/actions/GuardianProver-GuardiansUpdated/index.js @@ -25,7 +25,13 @@ const ABI = [ function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_configs", + channelAlias: "discord_bridging", + subject: "⚠️ GuardianProver: GuardiansUpdated Alert", + message, + }); + + notificationClient.send({ + channelAlias: "tg_taiko_guardians", subject: "⚠️ GuardianProver: GuardiansUpdated Alert", message, }); diff --git a/packages/protocol/monitors/actions/GuardianProver-ProvingAutoPauseEnabled.js b/packages/monitors/defender/mainnet/actions/GuardianProver-ProvingAutoPauseEnabled/index.js similarity index 93% rename from packages/protocol/monitors/actions/GuardianProver-ProvingAutoPauseEnabled.js rename to packages/monitors/defender/mainnet/actions/GuardianProver-ProvingAutoPauseEnabled/index.js index c76d7dedbf4..80acbd46f5a 100644 --- a/packages/protocol/monitors/actions/GuardianProver-ProvingAutoPauseEnabled.js +++ b/packages/monitors/defender/mainnet/actions/GuardianProver-ProvingAutoPauseEnabled/index.js @@ -19,7 +19,12 @@ const ABI = [ function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_configs", + channelAlias: "discord_bridging", + subject: "⚠️ GuardianProver: ProvingAutoPauseEnabled Alert", + message, + }); + notificationClient.send({ + channelAlias: "tg_taiko_guardians", subject: "⚠️ GuardianProver: ProvingAutoPauseEnabled Alert", message, }); diff --git a/packages/protocol/monitors/actions/SGXVerifier-verifyProofFailure.js b/packages/monitors/defender/mainnet/actions/SGXVerifier-verifyProofFailure/index.js similarity index 98% rename from packages/protocol/monitors/actions/SGXVerifier-verifyProofFailure.js rename to packages/monitors/defender/mainnet/actions/SGXVerifier-verifyProofFailure/index.js index 7eaa5bf7dc4..0403697f3e8 100644 --- a/packages/protocol/monitors/actions/SGXVerifier-verifyProofFailure.js +++ b/packages/monitors/defender/mainnet/actions/SGXVerifier-verifyProofFailure/index.js @@ -8,7 +8,7 @@ const verifyProofSelector = ethers.utils function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_blocks", + channelAlias: "discord_bridging", subject: "⚠️ SGXVerifier: verifyProof Failure Alert", message, }); diff --git a/packages/protocol/monitors/actions/TaikoL1-BlockProposed.js b/packages/monitors/defender/mainnet/actions/TaikoL1-BlockProposed/index.js similarity index 96% rename from packages/protocol/monitors/actions/TaikoL1-BlockProposed.js rename to packages/monitors/defender/mainnet/actions/TaikoL1-BlockProposed/index.js index 9baa19db62d..7ea49a7d858 100644 --- a/packages/protocol/monitors/actions/TaikoL1-BlockProposed.js +++ b/packages/monitors/defender/mainnet/actions/TaikoL1-BlockProposed/index.js @@ -258,7 +258,13 @@ const ABI = [ function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_blocks", + channelAlias: "discord_bridging", + subject: "🚨 TaikoL1: BlockProposed Alert", + message, + }); + + notificationClient.send({ + channelAlias: "tg_taiko_guardians", subject: "🚨 TaikoL1: BlockProposed Alert", message, }); @@ -340,7 +346,7 @@ exports.handler = async function (event, context) { const currentBlockNumber = await getLatestBlockNumber(taikoL1Provider); const blockTimeInSeconds = await calculateBlockTime(taikoL1Provider); - const blocksInFiveMinutes = Math.floor((5 * 60) / blockTimeInSeconds); + const blocksInFiveMinutes = Math.floor((15 * 60) / blockTimeInSeconds); const fromBlock = currentBlockNumber - blocksInFiveMinutes; const toBlock = currentBlockNumber; @@ -359,7 +365,7 @@ exports.handler = async function (event, context) { if (logs.length === 0) { alertOrg( notificationClient, - `No BlockProposed event detected in the last 5 mins on TaikoL1!`, + `No BlockProposed event detected in the last 15 mins on TaikoL1!`, ); } diff --git a/packages/protocol/monitors/actions/TaikoL1-BlockVerified.js b/packages/monitors/defender/mainnet/actions/TaikoL1-BlockVerified/index.js similarity index 91% rename from packages/protocol/monitors/actions/TaikoL1-BlockVerified.js rename to packages/monitors/defender/mainnet/actions/TaikoL1-BlockVerified/index.js index ee1dee30301..fd3b74def30 100644 --- a/packages/protocol/monitors/actions/TaikoL1-BlockVerified.js +++ b/packages/monitors/defender/mainnet/actions/TaikoL1-BlockVerified/index.js @@ -80,7 +80,13 @@ const ABI = [ function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_blocks", + channelAlias: "discord_bridging", + subject: "🚨 TaikoL1: BlockVerified Alert", + message, + }); + + notificationClient.send({ + channelAlias: "tg_taiko_guardians", subject: "🚨 TaikoL1: BlockVerified Alert", message, }); @@ -156,7 +162,7 @@ exports.handler = async function (event, context) { const currentBlockNumber = await getLatestBlockNumber(taikoL1Provider); const blockTimeInSeconds = await calculateBlockTime(taikoL1Provider); - const blocksInFiveMinutes = Math.floor((5 * 60) / blockTimeInSeconds); + const blocksInFiveMinutes = Math.floor((30 * 60) / blockTimeInSeconds); const fromBlock = currentBlockNumber - blocksInFiveMinutes; const toBlock = currentBlockNumber; @@ -173,7 +179,7 @@ exports.handler = async function (event, context) { if (logs.length === 0) { alertOrg( notificationClient, - `No BlockVerified event detected in the last 5 mins in TaikoL1!`, + `@davidcai @yuea7583 No BlockVerified event detected in the last 30 mins in TaikoL1!`, ); } diff --git a/packages/protocol/monitors/actions/TaikoL1-CalldataTxListCount.js b/packages/monitors/defender/mainnet/actions/TaikoL1-CalldataTxListCount/index.js similarity index 98% rename from packages/protocol/monitors/actions/TaikoL1-CalldataTxListCount.js rename to packages/monitors/defender/mainnet/actions/TaikoL1-CalldataTxListCount/index.js index 8c515fd22b4..2539f4e90bd 100644 --- a/packages/protocol/monitors/actions/TaikoL1-CalldataTxListCount.js +++ b/packages/monitors/defender/mainnet/actions/TaikoL1-CalldataTxListCount/index.js @@ -25,7 +25,7 @@ const ABI = [ function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_blocks", + channelAlias: "discord_bridging", subject: "ℹ️ TaikoL1: CalldataTxList Count", message, }); diff --git a/packages/protocol/monitors/actions/TaikoL1-ProvingPaused.js b/packages/monitors/defender/mainnet/actions/TaikoL1-ProvingPaused/index.js similarity index 98% rename from packages/protocol/monitors/actions/TaikoL1-ProvingPaused.js rename to packages/monitors/defender/mainnet/actions/TaikoL1-ProvingPaused/index.js index 2e0eeb5cbf6..9e52d04f3c8 100644 --- a/packages/protocol/monitors/actions/TaikoL1-ProvingPaused.js +++ b/packages/monitors/defender/mainnet/actions/TaikoL1-ProvingPaused/index.js @@ -19,7 +19,7 @@ const ABI = [ function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_configs", + channelAlias: "discord_bridging", subject: "⚠️ TaikoL1: ProvingPaused Alert", message, }); diff --git a/packages/protocol/monitors/actions/TaikoL1-TransitionContestedCount.js b/packages/monitors/defender/mainnet/actions/TaikoL1-TransitionContestedCount/index.js similarity index 99% rename from packages/protocol/monitors/actions/TaikoL1-TransitionContestedCount.js rename to packages/monitors/defender/mainnet/actions/TaikoL1-TransitionContestedCount/index.js index d38ed5579fb..8c47353c3a5 100644 --- a/packages/protocol/monitors/actions/TaikoL1-TransitionContestedCount.js +++ b/packages/monitors/defender/mainnet/actions/TaikoL1-TransitionContestedCount/index.js @@ -124,7 +124,7 @@ const ABI = [ function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_blocks", + channelAlias: "discord_bridging", subject: "ℹ️ TaikoL1: TransitionContested Count", message, }); diff --git a/packages/protocol/monitors/actions/TaikoL1-TransitionProved.js b/packages/monitors/defender/mainnet/actions/TaikoL1-TransitionProved/index.js similarity index 99% rename from packages/protocol/monitors/actions/TaikoL1-TransitionProved.js rename to packages/monitors/defender/mainnet/actions/TaikoL1-TransitionProved/index.js index b391f3d880b..489d8a94542 100644 --- a/packages/protocol/monitors/actions/TaikoL1-TransitionProved.js +++ b/packages/monitors/defender/mainnet/actions/TaikoL1-TransitionProved/index.js @@ -124,7 +124,7 @@ const ABI = [ function alertOrg(notificationClient, message) { notificationClient.send({ - channelAlias: "discord_blocks", + channelAlias: "discord_bridging", subject: "🚨 TaikoL1: TransitionProved Alert", message, }); diff --git a/packages/protocol/monitors/actions/Vaults-BridgedTokenDeployed.js b/packages/monitors/defender/mainnet/actions/Vaults-BridgedTokenDeployed/index.js similarity index 93% rename from packages/protocol/monitors/actions/Vaults-BridgedTokenDeployed.js rename to packages/monitors/defender/mainnet/actions/Vaults-BridgedTokenDeployed/index.js index c1da2a0a806..53dcf85a248 100644 --- a/packages/protocol/monitors/actions/Vaults-BridgedTokenDeployed.js +++ b/packages/monitors/defender/mainnet/actions/Vaults-BridgedTokenDeployed/index.js @@ -130,8 +130,8 @@ const ABIs = { function alertOrg(notificationClient, subject, message) { notificationClient.send({ channelAlias: "discord_bridging", - subject, - message, + subject: subject, + message: message, }); } @@ -226,9 +226,11 @@ async function monitorEvent( const eventCount = logs.length; if (eventCount > 0) { - const alertMessage = `Detected ${eventCount} ${subject} events on ${provider.network.name} in the last 24 hours!`; + const alertMessage = `ℹ️ Detected ${eventCount} ${subject} events on ${provider.network.name} in the last 24 hours!`; alertOrg(notificationClient, subject, alertMessage); } + + return; } exports.handler = async function (event, context) { @@ -260,7 +262,6 @@ exports.handler = async function (event, context) { const { fromBlock: l2FromBlock, toBlock: l2ToBlock } = await calculateBlockRange(l2Provider); - // Monitor ERC1155Vault events await monitorEvent( l1Provider, "BridgedTokenDeployed", @@ -268,7 +269,7 @@ exports.handler = async function (event, context) { l1ToBlock, "0xaf145913EA4a56BE22E120ED9C24589659881702", // L1 ABIs.ERC1155Vault, - "ℹ️ ERC1155Vault BridgedTokenDeployed", + " ERC1155Vault.BridgedTokenDeployed", notificationClient, ); @@ -279,11 +280,10 @@ exports.handler = async function (event, context) { l2ToBlock, "0x1670000000000000000000000000000000000004", // L2 ABIs.ERC1155Vault, - "ℹ️ ERC1155Vault BridgedTokenDeployed", + " ERC1155Vault.BridgedTokenDeployed", notificationClient, ); - // Monitor ERC721Vault events await monitorEvent( l1Provider, "BridgedTokenDeployed", @@ -291,7 +291,7 @@ exports.handler = async function (event, context) { l1ToBlock, "0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa", // L1 ABIs.ERC721Vault, - "ℹ️ ERC721Vault BridgedTokenDeployed", + " ERC721Vault.BridgedTokenDeployed", notificationClient, ); @@ -302,11 +302,10 @@ exports.handler = async function (event, context) { l2ToBlock, "0x1670000000000000000000000000000000000003", // L2 ABIs.ERC721Vault, - "ℹ️ ERC721Vault BridgedTokenDeployed", + " ERC721Vault.BridgedTokenDeployed", notificationClient, ); - // Monitor ERC20Vault events await monitorEvent( l1Provider, "BridgedTokenDeployed", @@ -314,7 +313,7 @@ exports.handler = async function (event, context) { l1ToBlock, "0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab", // L1 ABIs.ERC20Vault, - "ℹ️ ERC20 BridgedTokenDeployed", + " ERC20Vault.BridgedTokenDeployed", notificationClient, ); @@ -325,7 +324,7 @@ exports.handler = async function (event, context) { l2ToBlock, "0x1670000000000000000000000000000000000002", // L2 ABIs.ERC20Vault, - "ℹ️ ERC20Vault BridgedTokenDeployed", + " ERC20Vault.BridgedTokenDeployed", notificationClient, ); diff --git a/packages/protocol/monitors/serverless.yml b/packages/monitors/defender/mainnet/serverless.yml similarity index 65% rename from packages/protocol/monitors/serverless.yml rename to packages/monitors/defender/mainnet/serverless.yml index fd6459a34b0..78cb450766a 100644 --- a/packages/protocol/monitors/serverless.yml +++ b/packages/monitors/defender/mainnet/serverless.yml @@ -1,19 +1,18 @@ -service: defender-as-code-test-project +service: taiko-defender-as-code configValidationMode: error frameworkVersion: "3" +useDotenv: true + provider: name: defender stage: ${opt:stage, 'dev'} stackName: mystack ssot: false -custom: - config: ${file(secrets.${self:provider.stage}.yml)} - defender: - key: ${self:custom.config.keys.api} - secret: ${self:custom.config.keys.secret} + key: ${env:DEFENDER_API_KEY} + secret: ${env:DEFENDER_API_SECRET} resources: actions: @@ -23,7 +22,7 @@ resources: type: schedule frequency: 15 paused: false - path: ./actions/ERC20Vault-BalanceDrop.js + path: ./actions/ERC20Vault-BalanceDrop sgx-verifier-verify-proof-failure-alert: name: "SGXVerifier: VerifyProof failure Alert" @@ -31,7 +30,7 @@ resources: type: schedule frequency: 5 paused: false - path: ./actions/SGXVerifier-verifyProofFailure.js + path: ./actions/SGXVerifier-verifyProofFailure vaults-bridged-token-deployed: name: "Vaults: BridgedTokenDeployed" @@ -39,7 +38,7 @@ resources: type: schedule frequency: 1440 paused: false - path: ./actions/Vaults-BridgedTokenDeployed.js + path: ./actions/Vaults-BridgedTokenDeployed er-20-vault-bridged-token-changed: name: "ER20Vault : BridgedTokenChanged" @@ -47,7 +46,7 @@ resources: type: schedule frequency: 4 paused: false - path: ./actions/ER20Vault-BridgedTokenChanged.js + path: ./actions/ER20Vault-BridgedTokenChanged bridge-message-processed: name: "Bridge: MessageProcessed" @@ -55,7 +54,7 @@ resources: type: schedule frequency: 15 paused: false - path: ./actions/Bridge-MessageProcessed.js + path: ./actions/Bridge-MessageProcessed taiko-l-1-calldata-tx-list-count: name: "TaikoL1: CalldataTxList Count" @@ -63,23 +62,7 @@ resources: type: schedule frequency: 1440 paused: false - path: ./actions/TaikoL1-CalldataTxListCount.js - - guardian-prover-proving-auto-pause-enabled-alert: - name: "GuardianProver: ProvingAutoPauseEnabled Alert" - trigger: - type: schedule - frequency: 4 - paused: false - path: ./actions/GuardianProver-ProvingAutoPauseEnabled.js - - guardian-prover-conflicting-proofs-alert: - name: "GuardianProver: ConflictingProofs Alert" - trigger: - type: schedule - frequency: 4 - paused: false - path: ./actions/GuardianProver-ConflictingProofs.js + path: ./actions/TaikoL1-CalldataTxListCount guardian-prover-approved-count: name: "GuardianProver: Approved Count" @@ -87,23 +70,7 @@ resources: type: schedule frequency: 15 paused: false - path: ./actions/GuardianProver-ApprovedCount.js - - guardian-prover-guardians-updated-alert: - name: "GuardianProver: GuardiansUpdated Alert" - trigger: - type: schedule - frequency: 4 - paused: false - path: ./actions/GuardianProver-GuardiansUpdated.js - - taiko-l-1-proving-paused-alert: - name: "TaikoL1: ProvingPaused Alert" - trigger: - type: schedule - frequency: 4 - paused: false - path: ./actions/TaikoL1-ProvingPaused.js + path: ./actions/GuardianProver-ApprovedCount taiko-l-1-transition-contested-count: name: "TaikoL1: TransitionContested Count" @@ -111,7 +78,7 @@ resources: type: schedule frequency: 60 paused: false - path: ./actions/TaikoL1-TransitionContestedCount.js + path: ./actions/TaikoL1-TransitionContestedCount taiko-l-1-transition-proved-alert: name: "TaikoL1: TransitionProved Alert" @@ -119,7 +86,7 @@ resources: type: schedule frequency: 4 paused: false - path: ./actions/TaikoL1-TransitionProved.js + path: ./actions/TaikoL1-TransitionProved taiko-l-1-block-verified-alert: name: "TaikoL1: BlockVerified Alert" @@ -127,7 +94,7 @@ resources: type: schedule frequency: 4 paused: false - path: ./actions/TaikoL1-BlockVerified.js + path: ./actions/TaikoL1-BlockVerified taiko-l-1-block-proposed-alert: name: "TaikoL1: BlockProposed Alert" @@ -135,15 +102,13 @@ resources: type: schedule frequency: 4 paused: false - path: ./actions/TaikoL1-BlockProposed.js + path: ./actions/TaikoL1-BlockProposed policies: - policy-Qe: + policy-ts: eip1559-pricing: true - private-transactions: false - policy-hk: + policy-rA: eip1559-pricing: true - private-transactions: false contracts: pem-cert-chain-lib: name: pem_cert_chain_lib @@ -254,23 +219,316 @@ resources: name: discord_bridging config: url: >- - https://discord.com/api/webhooks/1235610195586187285/pT1ZoqTmEKcjtAt0JY6KxOeHP-_YP7mC3SG1janVZyuf99RE7XwymIFQ9iNlFiyxm41w + https://discord.com/api/webhooks/1079966997816811520/RdYRjk74nbjEPb44tKFGAgYqDRSmmk2BAmShGkpnmm6QpK-21n-Avw5TnVEaJ1CWhE0s paused: false - discord-blocks: - type: discord - name: discord_blocks - config: - url: >- - https://discord.com/api/webhooks/1235610046080221214/tEHgmjlZzZsuxGyv3bEPc1I_SGZ69ZmZ7JsF8ey5VEQadylYePXLjRyGCup1I96rTbRk + monitors: + taiko-l-1-prove-block-tx-failure: + name: "TaikoL1: proveBlock Tx Failure" + type: BLOCK + network: mainnet + addresses: + - "0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a" + skip-abi-validation: true paused: false - discord-configs: - type: discord - name: discord_configs - config: - url: >- - https://discord.com/api/webhooks/1235609859660185744/d6ygohFcXEJEj6zHlxGhLFqXq4lDfieLrFweae3SnsustZLF0q4aTKKHeuzmrgZBIcvy + confirm-level: 6 + notify-config: + timeout: 0 + message: >- + **Defender Monitor {{ monitor.name }} Triggered an Alert at {{ + timestamp }}** + + + **Network:** {{ monitor.network }} + + + **Block Hash:** {{ blockHash }} + + + **Transaction Hash:** {{ transaction.transactionHash }} + + + **Explorer Link:** {{ transaction.link }} + + + **Match Reasons** + + + {{ matchReasonsFormatted }} + + + **Metadata** + + + {{ metadataFormatted }} + message-subject: "[Alert] OpenZeppelin Defender Monitor TaikoL1: proveBlock Tx Failure" + channels: + - ${self:resources.notifications.tg-taiko-guardians} + - ${self:resources.notifications.discord-bridging} + severity-level: HIGH + conditions: + event: + - expression: null + signature: >- + BlockProposed(uint256,address,uint96,(bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address),(address,uint96,uint64)[]) + function: + - expression: null + signature: proveBlock(uint64,bytes) + transaction: >- + (status == "failed") AND (from == + "0x000000629FBCf27A347d1AEbA658435230D74a5f" OR from == + "0x000000633b68f5d8d3a86593ebb815b4663bcbe0" OR from == + "0x00000027F51a57E7FcBC4b481d15fcE5BE68b30B") + taiko-l-1-proposed-block-tx-failure: + name: "TaikoL1: ProposedBlock Tx Failure" + type: BLOCK + network: mainnet + addresses: + - "0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a" + skip-abi-validation: true paused: false - monitors: + confirm-level: 1 + notify-config: + timeout: 0 + message: >- + **Defender Monitor {{ monitor.name }} Triggered an Alert at {{ + timestamp }}** + + + **Network:** {{ monitor.network }} + + + **Block Hash:** {{ blockHash }} + + + **Transaction Hash:** {{ transaction.transactionHash }} + + + **Explorer Link:** {{ transaction.link }} + + + **Match Reasons** + + + {{ matchReasonsFormatted }} + + + **Metadata** + + + {{ metadataFormatted }} + message-subject: >- + [Alert] OpenZeppelin Defender Monitor TaikoL1: ProposedBlock Tx + Failure + channels: + - ${self:resources.notifications.discord-bridging} + - ${self:resources.notifications.tg-taiko-guardians} + severity-level: HIGH + conditions: + event: + - expression: null + signature: >- + BlockProposed(uint256,address,uint96,(bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address),(address,uint96,uint64)[]) + function: + - expression: null + signature: proposeBlock(bytes,bytes) + transaction: >- + (status == "failed") AND (from == + "0x000000629FBCf27A347d1AEbA658435230D74a5f" OR from == + "0x000000633b68f5d8d3a86593ebb815b4663bcbe0" OR from == + "0x00000027F51a57E7FcBC4b481d15fcE5BE68b30B") + guardian-prover-proving-auto-pause-enabled-alert: + name: "GuardianProver: ProvingAutoPauseEnabled" + type: BLOCK + network: mainnet + addresses: + - "0xE3D777143Ea25A6E031d1e921F396750885f43aC" + skip-abi-validation: false + paused: false + confirm-level: 6 + notify-config: + timeout: 60000 + message: >- + **Defender Monitor {{ monitor.name }} Triggered an Alert at {{ + timestamp }}** + + + **Network:** {{ monitor.network }} + + + **Block Hash:** {{ blockHash }} + + + **Transaction Hash:** {{ transaction.transactionHash }} + + + **Explorer Link:** {{ transaction.link }} + + + **Match Reasons** + + + {{ matchReasonsFormatted }} + + + **Metadata** + + + {{ metadataFormatted }} + message-subject: >- + [Alert] OpenZeppelin Defender Monitor GuardianProver: + ProvingAutoPauseEnabled + channels: + - ${self:resources.notifications.discord-bridging} + - ${self:resources.notifications.tg-taiko-guardians} + severity-level: MEDIUM + conditions: + event: + - expression: null + signature: GuardiansUpdated(uint32,address[]) + guardian-prover-conflicting-proofs-alert: + name: "GuardianProver: ConflictingProofs Alert" + type: BLOCK + network: mainnet + addresses: + - "0xE3D777143Ea25A6E031d1e921F396750885f43aC" + skip-abi-validation: false + paused: false + confirm-level: 1 + notify-config: + timeout: 60000 + message: >- + **Defender Monitor {{ monitor.name }} Triggered an Alert at {{ + timestamp }}** + + + **Network:** {{ monitor.network }} + + + **Block Hash:** {{ blockHash }} + + + **Transaction Hash:** {{ transaction.transactionHash }} + + + **Explorer Link:** {{ transaction.link }} + + + **Match Reasons** + + + {{ matchReasonsFormatted }} + + + **Metadata** + + + {{ metadataFormatted }} + message-subject: >- + [Alert] OpenZeppelin Defender Monitor GuardianProver: + ConflictingProofs Alert + channels: + - ${self:resources.notifications.discord-bridging} + - ${self:resources.notifications.tg-taiko-guardians} + severity-level: MEDIUM + conditions: + event: + - expression: null + signature: ConflictingProofs(uint256,address,bytes32,bytes32,bool) + guardian-prover-guardians-updated-alert: + name: "GuardianProver: GuardiansUpdated Alert" + type: BLOCK + network: mainnet + addresses: + - "0xE3D777143Ea25A6E031d1e921F396750885f43aC" + skip-abi-validation: false + paused: false + confirm-level: 1 + notify-config: + timeout: 60000 + message: >- + **Defender Monitor {{ monitor.name }} Triggered an Alert at {{ + timestamp }}** + + + **Network:** {{ monitor.network }} + + + **Block Hash:** {{ blockHash }} + + + **Transaction Hash:** {{ transaction.transactionHash }} + + + **Explorer Link:** {{ transaction.link }} + + + **Match Reasons** + + + {{ matchReasonsFormatted }} + + + **Metadata** + + + {{ metadataFormatted }} + message-subject: >- + [Alert] OpenZeppelin Defender Monitor GuardianProver: GuardiansUpdated + Alert + channels: + - ${self:resources.notifications.discord-bridging} + - ${self:resources.notifications.tg-taiko-guardians} + severity-level: MEDIUM + conditions: + event: + - expression: null + signature: GuardiansUpdated(uint32,address[]) + taiko-l-1-proving-paused-alert: + name: "TaikoL1: ProvingPaused Alert" + type: BLOCK + network: mainnet + addresses: + - "0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a" + skip-abi-validation: false + paused: false + confirm-level: 6 + notify-config: + timeout: 60000 + message: >- + **Defender Monitor {{ monitor.name }} Triggered an Alert at {{ + timestamp }}** + + + **Network:** {{ monitor.network }} + + + **Block Hash:** {{ blockHash }} + + + **Transaction Hash:** {{ transaction.transactionHash }} + + + **Explorer Link:** {{ transaction.link }} + + + **Match Reasons** + + + {{ matchReasonsFormatted }} + + + **Metadata** + + + {{ metadataFormatted }} + message-subject: "[Alert] OpenZeppelin Defender Monitor TaikoL1: ProvingPaused Alert" + channels: + - ${self:resources.notifications.discord-bridging} + severity-level: HIGH + conditions: + event: + - expression: null + signature: ProvingPaused(bool) address-manager-l-2-address-set: name: "Address Manager (L2): AddressSet" type: BLOCK @@ -311,7 +569,7 @@ resources: {{ metadataFormatted }} message-subject: "Defender Monitor: Address Manager (L2): AddressSet triggered" channels: - - ${self:resources.notifications.discord-configs} + - ${self:resources.notifications.discord-bridging} severity-level: MEDIUM conditions: event: @@ -325,7 +583,7 @@ resources: - "0x579f40D0BE111b823962043702cabe6Aaa290780" - "0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa" skip-abi-validation: false - paused: false + paused: true confirm-level: 9007199254740991 notify-config: timeout: 60000 @@ -356,8 +614,7 @@ resources: {{ metadataFormatted }} message-subject: "Defender Monitor: Address Manager (L1): AddressSet triggered" - channels: - - ${self:resources.notifications.discord-configs} + channels: [] severity-level: MEDIUM conditions: event: @@ -410,7 +667,7 @@ resources: {{ metadataFormatted }} message-subject: "Defender Monitor: TaikoL2: Pause/Unpause triggered" channels: - - ${self:resources.notifications.discord-configs} + - ${self:resources.notifications.discord-bridging} severity-level: MEDIUM conditions: event: @@ -479,7 +736,7 @@ resources: {{ metadataFormatted }} message-subject: "Defender Monitor: TaikoL1: Pause/Unpause triggered" channels: - - ${self:resources.notifications.discord-configs} + - ${self:resources.notifications.discord-bridging} severity-level: MEDIUM conditions: event: @@ -520,7 +777,7 @@ resources: {{ matchReasonsFormatted }} message-subject: "Defender Monitor: Taiko Mainnet SGX Prover triggered" channels: - - ${self:resources.notifications.discord-blocks} + - ${self:resources.notifications.discord-bridging} severity-level: LOW conditions: event: @@ -567,7 +824,7 @@ resources: {{ matchReasonsFormatted }} message-subject: "Defender Monitor: Taiko Mainnet Address Managers triggered" channels: - - ${self:resources.notifications.discord-configs} + - ${self:resources.notifications.discord-bridging} severity-level: HIGH conditions: event: @@ -621,7 +878,7 @@ resources: {{ matchReasonsFormatted }} message-subject: "Defender Monitor: Taiko Mainnet Essential Contracts triggered" channels: - - ${self:resources.notifications.discord-configs} + - ${self:resources.notifications.discord-bridging} severity-level: HIGH conditions: event: @@ -643,7 +900,7 @@ resources: signature: Upgraded(address) forked-networks: {} private-networks: - taikol-2: + taikol2: name: taikol2 rpc-url: https://rpc.mainnet.taiko.xyz configuration: diff --git a/packages/monitors/package.json b/packages/monitors/package.json new file mode 100644 index 00000000000..fa01b245454 --- /dev/null +++ b/packages/monitors/package.json @@ -0,0 +1,16 @@ +{ + "name": "monitors", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@openzeppelin/defender-as-code": "^3.0.1", + "serverless": "4.4.3" + } +} diff --git a/packages/protocol/.env.example b/packages/protocol/.env.example index 093b2fdede0..fa0fd36a446 100644 --- a/packages/protocol/.env.example +++ b/packages/protocol/.env.example @@ -1,4 +1,4 @@ ETHERSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 PRIVATE_KEY=0xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1 LOG_LEVEL=DEBUG -REPORT_GAS=true \ No newline at end of file +REPORT_GAS=true diff --git a/packages/protocol/monitors/actions/ERC1155Vault-BridgedTokenDeployed.js b/packages/protocol/monitors/actions/ERC1155Vault-BridgedTokenDeployed.js deleted file mode 100644 index 4a0b8b9573c..00000000000 --- a/packages/protocol/monitors/actions/ERC1155Vault-BridgedTokenDeployed.js +++ /dev/null @@ -1,162 +0,0 @@ -const { ethers } = require("ethers"); -const { Defender } = require("@openzeppelin/defender-sdk"); - -const ABI = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint64", - name: "chainId", - type: "uint64", - }, - { - indexed: true, - internalType: "address", - name: "ctoken", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "btoken", - type: "address", - }, - { - indexed: false, - internalType: "string", - name: "ctokenSymbol", - type: "string", - }, - { - indexed: false, - internalType: "string", - name: "ctokenName", - type: "string", - }, - ], - name: "BridgedTokenDeployed", - type: "event", - }, -]; - -function alertOrg(notificationClient, message) { - notificationClient.send({ - channelAlias: "discord_bridging", - subject: "ERC1155Vault BridgedTokenDeployed Event Count", - message, - }); -} - -async function getLatestBlockNumber(provider) { - const currentBlock = await provider.getBlock("latest"); - return currentBlock.number; -} - -async function calculateBlockTime(provider) { - const latestBlock = await provider.getBlock("latest"); - const previousBlock = await provider.getBlock(latestBlock.number - 100); - - const timeDiff = latestBlock.timestamp - previousBlock.timestamp; - const blockDiff = latestBlock.number - previousBlock.number; - - const blockTime = timeDiff / blockDiff; - return blockTime; -} - -async function calculateBlockRange(provider) { - const currentBlockNumber = await getLatestBlockNumber(provider); - const blockTimeInSeconds = await calculateBlockTime(provider); - const blocksIn24Hours = Math.floor((24 * 60 * 60) / blockTimeInSeconds); - - const fromBlock = currentBlockNumber - blocksIn24Hours; - const toBlock = currentBlockNumber; - - console.log(`Calculated block range: from ${fromBlock} to ${toBlock}`); - - return { fromBlock, toBlock }; -} - -async function fetchLogs( - eventName, - fromBlock, - toBlock, - address, - abi, - provider, -) { - const iface = new ethers.utils.Interface(abi); - const eventTopic = iface.getEventTopic(eventName); - console.log(`eventTopic: ${eventTopic}`); - try { - const logs = await provider.getLogs({ - address, - fromBlock, - toBlock, - topics: [eventTopic], - }); - console.log(`Fetched logs: ${logs.length}`); - return logs.map((log) => { - const parsedLog = iface.parseLog(log); - console.log(`Parsed log: ${JSON.stringify(parsedLog)}`); - return parsedLog; - }); - } catch (error) { - console.error("Error fetching logs:", error); - return []; - } -} - -function createProvider(apiKey, apiSecret, relayerApiKey, relayerApiSecret) { - const client = new Defender({ - apiKey, - apiSecret, - relayerApiKey, - relayerApiSecret, - }); - - return client.relaySigner.getProvider(); -} - -exports.handler = async function (event, context) { - const { notificationClient } = context; - const { apiKey, apiSecret, l1ApiKey, l1ApiSecret, l2ApiKey, l2ApiSecret } = - event.secrets; - - const l1Provider = createProvider(apiKey, apiSecret, l1ApiKey, l1ApiSecret); - const l2Provider = createProvider(apiKey, apiSecret, l2ApiKey, l2ApiSecret); - - const { fromBlock: l1FromBlock, toBlock: l1ToBlock } = - await calculateBlockRange(l1Provider); - const { fromBlock: l2FromBlock, toBlock: l2ToBlock } = - await calculateBlockRange(l2Provider); - - const l1Logs = await fetchLogs( - "BridgedTokenDeployed", - l1FromBlock, - l1ToBlock, - "0xaf145913EA4a56BE22E120ED9C24589659881702", - ABI, - l1Provider, - ); - - const l2Logs = await fetchLogs( - "BridgedTokenDeployed", - l2FromBlock, - l2ToBlock, - "0x1670000000000000000000000000000000000004", - ABI, - l2Provider, - ); - - const l1EventCount = l1Logs.length; - const l2EventCount = l2Logs.length; - - if (l1EventCount > 0 || l2EventCount > 0) { - const alertMessage = `Detected ${l1EventCount} ERC1155Vault BridgedTokenDeployed events on L1 and ${l2EventCount} events on L2 in the last 24 hours!`; - alertOrg(notificationClient, alertMessage); - } - - return true; -}; diff --git a/packages/protocol/monitors/actions/ERC20Vault-BridgedTokenDeployed.js b/packages/protocol/monitors/actions/ERC20Vault-BridgedTokenDeployed.js deleted file mode 100644 index 3939975e8f1..00000000000 --- a/packages/protocol/monitors/actions/ERC20Vault-BridgedTokenDeployed.js +++ /dev/null @@ -1,168 +0,0 @@ -const { ethers } = require("ethers"); -const { Defender } = require("@openzeppelin/defender-sdk"); - -const ABI = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint256", - name: "srcChainId", - type: "uint256", - }, - { - indexed: true, - internalType: "address", - name: "ctoken", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "btoken", - type: "address", - }, - { - indexed: false, - internalType: "string", - name: "ctokenSymbol", - type: "string", - }, - { - indexed: false, - internalType: "string", - name: "ctokenName", - type: "string", - }, - { - indexed: false, - internalType: "uint8", - name: "ctokenDecimal", - type: "uint8", - }, - ], - name: "BridgedTokenDeployed", - type: "event", - }, -]; - -function alertOrg(notificationClient, message) { - notificationClient.send({ - channelAlias: "discord_bridging", - subject: "BridgedTokenDeployed Event Count", - message, - }); -} - -async function getLatestBlockNumber(provider) { - const currentBlock = await provider.getBlock("latest"); - return currentBlock.number; -} - -async function calculateBlockTime(provider) { - const latestBlock = await provider.getBlock("latest"); - const previousBlock = await provider.getBlock(latestBlock.number - 100); - - const timeDiff = latestBlock.timestamp - previousBlock.timestamp; - const blockDiff = latestBlock.number - previousBlock.number; - - const blockTime = timeDiff / blockDiff; - return blockTime; -} - -async function calculateBlockRange(provider) { - const currentBlockNumber = await getLatestBlockNumber(provider); - const blockTimeInSeconds = await calculateBlockTime(provider); - const blocksIn24Hours = Math.floor((24 * 60 * 60) / blockTimeInSeconds); - - const fromBlock = currentBlockNumber - blocksIn24Hours; - const toBlock = currentBlockNumber; - - console.log(`Calculated block range: from ${fromBlock} to ${toBlock}`); - - return { fromBlock, toBlock }; -} - -async function fetchLogs( - eventName, - fromBlock, - toBlock, - address, - abi, - provider, -) { - const iface = new ethers.utils.Interface(abi); - const eventTopic = iface.getEventTopic(eventName); - console.log(`eventTopic: ${eventTopic}`); - try { - const logs = await provider.getLogs({ - address, - fromBlock, - toBlock, - topics: [eventTopic], - }); - console.log(`Fetched logs: ${logs.length}`); - return logs.map((log) => { - const parsedLog = iface.parseLog(log); - console.log(`Parsed log: ${JSON.stringify(parsedLog)}`); - return parsedLog; - }); - } catch (error) { - console.error("Error fetching logs:", error); - return []; - } -} - -function createProvider(apiKey, apiSecret, relayerApiKey, relayerApiSecret) { - const client = new Defender({ - apiKey, - apiSecret, - relayerApiKey, - relayerApiSecret, - }); - - return client.relaySigner.getProvider(); -} - -exports.handler = async function (event, context) { - const { notificationClient } = context; - const { apiKey, apiSecret, l1ApiKey, l1ApiSecret, l2ApiKey, l2ApiSecret } = - event.secrets; - - const l1Provider = createProvider(apiKey, apiSecret, l1ApiKey, l1ApiSecret); - const l2Provider = createProvider(apiKey, apiSecret, l2ApiKey, l2ApiSecret); - - const { fromBlock: l1FromBlock, toBlock: l1ToBlock } = - await calculateBlockRange(l1Provider); - const { fromBlock: l2FromBlock, toBlock: l2ToBlock } = - await calculateBlockRange(l2Provider); - - const l1Logs = await fetchLogs( - "BridgedTokenDeployed", - l1FromBlock, - l1ToBlock, - "0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab", - ABI, - l1Provider, - ); - - const l2Logs = await fetchLogs( - "BridgedTokenDeployed", - l2FromBlock, - l2ToBlock, - "0x1670000000000000000000000000000000000002", - ABI, - l2Provider, - ); - - const l1EventCount = l1Logs.length; - const l2EventCount = l2Logs.length; - - if (l1EventCount > 0 || l2EventCount > 0) { - const alertMessage = `Detected ${l1EventCount} BridgedTokenDeployed events on L1 and ${l2EventCount} events on L2 in the last 24 hours!`; - alertOrg(notificationClient, alertMessage); - } - - return true; -}; diff --git a/packages/protocol/monitors/actions/ERC721Vault-BridgedTokenDeployed.js b/packages/protocol/monitors/actions/ERC721Vault-BridgedTokenDeployed.js deleted file mode 100644 index 7684f22971c..00000000000 --- a/packages/protocol/monitors/actions/ERC721Vault-BridgedTokenDeployed.js +++ /dev/null @@ -1,162 +0,0 @@ -const { ethers } = require("ethers"); -const { Defender } = require("@openzeppelin/defender-sdk"); - -const ABI = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint64", - name: "chainId", - type: "uint64", - }, - { - indexed: true, - internalType: "address", - name: "ctoken", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "btoken", - type: "address", - }, - { - indexed: false, - internalType: "string", - name: "ctokenSymbol", - type: "string", - }, - { - indexed: false, - internalType: "string", - name: "ctokenName", - type: "string", - }, - ], - name: "BridgedTokenDeployed", - type: "event", - }, -]; - -function alertOrg(notificationClient, message) { - notificationClient.send({ - channelAlias: "discord_bridging", - subject: "ERC721Vault BridgedTokenDeployed Event Count", - message, - }); -} - -async function getLatestBlockNumber(provider) { - const currentBlock = await provider.getBlock("latest"); - return currentBlock.number; -} - -async function calculateBlockTime(provider) { - const latestBlock = await provider.getBlock("latest"); - const previousBlock = await provider.getBlock(latestBlock.number - 100); - - const timeDiff = latestBlock.timestamp - previousBlock.timestamp; - const blockDiff = latestBlock.number - previousBlock.number; - - const blockTime = timeDiff / blockDiff; - return blockTime; -} - -async function calculateBlockRange(provider) { - const currentBlockNumber = await getLatestBlockNumber(provider); - const blockTimeInSeconds = await calculateBlockTime(provider); - const blocksIn24Hours = Math.floor((24 * 60 * 60) / blockTimeInSeconds); - - const fromBlock = currentBlockNumber - blocksIn24Hours; - const toBlock = currentBlockNumber; - - console.log(`Calculated block range: from ${fromBlock} to ${toBlock}`); - - return { fromBlock, toBlock }; -} - -async function fetchLogs( - eventName, - fromBlock, - toBlock, - address, - abi, - provider, -) { - const iface = new ethers.utils.Interface(abi); - const eventTopic = iface.getEventTopic(eventName); - console.log(`eventTopic: ${eventTopic}`); - try { - const logs = await provider.getLogs({ - address, - fromBlock, - toBlock, - topics: [eventTopic], - }); - console.log(`Fetched logs: ${logs.length}`); - return logs.map((log) => { - const parsedLog = iface.parseLog(log); - console.log(`Parsed log: ${JSON.stringify(parsedLog)}`); - return parsedLog; - }); - } catch (error) { - console.error("Error fetching logs:", error); - return []; - } -} - -function createProvider(apiKey, apiSecret, relayerApiKey, relayerApiSecret) { - const client = new Defender({ - apiKey, - apiSecret, - relayerApiKey, - relayerApiSecret, - }); - - return client.relaySigner.getProvider(); -} - -exports.handler = async function (event, context) { - const { notificationClient } = context; - const { apiKey, apiSecret, l1ApiKey, l1ApiSecret, l2ApiKey, l2ApiSecret } = - event.secrets; - - const l1Provider = createProvider(apiKey, apiSecret, l1ApiKey, l1ApiSecret); - const l2Provider = createProvider(apiKey, apiSecret, l2ApiKey, l2ApiSecret); - - const { fromBlock: l1FromBlock, toBlock: l1ToBlock } = - await calculateBlockRange(l1Provider); - const { fromBlock: l2FromBlock, toBlock: l2ToBlock } = - await calculateBlockRange(l2Provider); - - const l1Logs = await fetchLogs( - "BridgedTokenDeployed", - l1FromBlock, - l1ToBlock, - "0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa", - ABI, - l1Provider, - ); - - const l2Logs = await fetchLogs( - "BridgedTokenDeployed", - l2FromBlock, - l2ToBlock, - "0x1670000000000000000000000000000000000003", - ABI, - l2Provider, - ); - - const l1EventCount = l1Logs.length; - const l2EventCount = l2Logs.length; - - if (l1EventCount > 0 || l2EventCount > 0) { - const alertMessage = `Detected ${l1EventCount} ERC721Vault BridgedTokenDeployed events on L1 and ${l2EventCount} events on L2 in the last 24 hours!`; - alertOrg(notificationClient, alertMessage); - } - - return true; -}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50a52177ade..d706304da68 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,10 +10,10 @@ importers: devDependencies: lefthook: specifier: ^1.6.10 - version: 1.6.18 + version: 1.6.10 prettier: specifier: ^3.2.5 - version: 3.3.2 + version: 3.2.5 packages/blobstorage: {} @@ -21,62 +21,62 @@ importers: dependencies: '@moralisweb3/common-evm-utils': specifier: ^2.26.1 - version: 2.26.7(debug@4.3.5) + version: 2.26.2(debug@4.3.4) '@wagmi/connectors': specifier: ^4.3.1 - version: 4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + version: 4.3.10(yrxxgsr3s6m7a4itnzsb2c7inm) '@wagmi/core': specifier: ^2.8.1 - version: 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + version: 2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) '@walletconnect/ethereum-provider': specifier: ^2.12.2 - version: 2.13.3(react@18.3.1) + version: 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) '@walletconnect/modal': specifier: ^2.6.2 - version: 2.6.2(react@18.3.1) + version: 2.6.2(@types/react@18.3.5)(react@18.2.0) '@web3modal/wagmi': specifier: ^4.1.11 - version: 4.2.3(@wagmi/connectors@4.3.10)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5) + version: 4.1.11(@types/react@18.3.5)(@wagmi/connectors@4.3.10(yrxxgsr3s6m7a4itnzsb2c7inm))(@wagmi/core@2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4)) '@zerodevx/svelte-toast': specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.18) + version: 0.9.5(svelte@4.2.17) axios: specifier: ^1.6.7 - version: 1.7.2(debug@4.3.5) + version: 1.6.7(debug@4.3.4) buffer: specifier: ^6.0.3 version: 6.0.3 debug: specifier: ^4.3.4 - version: 4.3.5 + version: 4.3.4 events: specifier: ^3.3.0 version: 3.3.0 moralis: specifier: ^2.26.1 - version: 2.26.7(debug@4.3.5) + version: 2.26.2(debug@4.3.4) object-hash: specifier: ^3.0.0 version: 3.0.0 svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.18) + version: 4.0.0(svelte@4.2.17) viem: specifier: ^2.9.29 - version: 2.16.5(typescript@5.5.3)(zod@3.23.8) + version: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) devDependencies: '@playwright/test': specifier: ^1.43.1 - version: 1.45.0 + version: 1.43.1 '@sveltejs/adapter-auto': specifier: ^3.2.0 - version: 3.2.2(@sveltejs/kit@2.5.24) + version: 3.2.0(@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))) '@sveltejs/kit': specifier: ^2.5.21 - version: 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) + version: 2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.1(svelte@4.2.18)(vite@5.3.2) + version: 3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) '@types/debug': specifier: ^4.1.12 version: 4.1.12 @@ -85,124 +85,124 @@ importers: version: 3.0.6 '@typescript-eslint/eslint-plugin': specifier: ^7.8.0 - version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) + version: 7.9.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.8.0 - version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) + version: 7.9.0(eslint@8.56.0)(typescript@5.4.3) '@vitest/coverage-v8': specifier: ^1.4.0 - version: 1.6.0(vitest@1.6.0) + version: 1.4.0(vitest@1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2)) '@wagmi/cli': specifier: ^2.1.4 - version: 2.1.13(typescript@5.5.3) + version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10) abitype: specifier: ^1.0.2 - version: 1.0.5(typescript@5.5.3)(zod@3.23.8) + version: 1.0.2(typescript@5.4.3)(zod@3.22.4) ajv: specifier: ^8.12.0 - version: 8.16.0 + version: 8.12.0 autoprefixer: specifier: ^10.4.18 - version: 10.4.19(postcss@8.4.39) + version: 10.4.18(postcss@8.4.38) daisyui: specifier: ^4.10.3 - version: 4.12.10(postcss@8.4.39) + version: 4.11.1(postcss@8.4.38) dotenv: specifier: ^16.4.5 version: 16.4.5 eslint: specifier: ^8.56.0 - version: 8.57.0 + version: 8.56.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@8.56.0) eslint-plugin-simple-import-sort: specifier: ^12.0.0 - version: 12.1.0(eslint@8.57.0) + version: 12.0.0(eslint@8.56.0) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.41.0(eslint@8.57.0)(svelte@4.2.18) + version: 2.38.0(eslint@8.56.0)(svelte@4.2.17)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) ethereum-address: specifier: ^0.0.4 version: 0.0.4 jsdom: specifier: ^24.0.0 - version: 24.1.0 + version: 24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) lokijs: specifier: ^1.5.12 version: 1.5.12 postcss: specifier: ^8.4.38 - version: 8.4.39 + version: 8.4.38 prettier: specifier: ^3.2.5 - version: 3.3.2 + version: 3.2.5 prettier-plugin-svelte: specifier: ^3.2.3 - version: 3.2.5(prettier@3.3.2)(svelte@4.2.18) + version: 3.2.3(prettier@3.2.5)(svelte@4.2.17) svelte: specifier: ^4.2.15 - version: 4.2.18 + version: 4.2.17 svelte-check: specifier: ^3.7.1 - version: 3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18) + version: 3.7.1(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.17) tailwindcss: specifier: ^3.4.3 - version: 3.4.4 + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) ts-morph: specifier: ^19.0.0 version: 19.0.0 tslib: specifier: ^2.6.2 - version: 2.6.3 + version: 2.6.2 typescript: specifier: ^5.4.3 - version: 5.5.3 + version: 5.4.3 vite: specifier: ^5.2.10 - version: 5.3.2(@types/node@20.14.9) + version: 5.2.11(@types/node@20.12.7)(terser@5.27.2) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.2) + version: 4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) vitest: specifier: ^1.5.3 - version: 1.6.0(jsdom@24.1.0) + version: 1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2) vitest-fetch-mock: specifier: ^0.2.2 - version: 0.2.2(vitest@1.6.0) + version: 0.2.2(encoding@0.1.13)(vitest@1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2)) vitest-mock-extended: specifier: 1.3.1 - version: 1.3.1(typescript@5.5.3)(vitest@1.6.0) + version: 1.3.1(typescript@5.4.3)(vitest@1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2)) packages/docs-site: dependencies: '@astrojs/check': specifier: ^0.8.0 - version: 0.8.3(prettier@3.3.2)(typescript@5.5.3) + version: 0.8.3(prettier@3.2.5)(typescript@5.4.5) '@astrojs/starlight': specifier: ^0.25.0 - version: 0.25.4(astro@4.13.3) + version: 0.25.5(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)) astro: specifier: ^4.11.5 - version: 4.13.3(typescript@5.5.3) + version: 4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5) astro-og-canvas: specifier: ^0.5.0 - version: 0.5.1(astro@4.13.3) + version: 0.5.0(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)) canvaskit-wasm: specifier: ^0.39.1 version: 0.39.1 sharp: specifier: ^0.33.3 - version: 0.33.4 + version: 0.33.3 starlight-links-validator: specifier: ^0.8.0 - version: 0.8.0(@astrojs/starlight@0.25.4)(astro@4.13.3) + version: 0.8.0(@astrojs/starlight@0.25.5(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)))(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)) starlight-openapi: specifier: ^0.6.3 - version: 0.6.4(@astrojs/markdown-remark@5.2.0)(@astrojs/starlight@0.25.4)(astro@4.13.3)(openapi-types@12.1.3) + version: 0.6.3(@astrojs/markdown-remark@5.2.0)(@astrojs/starlight@0.25.5(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)))(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5))(openapi-types@12.1.3) typescript: specifier: ^5.4.5 - version: 5.5.3 + version: 5.4.5 packages/eventindexer: {} @@ -214,104 +214,113 @@ importers: dependencies: '@wagmi/core': specifier: ^2.8.0 - version: 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + version: 2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8) axios: specifier: ^1.6.7 - version: 1.7.2(debug@4.3.5) + version: 1.6.7(debug@4.3.4) debug: specifier: ^4.3.4 - version: 4.3.5 + version: 4.3.4 svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.18) + version: 4.0.0(svelte@4.2.13) viem: specifier: ^2.9.29 - version: 2.16.5(typescript@5.5.3)(zod@3.23.8) + version: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) devDependencies: '@playwright/test': specifier: ^1.43.1 - version: 1.45.0 + version: 1.43.1 '@sveltejs/adapter-auto': specifier: ^3.2.0 - version: 3.2.2(@sveltejs/kit@2.5.24) + version: 3.2.0(@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2))) '@sveltejs/kit': specifier: ^2.5.21 - version: 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3) + version: 2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.1(svelte@4.2.18)(vite@4.5.3) + version: 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) '@tailwindcss/nesting': specifier: 0.0.0-insiders.565cd3e - version: 0.0.0-insiders.565cd3e(postcss@8.4.39) + version: 0.0.0-insiders.565cd3e(postcss@8.4.38) '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) + version: 7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) + version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) autoprefixer: specifier: ^10.4.18 - version: 10.4.19(postcss@8.4.39) + version: 10.4.18(postcss@8.4.38) daisyui: specifier: ^4.10.1 - version: 4.12.10(postcss@8.4.39) + version: 4.10.1(postcss@8.4.38) eslint: specifier: ^8.56.0 - version: 8.57.0 + version: 8.56.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@8.56.0) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.41.0(eslint@8.57.0)(svelte@4.2.18) + version: 2.38.0(eslint@8.56.0)(svelte@4.2.13)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) postcss: specifier: ^8.4.38 - version: 8.4.39 + version: 8.4.38 postcss-import: specifier: ^16.1.0 - version: 16.1.0(postcss@8.4.39) + version: 16.1.0(postcss@8.4.38) postcss-nesting: specifier: ^12.1.0 - version: 12.1.5(postcss@8.4.39) + version: 12.1.0(postcss@8.4.38) prettier: specifier: ^3.2.5 - version: 3.3.2 + version: 3.2.5 prettier-plugin-svelte: specifier: ^3.2.2 - version: 3.2.5(prettier@3.3.2)(svelte@4.2.18) + version: 3.2.2(prettier@3.2.5)(svelte@4.2.13) svelte: specifier: ^4.2.13 - version: 4.2.18 + version: 4.2.13 svelte-check: specifier: ^3.7.1 - version: 3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18) + version: 3.7.1(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13) tailwindcss: specifier: ^3.4.3 - version: 3.4.4 + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) tslib: specifier: ^2.6.2 - version: 2.6.3 + version: 2.6.2 typescript: specifier: ^5.4.3 - version: 5.5.3 + version: 5.4.3 vite: specifier: ^4.5.3 - version: 4.5.3 + version: 4.5.3(@types/node@20.12.7)(terser@5.27.2) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@4.5.3) + version: 4.3.2(typescript@5.4.3)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) vitest: specifier: ^1.5.0 - version: 1.6.0(jsdom@24.1.0) + version: 1.5.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2) + + packages/monitors: + devDependencies: + '@openzeppelin/defender-as-code': + specifier: ^3.0.1 + version: 3.0.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4(encoding@0.1.13))(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) + serverless: + specifier: 4.4.3 + version: 4.4.3 packages/nfts: dependencies: '@aws-sdk/client-s3': specifier: ^3.574.0 - version: 3.608.0 + version: 3.577.0 '@aws-sdk/lib-storage': specifier: ^3.574.0 - version: 3.608.0(@aws-sdk/client-s3@3.608.0) + version: 3.578.0(@aws-sdk/client-s3@3.577.0) '@openzeppelin/contracts': specifier: 5.0.2 version: 5.0.2 @@ -326,7 +335,7 @@ importers: version: link:../supplementary-contracts convert-csv-to-json: specifier: ^2.46.0 - version: 2.48.0 + version: 2.46.0 dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -335,10 +344,10 @@ importers: version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/8f24d6b04c92975e0795b5868aa0d783251cdeaa ipfs-http-client: specifier: ^60.0.1 - version: 60.0.1 + version: 60.0.1(encoding@0.1.13) merkletreejs: specifier: ^0.4.0 version: 0.4.0 @@ -350,7 +359,7 @@ importers: version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da sharp: specifier: ^0.33.3 - version: 0.33.4 + version: 0.33.3 solady: specifier: github:Vectorized/solady#v0.0.167 version: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d @@ -360,49 +369,49 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.14.9 + version: 20.12.7 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) + version: 7.9.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) + version: 7.9.0(eslint@8.56.0)(typescript@5.4.5) eslint: specifier: ^8.51.0 - version: 8.57.0 + version: 8.56.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@8.56.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0) + version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0))(eslint-plugin-n@16.6.2(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0) + version: 2.29.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.0) + version: 11.1.0(eslint@8.56.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2) + version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.56.0))(eslint@8.56.0)(prettier@3.2.5) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.4.0(eslint@8.57.0) + version: 6.1.1(eslint@8.56.0) ethers: specifier: ^5.7.2 - version: 5.7.2 + version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) solc: specifier: 0.8.24 version: 0.8.24 solhint: specifier: ^4.5.4 - version: 4.5.4(typescript@5.5.3) + version: 4.5.4(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.14.9)(typescript@5.5.3) + version: 10.9.2(@types/node@20.12.7)(typescript@5.4.5) typescript: specifier: ^5.2.2 - version: 5.5.3 + version: 5.4.5 packages/protocol: dependencies: @@ -439,49 +448,49 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.14.9 + version: 20.12.7 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) + version: 7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) + version: 7.7.0(eslint@8.55.0)(typescript@5.4.3) eslint: specifier: ^8.51.0 - version: 8.57.0 + version: 8.55.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@8.55.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0) + version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0))(eslint-plugin-n@16.6.2(eslint@8.55.0))(eslint-plugin-promise@6.1.1(eslint@8.55.0))(eslint@8.55.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0) + version: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.0) + version: 11.1.0(eslint@8.55.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2) + version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.55.0))(eslint@8.55.0)(prettier@3.2.5) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.4.0(eslint@8.57.0) + version: 6.1.1(eslint@8.55.0) ethers: specifier: ^5.7.2 - version: 5.7.2 + version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) solc: specifier: 0.8.24 version: 0.8.24 solhint: specifier: ^5.0.3 - version: 5.0.3(typescript@5.5.3) + version: 5.0.3(typescript@5.4.3) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.14.9)(typescript@5.5.3) + version: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) typescript: specifier: ^5.2.2 - version: 5.5.3 + version: 5.4.3 packages/relayer: {} @@ -492,65 +501,65 @@ importers: version: 1.0.6 '@wagmi/cli': specifier: ^2.1.8 - version: 2.1.13(typescript@5.5.3) + version: 2.1.15(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) '@wagmi/connectors': specifier: ^5.0.6 - version: 5.0.21(@wagmi/core@2.11.6)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + version: 5.1.10(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.13.5(@types/react@18.3.5)(react@18.2.0)(typescript@5.4.5)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.5)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) '@wagmi/core': specifier: ^2.10.4 - version: 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + version: 2.13.5(@types/react@18.3.5)(react@18.2.0)(typescript@5.4.5)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8)) '@web3modal/common': specifier: ^5.0.11 - version: 5.1.0 + version: 5.1.8 '@web3modal/ui': specifier: ^4.2.2 version: 4.2.3 '@web3modal/wagmi': specifier: ^4.2.2 - version: 4.2.3(@wagmi/connectors@5.0.21)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5) + version: 4.2.3(hoyagxhmve75vyxjsj4tjya6zm) '@zerodevx/svelte-toast': specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.18) + version: 0.9.5(svelte@4.2.17) autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.39) + version: 10.4.19(postcss@8.4.38) daisyui: specifier: ^4.10.1 - version: 4.12.10(postcss@8.4.39) + version: 4.11.1(postcss@8.4.38) dayjs: specifier: ^1.11.10 - version: 1.11.11 + version: 1.11.10 debug: specifier: ^4.3.4 - version: 4.3.5 + version: 4.3.4 minidenticons: specifier: ^4.2.1 version: 4.2.1 postcss: specifier: ^8.4.38 - version: 8.4.39 + version: 8.4.38 tailwindcss: specifier: ^3.4.3 - version: 3.4.4 + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) viem: specifier: ^2.13.1 - version: 2.16.5(typescript@5.5.3)(zod@3.23.8) + version: 2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 - version: 1.6.0(react@18.3.1) + version: 1.9.0(react@18.2.0) '@playwright/test': specifier: ^1.28.1 - version: 1.45.0 + version: 1.43.1 '@sveltejs/adapter-auto': specifier: ^3.0.0 - version: 3.2.2(@sveltejs/kit@2.5.24) + version: 3.2.0(@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))) '@sveltejs/kit': specifier: ^2.5.21 - version: 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) + version: 2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.1.1(svelte@4.2.18)(vite@5.3.2) + version: 3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) '@taiko/ui-lib': specifier: workspace:* version: link:../ui-lib @@ -562,79 +571,79 @@ importers: version: 29.5.12 '@types/node': specifier: ^20.12.7 - version: 20.14.9 + version: 20.12.7 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 - version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) + version: 7.9.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.0.0 - version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) + version: 7.9.0(eslint@8.56.0)(typescript@5.4.5) convert-csv-to-json: specifier: ^2.44.0 - version: 2.48.0 + version: 2.46.0 dotenv: specifier: ^16.4.5 version: 16.4.5 eslint: specifier: ^8.56.0 - version: 8.57.0 + version: 8.56.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@8.56.0) eslint-plugin-simple-import-sort: specifier: ^12.0.0 - version: 12.1.0(eslint@8.57.0) + version: 12.0.0(eslint@8.56.0) eslint-plugin-storybook: specifier: ^0.8.0 - version: 0.8.0(eslint@8.57.0)(typescript@5.5.3) + version: 0.8.0(eslint@8.56.0)(typescript@5.4.5) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.41.0(eslint@8.57.0)(svelte@4.2.18) + version: 2.38.0(eslint@8.56.0)(svelte@4.2.17)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) p-map: specifier: ^7.0.2 version: 7.0.2 prettier: specifier: ^3.1.1 - version: 3.3.2 + version: 3.2.5 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.2.5(prettier@3.3.2)(svelte@4.2.18) + version: 3.2.3(prettier@3.2.5)(svelte@4.2.17) raw-body: specifier: ^2.5.2 version: 2.5.2 svelte: specifier: ^4.2.7 - version: 4.2.18 + version: 4.2.17 svelte-check: specifier: ^3.7.1 - version: 3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18) + version: 3.7.1(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.38)(svelte@4.2.17) svelte-copy: specifier: ^1.4.2 - version: 1.4.2(svelte@4.2.18) + version: 1.4.2(svelte@4.2.17) svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.18) + version: 4.0.0(svelte@4.2.17) svelte-scrolling: specifier: ^1.4.0 - version: 1.4.0(svelte@4.2.18) + version: 1.4.0(svelte@4.2.17) tailwindcss-image-rendering: specifier: ^1.0.2 version: 1.0.2 tslib: specifier: ^2.4.1 - version: 2.6.3 + version: 2.6.2 typescript: specifier: ^5.0.0 - version: 5.5.3 + version: 5.4.5 vite: specifier: ^5.0.3 - version: 5.3.2(@types/node@20.14.9) + version: 5.2.11(@types/node@20.12.7)(terser@5.27.2) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.2) + version: 4.3.2(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) vitest: specifier: ^1.2.0 - version: 1.6.0(@types/node@20.14.9) + version: 1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2) which: specifier: ^4.0.0 version: 4.0.0 @@ -665,49 +674,49 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.14.9 + version: 20.12.7 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) + version: 7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) + version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) eslint: specifier: ^8.51.0 - version: 8.57.0 + version: 8.56.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@8.56.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0) + version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@16.6.2(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0) + version: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@8.57.0) + version: 11.1.0(eslint@8.56.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2) + version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.56.0))(eslint@8.56.0)(prettier@3.2.5) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.4.0(eslint@8.57.0) + version: 6.1.1(eslint@8.56.0) ethers: specifier: ^5.7.2 - version: 5.7.2 + version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) solc: specifier: 0.8.24 version: 0.8.24 solhint: specifier: ^4.5.4 - version: 4.5.4(typescript@5.5.3) + version: 4.5.4(typescript@5.4.3) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.14.9)(typescript@5.5.3) + version: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) typescript: specifier: ^5.2.2 - version: 5.5.3 + version: 5.4.3 packages/taiko-client: {} @@ -721,65 +730,65 @@ importers: version: link:../ui-lib '@wagmi/cli': specifier: ^2.1.4 - version: 2.1.13(typescript@5.5.3) + version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10) '@wagmi/connectors': specifier: ^4.1.18 - version: 4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + version: 4.1.18(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) '@wagmi/core': specifier: ^2.8.0 - version: 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) + version: 2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) '@web3modal/common': specifier: ^5.0.11 - version: 5.1.0 + version: 5.1.8 '@web3modal/ui': specifier: ^4.1.1 - version: 4.2.3 + version: 4.1.11 '@web3modal/wagmi': specifier: ^4.1.1 - version: 4.2.3(@wagmi/connectors@4.3.10)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5) + version: 4.1.11(xgqwdfny5esqdjztzawvofqbai) '@zerodevx/svelte-toast': specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.18) + version: 0.9.5(svelte@4.2.13) autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.39) + version: 10.4.19(postcss@8.4.38) daisyui: specifier: ^4.10.1 - version: 4.12.10(postcss@8.4.39) + version: 4.10.1(postcss@8.4.38) dayjs: specifier: ^1.11.10 - version: 1.11.11 + version: 1.11.10 debug: specifier: ^4.3.4 - version: 4.3.5 + version: 4.3.4 minidenticons: specifier: ^4.2.1 version: 4.2.1 postcss: specifier: ^8.4.38 - version: 8.4.39 + version: 8.4.38 tailwindcss: specifier: ^3.4.3 - version: 3.4.4 + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) viem: specifier: ^2.15.1 - version: 2.16.5(typescript@5.5.3)(zod@3.23.8) + version: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 - version: 1.6.0(react@18.3.1) + version: 1.3.3(react@18.2.0) '@playwright/test': specifier: ^1.28.1 - version: 1.45.0 + version: 1.43.1 '@sveltejs/adapter-auto': specifier: ^3.0.0 - version: 3.2.2(@sveltejs/kit@2.5.24) + version: 3.2.0(@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2))) '@sveltejs/kit': specifier: ^2.5.21 - version: 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) + version: 2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.1(svelte@4.2.18)(vite@5.3.2) + version: 3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)) '@types/eslint': specifier: ^8.56.0 version: 8.56.10 @@ -788,79 +797,79 @@ importers: version: 29.5.12 '@types/node': specifier: ^20.12.7 - version: 20.14.9 + version: 20.12.7 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 - version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) + version: 7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.0.0 - version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) + version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) convert-csv-to-json: specifier: ^2.44.0 - version: 2.48.0 + version: 2.46.0 dotenv: specifier: ^16.4.5 version: 16.4.5 eslint: specifier: ^8.56.0 - version: 8.57.0 + version: 8.56.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@8.56.0) eslint-plugin-simple-import-sort: specifier: ^12.0.0 - version: 12.1.0(eslint@8.57.0) + version: 12.0.0(eslint@8.56.0) eslint-plugin-storybook: specifier: ^0.8.0 - version: 0.8.0(eslint@8.57.0)(typescript@5.5.3) + version: 0.8.0(eslint@8.56.0)(typescript@5.4.3) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.41.0(eslint@8.57.0)(svelte@4.2.18) + version: 2.38.0(eslint@8.56.0)(svelte@4.2.13)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) p-map: specifier: ^7.0.2 version: 7.0.2 prettier: specifier: ^3.1.1 - version: 3.3.2 + version: 3.2.5 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.2.5(prettier@3.3.2)(svelte@4.2.18) + version: 3.2.2(prettier@3.2.5)(svelte@4.2.13) raw-body: specifier: ^2.5.2 version: 2.5.2 svelte: specifier: ^4.2.7 - version: 4.2.18 + version: 4.2.13 svelte-check: specifier: ^3.7.1 - version: 3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18) + version: 3.7.1(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13) svelte-copy: specifier: ^1.4.2 - version: 1.4.2(svelte@4.2.18) + version: 1.4.2(svelte@4.2.13) svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.18) + version: 4.0.0(svelte@4.2.13) svelte-scrolling: specifier: ^1.4.0 - version: 1.4.0(svelte@4.2.18) + version: 1.4.0(svelte@4.2.13) tailwindcss-image-rendering: specifier: ^1.0.2 version: 1.0.2 tslib: specifier: ^2.4.1 - version: 2.6.3 + version: 2.6.2 typescript: specifier: ^5.0.0 - version: 5.5.3 + version: 5.4.3 vite: specifier: ^5.0.3 - version: 5.3.2(@types/node@20.14.9) + version: 5.1.3(@types/node@20.12.7)(terser@5.27.2) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.3)(vite@5.3.2) + version: 4.3.2(typescript@5.4.3)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)) vitest: specifier: ^1.2.0 - version: 1.6.0(@types/node@20.14.9) + version: 1.5.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2) which: specifier: ^4.0.0 version: 4.0.0 @@ -869,125 +878,132 @@ importers: dependencies: daisyui: specifier: ^4.11.1 - version: 4.12.10(postcss@8.4.41) + version: 4.11.1(postcss@8.4.47) tailwindcss-image-rendering: specifier: ^1.0.2 version: 1.0.2 devDependencies: '@chromatic-com/storybook': specifier: ^1.3.4 - version: 1.6.0(react@18.3.1) + version: 1.9.0(react@18.2.0) '@playwright/test': specifier: ^1.28.1 - version: 1.45.0 + version: 1.43.1 '@storybook/addon-essentials': specifier: ^8.0.10 - version: 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) + version: 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) '@storybook/addon-interactions': specifier: ^8.0.10 - version: 8.1.11(vitest@1.6.0) + version: 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) '@storybook/addon-links': specifier: ^8.0.10 - version: 8.1.11(react@18.3.1) + version: 8.3.0(react@18.2.0)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) '@storybook/addon-themes': specifier: ^8.1.1 - version: 8.1.11 + version: 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) '@storybook/blocks': specifier: ^8.0.10 - version: 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) + version: 8.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) '@storybook/svelte': specifier: ^8.0.10 - version: 8.1.11(prettier@3.3.2)(svelte@4.2.18) + version: 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(svelte@4.2.17) '@storybook/sveltekit': specifier: ^8.0.10 - version: 8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2) + version: 8.3.0(@babel/core@7.25.2)(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.47)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(svelte@4.2.17)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) '@storybook/test': specifier: ^8.0.10 - version: 8.1.11(vitest@1.6.0) + version: 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) '@sveltejs/adapter-auto': specifier: ^3.0.0 - version: 3.2.2(@sveltejs/kit@2.5.24) + version: 3.2.0(@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))) '@sveltejs/kit': specifier: ^2.5.21 - version: 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) + version: 2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) '@sveltejs/package': specifier: ^2.0.0 - version: 2.3.2(svelte@4.2.18)(typescript@5.5.3) + version: 2.3.5(svelte@4.2.17)(typescript@5.4.5) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.1.1(svelte@4.2.18)(vite@5.3.2) + version: 3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) '@types/eslint': specifier: ^8.56.0 version: 8.56.10 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 - version: 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) + version: 7.9.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.0.0 - version: 7.15.0(eslint@8.57.0)(typescript@5.5.3) + version: 7.9.0(eslint@8.56.0)(typescript@5.4.5) autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.41) + version: 10.4.19(postcss@8.4.47) eslint: specifier: ^8.56.0 - version: 8.57.0 + version: 8.56.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@8.56.0) eslint-plugin-storybook: specifier: ^0.8.0 - version: 0.8.0(eslint@8.57.0)(typescript@5.5.3) + version: 0.8.0(eslint@8.56.0)(typescript@5.4.5) eslint-plugin-svelte: specifier: ^2.35.1 - version: 2.41.0(eslint@8.57.0)(svelte@4.2.18) + version: 2.38.0(eslint@8.56.0)(svelte@4.2.17)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) prettier: specifier: ^3.1.1 - version: 3.3.2 + version: 3.2.5 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.2.5(prettier@3.3.2)(svelte@4.2.18) + version: 3.2.3(prettier@3.2.5)(svelte@4.2.17) publint: specifier: ^0.1.9 version: 0.1.16 storybook: specifier: ^8.0.10 - version: 8.1.11(react-dom@18.3.1)(react@18.3.1) + version: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) svelte: specifier: ^4.2.7 - version: 4.2.18 + version: 4.2.17 svelte-check: specifier: ^3.6.0 - version: 3.8.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18) + version: 3.7.1(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.47)(svelte@4.2.17) tailwindcss: specifier: ^3.4.3 - version: 3.4.4 + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) tslib: specifier: ^2.4.1 - version: 2.6.3 + version: 2.6.2 typescript: specifier: ^5.0.0 - version: 5.5.3 + version: 5.4.5 vite: specifier: ^5.0.11 - version: 5.3.2(@types/node@20.14.9) + version: 5.2.11(@types/node@20.12.7)(terser@5.27.2) vitest: specifier: ^1.2.0 - version: 1.6.0(jsdom@24.1.0) + version: 1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2) packages: + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + '@adobe/css-tools@4.4.0': resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} '@adraffy/ens-normalize@1.10.0': resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + '@ampproject/remapping@2.2.1': + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} '@apidevtools/openapi-schemas@2.1.0': @@ -1003,14 +1019,14 @@ packages: peerDependencies: typescript: ^5.0.0 - '@astrojs/compiler@2.10.2': - resolution: {integrity: sha512-bvH+v8AirwpRWCkYJEyWYdc5Cs/BjG2ZTxIJzttHilXgfKJAdW2496KsUQKzf5j2tOHtaHXKKn9hb9WZiBGpEg==} + '@astrojs/compiler@2.10.3': + resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==} '@astrojs/internal-helpers@0.4.1': resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} - '@astrojs/language-server@2.13.2': - resolution: {integrity: sha512-l435EZLKjaUO/6iewJ7xqd3eHf3zAosVWG4woILbxluQcianBoNPepnnqAg7uUriZUaC44ae5v0Q+AfB8UI64g==} + '@astrojs/language-server@2.14.2': + resolution: {integrity: sha512-daUJ/+/2pPF3eGG4tVdXKyw0tabUDrJKwLzU8VTuNhEHIn3VZAIES6VT3+mX0lmKcMiKM8/bjZdfY+fPfmnsMA==} hasBin: true peerDependencies: prettier: ^3.0.0 @@ -1024,8 +1040,8 @@ packages: '@astrojs/markdown-remark@5.2.0': resolution: {integrity: sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==} - '@astrojs/mdx@3.1.3': - resolution: {integrity: sha512-hOM4dMM4RfJI254d3p/AnOZuk2VyKszRtuY5FBm+Xc4XdhIpGrR56OXMNEcWchtwz4HQyPe/eJSgvBjSROcQIQ==} + '@astrojs/mdx@3.1.6': + resolution: {integrity: sha512-YCEIvNgoQG3oVhe9codH4TX6zjvkl7KGla19yZO5RCnvjv2d9zyrfWqJ98I6/m18PbEY3k8Wjvha0IIf5eZ2sQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} peerDependencies: astro: ^4.8.0 @@ -1037,8 +1053,8 @@ packages: '@astrojs/sitemap@3.1.6': resolution: {integrity: sha512-1Qp2NvAzVImqA6y+LubKi1DVhve/hXXgFvB0szxiipzh7BvtuKe4oJJ9dXSqaubaTkt4nMa6dv6RCCAYeB6xaQ==} - '@astrojs/starlight@0.25.4': - resolution: {integrity: sha512-TRPgRsd5opi2tCXvh8rWizpLsJsRRXbYecULG5b/1x4BFyp40ZJVB77cLMjTj3lHwqWs0Sybtq5OBpOy6fuIEQ==} + '@astrojs/starlight@0.25.5': + resolution: {integrity: sha512-JQsfoqRUX/HBpOW8LWPdiIxcfXZ5HOvi4Dz4Ez61U99hDyX3Ix2Q+pmsek1sH5R1MHWx/wlki2VPEqidtKXyiQ==} peerDependencies: astro: ^4.8.6 @@ -1046,172 +1062,176 @@ packages: resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} - '@aw-web-design/x-default-browser@1.4.126': - resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} - hasBin: true + '@astrojs/yaml2ts@0.2.1': + resolution: {integrity: sha512-CBaNwDQJz20E5WxzQh4thLVfhB3JEEGz72wRA+oJp6fQR37QLAqXZJU0mHC+yqMOQ6oj0GfRPJrz6hjf+zm6zA==} - '@aws-crypto/crc32@5.2.0': - resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} - engines: {node: '>=16.0.0'} + '@aws-crypto/crc32@3.0.0': + resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} - '@aws-crypto/crc32c@5.2.0': - resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + '@aws-crypto/crc32c@3.0.0': + resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} - '@aws-crypto/sha1-browser@5.2.0': - resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + '@aws-crypto/ie11-detection@3.0.0': + resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} - '@aws-crypto/sha256-browser@5.2.0': - resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + '@aws-crypto/sha1-browser@3.0.0': + resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} - '@aws-crypto/sha256-js@5.2.0': - resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} - engines: {node: '>=16.0.0'} + '@aws-crypto/sha256-browser@3.0.0': + resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + + '@aws-crypto/sha256-js@1.2.2': + resolution: {integrity: sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==} + + '@aws-crypto/sha256-js@3.0.0': + resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + + '@aws-crypto/supports-web-crypto@3.0.0': + resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} - '@aws-crypto/supports-web-crypto@5.2.0': - resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + '@aws-crypto/util@1.2.2': + resolution: {integrity: sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==} - '@aws-crypto/util@5.2.0': - resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + '@aws-crypto/util@3.0.0': + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - '@aws-sdk/client-s3@3.608.0': - resolution: {integrity: sha512-la2R6QfUOmE4JMubxLD3OdnPTduAs5YekIvx68I5CbLudb5pbxkHDqnrWDhgK1lX4Cu19pXjgQXmS8oZMJPeLQ==} + '@aws-sdk/client-s3@3.577.0': + resolution: {integrity: sha512-mQYXwn6E4Rwggn6teF6EIWJtK8jsKcxnPj2QVETkSmD8QaFLm4g/DgLPdamDE97UI8k1k0cmWqXcTOLIaZ7wQg==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso-oidc@3.606.0': - resolution: {integrity: sha512-gL1FHPS6hwgMNS/A+Qh5bUyHOeRVOqdb7c6+i+9gR3wtGvt2lvoSm8w5DhS08Xiiacz2AqYRDEapp0xuyCrbBQ==} + '@aws-sdk/client-sso-oidc@3.577.0': + resolution: {integrity: sha512-njmKSPDWueWWYVFpFcZ2P3fI6/pdQVDa0FgCyYZhOnJLgEHZIcBBg1AsnkVWacBuLopp9XVt2m+7hO6ugY1/1g==} engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.606.0 - '@aws-sdk/client-sso@3.598.0': - resolution: {integrity: sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==} + '@aws-sdk/client-sso@3.577.0': + resolution: {integrity: sha512-BwujdXrydlk6UEyPmewm5GqG4nkQ6OVyRhS/SyZP/6UKSFv2/sf391Cmz0hN0itUTH1rR4XeLln8XCOtarkrzg==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sts@3.606.0': - resolution: {integrity: sha512-b11mAhjrkm3MMiAPoMGcmd6vsaz2120lg8rHG/NZCo9vB1K6Kc7WP+a1Q05TRMseer2egTtpWJfn44aVO97VqA==} + '@aws-sdk/client-sts@3.577.0': + resolution: {integrity: sha512-509Kklimva1XVlhGbpTpeX3kOP6ORpm44twJxDHpa9TURbmoaxj7veWlnLCbDorxDTrbsDghvYZshvcLsojVpg==} engines: {node: '>=16.0.0'} - '@aws-sdk/core@3.598.0': - resolution: {integrity: sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==} + '@aws-sdk/core@3.576.0': + resolution: {integrity: sha512-KDvDlbeipSTIf+ffKtTg1m419TK7s9mZSWC8bvuZ9qx6/sjQFOXIKOVqyuli6DnfxGbvRcwoRuY99OcCH1N/0w==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-env@3.598.0': - resolution: {integrity: sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==} + '@aws-sdk/credential-provider-env@3.577.0': + resolution: {integrity: sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-http@3.598.0': - resolution: {integrity: sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==} + '@aws-sdk/credential-provider-http@3.577.0': + resolution: {integrity: sha512-n++yhCp67b9+ZRGEdY1jhamB5E/O+QsIDOPSuRmdaSGMCOd82oUEKPgIVEU1bkqxDsBxgiEWuvtfhK6sNiDS0A==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-ini@3.598.0': - resolution: {integrity: sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==} + '@aws-sdk/credential-provider-ini@3.577.0': + resolution: {integrity: sha512-q7lHPtv6BjRvChUE3m0tIaEZKxPTaZ1B3lKxGYsFl3VLAu5N8yGCUKwuA1izf4ucT+LyKscVGqK6VDZx1ev3nw==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.598.0 + '@aws-sdk/client-sts': ^3.577.0 - '@aws-sdk/credential-provider-node@3.600.0': - resolution: {integrity: sha512-1pC7MPMYD45J7yFjA90SxpR0yaSvy+yZiq23aXhAPZLYgJBAxHLu0s0mDCk/piWGPh8+UGur5K0bVdx4B1D5hw==} + '@aws-sdk/credential-provider-node@3.577.0': + resolution: {integrity: sha512-epZ1HOMsrXBNczc0HQpv0VMjqAEpc09DUA7Rg3gUJfn8umhML7A7bXnUyqPA+S54q397UYg1leQKdSn23OiwQQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-process@3.598.0': - resolution: {integrity: sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==} + '@aws-sdk/credential-provider-process@3.577.0': + resolution: {integrity: sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-sso@3.598.0': - resolution: {integrity: sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==} + '@aws-sdk/credential-provider-sso@3.577.0': + resolution: {integrity: sha512-iVm5SQvS7EgZTJsRaqUOmDQpBQPPPat42SCbWFvFQOLrl8qewq8OP94hFS5w2mP62zngeYzqhJnDel79HXbxew==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-web-identity@3.598.0': - resolution: {integrity: sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==} + '@aws-sdk/credential-provider-web-identity@3.577.0': + resolution: {integrity: sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.598.0 + '@aws-sdk/client-sts': ^3.577.0 - '@aws-sdk/lib-storage@3.608.0': - resolution: {integrity: sha512-A6RXgkXYf+eY2POxi382nhMdo7x7QpVfgeehvOqpK5c7LgXjwsPTfjSPqLV1fIZuPLn3NG6uNd12Gs6x/466tQ==} + '@aws-sdk/lib-storage@3.578.0': + resolution: {integrity: sha512-SluLJrA/fG82UnE83Albh+gv48McmXkz17kmAMhhNswOxqHsklb5Vu5d/G0DUDAQdeC30sS/9Vhu2zAiJokunw==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-s3': ^3.608.0 + '@aws-sdk/client-s3': ^3.577.0 - '@aws-sdk/middleware-bucket-endpoint@3.598.0': - resolution: {integrity: sha512-PM7BcFfGUSkmkT6+LU9TyJiB4S8yI7dfuKQDwK5ZR3P7MKaK4Uj4yyDiv0oe5xvkF6+O2+rShj+eh8YuWkOZ/Q==} + '@aws-sdk/middleware-bucket-endpoint@3.577.0': + resolution: {integrity: sha512-twlkNX2VofM6kHXzDEiJOiYCc9tVABe5cbyxMArRWscIsCWG9mamPhC77ezG4XsN9dFEwVdxEYD5Crpm/5EUiw==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-expect-continue@3.598.0': - resolution: {integrity: sha512-ZuHW18kaeHR8TQyhEOYMr8VwiIh0bMvF7J1OTqXHxDteQIavJWA3CbfZ9sgS4XGtrBZDyHJhjZKeCfLhN2rq3w==} + '@aws-sdk/middleware-expect-continue@3.577.0': + resolution: {integrity: sha512-6dPp8Tv4F0of4un5IAyG6q++GrRrNQQ4P2NAMB1W0VO4JoEu1C8GievbbDLi88TFIFmtKpnHB0ODCzwnoe8JsA==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.598.0': - resolution: {integrity: sha512-xukAzds0GQXvMEY9G6qt+CzwVzTx8NyKKh04O2Q+nOch6QQ8Rs+2kTRy3Z4wQmXq2pK9hlOWb5nXA7HWpmz6Ng==} + '@aws-sdk/middleware-flexible-checksums@3.577.0': + resolution: {integrity: sha512-IHAUEipIfagjw92LV8SOSBiCF7ZnqfHcw14IkcZW2/mfrCy1Fh/k40MoS/t3Tro2tQ91rgQPwUoSgB/QCi2Org==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-host-header@3.598.0': - resolution: {integrity: sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==} + '@aws-sdk/middleware-host-header@3.577.0': + resolution: {integrity: sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-location-constraint@3.598.0': - resolution: {integrity: sha512-8oybQxN3F1ISOMULk7JKJz5DuAm5hCUcxMW9noWShbxTJuStNvuHf/WLUzXrf8oSITyYzIHPtf8VPlKR7I3orQ==} + '@aws-sdk/middleware-location-constraint@3.577.0': + resolution: {integrity: sha512-DKPTD2D2s+t2QUo/IXYtVa/6Un8GZ+phSTBkyBNx2kfZz4Kwavhl/JJzSqTV3GfCXkVdFu7CrjoX7BZ6qWeTUA==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-logger@3.598.0': - resolution: {integrity: sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==} + '@aws-sdk/middleware-logger@3.577.0': + resolution: {integrity: sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-recursion-detection@3.598.0': - resolution: {integrity: sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==} + '@aws-sdk/middleware-recursion-detection@3.577.0': + resolution: {integrity: sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-sdk-s3@3.598.0': - resolution: {integrity: sha512-5AGtLAh9wyK6ANPYfaKTqJY1IFJyePIxsEbxa7zS6REheAqyVmgJFaGu3oQ5XlxfGr5Uq59tFTRkyx26G1HkHA==} + '@aws-sdk/middleware-sdk-s3@3.577.0': + resolution: {integrity: sha512-/t8Shvy6lGIRdTEKG6hA8xy+oon/CDF5H8Ksms/cd/uvIy/MYbNjOJ/Arwk8H5W6LB4DP/1O+tOzOpGx1MCufA==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-signing@3.598.0': - resolution: {integrity: sha512-XKb05DYx/aBPqz6iCapsCbIl8aD8EihTuPCs51p75QsVfbQoVr4TlFfIl5AooMSITzojdAQqxt021YtvxjtxIQ==} + '@aws-sdk/middleware-signing@3.577.0': + resolution: {integrity: sha512-QS/dh3+NqZbXtY0j/DZ867ogP413pG5cFGqBy9OeOhDMsolcwLrQbi0S0c621dc1QNq+er9ffaMhZ/aPkyXXIg==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-ssec@3.598.0': - resolution: {integrity: sha512-f0p2xP8IC1uJ5e/tND1l81QxRtRFywEdnbtKCE0H6RSn4UIt2W3Dohe1qQDbnh27okF0PkNW6BJGdSAz3p7qbA==} + '@aws-sdk/middleware-ssec@3.577.0': + resolution: {integrity: sha512-i2BPJR+rp8xmRVIGc0h1kDRFcM2J9GnClqqpc+NLSjmYadlcg4mPklisz9HzwFVcRPJ5XcGf3U4BYs5G8+iTyg==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-user-agent@3.598.0': - resolution: {integrity: sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==} + '@aws-sdk/middleware-user-agent@3.577.0': + resolution: {integrity: sha512-P55HAXgwmiHHpFx5JEPvOnAbfhN7v6sWv9PBQs+z2tC7QiBcPS0cdJR6PfV7J1n4VPK52/OnrK3l9VxdQ7Ms0g==} engines: {node: '>=16.0.0'} - '@aws-sdk/region-config-resolver@3.598.0': - resolution: {integrity: sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==} + '@aws-sdk/region-config-resolver@3.577.0': + resolution: {integrity: sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==} engines: {node: '>=16.0.0'} - '@aws-sdk/signature-v4-multi-region@3.598.0': - resolution: {integrity: sha512-1r/EyTrO1gSa1FirnR8V7mabr7gk+l+HkyTI0fcTSr8ucB7gmYyW6WjkY8JCz13VYHFK62usCEDS7yoJoJOzTA==} + '@aws-sdk/signature-v4-multi-region@3.577.0': + resolution: {integrity: sha512-mMykGRFBYmlDcMhdbhNM0z1JFUaYYZ8r9WV7Dd0T2PWELv2brSAjDAOBHdJLHObDMYRnM6H0/Y974qTl3icEcQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/token-providers@3.598.0': - resolution: {integrity: sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==} + '@aws-sdk/token-providers@3.577.0': + resolution: {integrity: sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.598.0 + '@aws-sdk/client-sso-oidc': ^3.577.0 - '@aws-sdk/types@3.598.0': - resolution: {integrity: sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==} + '@aws-sdk/types@3.577.0': + resolution: {integrity: sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==} engines: {node: '>=16.0.0'} '@aws-sdk/util-arn-parser@3.568.0': resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-endpoints@3.598.0': - resolution: {integrity: sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==} + '@aws-sdk/util-endpoints@3.577.0': + resolution: {integrity: sha512-FjuUz1Kdy4Zly2q/c58tpdqHd6z7iOdU/caYzoc8jwgAHBDBbIJNQLCU9hXJnPV2M8pWxQDyIZsoVwtmvErPzw==} engines: {node: '>=16.0.0'} '@aws-sdk/util-locate-window@3.568.0': resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-user-agent-browser@3.598.0': - resolution: {integrity: sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==} + '@aws-sdk/util-user-agent-browser@3.577.0': + resolution: {integrity: sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==} - '@aws-sdk/util-user-agent-node@3.598.0': - resolution: {integrity: sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==} + '@aws-sdk/util-user-agent-node@3.577.0': + resolution: {integrity: sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==} engines: {node: '>=16.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -1219,96 +1239,89 @@ packages: aws-crt: optional: true - '@aws-sdk/xml-builder@3.598.0': - resolution: {integrity: sha512-ZIa2RK7CHFTZ4gwK77WRtsZ6vF7xwRXxJ8KQIxK2duhoTVcn0xYxpFLdW9WZZZvdP9GIF3Loqvf8DRdeU5Jc7Q==} + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + + '@aws-sdk/xml-builder@3.575.0': + resolution: {integrity: sha512-cWgAwmbFYNCFzPwxL705+lWps0F3ZvOckufd2KKoEZUmtpVw9/txUXNrPySUXSmRTSRhoatIMABNfStWR043bQ==} engines: {node: '>=16.0.0'} - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + '@babel/code-frame@7.23.5': + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.7': - resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} + '@babel/code-frame@7.24.2': + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.7': - resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} engines: {node: '>=6.9.0'} '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.7': - resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.25.0': - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': - resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.24.7': - resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.25.2': resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.7': - resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} + '@babel/helper-create-class-features-plugin@7.23.10': + resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.24.7': - resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} + '@babel/helper-create-regexp-features-plugin@7.22.15': + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-define-polyfill-provider@0.6.2': - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + '@babel/helper-define-polyfill-provider@0.5.0': + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.24.7': - resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + '@babel/helper-function-name@7.23.0': + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.24.7': - resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + '@babel/helper-hoist-variables@7.22.5': + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.24.7': - resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} + '@babel/helper-member-expression-to-functions@7.23.0': + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + '@babel/helper-module-imports@7.22.15': + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.24.7': - resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 '@babel/helper-module-transforms@7.25.2': resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} @@ -1316,26 +1329,22 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.24.7': - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.24.7': - resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} + '@babel/helper-optimise-call-expression@7.22.5': + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.24.8': resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.24.7': - resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} + '@babel/helper-remap-async-to-generator@7.22.20': + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.24.7': - resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} + '@babel/helper-replace-supers@7.22.20': + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1344,80 +1353,87 @@ packages: resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.24.7': - resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + '@babel/helper-split-export-declaration@7.24.5': + resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.7': - resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} + '@babel/helper-string-parser@7.23.4': + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.7': - resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} + '@babel/helper-validator-identifier@7.24.5': + resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.24.7': - resolution: {integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==} + '@babel/helper-wrap-function@7.22.20': + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.7': - resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} + '@babel/helpers@7.25.6': + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.0': - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + '@babel/highlight@7.23.4': + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.5': + resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} engines: {node: '>=6.9.0'} '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.24.7': - resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + '@babel/parser@7.23.9': + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.25.3': - resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + '@babel/parser@7.24.5': + resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7': - resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} + hasBin: true - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7': - resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3': + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': - resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3': + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7': - resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7': + resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1436,16 +1452,9 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-export-default-from@7.24.7': - resolution: {integrity: sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-logical-assignment-operators@7.20.7': - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} + '@babel/plugin-proposal-export-default-from@7.23.3': + resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -1511,8 +1520,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-export-default-from@7.24.7': - resolution: {integrity: sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==} + '@babel/plugin-syntax-export-default-from@7.23.3': + resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1522,20 +1531,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-flow@7.24.7': - resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} + '@babel/plugin-syntax-flow@7.23.3': + resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.24.7': - resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + '@babel/plugin-syntax-import-assertions@7.23.3': + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.24.7': - resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + '@babel/plugin-syntax-import-attributes@7.23.3': + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1598,8 +1607,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.24.7': - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + '@babel/plugin-syntax-typescript@7.23.3': + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1610,248 +1619,248 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.24.7': - resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + '@babel/plugin-transform-arrow-functions@7.23.3': + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.24.7': - resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==} + '@babel/plugin-transform-async-generator-functions@7.23.9': + resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.24.7': - resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} + '@babel/plugin-transform-async-to-generator@7.23.3': + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.24.7': - resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} + '@babel/plugin-transform-block-scoped-functions@7.23.3': + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.24.7': - resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} + '@babel/plugin-transform-block-scoping@7.23.4': + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.24.7': - resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} + '@babel/plugin-transform-class-properties@7.23.3': + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.24.7': - resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} + '@babel/plugin-transform-class-static-block@7.23.4': + resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.24.7': - resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==} + '@babel/plugin-transform-classes@7.23.8': + resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.24.7': - resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} + '@babel/plugin-transform-computed-properties@7.23.3': + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.24.7': - resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==} + '@babel/plugin-transform-destructuring@7.23.3': + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.24.7': - resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} + '@babel/plugin-transform-dotall-regex@7.23.3': + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.24.7': - resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} + '@babel/plugin-transform-duplicate-keys@7.23.3': + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dynamic-import@7.24.7': - resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} + '@babel/plugin-transform-dynamic-import@7.23.4': + resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.24.7': - resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} + '@babel/plugin-transform-exponentiation-operator@7.23.3': + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.24.7': - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + '@babel/plugin-transform-export-namespace-from@7.23.4': + resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-flow-strip-types@7.24.7': - resolution: {integrity: sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==} + '@babel/plugin-transform-flow-strip-types@7.23.3': + resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.24.7': - resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} + '@babel/plugin-transform-for-of@7.23.6': + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.24.7': - resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} + '@babel/plugin-transform-function-name@7.23.3': + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.24.7': - resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + '@babel/plugin-transform-json-strings@7.23.4': + resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.24.7': - resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} + '@babel/plugin-transform-literals@7.23.3': + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.24.7': - resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} + '@babel/plugin-transform-logical-assignment-operators@7.23.4': + resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.24.7': - resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} + '@babel/plugin-transform-member-expression-literals@7.23.3': + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.24.7': - resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} + '@babel/plugin-transform-modules-amd@7.23.3': + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.24.7': - resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} + '@babel/plugin-transform-modules-commonjs@7.23.3': + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.24.7': - resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} + '@babel/plugin-transform-modules-systemjs@7.23.9': + resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.24.7': - resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + '@babel/plugin-transform-modules-umd@7.23.3': + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': - resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.24.7': - resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + '@babel/plugin-transform-new-target@7.23.3': + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': - resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + '@babel/plugin-transform-nullish-coalescing-operator@7.23.4': + resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.24.7': - resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + '@babel/plugin-transform-numeric-separator@7.23.4': + resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.24.7': - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + '@babel/plugin-transform-object-rest-spread@7.23.4': + resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.24.7': - resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + '@babel/plugin-transform-object-super@7.23.3': + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.24.7': - resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + '@babel/plugin-transform-optional-catch-binding@7.23.4': + resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.24.7': - resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==} + '@babel/plugin-transform-optional-chaining@7.23.4': + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.24.7': - resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + '@babel/plugin-transform-parameters@7.23.3': + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.24.7': - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + '@babel/plugin-transform-private-methods@7.23.3': + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.24.7': - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + '@babel/plugin-transform-private-property-in-object@7.23.4': + resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.24.7': - resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + '@babel/plugin-transform-property-literals@7.23.3': + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.24.7': - resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} + '@babel/plugin-transform-react-display-name@7.23.3': + resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-self@7.24.7': - resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + '@babel/plugin-transform-react-jsx-self@7.23.3': + resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-source@7.24.7': - resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + '@babel/plugin-transform-react-jsx-source@7.23.3': + resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1862,92 +1871,92 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.24.7': - resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + '@babel/plugin-transform-regenerator@7.23.3': + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-reserved-words@7.24.7': - resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} + '@babel/plugin-transform-reserved-words@7.23.3': + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.24.7': - resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==} + '@babel/plugin-transform-runtime@7.23.9': + resolution: {integrity: sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.24.7': - resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} + '@babel/plugin-transform-shorthand-properties@7.23.3': + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.24.7': - resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} + '@babel/plugin-transform-spread@7.23.3': + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.24.7': - resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} + '@babel/plugin-transform-sticky-regex@7.23.3': + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-template-literals@7.24.7': - resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} + '@babel/plugin-transform-template-literals@7.23.3': + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.24.7': - resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==} + '@babel/plugin-transform-typeof-symbol@7.23.3': + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.24.7': - resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} + '@babel/plugin-transform-typescript@7.23.6': + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-escapes@7.24.7': - resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} + '@babel/plugin-transform-unicode-escapes@7.23.3': + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.24.7': - resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} + '@babel/plugin-transform-unicode-property-regex@7.23.3': + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.24.7': - resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + '@babel/plugin-transform-unicode-regex@7.23.3': + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.24.7': - resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + '@babel/plugin-transform-unicode-sets-regex@7.23.3': + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.24.7': - resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==} + '@babel/preset-env@7.23.9': + resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-flow@7.24.7': - resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} + '@babel/preset-flow@7.23.3': + resolution: {integrity: sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1957,14 +1966,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-typescript@7.24.7': - resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + '@babel/preset-typescript@7.23.3': + resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/register@7.24.6': - resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} + '@babel/register@7.23.7': + resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1972,32 +1981,24 @@ packages: '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime@7.24.7': - resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.24.7': - resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + '@babel/runtime@7.23.9': + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} engines: {node: '>=6.9.0'} '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.7': - resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.7': - resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + '@babel/types@7.23.9': + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.2': - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -2009,51 +2010,51 @@ packages: '@chainsafe/netmask@2.0.0': resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} - '@changesets/apply-release-plan@7.0.4': - resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} + '@changesets/apply-release-plan@7.0.5': + resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==} - '@changesets/assemble-release-plan@6.0.3': - resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==} + '@changesets/assemble-release-plan@6.0.4': + resolution: {integrity: sha512-nqICnvmrwWj4w2x0fOhVj2QEGdlUuwVAwESrUo5HLzWMI1rE5SWfsr9ln+rDqWB6RQ2ZyaMZHUcU7/IRaUJS+Q==} '@changesets/changelog-git@0.2.0': resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} - '@changesets/cli@2.27.7': - resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==} + '@changesets/cli@2.27.8': + resolution: {integrity: sha512-gZNyh+LdSsI82wBSHLQ3QN5J30P4uHKJ4fXgoGwQxfXwYFTJzDdvIJasZn8rYQtmKhyQuiBj4SSnLuKlxKWq4w==} hasBin: true - '@changesets/config@3.0.2': - resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==} + '@changesets/config@3.0.3': + resolution: {integrity: sha512-vqgQZMyIcuIpw9nqFIpTSNyc/wgm/Lu1zKN5vECy74u95Qx/Wa9g27HdgO4NkVAaq+BGA8wUc/qvbvVNs93n6A==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - '@changesets/get-dependents-graph@2.1.1': - resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==} + '@changesets/get-dependents-graph@2.1.2': + resolution: {integrity: sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==} - '@changesets/get-release-plan@4.0.3': - resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==} + '@changesets/get-release-plan@4.0.4': + resolution: {integrity: sha512-SicG/S67JmPTrdcc9Vpu0wSQt7IiuN0dc8iR5VScnnTVPfIaLvKmEGRvIaF0kcn8u5ZqLbormZNTO77bCEvyWw==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - '@changesets/git@3.0.0': - resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + '@changesets/git@3.0.1': + resolution: {integrity: sha512-pdgHcYBLCPcLd82aRcuO0kxCDbw/yISlOtkmwmE8Odo1L6hSiZrBOsRl84eYG7DRCab/iHnOkWqExqc4wxk2LQ==} - '@changesets/logger@0.1.0': - resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} '@changesets/parse@0.4.0': resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} - '@changesets/pre@2.0.0': - resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + '@changesets/pre@2.0.1': + resolution: {integrity: sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==} - '@changesets/read@0.6.0': - resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + '@changesets/read@0.6.1': + resolution: {integrity: sha512-jYMbyXQk3nwP25nRzQQGa1nKLY0KfoOV7VLgwucI0bUO8t8ZLCr6LZmgjXsiKuRDc+5A6doKPr9w2d+FEJ55zQ==} - '@changesets/should-skip-package@0.1.0': - resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==} + '@changesets/should-skip-package@0.1.1': + resolution: {integrity: sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==} '@changesets/types@4.1.0': resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} @@ -2061,11 +2062,15 @@ packages: '@changesets/types@6.0.0': resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - '@changesets/write@0.3.1': - resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} + '@changesets/write@0.3.2': + resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} + + '@chromatic-com/storybook@1.3.3': + resolution: {integrity: sha512-1y9r691T5vVGDZ0HY3YrCXUnvtrT2YrhDuvDZSvYSNUVpM/Imz6i1dnNMKb3eoI1qRsH55mI4zCt+Iq94NLedQ==} + engines: {node: '>=16.0.0', yarn: '>=1.22.18'} - '@chromatic-com/storybook@1.6.0': - resolution: {integrity: sha512-6sHj0l194KMBIZ0D5SeJ+Ys+zslehKHcC2d6Hd/YEn4cCl7p9mLuxrZjvf8xharGKy8vf9Q1tKrU2YdldzUBoQ==} + '@chromatic-com/storybook@1.9.0': + resolution: {integrity: sha512-vYQ+TcfktEE3GHnLZXHCzXF/sN9dw+KivH8a5cmPyd9YtQs7fZtHrEgsIjWpYycXiweKMo1Lm1RZsjxk8DH3rA==} engines: {node: '>=16.0.0', yarn: '>=1.22.18'} '@coinbase/wallet-sdk@3.9.1': @@ -2091,8 +2096,8 @@ packages: peerDependencies: postcss-selector-parser: ^6.0.13 - '@csstools/selector-specificity@3.1.1': - resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} + '@csstools/selector-specificity@3.0.2': + resolution: {integrity: sha512-RpHaZ1h9LE7aALeQXmXrJkRG84ZxIsctEN2biEUmFyKpzFM3zZ35eUMcIzZFsw/2olQE6v69+esEqU2f1MKycg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 @@ -2101,10 +2106,6 @@ packages: resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} engines: {node: '>=14'} - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - '@emmetio/abbreviation@2.3.3': resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} @@ -2126,14 +2127,63 @@ packages: '@emmetio/stream-reader@2.2.0': resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} - '@emnapi/runtime@1.2.0': - resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + '@emnapi/runtime@1.1.1': + resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==} + + '@emotion/babel-plugin@11.11.0': + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + + '@emotion/cache@11.11.0': + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + + '@emotion/hash@0.9.1': + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + + '@emotion/is-prop-valid@1.2.1': + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} + + '@emotion/memoize@0.8.1': + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + '@emotion/react@11.11.3': + resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.1.3': + resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} + + '@emotion/sheet@1.2.2': + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + + '@emotion/styled@11.11.0': + resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/unitless@0.8.1': + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} '@emotion/use-insertion-effect-with-fallbacks@1.0.1': resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} peerDependencies: react: '>=16.8.0' + '@emotion/utils@1.2.1': + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + + '@emotion/weak-memoize@0.3.1': + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + '@esbuild/aix-ppc64@0.19.12': resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -2146,6 +2196,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.21.3': + resolution: {integrity: sha512-yTgnwQpFVYfvvo4SvRFB0SwrW8YjOxEoT7wfMT7Ol5v7v5LDNvSGo67aExmxOb87nQNeWPVvaGBNfQ7BXcrZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -2170,6 +2226,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.21.3': + resolution: {integrity: sha512-c+ty9necz3zB1Y+d/N+mC6KVVkGUUOcm4ZmT5i/Fk5arOaY3i6CA3P5wo/7+XzV8cb4GrI/Zjp8NuOQ9Lfsosw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} @@ -2194,6 +2256,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.21.3': + resolution: {integrity: sha512-bviJOLMgurLJtF1/mAoJLxDZDL6oU5/ztMHnJQRejbJrSc9FFu0QoUoFhvi6qSKJEw9y5oGyvr9fuDtzJ30rNQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} @@ -2218,6 +2286,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.21.3': + resolution: {integrity: sha512-JReHfYCRK3FVX4Ra+y5EBH1b9e16TV2OxrPAvzMsGeES0X2Ndm9ImQRI4Ket757vhc5XBOuGperw63upesclRw==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} @@ -2242,6 +2316,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.21.3': + resolution: {integrity: sha512-U3fuQ0xNiAkXOmQ6w5dKpEvXQRSpHOnbw7gEfHCRXPeTKW9sBzVck6C5Yneb8LfJm0l6le4NQfkNPnWMSlTFUQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} @@ -2266,6 +2346,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.21.3': + resolution: {integrity: sha512-3m1CEB7F07s19wmaMNI2KANLcnaqryJxO1fXHUV5j1rWn+wMxdUYoPyO2TnAbfRZdi7ADRwJClmOwgT13qlP3Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} @@ -2290,6 +2376,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.21.3': + resolution: {integrity: sha512-fsNAAl5pU6wmKHq91cHWQT0Fz0vtyE1JauMzKotrwqIKAswwP5cpHUCxZNSTuA/JlqtScq20/5KZ+TxQdovU/g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} @@ -2314,6 +2406,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.21.3': + resolution: {integrity: sha512-tci+UJ4zP5EGF4rp8XlZIdq1q1a/1h9XuronfxTMCNBslpCtmk97Q/5qqy1Mu4zIc0yswN/yP/BLX+NTUC1bXA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} @@ -2338,6 +2436,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.21.3': + resolution: {integrity: sha512-vvG6R5g5ieB4eCJBQevyDMb31LMHthLpXTc2IGkFnPWS/GzIFDnaYFp558O+XybTmYrVjxnryru7QRleJvmZ6Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} @@ -2362,6 +2466,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.21.3': + resolution: {integrity: sha512-f6kz2QpSuyHHg01cDawj0vkyMwuIvN62UAguQfnNVzbge2uWLhA7TCXOn83DT0ZvyJmBI943MItgTovUob36SQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} @@ -2386,6 +2496,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.21.3': + resolution: {integrity: sha512-HjCWhH7K96Na+66TacDLJmOI9R8iDWDDiqe17C7znGvvE4sW1ECt9ly0AJ3dJH62jHyVqW9xpxZEU1jKdt+29A==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} @@ -2410,6 +2526,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.21.3': + resolution: {integrity: sha512-BGpimEccmHBZRcAhdlRIxMp7x9PyJxUtj7apL2IuoG9VxvU/l/v1z015nFs7Si7tXUwEsvjc1rOJdZCn4QTU+Q==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} @@ -2434,6 +2556,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.21.3': + resolution: {integrity: sha512-5rMOWkp7FQGtAH3QJddP4w3s47iT20hwftqdm7b+loe95o8JU8ro3qZbhgMRy0VuFU0DizymF1pBKkn3YHWtsw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} @@ -2458,6 +2586,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.21.3': + resolution: {integrity: sha512-h0zj1ldel89V5sjPLo5H1SyMzp4VrgN1tPkN29TmjvO1/r0MuMRwJxL8QY05SmfsZRs6TF0c/IDH3u7XYYmbAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} @@ -2482,6 +2616,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.21.3': + resolution: {integrity: sha512-dkAKcTsTJ+CRX6bnO17qDJbLoW37npd5gSNtSzjYQr0svghLJYGYB0NF1SNcU1vDcjXLYS5pO4qOW4YbFama4A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} @@ -2506,6 +2646,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.21.3': + resolution: {integrity: sha512-vnD1YUkovEdnZWEuMmy2X2JmzsHQqPpZElXx6dxENcIwTu+Cu5ERax6+Ke1QsE814Zf3c6rxCfwQdCTQ7tPuXA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} @@ -2530,6 +2676,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.21.3': + resolution: {integrity: sha512-IOXOIm9WaK7plL2gMhsWJd+l2bfrhfilv0uPTptoRoSb2p09RghhQQp9YY6ZJhk/kqmeRt6siRdMSLLwzuT0KQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} @@ -2554,6 +2706,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.21.3': + resolution: {integrity: sha512-uTgCwsvQ5+vCQnqM//EfDSuomo2LhdWhFPS8VL8xKf+PKTCrcT/2kPPoWMTs22aB63MLdGMJiE3f1PHvCDmUOw==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} @@ -2578,6 +2736,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.21.3': + resolution: {integrity: sha512-vNAkR17Ub2MgEud2Wag/OE4HTSI6zlb291UYzHez/psiKarp0J8PKGDnAhMBcHFoOHMXHfExzmjMojJNbAStrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} @@ -2602,6 +2766,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.21.3': + resolution: {integrity: sha512-W8H9jlGiSBomkgmouaRoTXo49j4w4Kfbl6I1bIdO/vT0+0u4f20ko3ELzV3hPI6XV6JNBVX+8BC+ajHkvffIJA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} @@ -2626,6 +2796,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.21.3': + resolution: {integrity: sha512-EjEomwyLSCg8Ag3LDILIqYCZAq/y3diJ04PnqGRgq8/4O3VNlXyMd54j/saShaN4h5o5mivOjAzmU6C3X4v0xw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} @@ -2650,6 +2826,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.21.3': + resolution: {integrity: sha512-WGiE/GgbsEwR33++5rzjiYsKyHywE8QSZPF7Rfx9EBfK3Qn3xyR6IjyCr5Uk38Kg8fG4/2phN7sXp4NPWd3fcw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} @@ -2674,6 +2856,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.21.3': + resolution: {integrity: sha512-xRxC0jaJWDLYvcUvjQmHCJSfMrgmUuvsoXgDeU/wTorQ1ngDdUBuFtgY3W1Pc5sprGAvZBtWdJX7RPg/iZZUqA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} @@ -2686,8 +2874,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.0': - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + '@eslint-community/regexpp@4.10.0': + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/eslintrc@1.4.1': @@ -2698,10 +2886,17 @@ packages: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + '@eslint/js@8.55.0': + resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.56.0': + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@ethereumjs/common@2.6.5': + resolution: {integrity: sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==} + '@ethereumjs/common@3.2.0': resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} @@ -2710,6 +2905,9 @@ packages: engines: {node: '>=14'} hasBin: true + '@ethereumjs/tx@3.5.2': + resolution: {integrity: sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==} + '@ethereumjs/tx@4.2.0': resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} engines: {node: '>=14'} @@ -2820,24 +3018,21 @@ packages: '@expressive-code/plugin-text-markers@0.35.6': resolution: {integrity: sha512-/k9eWVZSCs+uEKHR++22Uu6eIbHWEciVHbIuD8frT8DlqTtHYaaiwHPncO6KFWnGDz5i/gL7oyl6XmOi/E6GVg==} - '@fal-works/esbuild-plugin-global-externals@2.1.2': - resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} - - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + '@fastify/busboy@2.1.0': + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} - '@formatjs/ecma402-abstract@2.0.0': - resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} + '@formatjs/ecma402-abstract@1.18.2': + resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==} '@formatjs/fast-memoize@2.2.0': resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} - '@formatjs/icu-messageformat-parser@2.7.8': - resolution: {integrity: sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==} + '@formatjs/icu-messageformat-parser@2.7.6': + resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==} - '@formatjs/icu-skeleton-parser@1.8.2': - resolution: {integrity: sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==} + '@formatjs/icu-skeleton-parser@1.8.0': + resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==} '@formatjs/intl-localematcher@0.5.4': resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} @@ -2848,6 +3043,11 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@humanwhocodes/config-array@0.11.13': + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -2870,18 +3070,22 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} deprecated: Use @eslint/object-schema instead - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + '@humanwhocodes/object-schema@2.0.1': + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + deprecated: Use @eslint/object-schema instead + + '@humanwhocodes/object-schema@2.0.2': + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} deprecated: Use @eslint/object-schema instead - '@img/sharp-darwin-arm64@0.33.4': - resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} + '@img/sharp-darwin-arm64@0.33.3': + resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.33.4': - resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==} + '@img/sharp-darwin-x64@0.33.3': + resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [darwin] @@ -2934,69 +3138,72 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.33.4': - resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} + '@img/sharp-linux-arm64@0.33.3': + resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.33.4': - resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} + '@img/sharp-linux-arm@0.33.3': + resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==} engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm] os: [linux] - '@img/sharp-linux-s390x@0.33.4': - resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} - engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-s390x@0.33.3': + resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.33.4': - resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} + '@img/sharp-linux-x64@0.33.3': + resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.33.4': - resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} + '@img/sharp-linuxmusl-arm64@0.33.3': + resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==} engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.33.4': - resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} + '@img/sharp-linuxmusl-x64@0.33.3': + resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==} engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.33.4': - resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} + '@img/sharp-wasm32@0.33.3': + resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [wasm32] - '@img/sharp-win32-ia32@0.33.4': - resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==} + '@img/sharp-win32-ia32@0.33.3': + resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.33.4': - resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==} + '@img/sharp-win32-x64@0.33.3': + resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [win32] - '@ipld/dag-cbor@9.2.1': - resolution: {integrity: sha512-nyY48yE7r3dnJVlxrdaimrbloh4RokQaNRdI//btfTkcTEZbpmSrbYcBQ4VKTf8ZxXAOUJy4VsRpkJo+y9RTnA==} + '@ioredis/commands@1.2.0': + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + + '@ipld/dag-cbor@9.2.0': + resolution: {integrity: sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - '@ipld/dag-json@10.2.2': - resolution: {integrity: sha512-NnU8HdHKwAoGyrW3S09NMa8aZw0tImLRyR64hoafpLpDpAbA9g1+fb24JsdlugbL4sXUQVwDVA+qK4Ud8V83lA==} + '@ipld/dag-json@10.2.0': + resolution: {integrity: sha512-O9YLUrl3d3WbVz7v1WkajFkyfOLEe2Fep+wor4fgVe0ywxzrivrj437NiPcVyB+2EDdFn/Q7tCHFf8YVhDf8ZA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - '@ipld/dag-pb@4.1.2': - resolution: {integrity: sha512-BSztO4l3C+ya9HjCaQot26Y4AVsqIKtnn6+23ubc1usucnf6yoTBme18oCCdM6gKBMxuPqju5ye3lh9WEJsdeQ==} + '@ipld/dag-pb@4.1.0': + resolution: {integrity: sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} '@isaacs/cliui@8.0.2': @@ -3039,6 +3246,10 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jridgewell/gen-mapping@0.3.3': + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -3047,12 +3258,16 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.1.2': + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.2.1': resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/source-map@0.3.5': + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -3092,8 +3307,8 @@ packages: resolution: {integrity: sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - '@libp2p/interface@1.5.0': - resolution: {integrity: sha512-SivVvZ+7r7Vgnv+Y88nGZTpG449PYZAPgfLhVqTXn6T4NAFt47InzC7UMFnVqSQuT21YmI9DoeaVXH73CsHNrg==} + '@libp2p/interface@1.3.0': + resolution: {integrity: sha512-K72Km0Co1Z+pXpggWuoAvUUbvwZYvjCcywrHj2Ym3jt2anTE3hzL4rlZrrkzA0YhNTRFRiZ04dnu6WMXT5/4+A==} '@libp2p/interfaces@3.3.2': resolution: {integrity: sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==} @@ -3135,14 +3350,26 @@ packages: resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} engines: {node: '>=14.0.0'} - '@metamask/json-rpc-engine@7.3.3': - resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} + '@metamask/json-rpc-engine@7.3.2': + resolution: {integrity: sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg==} + engines: {node: '>=16.0.0'} + + '@metamask/json-rpc-engine@8.0.2': + resolution: {integrity: sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==} engines: {node: '>=16.0.0'} '@metamask/json-rpc-middleware-stream@6.0.2': resolution: {integrity: sha512-jtyx3PRfc1kqoLpYveIVQNwsxYKefc64/LCl9h9Da1m3nUKEvypbYuXSIwi237qvOjKmNHQKsDOZg6f4uBf62Q==} engines: {node: '>=16.0.0'} + '@metamask/json-rpc-middleware-stream@7.0.2': + resolution: {integrity: sha512-yUdzsJK04Ev98Ck4D7lmRNQ8FPioXYhEUZOMS01LXW8qTvPGiRVXmVltj2p4wrLkh0vW7u6nv0mNl5xzC5Qmfg==} + engines: {node: '>=16.0.0'} + + '@metamask/object-multiplex@1.3.0': + resolution: {integrity: sha512-czcQeVYdSNtabd+NcYQnrM69MciiJyd1qvKH8WM2Id3C0ZiUUX5Xa/MK+/VUk633DBhVOwdNzAKIQ33lGyA+eQ==} + engines: {node: '>=12.0.0'} + '@metamask/object-multiplex@2.0.0': resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} engines: {node: ^16.20 || ^18.16 || >=20} @@ -3150,21 +3377,44 @@ packages: '@metamask/onboarding@1.0.1': resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + '@metamask/post-message-stream@6.2.0': + resolution: {integrity: sha512-WunZ0bruClF862mvbKQGETn5SM0XKGmocPMQR1Ew6sYix9/FDzeoZnoI8RkXk01E+70FCdxhTE/r8kk5SFOuTw==} + engines: {node: '>=14.0.0'} + + '@metamask/providers@10.2.1': + resolution: {integrity: sha512-p2TXw2a1Nb8czntDGfeIYQnk4LLVbd5vlcb3GY//lylYlKdSqp+uUTegCvxiFblRDOT68jsY8Ib1VEEzVUOolA==} + engines: {node: '>=14.0.0'} + '@metamask/providers@15.0.0': resolution: {integrity: sha512-FXvL1NQNl6I7fMOJTfQYcBlBZ33vSlm6w80cMpmn8sJh0Lb7wcBpe02UwBsNlARnI+Qsr26XeDs6WHUHQh8CuA==} engines: {node: ^18.18 || >=20} - '@metamask/rpc-errors@6.3.0': - resolution: {integrity: sha512-B1UIG/0xWkaDs/d6xrxsRf7kmFLdk8YE0HUToaFumjwQM36AjBsqEzVyemPTQv0SIrAPFnSmkLt053JOWcu5iw==} + '@metamask/providers@16.1.0': + resolution: {integrity: sha512-znVCvux30+3SaUwcUGaSf+pUckzT5ukPRpcBmy+muBLC0yaWnBcvDqGfcsw6CBIenUdFrVoAFa8B6jsuCY/a+g==} + engines: {node: ^18.18 || >=20} + + '@metamask/rpc-errors@6.1.0': + resolution: {integrity: sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==} + engines: {node: '>=16.0.0'} + + '@metamask/rpc-errors@6.2.1': + resolution: {integrity: sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw==} engines: {node: '>=16.0.0'} '@metamask/safe-event-emitter@2.0.0': resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + '@metamask/safe-event-emitter@3.0.0': + resolution: {integrity: sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ==} + engines: {node: '>=12.0.0'} + '@metamask/safe-event-emitter@3.1.1': resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} engines: {node: '>=12.0.0'} + '@metamask/sdk-communication-layer@0.14.3': + resolution: {integrity: sha512-yjSbj8y7fFbQXv2HBzUX6D9C8BimkCYP6BDV7hdw53W8b/GlYCtXVxUFajQ9tuO1xPTRjR/xt/dkdr2aCi6WGw==} + '@metamask/sdk-communication-layer@0.20.2': resolution: {integrity: sha512-TN+whYbCClFSkx52Ild1RcjoRyz8YZgwNvZeooIcZIvCfBM6U9W5273KGiY7WLc/oO4KKmFk17d7vMO4gNvhhw==} peerDependencies: @@ -3174,8 +3424,8 @@ packages: readable-stream: ^3.6.2 socket.io-client: ^4.5.1 - '@metamask/sdk-communication-layer@0.26.4': - resolution: {integrity: sha512-+X4GEc5mV1gWK4moSswVlKsUh+RsA48qPlkxBLTUxQODSnyBe0TRMxE6mH+bSrfponnTzvBkGUXyEjvDwDjDHw==} + '@metamask/sdk-communication-layer@0.28.2': + resolution: {integrity: sha512-kGx6qgP482DecPILnIS38bgxIjNransR3/Jh5Lfg9BXJLaXpq/MEGrjHGnJHAqCyfRymnd5cgexHtXJvQtRWQA==} peerDependencies: cross-fetch: ^4.0.0 eciesjs: ^0.3.16 @@ -3183,6 +3433,9 @@ packages: readable-stream: ^3.6.2 socket.io-client: ^4.5.1 + '@metamask/sdk-install-modal-web@0.14.1': + resolution: {integrity: sha512-emT8HKbnfVwGhPxyUfMja6DWzvtJvDEBQxqCVx93H0HsyrrOzOC43iGCAosslw6o5h7gOfRKLqWmK8V7jQAS2Q==} + '@metamask/sdk-install-modal-web@0.20.2': resolution: {integrity: sha512-0QiaZhV15AGdN1zU2jfTI32eC3YkwEpzDfR9+oiZ9bd2G72c6lYBhTsmDGUd01aP6A+bqJR5PjI8Wh2AWtoLeA==} peerDependencies: @@ -3199,10 +3452,10 @@ packages: react-native: optional: true - '@metamask/sdk-install-modal-web@0.26.4': - resolution: {integrity: sha512-7Cx7ZsaExbMwghlRrUWWI0Ksg0m7K60LtMjfuDpjvjWqoZa9MoPxitGDEXNbLaqvKn39ebPvNcPzQ6czA4ilTw==} + '@metamask/sdk-install-modal-web@0.28.1': + resolution: {integrity: sha512-mHkIjWTpYQMPDMtLEEtTVXhae4pEjy7jDBfV7497L0U3VCPQrBl/giZBwA6AgKEX1emYcM2d1WRHWR9N4YhyJA==} peerDependencies: - i18next: 23.2.3 + i18next: 23.11.5 react: ^18.2.0 react-dom: ^18.2.0 react-native: '*' @@ -3214,6 +3467,17 @@ packages: react-native: optional: true + '@metamask/sdk@0.14.3': + resolution: {integrity: sha512-BYLs//nY2wioVSih78gOQI6sLIYY3vWkwVqXGYUgkBV+bi49bv+9S0m+hZ2cwiRaxfMYtKs0KvhAQ8weiYwDrg==} + peerDependencies: + react: ^18.2.0 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-native: + optional: true + '@metamask/sdk@0.20.3': resolution: {integrity: sha512-HZ9NwA+LxiXzuy0YWbWsuD4xejQtp85bhcCAf8UgpA/0dOyF3RS4dKDdBBXSyRgk3RWPjeJgHxioaH4CmBmiRA==} peerDependencies: @@ -3225,8 +3489,8 @@ packages: react-dom: optional: true - '@metamask/sdk@0.26.4': - resolution: {integrity: sha512-9Yh41KJkD9RhW0lRijnQzPV0ptblLorLdTsf5GnAl3yE72QIfaPBtsDxzLtX+0QLppiFfj7o8vRBYvBApG9k+Q==} + '@metamask/sdk@0.28.2': + resolution: {integrity: sha512-pylk1uJAZYyO3HcNW/TNfII3+T+Yx6qrFYaC/HmuSIuRJeXsdZuExSbNQ236iQocIy3L7JjI+GQKbv3TbN+HQQ==} peerDependencies: react: ^18.2.0 react-dom: ^18.2.0 @@ -3236,77 +3500,73 @@ packages: react-dom: optional: true - '@metamask/superstruct@3.1.0': - resolution: {integrity: sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==} - engines: {node: '>=16.0.0'} - '@metamask/utils@5.0.2': resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} engines: {node: '>=14.0.0'} - '@metamask/utils@8.5.0': - resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} + '@metamask/utils@8.3.0': + resolution: {integrity: sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==} engines: {node: '>=16.0.0'} - '@moralisweb3/api-utils@2.26.7': - resolution: {integrity: sha512-+CGUNNYgynrjRwkL1/+HeGawhz0JCRh1Zeugx4UfDx4ULI7gLFxrAQqzN7UaMTM5Ftw7jBG4k3bc7mvpJfuv3g==} + '@moralisweb3/api-utils@2.26.2': + resolution: {integrity: sha512-2HQdwRzil5AyIZID+YFk3XX6QMkdOVClMgrDtsEvZgKLUa5OXSYasSUymfSf6q8FsKJGkHK9kuqoS2dZM4aBvA==} - '@moralisweb3/aptos-api@2.26.7': - resolution: {integrity: sha512-YNy/qLAHXz9KGOAiQVMzKJqAyGCxdnyvdR84/nwtU2PXHTydMxoxnL7EVL+HnpK3bjq5nXLMxofXYHoAXbdz3Q==} + '@moralisweb3/aptos-api@2.26.2': + resolution: {integrity: sha512-3VXT4Q9SGE58UnX6UTrU6BExeBxkvDKfVjVd8AR6KlMcK5C6EaON3dlSfdyAqKAHv5rySXnXxZyG7EHURIzW2g==} - '@moralisweb3/auth@2.26.7': - resolution: {integrity: sha512-PdJzc2j4zxzwR5fzlHRNqmuhzJvD1E6ZKJPMOqiOPF4zGbVM3NbONdx4bR7W6kRQciXZzeO5oyW9/N9PF76jgw==} + '@moralisweb3/auth@2.26.2': + resolution: {integrity: sha512-29qr2jA+jsFup42vghZilmozuwV9/PCW88Or4v9k/XczFX80563ESpjJMXjgSZL3J7XspMt6YzpdqztDpvmyjA==} - '@moralisweb3/common-aptos-utils@2.26.7': - resolution: {integrity: sha512-hCGawLqv2J1X83RVNqHifh0E0NdezdOGs93KQa2vlkvj1OHPgKeHlBX8gNZ+Fx6cGyWyK2dU3AbFCJ4hkkmNYA==} + '@moralisweb3/common-aptos-utils@2.26.2': + resolution: {integrity: sha512-+8m/953/0zmio1cHREQAvVouoirPMFWr//gy34jYMKJevwkYcDG0IhzHQ7cXEHCMNRPUYtV3OD7JodL6zMRLeQ==} - '@moralisweb3/common-auth-utils@2.26.7': - resolution: {integrity: sha512-rANpdno9SbmW0GQ4uOAFJj4TbEyOIiWmzzgY9Jcd4ocjYH4Z3WrBl85vblce8EXoPpxPvRk3Xv6rQFCt17Dw8w==} + '@moralisweb3/common-auth-utils@2.26.2': + resolution: {integrity: sha512-Cz526qRzMBBb5ZH/2o+J6p+bXVEL4gh5VaqDVRXODdCu81VhT+xdm2f2lNGZ4lhaFXoxYXAmUD446KM7hP+ZUw==} - '@moralisweb3/common-core@2.26.7': - resolution: {integrity: sha512-6jRoS8hUAwcRx8xA7R5YlCrkHOIfX01iqdDn2I04lV/VH4bfKBtiOgBSMrc+Ucgtn44seaOVOb4iCSE5EP7SvQ==} + '@moralisweb3/common-core@2.26.2': + resolution: {integrity: sha512-gvisSn6kpvZGjzC5HwYeYlnlQk9wM3PMRUamtH5H1iCouQz6M8WhbZ3a9O8ldcjX8SLnxdz8w0Z479xTFIVoqQ==} - '@moralisweb3/common-evm-utils@2.26.7': - resolution: {integrity: sha512-hnoq1pil07dnxpgvBrKDPqsDYZY+2MRBwFINx7KgRMK6WmsOfaaTl6FzT2ruFSbX02fFZMrT0TG5qnx6U3FM5g==} + '@moralisweb3/common-evm-utils@2.26.2': + resolution: {integrity: sha512-ZqzCPPTvurXtNi+DuyP6JsAzbxp4KkrsaMQzAvBPGEkIjIGxswDt47NVn6vzKLWqYk/C+IK5t/hBVBla9BfAnw==} - '@moralisweb3/common-sol-utils@2.26.7': - resolution: {integrity: sha512-egTzMx8ByIGEXjpC43iN9+q4BMv/G1EO7mLn5drAn32P1voC39TAA26MnrlFY4y2XREU/Imc737OIhPATrGD4A==} + '@moralisweb3/common-sol-utils@2.26.2': + resolution: {integrity: sha512-r8oxkTQfduIUNZ+/scjed6cphv8c4IPtdgarUrzz/cS2y/VcaXjDweLQsyFfMIOk4Fa0DTXaabzd8to5XNz2FQ==} - '@moralisweb3/common-streams-utils@2.26.7': - resolution: {integrity: sha512-FrwgSC8Y2Rp2RAq7nj4/LjIAk+RVrna5Yin4843plrvvi0WXZCxAHZBfZuHz56qJkQVsmdYgBevvCxipct1nTA==} + '@moralisweb3/common-streams-utils@2.26.2': + resolution: {integrity: sha512-bhNgr0G3daG3n0qaB4lQ0/qA63kG2Ich3Zju3dLH8p9KdLeMvFAQIZzlx1aT0Ij7laaoqfnv2Pb0GQ1DTkvimQ==} - '@moralisweb3/evm-api@2.26.7': - resolution: {integrity: sha512-eFcSnyeyBjrgX/1hjcDZ3BDaC3B7N6w+wRRQi5FSbp4tadh0LAd+zlUVwNhr0UsKUoT6rZRY+pDhHXM4HDHeEg==} + '@moralisweb3/evm-api@2.26.2': + resolution: {integrity: sha512-ageSyclGqHh/X6Wr1X1OHiCTBJcvhF1af4DvTe8xF1xnLqYtPk/TY3o2DmW//0bR6lQdebySbc+UEufld5uUpg==} - '@moralisweb3/sol-api@2.26.7': - resolution: {integrity: sha512-7MMi52WeCyRKhT6KKRZa/k62fPuf6fx2waA+Jc5jo8+nDvn5wbqpl7KWx338rqT3C7M9xzhT1HfsCJ/TOD6jUw==} + '@moralisweb3/sol-api@2.26.2': + resolution: {integrity: sha512-3fLnMGeuD/4EV6g7Qw6xtkyRh7RXxcIz1eTNZsph1NHQtXMTi9oQgSitTwmWcAHNzKQBXn4zoz5fx2yrIBWPIw==} '@moralisweb3/streams-typings@1.0.7': resolution: {integrity: sha512-ShbVqil0KLOTyTjO6z9JewPcVVE3S6kzkQFnW2flGBRsGdKucpkUdOx1HijOLoaikz/9gH92n+lzTvRFIj0AoA==} - '@moralisweb3/streams@2.26.7': - resolution: {integrity: sha512-xrLEuXL02GuK6Lio96wpDyPQUhFgBS8CHRq5BDhCXzXr93yyiXAt6P28mq/mUGR/uABSjutilfTaV2MyhwFkng==} + '@moralisweb3/streams@2.26.2': + resolution: {integrity: sha512-PZ8aVE7S/n5MeOTLTxYff28UfNd3qv2AmE31saRPdGMnUTj7UgSiwqGQNt3ZYS0Gh1RjzvshELn9dRll8VrzYg==} - '@motionone/animation@10.18.0': - resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} + '@motionone/animation@10.16.3': + resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} - '@motionone/dom@10.18.0': - resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} + '@motionone/dom@10.16.4': + resolution: {integrity: sha512-HPHlVo/030qpRj9R8fgY50KTN4Ko30moWRTA3L3imrsRBmob93cTYmodln49HYFbQm01lFF7X523OkKY0DX6UA==} - '@motionone/easing@10.18.0': - resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} + '@motionone/easing@10.16.3': + resolution: {integrity: sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w==} - '@motionone/generators@10.18.0': - resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} + '@motionone/generators@10.16.4': + resolution: {integrity: sha512-geFZ3w0Rm0ZXXpctWsSf3REGywmLLujEjxPYpBR0j+ymYwof0xbV6S5kGqqsDKgyWKVWpUInqQYvQfL6fRbXeg==} '@motionone/svelte@10.16.4': resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} - '@motionone/types@10.17.1': - resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} + '@motionone/types@10.16.3': + resolution: {integrity: sha512-W4jkEGFifDq73DlaZs3HUfamV2t1wM35zN/zX7Q79LfZ2sc6C0R1baUHZmqc/K5F3vSw3PavgQ6HyHLd/MXcWg==} - '@motionone/utils@10.18.0': - resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + '@motionone/utils@10.16.3': + resolution: {integrity: sha512-WNWDksJIxQkaI9p9Z9z0+K27xdqISGNFy1SsWVGaiedTHq0iaT6iZujby8fT/ZnZxj1EOaxJtSfUPCFNU5CRoA==} '@motionone/vue@10.16.4': resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} @@ -3322,21 +3582,18 @@ packages: resolution: {integrity: sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - '@multiformats/multiaddr@12.3.0': - resolution: {integrity: sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==} - - '@ndelangen/get-tarball@3.0.9': - resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} + '@multiformats/multiaddr@12.2.1': + resolution: {integrity: sha512-UwjoArBbv64FlaetV4DDwh+PUMfzXUBltxQwdh+uTYnGFzVa8ZfJsn1vt1RJlJ6+Xtrm3RMekF/B+K338i2L5Q==} '@noble/curves@1.2.0': resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + '@noble/curves@1.3.0': + resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + '@noble/curves@1.4.0': resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} - '@noble/curves@1.4.2': - resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} - '@noble/hashes@1.2.0': resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} @@ -3344,10 +3601,18 @@ packages: resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} + '@noble/hashes@1.3.3': + resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + engines: {node: '>= 16'} + '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + '@noble/secp256k1@1.7.1': resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} @@ -3377,9 +3642,57 @@ packages: '@openzeppelin/contracts@5.0.2': resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} + '@openzeppelin/defender-as-code@3.0.1': + resolution: {integrity: sha512-AeGMBk81Bak6B4u3pXjO1aOrIbJqrE6gZJqTJiBRGzKRGWxqQycriojZ3/lns/DcrNElA2BBHD0ONESrpMbZAg==} + + '@openzeppelin/defender-sdk-account-client@1.14.4': + resolution: {integrity: sha512-SxV4oTofO/xf1IcNJ5Dcc6XdXrxmu2jNPIeOx6GhdwVmO2LDVgi/9pAwXNlW1ihZ4wkJf/BSz3JsRJCgrwkadQ==} + + '@openzeppelin/defender-sdk-action-client@1.14.4': + resolution: {integrity: sha512-YoRW3ZST1YCGkBIPtzJNPR0ajK9H0cxhT+evbRX9hgiUNJTgTDJeKGX+qOKOMjKOPXikiYUc2TpmKwP1I2tP5A==} + hasBin: true + + '@openzeppelin/defender-sdk-base-client@1.14.4': + resolution: {integrity: sha512-tOePVQLKpqfGQ1GMzHvSBNd2psPYd86LDNpvdl5gjD0Y2kW/zNh5qBXy29RraGtk/qc8zs9hzS5pAOh0vhGkGQ==} + + '@openzeppelin/defender-sdk-deploy-client@1.14.4': + resolution: {integrity: sha512-+diSoz1zid37LMsY2RDxI+uAsYx9Eryg8Vz+yfvuyd56fXrzjQEln7BBtYQw+2zp9yvyAByOL5XSQdrQga9OBQ==} + + '@openzeppelin/defender-sdk-key-value-store-client@1.14.4': + resolution: {integrity: sha512-8InEiGeUpahKuWTgFWUyS5DS9HkXeHWMW+yxolGwxCy+OIGEPfxg/oMBXC2UzGn3BfIvWic/CLspFzuWIlarEQ==} + + '@openzeppelin/defender-sdk-monitor-client@1.14.4': + resolution: {integrity: sha512-PSesKNicY37LiHD2EVsyZXQrHRZsPYaVhUuMdqfNoJZexPZfnhv7c2A481tt+hTwAccJguQF69NLqylpdgtpFQ==} + + '@openzeppelin/defender-sdk-network-client@1.14.4': + resolution: {integrity: sha512-OS0H5b0vgYacJcwkvUFJUaRuyUaXhIRl916W5xLvGia5H6i/qn3dP8MZ7oLcPwKc8jB+ucRytO4H/AHsea0aVA==} + + '@openzeppelin/defender-sdk-notification-channel-client@1.14.4': + resolution: {integrity: sha512-xCMUe4pseRA+tQMrd6PDoZ4aToDi0LPrVAlBXFDFxCZ6/TzcsVA/PgfM4Hy6R+9vF+S5gMFGuJkCpDtlcYfo5A==} + + '@openzeppelin/defender-sdk-proposal-client@1.14.4': + resolution: {integrity: sha512-xVI5A6wJb/XfqVAEkSsINrgGkNznw0eZL7CnzX1OUnZ4irrlaD4HpG/CkFgVWLx8tRIMFlUtb3as3KMc/sO8eg==} + + '@openzeppelin/defender-sdk-relay-client@1.14.4': + resolution: {integrity: sha512-L+vPUeeg36muOy1Oh8wqNEJ8qXXQrFytYZerPS9N/Vf7TQBZoKUkuVq69dw7+XYq/ouqbppvAvUtV9SnyDkYpQ==} + + '@openzeppelin/defender-sdk-relay-signer-client@1.14.4': + resolution: {integrity: sha512-zjVhor/LEHYG6Gf+GEFTrwsuGZjVbzqTqQew4X622FY38P13PpcEIdXDgbokqdlX8zpECcggD2kmTTDgVWRqjA==} + peerDependencies: + web3: ^1.10.0 + web3-core: ^1.10.4 + web3-core-helpers: ^1.10.0 + web3-utils: ^1.10.0 + + '@openzeppelin/defender-sdk@1.14.4': + resolution: {integrity: sha512-QFXvqeLzfFxyRq5bw+7h2pq65pztNKBUy0vtizdSeQMA6MZ5wqDyTu/8bziYdQH+BmKzMqYBgErJAmic2XCzZQ==} + '@openzeppelin/merkle-tree@1.0.6': resolution: {integrity: sha512-cGWOb2WBWbJhqvupzxjnKAwGLxxAEYPg51sk76yZ5nVe5D03mw7Vx5yo8llaIEqYhP5O39M8QlrNWclgLfKVrA==} + '@oslojs/encoding@0.4.1': + resolution: {integrity: sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q==} + '@pagefind/darwin-arm64@1.1.0': resolution: {integrity: sha512-SLsXNLtSilGZjvqis8sX42fBWsWAVkcDh1oerxwqbac84HbiwxpxOC2jm8hRwcR0Z55HPZPWO77XeRix/8GwTg==} cpu: [arm64] @@ -3408,99 +3721,99 @@ packages: cpu: [x64] os: [win32] - '@parcel/watcher-android-arm64@2.4.1': - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + '@parcel/watcher-android-arm64@2.4.0': + resolution: {integrity: sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.4.1': - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + '@parcel/watcher-darwin-arm64@2.4.0': + resolution: {integrity: sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.4.1': - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + '@parcel/watcher-darwin-x64@2.4.0': + resolution: {integrity: sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.4.1': - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + '@parcel/watcher-freebsd-x64@2.4.0': + resolution: {integrity: sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.4.1': - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + '@parcel/watcher-linux-arm-glibc@2.4.0': + resolution: {integrity: sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.4.1': - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + '@parcel/watcher-linux-arm64-glibc@2.4.0': + resolution: {integrity: sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.4.1': - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + '@parcel/watcher-linux-arm64-musl@2.4.0': + resolution: {integrity: sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.4.1': - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + '@parcel/watcher-linux-x64-glibc@2.4.0': + resolution: {integrity: sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.4.1': - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + '@parcel/watcher-linux-x64-musl@2.4.0': + resolution: {integrity: sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-wasm@2.4.1': - resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} + '@parcel/watcher-wasm@2.4.0': + resolution: {integrity: sha512-MNgQ4WCbBybqQ97KwR/hqJGYTg3+s8qHpgIyFWB2qJOBvoJWbXuJGmm4ZkPLq2bMaANqCZqrXwmKYagZTkMKZA==} engines: {node: '>= 10.0.0'} bundledDependencies: - napi-wasm - '@parcel/watcher-win32-arm64@2.4.1': - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + '@parcel/watcher-win32-arm64@2.4.0': + resolution: {integrity: sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.4.1': - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + '@parcel/watcher-win32-ia32@2.4.0': + resolution: {integrity: sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.4.1': - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + '@parcel/watcher-win32-x64@2.4.0': + resolution: {integrity: sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.4.1': - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + '@parcel/watcher@2.4.0': + resolution: {integrity: sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg==} engines: {node: '>= 10.0.0'} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + '@pkgr/utils@2.4.2': + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.45.0': - resolution: {integrity: sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==} - engines: {node: '>=18'} + '@playwright/test@1.43.1': + resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} + engines: {node: '>=16'} hasBin: true '@pnpm/config.env-replace@1.1.0': @@ -3515,8 +3828,8 @@ packages: resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} engines: {node: '>=12'} - '@polka/url@1.0.0-next.25': - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@polka/url@1.0.0-next.24': + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -3548,265 +3861,103 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@radix-ui/primitive@1.1.0': - resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - - '@radix-ui/react-compose-refs@1.1.0': - resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + '@react-native-async-storage/async-storage@1.22.0': + resolution: {integrity: sha512-b5KD010iiZnot86RbAaHpLuHwmPW2qA3SSN/OSZhd1kBoINEQEVBuv+uFtcaTxAhX27bT0wd13GOb2IOSDUXSA==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + react-native: ^0.0.0-0 || >=0.60 <1.0 - '@radix-ui/react-context@1.1.0': - resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@react-native-community/cli-clean@12.3.2': + resolution: {integrity: sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A==} - '@radix-ui/react-dialog@1.1.1': - resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-dismissable-layer@1.1.0': - resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-guards@1.1.0': - resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-scope@1.1.0': - resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-id@1.1.0': - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-portal@1.1.1': - resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.1.0': - resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@2.0.0': - resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.1.0': - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@react-native-community/cli-clean@13.6.9': - resolution: {integrity: sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==} - - '@react-native-community/cli-config@13.6.9': - resolution: {integrity: sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==} + '@react-native-community/cli-config@12.3.2': + resolution: {integrity: sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ==} - '@react-native-community/cli-debugger-ui@13.6.9': - resolution: {integrity: sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==} + '@react-native-community/cli-debugger-ui@12.3.2': + resolution: {integrity: sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q==} - '@react-native-community/cli-doctor@13.6.9': - resolution: {integrity: sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==} + '@react-native-community/cli-doctor@12.3.2': + resolution: {integrity: sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg==} - '@react-native-community/cli-hermes@13.6.9': - resolution: {integrity: sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==} + '@react-native-community/cli-hermes@12.3.2': + resolution: {integrity: sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA==} - '@react-native-community/cli-platform-android@13.6.9': - resolution: {integrity: sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==} + '@react-native-community/cli-platform-android@12.3.2': + resolution: {integrity: sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg==} - '@react-native-community/cli-platform-apple@13.6.9': - resolution: {integrity: sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==} + '@react-native-community/cli-platform-ios@12.3.2': + resolution: {integrity: sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg==} - '@react-native-community/cli-platform-ios@13.6.9': - resolution: {integrity: sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==} + '@react-native-community/cli-plugin-metro@12.3.2': + resolution: {integrity: sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g==} - '@react-native-community/cli-server-api@13.6.9': - resolution: {integrity: sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==} + '@react-native-community/cli-server-api@12.3.2': + resolution: {integrity: sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q==} - '@react-native-community/cli-tools@13.6.9': - resolution: {integrity: sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==} + '@react-native-community/cli-tools@12.3.2': + resolution: {integrity: sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ==} - '@react-native-community/cli-types@13.6.9': - resolution: {integrity: sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==} + '@react-native-community/cli-types@12.3.2': + resolution: {integrity: sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog==} - '@react-native-community/cli@13.6.9': - resolution: {integrity: sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==} + '@react-native-community/cli@12.3.2': + resolution: {integrity: sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ==} engines: {node: '>=18'} hasBin: true - '@react-native/assets-registry@0.74.85': - resolution: {integrity: sha512-59YmIQxfGDw4aP9S/nAM+sjSFdW8fUP6fsqczCcXgL2YVEjyER9XCaUT0J1K+PdHep8pi05KUgIKUds8P3jbmA==} + '@react-native/assets-registry@0.73.1': + resolution: {integrity: sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==} engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.74.85': - resolution: {integrity: sha512-48TSDclRB5OMXiImiJkLxyCfRyLsqkCgI8buugCZzvXcYslfV7gCvcyFyQldtcOmerV+CK4RAj7QS4hmB5Mr8Q==} + '@react-native/babel-plugin-codegen@0.73.4': + resolution: {integrity: sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==} engines: {node: '>=18'} - '@react-native/babel-preset@0.74.85': - resolution: {integrity: sha512-yMHUlN8INbK5BBwiBuQMftdWkpm1IgCsoJTKcGD2OpSgZhwwm8RUSvGhdRMzB2w7bsqqBmaEMleGtW6aCR7B9w==} + '@react-native/babel-preset@0.73.21': + resolution: {integrity: sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.74.85': - resolution: {integrity: sha512-N7QwoS4Hq/uQmoH83Ewedy6D0M7xbQsOU3OMcQf0eY3ltQ7S2hd9/R4UTalQWRn1OUJfXR6OG12QJ4FStKgV6Q==} + '@react-native/codegen@0.73.3': + resolution: {integrity: sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==} engines: {node: '>=18'} peerDependencies: '@babel/preset-env': ^7.1.6 - '@react-native/community-cli-plugin@0.74.85': - resolution: {integrity: sha512-ODzND33eA2owAY3g9jgCdqB+BjAh8qJ7dvmSotXgrgDYr3MJMpd8gvHTIPe2fg4Kab+wk8uipRhrE0i0RYMwtQ==} + '@react-native/community-cli-plugin@0.73.16': + resolution: {integrity: sha512-eNH3v3qJJF6f0n/Dck90qfC9gVOR4coAXMTdYECO33GfgjTi+73vf/SBqlXw9HICH/RNZYGPM3wca4FRF7TYeQ==} engines: {node: '>=18'} - '@react-native/debugger-frontend@0.74.85': - resolution: {integrity: sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==} + '@react-native/debugger-frontend@0.73.3': + resolution: {integrity: sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.74.85': - resolution: {integrity: sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==} + '@react-native/dev-middleware@0.73.7': + resolution: {integrity: sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg==} engines: {node: '>=18'} - '@react-native/gradle-plugin@0.74.85': - resolution: {integrity: sha512-1VQSLukJzaVMn1MYcs8Weo1nUW8xCas2XU1KuoV7OJPk6xPnEBFJmapmEGP5mWeEy7kcTXJmddEgy1wwW0tcig==} + '@react-native/gradle-plugin@0.73.4': + resolution: {integrity: sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==} engines: {node: '>=18'} - '@react-native/js-polyfills@0.74.85': - resolution: {integrity: sha512-gp4Rg9le3lVZeW7Cie6qLfekvRKZuhJ3LKgi1SFB4N154z1wIclypAJXVXgWBsy8JKJfTwRI+sffC4qZDlvzrg==} + '@react-native/js-polyfills@0.73.1': + resolution: {integrity: sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==} engines: {node: '>=18'} - '@react-native/metro-babel-transformer@0.74.85': - resolution: {integrity: sha512-JIrXqEwhTvWPtGArgMptIPGstMdXQIkwSjKVYt+7VC4a9Pw1GurIWanIJheEW6ZuCVvTc0VZkwglFz9JVjzDjA==} + '@react-native/metro-babel-transformer@0.73.15': + resolution: {integrity: sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/normalize-colors@0.74.85': - resolution: {integrity: sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==} + '@react-native/normalize-colors@0.73.2': + resolution: {integrity: sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==} - '@react-native/virtualized-lists@0.74.85': - resolution: {integrity: sha512-jx2Zw0qlZteoQ+0KxRc7s4drsljLBEP534FaNZ950e9+CN9nVkLsV6rigcTjDR8wjKMSBWhKf0C0C3egYz7Ehg==} + '@react-native/virtualized-lists@0.73.4': + resolution: {integrity: sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==} engines: {node: '>=18'} peerDependencies: - '@types/react': ^18.2.6 - react: '*' react-native: '*' - peerDependenciesMeta: - '@types/react': - optional: true '@readme/better-ajv-errors@1.6.0': resolution: {integrity: sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==} @@ -3823,102 +3974,261 @@ packages: peerDependencies: openapi-types: '>=7' - '@rnx-kit/chromium-edge-launcher@1.0.0': - resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} - engines: {node: '>=14.15'} + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.12.0': + resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm-eabi@4.17.2': + resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} + cpu: [arm] + os: [android] - '@rollup/rollup-android-arm-eabi@4.18.0': - resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + '@rollup/rollup-android-arm-eabi@4.21.3': + resolution: {integrity: sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.18.0': - resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + '@rollup/rollup-android-arm64@4.12.0': + resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-android-arm64@4.17.2': + resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-android-arm64@4.21.3': + resolution: {integrity: sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.18.0': - resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + '@rollup/rollup-darwin-arm64@4.12.0': + resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-arm64@4.17.2': + resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.18.0': - resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + '@rollup/rollup-darwin-arm64@4.21.3': + resolution: {integrity: sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.12.0': + resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.17.2': + resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.21.3': + resolution: {integrity: sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': - resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + '@rollup/rollup-linux-arm-gnueabihf@4.12.0': + resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-gnueabihf@4.17.2': + resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-gnueabihf@4.21.3': + resolution: {integrity: sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.17.2': + resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.18.0': - resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + '@rollup/rollup-linux-arm-musleabihf@4.21.3': + resolution: {integrity: sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.18.0': - resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + '@rollup/rollup-linux-arm64-gnu@4.12.0': + resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.17.2': + resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.21.3': + resolution: {integrity: sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.18.0': - resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + '@rollup/rollup-linux-arm64-musl@4.12.0': + resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': - resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + '@rollup/rollup-linux-arm64-musl@4.17.2': + resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.21.3': + resolution: {integrity: sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': + resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.21.3': + resolution: {integrity: sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.18.0': - resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + '@rollup/rollup-linux-riscv64-gnu@4.12.0': + resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.17.2': + resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.18.0': - resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + '@rollup/rollup-linux-riscv64-gnu@4.21.3': + resolution: {integrity: sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.17.2': + resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.21.3': + resolution: {integrity: sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.18.0': - resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + '@rollup/rollup-linux-x64-gnu@4.12.0': + resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.17.2': + resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.21.3': + resolution: {integrity: sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.18.0': - resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + '@rollup/rollup-linux-x64-musl@4.12.0': + resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.18.0': - resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + '@rollup/rollup-linux-x64-musl@4.17.2': + resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.21.3': + resolution: {integrity: sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.12.0': + resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-arm64-msvc@4.17.2': + resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-arm64-msvc@4.21.3': + resolution: {integrity: sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.18.0': - resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + '@rollup/rollup-win32-ia32-msvc@4.12.0': + resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.17.2': + resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.21.3': + resolution: {integrity: sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.18.0': - resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + '@rollup/rollup-win32-x64-msvc@4.12.0': + resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.17.2': + resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.21.3': + resolution: {integrity: sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==} cpu: [x64] os: [win32] '@safe-global/safe-apps-provider@0.18.1': resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} + '@safe-global/safe-apps-provider@0.18.3': + resolution: {integrity: sha512-f/0cNv3S4v7p8rowAjj0hDCg8Q8P/wBjp5twkNWeBdvd0RDr7BuRBPPk74LCqmjQ82P+1ltLlkmVFSmxTIT7XQ==} + '@safe-global/safe-apps-sdk@8.1.0': resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} - '@safe-global/safe-gateway-typescript-sdk@3.21.8': - resolution: {integrity: sha512-n/fYgiqbuzAQuK0bgny6GBYvb585ETxKURa5Kb9hBV3fa47SvJo/dpGq275fJUn0e3Hh1YqETiLGj4HVJjHiTA==} + '@safe-global/safe-apps-sdk@9.1.0': + resolution: {integrity: sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==} + + '@safe-global/safe-gateway-typescript-sdk@3.15.0': + resolution: {integrity: sha512-zAzhPgUwzdp89ZrZwCAOImUyAQMQE0LQKcK4vLO5eMbfAcNOxz5g4eVdBRBRa+kVXxjyW5wii58ZlGaYUVBa7g==} engines: {node: '>=16'} - '@scure/base@1.1.7': - resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} + '@scure/base@1.1.5': + resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + + '@scure/base@1.1.8': + resolution: {integrity: sha512-6CyAclxj3Nb0XT7GHK6K4zK6k2xJm6E4Ft0Ohjt4WgegiFUHEtFb2CGzmPmGBwoIhrLsqNLYfLr04Y1GePrzZg==} '@scure/bip32@1.1.5': resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} @@ -3926,6 +4236,9 @@ packages: '@scure/bip32@1.3.2': resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + '@scure/bip32@1.3.3': + resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} + '@scure/bip32@1.4.0': resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} @@ -3935,14 +4248,29 @@ packages: '@scure/bip39@1.2.1': resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} - '@scure/bip39@1.3.0': - resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + '@scure/bip39@1.2.2': + resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} + + '@scure/bip39@1.4.0': + resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} + + '@shikijs/core@1.17.6': + resolution: {integrity: sha512-9ztslig6/YmCg/XwESAXbKjAjOhaq6HVced9NY6qcbDz1X5g/S90Wco2vMjBNX/6V71ASkzri76JewSGPa7kiQ==} + + '@shikijs/core@1.5.2': + resolution: {integrity: sha512-wSAOgaz48GmhILFElMCeQypSZmj6Ru6DttOOtl3KNkdJ17ApQuGNCfzpk4cClasVrnIu45++2DBwG4LNMQAfaA==} + + '@shikijs/engine-javascript@1.17.6': + resolution: {integrity: sha512-5EEZj8tVcierNxm4V0UMS2PVoflb0UJPalWWV8l9rRg+oOfnr5VivqBJbkyq5grltVPvByIXvVbY8GSM/356jQ==} - '@shikijs/core@1.10.0': - resolution: {integrity: sha512-BZcr6FCmPfP6TXaekvujZcnkFmJHZ/Yglu97r/9VjzVndQA56/F4WjUKtJRQUnK59Wi7p/UTAOekMfCJv7jnYg==} + '@shikijs/engine-oniguruma@1.17.6': + resolution: {integrity: sha512-NLfWDMXFYe0nDHFbEoyZdz89aIIey3bTfF3zLYSUNTXks5s4uinZVmuPOFf1HfTeGqIn8uErJSBc3VnpJO7Alw==} - '@shikijs/core@1.12.1': - resolution: {integrity: sha512-biCz/mnkMktImI6hMfMX3H9kOeqsInxWEyCHbSlL8C/2TR1FqfmGxTLRNwYCKsyCyxWLbB8rEqXRVZuyxuLFmA==} + '@shikijs/types@1.17.6': + resolution: {integrity: sha512-ndTFa2TJi2w51ddKQDn3Jy8f6K4E5Q2x3dA3Hmsd3+YmxDQ10UWHjcw7VbVbKzv3VcUvYPLy+z9neqytSzUMUg==} + + '@shikijs/vscode-textmate@9.2.2': + resolution: {integrity: sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==} '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -3956,22 +4284,22 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@sindresorhus/is@5.6.0': resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@smithy/abort-controller@3.1.1': - resolution: {integrity: sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==} + '@smithy/abort-controller@3.0.0': + resolution: {integrity: sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==} engines: {node: '>=16.0.0'} '@smithy/chunked-blob-reader-native@3.0.0': @@ -3980,131 +4308,127 @@ packages: '@smithy/chunked-blob-reader@3.0.0': resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} - '@smithy/config-resolver@3.0.4': - resolution: {integrity: sha512-VwiOk7TwXoE7NlNguV/aPq1hFH72tqkHCw8eWXbr2xHspRyyv9DLpLXhq+Ieje+NwoqXrY0xyQjPXdOE6cGcHA==} + '@smithy/config-resolver@3.0.0': + resolution: {integrity: sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==} engines: {node: '>=16.0.0'} - '@smithy/core@2.2.4': - resolution: {integrity: sha512-qdY3LpMOUyLM/gfjjMQZui+UTNS7kBRDWlvyIhVOql5dn2J3isk9qUTBtQ1CbDH8MTugHis1zu3h4rH+Qmmh4g==} + '@smithy/core@2.0.1': + resolution: {integrity: sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==} engines: {node: '>=16.0.0'} - '@smithy/credential-provider-imds@3.1.3': - resolution: {integrity: sha512-U1Yrv6hx/mRK6k8AncuI6jLUx9rn0VVSd9NPEX6pyYFBfkSkChOc/n4zUb8alHUVg83TbI4OdZVo1X0Zfj3ijA==} + '@smithy/credential-provider-imds@3.0.0': + resolution: {integrity: sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-codec@3.1.2': - resolution: {integrity: sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==} + '@smithy/eventstream-codec@3.0.0': + resolution: {integrity: sha512-PUtyEA0Oik50SaEFCZ0WPVtF9tz/teze2fDptW6WRXl+RrEenH8UbEjudOz8iakiMl3lE3lCVqYf2Y+znL8QFQ==} - '@smithy/eventstream-serde-browser@3.0.4': - resolution: {integrity: sha512-Eo4anLZX6ltGJTZ5yJMc80gZPYYwBn44g0h7oFq6et+TYr5dUsTpIcDbz2evsOKIZhZ7zBoFWHtBXQ4QQeb5xA==} + '@smithy/eventstream-serde-browser@3.0.0': + resolution: {integrity: sha512-NB7AFiPN4NxP/YCAnrvYR18z2/ZsiHiF7VtG30gshO9GbFrIb1rC8ep4NGpJSWrz6P64uhPXeo4M0UsCLnZKqw==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-config-resolver@3.0.3': - resolution: {integrity: sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==} + '@smithy/eventstream-serde-config-resolver@3.0.0': + resolution: {integrity: sha512-RUQG3vQ3LX7peqqHAbmayhgrF5aTilPnazinaSGF1P0+tgM3vvIRWPHmlLIz2qFqB9LqFIxditxc8O2Z6psrRw==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-node@3.0.4': - resolution: {integrity: sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==} + '@smithy/eventstream-serde-node@3.0.0': + resolution: {integrity: sha512-baRPdMBDMBExZXIUAoPGm/hntixjt/VFpU6+VmCyiYJYzRHRxoaI1MN+5XE+hIS8AJ2GCHLMFEIOLzq9xx1EgQ==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-universal@3.0.4': - resolution: {integrity: sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==} + '@smithy/eventstream-serde-universal@3.0.0': + resolution: {integrity: sha512-HNFfShmotWGeAoW4ujP8meV9BZavcpmerDbPIjkJbxKbN8RsUcpRQ/2OyIxWNxXNH2GWCAxuSB7ynmIGJlQ3Dw==} engines: {node: '>=16.0.0'} - '@smithy/fetch-http-handler@3.2.0': - resolution: {integrity: sha512-vFvDxMrc6sO5Atec8PaISckMcAwsCrRhYxwUylg97bRT2KZoumOF7qk5+6EVUtuM1IG9AJV5aqXnHln9ZdXHpg==} + '@smithy/fetch-http-handler@3.0.1': + resolution: {integrity: sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==} - '@smithy/hash-blob-browser@3.1.2': - resolution: {integrity: sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==} + '@smithy/hash-blob-browser@3.0.0': + resolution: {integrity: sha512-/Wbpdg+bwJvW7lxR/zpWAc1/x/YkcqguuF2bAzkJrvXriZu1vm8r+PUdE4syiVwQg7PPR2dXpi3CLBb9qRDaVQ==} - '@smithy/hash-node@3.0.3': - resolution: {integrity: sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==} + '@smithy/hash-node@3.0.0': + resolution: {integrity: sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==} engines: {node: '>=16.0.0'} - '@smithy/hash-stream-node@3.1.2': - resolution: {integrity: sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==} + '@smithy/hash-stream-node@3.0.0': + resolution: {integrity: sha512-J0i7de+EgXDEGITD4fxzmMX8CyCNETTIRXlxjMiNUvvu76Xn3GJ31wQR85ynlPk2wI1lqoknAFJaD1fiNDlbIA==} engines: {node: '>=16.0.0'} - '@smithy/invalid-dependency@3.0.3': - resolution: {integrity: sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==} - - '@smithy/is-array-buffer@2.2.0': - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} + '@smithy/invalid-dependency@3.0.0': + resolution: {integrity: sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==} '@smithy/is-array-buffer@3.0.0': resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} engines: {node: '>=16.0.0'} - '@smithy/md5-js@3.0.3': - resolution: {integrity: sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==} + '@smithy/md5-js@3.0.0': + resolution: {integrity: sha512-Tm0vrrVzjlD+6RCQTx7D3Ls58S3FUH1ZCtU1MIh/qQmaOo1H9lMN2as6CikcEwgattnA9SURSdoJJ27xMcEfMA==} - '@smithy/middleware-content-length@3.0.3': - resolution: {integrity: sha512-Dbz2bzexReYIQDWMr+gZhpwBetNXzbhnEMhYKA6urqmojO14CsXjnsoPYO8UL/xxcawn8ZsuVU61ElkLSltIUQ==} + '@smithy/middleware-content-length@3.0.0': + resolution: {integrity: sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==} engines: {node: '>=16.0.0'} - '@smithy/middleware-endpoint@3.0.4': - resolution: {integrity: sha512-whUJMEPwl3ANIbXjBXZVdJNgfV2ZU8ayln7xUM47rXL2txuenI7jQ/VFFwCzy5lCmXScjp6zYtptW5Evud8e9g==} + '@smithy/middleware-endpoint@3.0.0': + resolution: {integrity: sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==} engines: {node: '>=16.0.0'} - '@smithy/middleware-retry@3.0.7': - resolution: {integrity: sha512-f5q7Y09G+2h5ivkSx5CHvlAT4qRR3jBFEsfXyQ9nFNiWQlr8c48blnu5cmbTQ+p1xmIO14UXzKoF8d7Tm0Gsjw==} + '@smithy/middleware-retry@3.0.1': + resolution: {integrity: sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==} engines: {node: '>=16.0.0'} - '@smithy/middleware-serde@3.0.3': - resolution: {integrity: sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==} + '@smithy/middleware-serde@3.0.0': + resolution: {integrity: sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==} engines: {node: '>=16.0.0'} - '@smithy/middleware-stack@3.0.3': - resolution: {integrity: sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==} + '@smithy/middleware-stack@3.0.0': + resolution: {integrity: sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==} engines: {node: '>=16.0.0'} - '@smithy/node-config-provider@3.1.3': - resolution: {integrity: sha512-rxdpAZczzholz6CYZxtqDu/aKTxATD5DAUDVj7HoEulq+pDSQVWzbg0btZDlxeFfa6bb2b5tUvgdX5+k8jUqcg==} + '@smithy/node-config-provider@3.0.0': + resolution: {integrity: sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==} engines: {node: '>=16.0.0'} - '@smithy/node-http-handler@3.1.1': - resolution: {integrity: sha512-L71NLyPeP450r2J/mfu1jMc//Z1YnqJt2eSNw7uhiItaONnBLDA68J5jgxq8+MBDsYnFwNAIc7dBG1ImiWBiwg==} + '@smithy/node-http-handler@3.0.0': + resolution: {integrity: sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==} engines: {node: '>=16.0.0'} - '@smithy/property-provider@3.1.3': - resolution: {integrity: sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==} + '@smithy/property-provider@3.0.0': + resolution: {integrity: sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==} engines: {node: '>=16.0.0'} - '@smithy/protocol-http@4.0.3': - resolution: {integrity: sha512-x5jmrCWwQlx+Zv4jAtc33ijJ+vqqYN+c/ZkrnpvEe/uDas7AT7A/4Rc2CdfxgWv4WFGmEqODIrrUToPN6DDkGw==} + '@smithy/protocol-http@4.0.0': + resolution: {integrity: sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==} engines: {node: '>=16.0.0'} - '@smithy/querystring-builder@3.0.3': - resolution: {integrity: sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==} + '@smithy/querystring-builder@3.0.0': + resolution: {integrity: sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==} engines: {node: '>=16.0.0'} - '@smithy/querystring-parser@3.0.3': - resolution: {integrity: sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==} + '@smithy/querystring-parser@3.0.0': + resolution: {integrity: sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==} engines: {node: '>=16.0.0'} - '@smithy/service-error-classification@3.0.3': - resolution: {integrity: sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==} + '@smithy/service-error-classification@3.0.0': + resolution: {integrity: sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==} engines: {node: '>=16.0.0'} - '@smithy/shared-ini-file-loader@3.1.3': - resolution: {integrity: sha512-Z8Y3+08vgoDgl4HENqNnnzSISAaGrF2RoKupoC47u2wiMp+Z8P/8mDh1CL8+8ujfi2U5naNvopSBmP/BUj8b5w==} + '@smithy/shared-ini-file-loader@3.0.0': + resolution: {integrity: sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==} engines: {node: '>=16.0.0'} - '@smithy/signature-v4@3.1.2': - resolution: {integrity: sha512-3BcPylEsYtD0esM4Hoyml/+s7WP2LFhcM3J2AGdcL2vx9O60TtfpDOL72gjb4lU8NeRPeKAwR77YNyyGvMbuEA==} + '@smithy/signature-v4@3.0.0': + resolution: {integrity: sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==} engines: {node: '>=16.0.0'} - '@smithy/smithy-client@3.1.5': - resolution: {integrity: sha512-x9bL9Mx2CT2P1OiUlHM+ZNpbVU6TgT32f9CmTRzqIHA7M4vYrROCWEoC3o4xHNJASoGd4Opos3cXYPgh+/m4Ww==} + '@smithy/smithy-client@3.0.1': + resolution: {integrity: sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==} engines: {node: '>=16.0.0'} - '@smithy/types@3.3.0': - resolution: {integrity: sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==} + '@smithy/types@3.0.0': + resolution: {integrity: sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==} engines: {node: '>=16.0.0'} - '@smithy/url-parser@3.0.3': - resolution: {integrity: sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==} + '@smithy/url-parser@3.0.0': + resolution: {integrity: sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==} '@smithy/util-base64@3.0.0': resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} @@ -4117,10 +4441,6 @@ packages: resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} engines: {node: '>=16.0.0'} - '@smithy/util-buffer-from@2.2.0': - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} - '@smithy/util-buffer-from@3.0.0': resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} engines: {node: '>=16.0.0'} @@ -4129,52 +4449,48 @@ packages: resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} engines: {node: '>=16.0.0'} - '@smithy/util-defaults-mode-browser@3.0.7': - resolution: {integrity: sha512-Q2txLyvQyGfmjsaDbVV7Sg8psefpFcrnlGapDzXGFRPFKRBeEg6OvFK8FljqjeHSaCZ6/UuzQExUPqBR/2qlDA==} + '@smithy/util-defaults-mode-browser@3.0.1': + resolution: {integrity: sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==} engines: {node: '>= 10.0.0'} - '@smithy/util-defaults-mode-node@3.0.7': - resolution: {integrity: sha512-F4Qcj1fG6MGi2BSWCslfsMSwllws/WzYONBGtLybyY+halAcXdWhcew+mej8M5SKd5hqPYp4f7b+ABQEaeytgg==} + '@smithy/util-defaults-mode-node@3.0.1': + resolution: {integrity: sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==} engines: {node: '>= 10.0.0'} - '@smithy/util-endpoints@2.0.4': - resolution: {integrity: sha512-ZAtNf+vXAsgzgRutDDiklU09ZzZiiV/nATyqde4Um4priTmasDH+eLpp3tspL0hS2dEootyFMhu1Y6Y+tzpWBQ==} + '@smithy/util-endpoints@2.0.0': + resolution: {integrity: sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==} engines: {node: '>=16.0.0'} '@smithy/util-hex-encoding@3.0.0': resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} engines: {node: '>=16.0.0'} - '@smithy/util-middleware@3.0.3': - resolution: {integrity: sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==} + '@smithy/util-middleware@3.0.0': + resolution: {integrity: sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==} engines: {node: '>=16.0.0'} - '@smithy/util-retry@3.0.3': - resolution: {integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==} + '@smithy/util-retry@3.0.0': + resolution: {integrity: sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==} engines: {node: '>=16.0.0'} - '@smithy/util-stream@3.0.5': - resolution: {integrity: sha512-xC3L5PKMAT/Bh8fmHNXP9sdQ4+4aKVUU3EEJ2CF/lLk7R+wtMJM+v/1B4en7jO++Wa5spGzFDBCl0QxgbUc5Ug==} + '@smithy/util-stream@3.0.1': + resolution: {integrity: sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==} engines: {node: '>=16.0.0'} '@smithy/util-uri-escape@3.0.0': resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} engines: {node: '>=16.0.0'} - '@smithy/util-utf8@2.3.0': - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} - '@smithy/util-utf8@3.0.0': resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} engines: {node: '>=16.0.0'} - '@smithy/util-waiter@3.1.2': - resolution: {integrity: sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==} + '@smithy/util-waiter@3.0.0': + resolution: {integrity: sha512-+fEXJxGDLCoqRKVSmo0auGxaqbiCo+8oph+4auefYjaNxjOLKSY2MxVQfRzo65PaZv4fr+5lWg+au7vSuJJ/zw==} engines: {node: '>=16.0.0'} - '@socket.io/component-emitter@3.1.2': - resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + '@socket.io/component-emitter@3.1.0': + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} '@solidity-parser/parser@0.18.0': resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} @@ -4233,68 +4549,92 @@ packages: '@stablelib/x25519@1.0.3': resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} - '@storybook/addon-actions@8.1.11': - resolution: {integrity: sha512-jqYXgBgOVInStOCk//AA+dGkrfN8R7rDXA4lyu82zM59kvICtG9iqgmkSRDn0Z3zUkM+lIHZGoz0aLVQ8pxsgw==} + '@storybook/addon-actions@8.3.0': + resolution: {integrity: sha512-HvAc3fW979JVw8CSKXZMouvgrJ2BNLNWaUB8jNokQb3Us00P6igVKLwg/pBV8GBgDr5Ng4pHYqi/ZH+xzEYFFw==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-backgrounds@8.1.11': - resolution: {integrity: sha512-naGf1ovmsU2pSWb270yRO1IidnO+0YCZ5Tcb8I4rPhZ0vsdXNURYKS1LPSk1OZkvaUXdeB4Im9HhHfUBJOW9oQ==} + '@storybook/addon-backgrounds@8.3.0': + resolution: {integrity: sha512-qaV/QsXoviAmBYFszI/KN1CaI/LcACGX9RCBB54fMau3JuouIBU/zTl2jY2+BioCBk6oY8KqcnAS1coOZzlNXQ==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-controls@8.1.11': - resolution: {integrity: sha512-q/Vt4meNVlFlBWIMCJhx6r+bqiiYocCta2RoUK5nyIZUiLzHncKHX6JnCU36EmJzRyah9zkwjfCb2G1r9cjnoQ==} + '@storybook/addon-controls@8.3.0': + resolution: {integrity: sha512-Id4j6Neimkdq0OyfQ3qkHpKLisbN08M8pXHDI/A0VeF91xEGBdc1bJgS/EU+ifa24tr5SRYwlAlcBDAWJbZMfA==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-docs@8.1.11': - resolution: {integrity: sha512-69dv+CE4R5wFU7xnJmhuyEbLN2PEVDV3N/BbgJqeucIYPmm6zDV83Q66teCHKYtRln3BFUqPH5mxsjiHobxfJQ==} + '@storybook/addon-docs@8.3.0': + resolution: {integrity: sha512-LrvWBDX5Vi//82Q78QRbTsG+9rJU9JJFAVPk1NnLp2Yn0F4FueVzIw8AabAkZFy0LHPMGV+EHpkPtYz4Czkhgw==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-essentials@8.1.11': - resolution: {integrity: sha512-uRTpcIZQnflML8H+2onicUNIIssKfuviW8Lyrs/KFwSZ1rMcYzhwzCNbGlIbAv04tgHe5NqEyNhb+DVQcZQBzg==} + '@storybook/addon-essentials@8.3.0': + resolution: {integrity: sha512-y+hlMnIoD+h/diY7BvIeySPCz/ZtJPPZfS/COQuPRXfPWCr37p9XLEz3E+m2spniAbgGv9KpvdqQd0kWcwwfiA==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-highlight@8.1.11': - resolution: {integrity: sha512-Iu8FCAd4ETsB6QF4xDE/OLLZY3HOFopuLM5KE0f58jnccF5zAVGr1Rj/54p6TeK0PEou0tLRPFuZs+LPlEzrSw==} + '@storybook/addon-highlight@8.3.0': + resolution: {integrity: sha512-bS1rqzbwGgeTKVLYEyY+6DzpafLtDLnoSF+KzRIiV7/1H30evhwVSzkgX1L2F6+ssS1n9WrRJeglniv9j+5mGQ==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-interactions@8.1.11': - resolution: {integrity: sha512-nkc01z61mYM1kxf0ncBQLlFnnwW4RAVPfRSxK9BdbFN3AAvFiHCwVZdn71mi+C3L8oTqYR6o32e0RlXk+AjhHA==} + '@storybook/addon-interactions@8.3.0': + resolution: {integrity: sha512-nAVUFpt2kTaPMY7RxfZwiYipngxf76dfx1E/QP9n/333+/pe88UwXbUkmLKpyC8EWqZXDI0oSV5XDDzoI5x3dA==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-links@8.1.11': - resolution: {integrity: sha512-HlV2RQSrZyi+55W1B1a9eWNuJdNpWx0g3j7s2arNlNmbd6/kfWAp84axBstI1tL0nW4svut7bWlCsMSOIden+A==} + '@storybook/addon-links@8.3.0': + resolution: {integrity: sha512-nUnoMPPuxM8yJ7LCrppsUrn3gwqt4E0si9fqIIb5IkB56vz48RxCO9MtO1qjwhWosfMdN6boHaOl1Qc6IxV3Lg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.0 peerDependenciesMeta: react: optional: true - '@storybook/addon-measure@8.1.11': - resolution: {integrity: sha512-LkQD3SiLWaWt53aLB3EnmhD9Im8EOO+HKSUE+XGnIJRUcHHRqHfvDkN9KX7T1DCWbfRE5WzMHF5o23b3UiAANw==} + '@storybook/addon-measure@8.3.0': + resolution: {integrity: sha512-0TZ2ihzX0mRr1rNrFDieDsIKASZ2qUg3eHDkskLKOhxwoUHqsLzXlvS/scKZ+zb8pgjrvsBAsjyPstlrK+z0Zg==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-outline@8.1.11': - resolution: {integrity: sha512-vco3RLVjkcS25dNtj1lxmjq4fC0Nq08KNLMS5cbNPVJWNTuSUi/2EthSTQQCdpfMV/p6u+D5uF20A9Pl0xJFXw==} + '@storybook/addon-outline@8.3.0': + resolution: {integrity: sha512-xTvBGgX6RIkKjQiAi9LvPGbGuBa6tsJS2jCmjwiei3SX3I56E6Bf3KASsFH2x8j9khMVsgQcfA3QDIhjwatdgw==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-themes@8.1.11': - resolution: {integrity: sha512-tEOzNiLSAz0/kQKkqV85V7olkJpinCaKpxRpUQpFYut/yQVl+fUchgkfCKrQZuQuvSrebhMmQQ8fbqZq8nf2pw==} + '@storybook/addon-themes@8.3.0': + resolution: {integrity: sha512-kAvpsQBrIMe7u8zU5+WoYKPhSo/MzgYXHARjYKhJYpsFatCv/npg/hLOiBlKWV5FzEqjQx9dAZiehXDF3JsCZw==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-toolbars@8.1.11': - resolution: {integrity: sha512-reIKB0+JTiP+GNzynlDcRf4xmv9+j/DQ94qiXl2ZG5+ufKilH8DiRZpVA/i0x+4+TxdGdOJr1/pOf8tAmhNEoQ==} + '@storybook/addon-toolbars@8.3.0': + resolution: {integrity: sha512-/3/jnd70tnvh3x1EL8axE4TR9EHwC+bBch1uIc3vH/lmyZBqSBVA50clz23FvjhykjcaKQogcugCuU1w5TJlBA==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/addon-viewport@8.1.11': - resolution: {integrity: sha512-qk4IcGnAgiAUQxt8l5PIQ293Za+w6wxlJQIpxr7+QM8OVkADPzXY0MmQfYWU9EQplrxAC2MSx3/C1gZeq+MDOQ==} + '@storybook/addon-viewport@8.3.0': + resolution: {integrity: sha512-6h/0mKipUG6w2o5IOzyhvC/2ifJlSNIA60hLkJ291g42+ilzkydpby9TBN7FcnrVL3Bv+oLgkDLBWVCqma/fyw==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/blocks@8.1.11': - resolution: {integrity: sha512-eMed7PpL/hAVM6tBS7h70bEAyzbiSU9I/kye4jZ7DkCbAsrX6OKmC7pcHSDn712WTcf3vVqxy5jOKUmOXpc0eg==} + '@storybook/blocks@8.3.0': + resolution: {integrity: sha512-V7D5lv5R+GJya9cCZOCjmOVjhvP5J3KIaclQuuGGJda/ZD/SpwHcFOGSpo6sNR2UKHXXvb61oM8gRQQWDvqPlg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.0 peerDependenciesMeta: react: optional: true react-dom: optional: true - '@storybook/builder-manager@8.1.11': - resolution: {integrity: sha512-U7bmed4Ayg+OlJ8HPmLeGxLTHzDY7rxmxM4aAs4YL01fufYfBcjkIP9kFhJm+GJOvGm+YJEUAPe5mbM1P/bn0Q==} - - '@storybook/builder-vite@8.1.11': - resolution: {integrity: sha512-hG4eoNMCPgjZ2Ai+zSmk69zjsyEihe75XbJXtYfGRqjMWtz2+SAUFO54fLc2BD5svcUiTeN+ukWcTrwApyPsKg==} + '@storybook/builder-vite@8.3.0': + resolution: {integrity: sha512-9qo3zcZkEpy69E7cx9OHHexBe9+25vH0p+4sWZSjl2sjqjhaxLN5eXnODQbDsOKZNRVrLVTGmKxfFJzAJFnY0w==} peerDependencies: '@preact/preset-vite': '*' + storybook: ^8.3.0 typescript: '>= 4.3.x' vite: ^4.0.0 || ^5.0.0 vite-plugin-glimmerx: '*' @@ -4306,142 +4646,98 @@ packages: vite-plugin-glimmerx: optional: true - '@storybook/channels@8.1.11': - resolution: {integrity: sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA==} - - '@storybook/cli@8.1.11': - resolution: {integrity: sha512-4U48w9C7mVEKrykcPcfHwJkRyCqJ28XipbElACbjIIkQEqaHaOVtP3GeKIrgkoOXe/HK3O4zKWRP2SqlVS0r4A==} - hasBin: true - - '@storybook/client-logger@8.1.11': - resolution: {integrity: sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA==} - - '@storybook/codemod@8.1.11': - resolution: {integrity: sha512-/LCozjH1IQ1TOs9UQV59BE0X6UZ9q+C0NEUz7qmJZPrwAii3FkW4l7D/fwxblpMExaoxv0oE8NQfUz49U/5Ymg==} - - '@storybook/components@8.1.11': - resolution: {integrity: sha512-iXKsNu7VmrLBtjMfPj7S4yJ6T13GU6joKcVcrcw8wfrQJGlPFp4YaURPBUEDxvCt1XWi5JkaqJBvb48kIrROEQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - - '@storybook/core-common@8.1.11': - resolution: {integrity: sha512-Ix0nplD4I4DrV2t9B+62jaw1baKES9UbR/Jz9LVKFF9nsua3ON0aVe73dOjMxFWBngpzBYWe+zYBTZ7aQtDH4Q==} + '@storybook/components@8.3.0': + resolution: {integrity: sha512-SO/iTkmWp3aYCIy8DEhRMoOn6K7lcKTPNC/YjTvOFFzwq/CLq86WNqz6aX+wV5n6MvWTs7evSwMoz7lp4Lc4sw==} peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true + storybook: ^8.3.0 - '@storybook/core-events@8.1.11': - resolution: {integrity: sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A==} + '@storybook/core@8.3.0': + resolution: {integrity: sha512-UeErpD0xRIP2nFA2TjPYxtEyv24O6VRfq2XXU5ki2QPYnxOxAPBbrMHCADjgBwNS4S2NUWTaVBYxybISVbrj+w==} - '@storybook/core-server@8.1.11': - resolution: {integrity: sha512-L6dzQTmR0np/kagNONvvlm6lSvF1FNc9js3vxsEEPnEypLbhx8bDZaHmuhmBpYUzKyUMpRVQTE/WgjHLuBBuxA==} - - '@storybook/csf-plugin@8.1.11': - resolution: {integrity: sha512-hkA8gjFtSN/tabG0cuvmEqanMXtxPr3qTkp4UNSt1R6jBEgFHRG2y/KYLl367kDwOSFTT987ZgRfJJruU66Fvw==} - - '@storybook/csf-tools@8.1.11': - resolution: {integrity: sha512-6qMWAg/dBwCVIHzANM9lSHoirwqSS+wWmv+NwAs0t9S94M75IttHYxD3IyzwaSYCC5llp0EQFvtXXAuSfFbibg==} + '@storybook/csf-plugin@8.3.0': + resolution: {integrity: sha512-sCmeN/OVYj95TKkMqJqxbaztIbdv5jCrtrXuNg4oJaGzNucmMNAbmv2jK2tCNE6Uz2X9IMRcseFX/h9TgjyJ9A==} + peerDependencies: + storybook: ^8.3.0 '@storybook/csf@0.0.1': resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} - '@storybook/csf@0.1.9': - resolution: {integrity: sha512-JlZ6v/iFn+iKohKGpYXnMeNeTiiAMeFoDhYnPLIC8GnyyIWqEI9wJYrOK9i9rxlJ8NZAH/ojGC/u/xVC41qSgQ==} - - '@storybook/docs-mdx@3.1.0-next.0': - resolution: {integrity: sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ==} - - '@storybook/docs-tools@8.1.11': - resolution: {integrity: sha512-mEXtR9rS7Y+OdKtT/QG6JBGYR1L41mcDhIqhnk7RmYl9qJstVAegrCKWR53sPKFdTVOHU7dmu6k+BD+TqHpyyw==} + '@storybook/csf@0.1.11': + resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/icons@1.2.9': - resolution: {integrity: sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg==} + '@storybook/icons@1.2.10': + resolution: {integrity: sha512-310apKdDcjbbX2VSLWPwhEwAgjxTzVagrwucVZIdGPErwiAppX8KvBuWZgPo+rQLVrtH8S+pw1dbUwjcE6d7og==} engines: {node: '>=14.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@storybook/instrumenter@8.1.11': - resolution: {integrity: sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ==} - - '@storybook/manager-api@8.1.11': - resolution: {integrity: sha512-QSgwKfAw01K9YvvZj30iGBMgQ4YaCT3vojmttuqdH5ukyXkiO7pENLJj4Y+alwUeSi0g+SJeadCI3PXySBHOGg==} - - '@storybook/manager@8.1.11': - resolution: {integrity: sha512-e02y9dmxowo7cTKYm9am7UO6NOHoHy6Xi7xZf/UA932qLwFZUtk5pnwIEFaZWI3OQsRUCGhP+FL5zizU7uVZeg==} - - '@storybook/node-logger@8.1.11': - resolution: {integrity: sha512-wdzFo7B2naGhS52L3n1qBkt5BfvQjs8uax6B741yKRpiGgeAN8nz8+qelkD25MbSukxvbPgDot7WJvsMU/iCzg==} + '@storybook/instrumenter@8.3.0': + resolution: {integrity: sha512-oJmX8jbNKbPBlNMItRvEoaVAJWX1u6jsqXdIcNRCXo3PDdVnunVYz8vVkG8mbL8Cp/cKlsuQk7YBZA4IM5mRgg==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/preview-api@8.1.11': - resolution: {integrity: sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ==} + '@storybook/manager-api@8.3.0': + resolution: {integrity: sha512-5WBLEFHpe4H+9vZZLjNh7msIkyl9MPt4/C2nI+MXKZyU55xBBgiAy4fcD9aj02PcbhyR4JhLqbqmdeBe5Xafeg==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/preview@8.1.11': - resolution: {integrity: sha512-K/9NZmjnL0D1BROkTNWNoPqgL2UaocALRSqCARmkBLgU2Rn/FuZgEclHkWlYo6pUrmLNK+bZ+XzpNMu12iTbpg==} + '@storybook/preview-api@8.3.0': + resolution: {integrity: sha512-pHq/T7oWBfzc9TCIPYyJQUXuiUiFfmdrcYvuZE1kf46i7wXh9Q2/Kd3BUJWSCpBXUMoYfAxg9YysGljMII8LWA==} + peerDependencies: + storybook: ^8.3.0 - '@storybook/react-dom-shim@8.1.11': - resolution: {integrity: sha512-KVDSuipqkFjpGfldoRM5xR/N1/RNmbr+sVXqMmelr0zV2jGnexEZnoa7wRHk7IuXuivLWe8BxMxzvQWqjIa4GA==} + '@storybook/react-dom-shim@8.3.0': + resolution: {integrity: sha512-87X4cvgwFT1ll5SzXgQq6iGbkVCgxLBpBm58akF/hzpeRkwfJDncGi/A5hElOJrBg63IkznmSJE7tf9RkrboqQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.0 - '@storybook/router@8.1.11': - resolution: {integrity: sha512-nU5lsBvy0L8wBYOkjagh29ztZicDATpZNYrHuavlhQ2jznmmHdJvXKYk+VrMAbthjQ6ZBqfeeMNPR1UlnqR5Rw==} - - '@storybook/svelte-vite@8.1.11': - resolution: {integrity: sha512-wjUDKVt98RXmbA84TtSuiSX7/lyKKrTNZgNnfrbxcArsJAwotmrG5BEMLGd1VulREriYqrYbW7fYX2jBucTgxg==} + '@storybook/svelte-vite@8.3.0': + resolution: {integrity: sha512-L8y9vAvjrbO7A4P+xL/CdAKsGe6nZ25wTx+rNin/8FUaKqbyWvItUMObYFPp0GHw2zFcdXkD4frpbufQp6kRLg==} engines: {node: '>=18.0.0'} peerDependencies: '@sveltejs/vite-plugin-svelte': ^2.0.0 || ^3.0.0 + storybook: ^8.3.0 svelte: ^4.0.0 || ^5.0.0-next.65 vite: ^4.0.0 || ^5.0.0 - '@storybook/svelte@8.1.11': - resolution: {integrity: sha512-/xlfPj6q7EmIS+M0V1naI5NWGsK9iwHAHD1fuKmO8KTCqDAmq9bssCZBsaMcZHA7AL3tzpnWxLC52n4wjzaxhw==} + '@storybook/svelte@8.3.0': + resolution: {integrity: sha512-SFvyZ6Jf/RyC2iPySjDqvaXlD31SB51I+zNfIXgXq6JoHMe4TzVTE8FnvIODrY50Pq/y2f3btVqL1HQ9nYRnWA==} engines: {node: '>=18.0.0'} peerDependencies: + storybook: ^8.3.0 svelte: ^4.0.0 || ^5.0.0-next.65 - '@storybook/sveltekit@8.1.11': - resolution: {integrity: sha512-fP3mR9d1TAaSMYLqwjU4YHODoisf7EE0/oheaY8IAx6pbsZbbnLCBKlvH2+i74u8NmLKHS5aFZePd9XiHlowwg==} + '@storybook/sveltekit@8.3.0': + resolution: {integrity: sha512-KhUel8y2ebzvWA/2xV3r+JSWw/zM2N8k/5k/GElZEOo0jI0vgP6dKaGEgXjqqX4uy+sGwpk+3/UC6JR5e5gdGA==} engines: {node: '>=18.0.0'} peerDependencies: + storybook: ^8.3.0 svelte: ^4.0.0 || ^5.0.0-next.65 vite: ^4.0.0 || ^5.0.0 - '@storybook/telemetry@8.1.11': - resolution: {integrity: sha512-Jqvm7HcZismKzPuebhyLECO6KjGiSk4ycbca1WUM/TUvifxCXqgoUPlHHQEEfaRdHS63/MSqtMNjLsQRLC/vNQ==} - - '@storybook/test@8.1.11': - resolution: {integrity: sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ==} - - '@storybook/theming@8.1.11': - resolution: {integrity: sha512-Chn/opjO6Rl1isNobutYqAH2PjKNkj09YBw/8noomk6gElSa3JbUTyaG/+JCHA6OG/9kUsqoKDb5cZmAKNq/jA==} + '@storybook/test@8.3.0': + resolution: {integrity: sha512-d8y8ST8YY/pSjTxBcWitKM7YbbupN8D0obVlciZRt6WW3o8WUz6iwMuzuJuiUVwtxiRtdKL9jygC5M+aaCpFYQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + storybook: ^8.3.0 - '@storybook/types@8.1.11': - resolution: {integrity: sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw==} + '@storybook/theming@8.3.0': + resolution: {integrity: sha512-lJCarAzswZvUgBt/o1LMJp+07Io5G2VI1+Fw+bgn+92kRD8otCFwuMZIy0u7cEjHiEGqGnpzThlIki6vFjEXeA==} + peerDependencies: + storybook: ^8.3.0 - '@sveltejs/adapter-auto@3.2.2': - resolution: {integrity: sha512-Mso5xPCA8zgcKrv+QioVlqMZkyUQ5MjDJiEPuG/Z7cV/5tmwV7LmcVWk5tZ+H0NCOV1x12AsoSpt/CwFwuVXMA==} + '@sveltejs/adapter-auto@3.2.0': + resolution: {integrity: sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==} peerDependencies: '@sveltejs/kit': ^2.0.0 - '@sveltejs/kit@2.5.24': - resolution: {integrity: sha512-Nr2oxsCsDfEkdS/zzQQQbsPYTbu692Qs3/iE3L7VHzCVjG2+WujF9oMUozWI7GuX98KxYSoPMlAsfmDLSg44hQ==} + '@sveltejs/kit@2.5.27': + resolution: {integrity: sha512-CcbRTzl+65oWljAASL6UlxM4x3NWwd0fjq5fQOfP243vs50myFQ8lil0fr3Im6HeeQqYUCtnv8HjO8REWVPjTw==} engines: {node: '>=18.13'} hasBin: true peerDependencies: @@ -4449,28 +4745,32 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 - '@sveltejs/package@2.3.2': - resolution: {integrity: sha512-6M8/Te7iXRG7SiH92wugqfyoJpuepjn78L433LnXicUeMso9M/N4vdL9DPK3MfTkVVY4klhNRptVqme3p4oZWA==} + '@sveltejs/package@2.3.5': + resolution: {integrity: sha512-fxWSG+pJHxWwcKltG+JoQ+P1CPO7NHVuZD1Gchi/1mNN6C60yD/voHeeXlqr0HHGkvIrpAjRIHLjsavI77Qsiw==} engines: {node: ^16.14 || >=18} hasBin: true peerDependencies: svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 - '@sveltejs/vite-plugin-svelte-inspector@2.1.0': - resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} + '@sveltejs/vite-plugin-svelte-inspector@2.0.0': + resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} engines: {node: ^18.0.0 || >=20} peerDependencies: '@sveltejs/vite-plugin-svelte': ^3.0.0 svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 - '@sveltejs/vite-plugin-svelte@3.1.1': - resolution: {integrity: sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==} + '@sveltejs/vite-plugin-svelte@3.1.0': + resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -4480,30 +4780,13 @@ packages: peerDependencies: postcss: ^8.2.15 - '@testing-library/dom@10.1.0': - resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.4.5': - resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/bun': latest - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/bun': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true '@testing-library/user-event@14.5.2': resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} @@ -4514,8 +4797,8 @@ packages: '@ts-morph/common@0.20.0': resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@tsconfig/node10@1.0.9': + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -4541,8 +4824,8 @@ packages: '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/babel__traverse@7.20.5': + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} '@types/bn.js@5.1.5': resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} @@ -4550,39 +4833,27 @@ packages: '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + + '@types/chrome@0.0.136': + resolution: {integrity: sha512-XDEiRhLkMd+SB7Iw3ZUIj/fov3wLd4HyTdLltVszkgl1dBfc3Rb7oPMVZ2Mz2TLqnF7Ow+StbR8E7r9lqpb4DA==} + '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - '@types/cross-spawn@6.0.6': - resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} - '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/detect-port@1.3.5': - resolution: {integrity: sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==} - - '@types/diff@5.2.1': - resolution: {integrity: sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g==} - '@types/dns-packet@5.6.5': resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} - '@types/doctrine@0.0.3': - resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} - '@types/dom-screen-wake-lock@1.0.3': resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} - '@types/ejs@3.1.5': - resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==} - - '@types/emscripten@1.39.13': - resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} - '@types/eslint@8.56.10': resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} @@ -4598,9 +4869,18 @@ packages: '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/filesystem@0.0.35': + resolution: {integrity: sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==} + + '@types/filewriter@0.0.33': + resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} + '@types/find-cache-dir@3.2.1': resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} + '@types/har-format@1.2.15': + resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -4628,8 +4908,11 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/lodash@4.17.6': - resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==} + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/lodash@4.17.7': + resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -4649,47 +4932,47 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@18.19.39': - resolution: {integrity: sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==} + '@types/node@18.15.13': + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} - '@types/node@20.14.9': - resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} + '@types/node@18.19.31': + resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/node@20.12.7': + resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} '@types/object-hash@3.0.6': resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/pbkdf2@3.1.2': resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} - '@types/pretty-hrtime@1.0.3': - resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} - '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} '@types/pug@2.0.10': resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - '@types/qs@6.9.15': - resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + '@types/qs@6.9.16': + resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + '@types/react@18.3.5': + resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -4697,8 +4980,8 @@ packages: '@types/secp256k1@4.0.6': resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/semver@7.5.7': + resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==} '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} @@ -4718,6 +5001,9 @@ packages: '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} @@ -4730,8 +5016,19 @@ packages: '@types/yargs@17.0.32': resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - '@typescript-eslint/eslint-plugin@7.15.0': - resolution: {integrity: sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==} + '@typescript-eslint/eslint-plugin@7.4.0': + resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/eslint-plugin@7.9.0': + resolution: {integrity: sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -4741,8 +5038,18 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.15.0': - resolution: {integrity: sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==} + '@typescript-eslint/parser@7.7.0': + resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.9.0': + resolution: {integrity: sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4755,12 +5062,30 @@ packages: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@7.15.0': - resolution: {integrity: sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==} + '@typescript-eslint/scope-manager@7.4.0': + resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/scope-manager@7.7.0': + resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/scope-manager@7.9.0': + resolution: {integrity: sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.4.0': + resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==} engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - '@typescript-eslint/type-utils@7.15.0': - resolution: {integrity: sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==} + '@typescript-eslint/type-utils@7.9.0': + resolution: {integrity: sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4773,8 +5098,16 @@ packages: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@7.15.0': - resolution: {integrity: sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==} + '@typescript-eslint/types@7.4.0': + resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/types@7.7.0': + resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/types@7.9.0': + resolution: {integrity: sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -4786,8 +5119,26 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@7.15.0': - resolution: {integrity: sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==} + '@typescript-eslint/typescript-estree@7.4.0': + resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.7.0': + resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.9.0': + resolution: {integrity: sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -4801,8 +5152,14 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/utils@7.15.0': - resolution: {integrity: sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==} + '@typescript-eslint/utils@7.4.0': + resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/utils@7.9.0': + resolution: {integrity: sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4811,55 +5168,93 @@ packages: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@7.15.0': - resolution: {integrity: sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==} + '@typescript-eslint/visitor-keys@7.4.0': + resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/visitor-keys@7.7.0': + resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/visitor-keys@7.9.0': + resolution: {integrity: sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==} engines: {node: ^18.18.0 || >=20.0.0} '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vitest/coverage-v8@1.6.0': - resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + '@vitest/coverage-v8@1.4.0': + resolution: {integrity: sha512-4hDGyH1SvKpgZnIByr9LhGgCEuF9DKM34IBLCC/fVfy24Z3+PZ+Ii9hsVBsHvY1umM1aGPEjceRkzxCfcQ10wg==} peerDependencies: - vitest: 1.6.0 + vitest: 1.4.0 + + '@vitest/expect@1.5.0': + resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} '@vitest/expect@1.6.0': resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + + '@vitest/pretty-format@2.1.1': + resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} + + '@vitest/runner@1.5.0': + resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} + '@vitest/runner@1.6.0': resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + '@vitest/snapshot@1.5.0': + resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} + '@vitest/snapshot@1.6.0': resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + '@vitest/spy@1.5.0': + resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} + '@vitest/spy@1.6.0': resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + + '@vitest/utils@1.5.0': + resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} + '@vitest/utils@1.6.0': resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - '@volar/kit@2.4.0-alpha.18': - resolution: {integrity: sha512-dZMSNhesh23lhd61ax2l04IgIcYofAjm8M+5BKAmX47ROweyc8RrrslszCFUJynlmXx6JS1PoHqvo8+E0aAYQQ==} + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + + '@vitest/utils@2.1.1': + resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} + + '@volar/kit@2.4.5': + resolution: {integrity: sha512-ZzyErW5UiDfiIuJ/lpqc2Kx5PHDGDZ/bPlPJYpRcxlrn8Z8aDhRlsLHkNKcNiH65TmNahk2kbLaiejiqu6BD3A==} peerDependencies: typescript: '*' - '@volar/language-core@2.4.0-alpha.18': - resolution: {integrity: sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==} + '@volar/language-core@2.4.5': + resolution: {integrity: sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==} - '@volar/language-server@2.4.0-alpha.18': - resolution: {integrity: sha512-dciHEE/R5kzI0bY71QfkoCVQ3cQI6g9MHfA4oIP6UhnJy0CdleUalWSygOXoD3Nq7Yk6wn2BRrb1PP5MsadY/Q==} + '@volar/language-server@2.4.5': + resolution: {integrity: sha512-l5PswE0JzCtstTlwBUpikeSa3lNUBJhTuWtj9KclZTGi2Uex4RcqGOhTiDsUUtvdv/hEuYCxGq1EdJJPlQsD/g==} - '@volar/language-service@2.4.0-alpha.18': - resolution: {integrity: sha512-EuetrtbEtudi9buinWAG5U3Jam5dY27zXd/7GYnx542kBwanWOBM8i4DAQd0z7M11fOxXgybxPA933uaSyaOog==} + '@volar/language-service@2.4.5': + resolution: {integrity: sha512-xiFlL0aViGg6JhwAXyohPrdlID13uom8WQg6DWYaV8ob8RRy+zoLlBUI8SpQctwlWEO9poyrYK01revijAwkcw==} - '@volar/snapshot-document@2.4.0-alpha.18': - resolution: {integrity: sha512-JAeclEly/wnILhR4Pu9MpgBLInZJH49O1zoy8fU+pk5I+zpv7JIEby5z2UFAS60+sIDnxBdAGd7rZ5VibE70vg==} + '@volar/source-map@2.4.5': + resolution: {integrity: sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==} - '@volar/source-map@2.4.0-alpha.18': - resolution: {integrity: sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==} - - '@volar/typescript@2.4.0-alpha.18': - resolution: {integrity: sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==} + '@volar/typescript@2.4.5': + resolution: {integrity: sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==} '@vscode/emmet-helper@2.9.3': resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==} @@ -4867,8 +5262,17 @@ packages: '@vscode/l10n@0.0.18': resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - '@wagmi/cli@2.1.13': - resolution: {integrity: sha512-0lQILHXj7IZfivMa5yEN1OWu5dF17iCgIHOKaPNMMcB9uem+2oEumJEaj0EezZZXLZLNN/lbI7A4TCXNYuoEDg==} + '@wagmi/cli@2.1.15': + resolution: {integrity: sha512-mtTxbuCDRRSd/2tPAklM+4vFOq5E/0zS5OfLE3Ax2KcUWciOnjLJ0m6BAQ6HzqY9YfWo8DXa7UqxzUBkvPYltg==} + hasBin: true + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/cli@2.1.4': + resolution: {integrity: sha512-vamvEo/GeBjFxb5oZCvby4YZDOrK/RqD+tcWb5X0pqmJDyWbN2Mkv9DYTtVB+OtfVUzFKciN/8Vhw8luMtOJbw==} hasBin: true peerDependencies: typescript: '>=5.0.4' @@ -4876,6 +5280,16 @@ packages: typescript: optional: true + '@wagmi/connectors@4.1.18': + resolution: {integrity: sha512-K/iLH/Z8jwvgPAYESU/uCQtQBvcIR1Jrqk+t2uCDSxew/tYtkOo2yOjtaPuOb+xJ5OrMGg+0tVHhGChYXry9Ow==} + peerDependencies: + '@wagmi/core': 2.6.9 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + '@wagmi/connectors@4.3.10': resolution: {integrity: sha512-IZcsocBfDq6pe8sxkDgP2k9YNqv8udl2eSr2hx2JCESA44ixx5zRjoGNMAkKxlzM6uXjXLJKp/g1KYlpmoHkDg==} peerDependencies: @@ -4886,18 +5300,42 @@ packages: typescript: optional: true - '@wagmi/connectors@5.0.21': - resolution: {integrity: sha512-lbjXEv6HhOa9nXZ5r6NGFJdaadCt2Yj9hSWHjKuiTobrE6dEGQqG16mCQS17yXcvXpI62Q/sW6SL347JrBju/Q==} + '@wagmi/connectors@5.1.10': + resolution: {integrity: sha512-ybgKV09PIhgUgQ4atXTs2KOy4Hevd6f972SXfx6HTgsnFXlzxzN6o0aWjhavZOYjvx5tjuL3+8Mgqo0R7uP5Cg==} + peerDependencies: + '@wagmi/core': 2.13.5 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/core@2.10.2': + resolution: {integrity: sha512-SfQ1F7Azjlx4cKGfmg9+GEUGbukCxraoLYZyCUgTLpKw2OY+4sHsPRwHQENQt/YRWKMyG3/byEYRna2Kv1anpw==} + peerDependencies: + '@tanstack/query-core': '>=5.0.0' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + '@tanstack/query-core': + optional: true + typescript: + optional: true + + '@wagmi/core@2.13.5': + resolution: {integrity: sha512-lvX/hApJTSA/H2kOklokjIYiUpnT8CpBH80GeOiKxU0CGK1wNHTu20GRTCy0GF1t7jkNwPSG3m0SmnXmgYMmHw==} peerDependencies: - '@wagmi/core': 2.11.6 + '@tanstack/query-core': '>=5.0.0' typescript: '>=5.0.4' viem: 2.x peerDependenciesMeta: + '@tanstack/query-core': + optional: true typescript: optional: true - '@wagmi/core@2.11.6': - resolution: {integrity: sha512-Ohk7Bh+Q8kjzxEHImIq98CnPduz8n1a5bdwJi6F7zU3h62crhlVq7fZBYoBhoDgmX0ROVOMr8WW3XU3XhRwUOw==} + '@wagmi/core@2.8.0': + resolution: {integrity: sha512-u0CWfbpdv2T3jE1yZQPwxvLlUVMymMoy73g6UE4XYNilF+EjdYu43EjWNvvB9lJcfSyYk6/VdKNHxJ2G+iBxYw==} peerDependencies: '@tanstack/query-core': '>=5.0.0' typescript: '>=5.0.4' @@ -4908,20 +5346,33 @@ packages: typescript: optional: true + '@walletconnect/core@2.11.2': + resolution: {integrity: sha512-bB4SiXX8hX3/hyBfVPC5gwZCXCl+OPj+/EDVM71iAO3TDsh78KPbrVAbDnnsbHzZVHlsMohtXX3j5XVsheN3+g==} + + '@walletconnect/core@2.12.2': + resolution: {integrity: sha512-7Adv/b3pp9F42BkvReaaM4KS8NEvlkS7AMtwO3uF/o6aRMKtcfTJq9/jgWdKJh4RP8pPRTRFjCw6XQ/RZtT4aQ==} + '@walletconnect/core@2.13.0': resolution: {integrity: sha512-blDuZxQenjeXcVJvHxPznTNl6c/2DO4VNrFnus+qHmO6OtT5lZRowdMtlCaCNb1q0OxzgrmBDcTOCbFcCpio/g==} - '@walletconnect/core@2.13.3': - resolution: {integrity: sha512-TdF+rC6rONJGyOUtt/nLkbyQWjnkwbD3kXq3ZA0Q7+tYtmSjTDE4wbArlLbHIbtf69g+9/DpEVEQimWWcEOn2g==} + '@walletconnect/core@2.16.1': + resolution: {integrity: sha512-UlsnEMT5wwFvmxEjX8s4oju7R3zadxNbZgsFeHEsjh7uknY2zgmUe1Lfc5XU6zyPb1Jx7Nqpdx1KN485ee8ogw==} + engines: {node: '>=18'} '@walletconnect/environment@1.0.1': resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + '@walletconnect/ethereum-provider@2.11.2': + resolution: {integrity: sha512-BUDqee0Uy2rCZVkW5Ao3q6Ado/3fePYnFdryVF+YL6bPhj+xQZ5OfKodl+uvs7Rwq++O5wTX2RqOTzpW7+v+Mg==} + + '@walletconnect/ethereum-provider@2.12.2': + resolution: {integrity: sha512-vBl2zCnNm2iPaomJdr5YT16cT7aa8cH2WFs6879XPngU5i7HXS3bU6TamhyhKKl13sdIfifmCkCC+RWn5GdPMw==} + '@walletconnect/ethereum-provider@2.13.0': resolution: {integrity: sha512-dnpW8mmLpWl1AZUYGYZpaAfGw1HFkL0WSlhk5xekx3IJJKn4pLacX2QeIOo0iNkzNQxZfux1AK4Grl1DvtzZEA==} - '@walletconnect/ethereum-provider@2.13.3': - resolution: {integrity: sha512-gThsYguFJ7XZp18GP23W6TooQaS6XlF4faFDXPCQVqlWjzEatkkQ2R6Hhv4a4qk4D21qNXirCFnI59Xhbj0KJQ==} + '@walletconnect/ethereum-provider@2.16.1': + resolution: {integrity: sha512-oD7DNCssUX3plS5gGUZ9JQ63muQB/vxO68X6RzD2wd8gBsYtSPw4BqYFc7KTO6dUizD6gfPirw32yW2pTvy92w==} '@walletconnect/events@1.0.1': resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} @@ -4932,9 +5383,15 @@ packages: '@walletconnect/heartbeat@1.2.2': resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} + '@walletconnect/jsonrpc-http-connection@1.0.7': + resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} + '@walletconnect/jsonrpc-http-connection@1.0.8': resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} + '@walletconnect/jsonrpc-provider@1.0.13': + resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + '@walletconnect/jsonrpc-provider@1.0.14': resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} @@ -4973,44 +5430,74 @@ packages: '@walletconnect/relay-api@1.0.10': resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} + '@walletconnect/relay-api@1.0.11': + resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==} + + '@walletconnect/relay-api@1.0.9': + resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==} + '@walletconnect/relay-auth@1.0.4': resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} '@walletconnect/safe-json@1.0.2': resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + '@walletconnect/sign-client@2.11.2': + resolution: {integrity: sha512-MfBcuSz2GmMH+P7MrCP46mVE5qhP0ZyWA0FyIH6/WuxQ6G+MgKsGfaITqakpRPsykWOJq8tXMs3XvUPDU413OQ==} + + '@walletconnect/sign-client@2.12.2': + resolution: {integrity: sha512-cM0ualXj6nVvLqS4BDNRk+ZWR+lubcsz/IHreH+3wYrQ2sV+C0fN6ctrd7MMGZss0C0qacWCx0pm62ZBuoKvqA==} + '@walletconnect/sign-client@2.13.0': resolution: {integrity: sha512-En7KSvNUlQFx20IsYGsFgkNJ2lpvDvRsSFOT5PTdGskwCkUfOpB33SQJ6nCrN19gyoKPNvWg80Cy6MJI0TjNYA==} - '@walletconnect/sign-client@2.13.3': - resolution: {integrity: sha512-3Pcq6trHWdBZn5X0VUFQ3zJaaqyEbMW9WNVKcZ2SakIpQAwySd08Mztvq48G98jfucdgP3tjGPbBvzHX9vJX7w==} + '@walletconnect/sign-client@2.16.1': + resolution: {integrity: sha512-s2Tx2n2duxt+sHtuWXrN9yZVaHaYqcEcjwlTD+55/vs5NUPlISf+fFmZLwSeX1kUlrSBrAuxPUcqQuRTKcjLOA==} '@walletconnect/time@1.0.2': resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + '@walletconnect/types@2.11.2': + resolution: {integrity: sha512-p632MFB+lJbip2cvtXPBQslpUdiw1sDtQ5y855bOlAGquay+6fZ4h1DcDePeKQDQM3P77ax2a9aNPZxV6y/h1Q==} + '@walletconnect/types@2.12.0': resolution: {integrity: sha512-uhB3waGmujQVJcPgJvGOpB8RalgYSBT+HpmVbfl4Qe0xJyqpRUo4bPjQa0UYkrHaW20xIw94OuP4+FMLYdeemg==} + '@walletconnect/types@2.12.2': + resolution: {integrity: sha512-9CmwTlPbrFTzayTL9q7xM7s3KTJkS6kYFtH2m1/fHFgALs6pIUjf1qAx1TF2E4tv7SEzLAIzU4NqgYUt2vWXTg==} + '@walletconnect/types@2.13.0': resolution: {integrity: sha512-MWaVT0FkZwzYbD3tvk8F+2qpPlz1LUSWHuqbINUtMXnSzJtXN49Y99fR7FuBhNFtDalfuWsEK17GrNA+KnAsPQ==} - '@walletconnect/types@2.13.3': - resolution: {integrity: sha512-9UdtLoQqwGFfepCPprUAXeUbKg9zyDarPRmEJVco51OWXHCOpvRgroWk54fQHDhCUIfDELjObY6XNAzNrmNYUA==} + '@walletconnect/types@2.16.1': + resolution: {integrity: sha512-9P4RG4VoDEF+yBF/n2TF12gsvT/aTaeZTVDb/AOayafqiPnmrQZMKmNCJJjq1sfdsDcHXFcZWMGsuCeSJCmrXA==} + + '@walletconnect/universal-provider@2.11.2': + resolution: {integrity: sha512-cNtIn5AVoDxKAJ4PmB8m5adnf5mYQMUamEUPKMVvOPscfGtIMQEh9peKsh2AN5xcRVDbgluC01Id545evFyymw==} + + '@walletconnect/universal-provider@2.12.2': + resolution: {integrity: sha512-0k5ZgSkABopQLVhkiwl2gRGG7dAP4SWiI915pIlyN5sRvWV+qX1ALhWAmRcdv0TXWlKHDcDgPJw/q2sCSAHuMQ==} '@walletconnect/universal-provider@2.13.0': resolution: {integrity: sha512-B5QvO8pnk5Bqn4aIt0OukGEQn2Auk9VbHfhQb9cGwgmSCd1GlprX/Qblu4gyT5+TjHMb1Gz5UssUaZWTWbDhBg==} - '@walletconnect/universal-provider@2.13.3': - resolution: {integrity: sha512-2tuV2d8AdB4Fg/uMs8IdNHrjYy1Tz1uT5kzaT8X1/wx5DHHa/oaheoY5kDZHI0L1oNIg/OlM0/ovonGIcI5ddw==} + '@walletconnect/universal-provider@2.16.1': + resolution: {integrity: sha512-q/tyWUVNenizuClEiaekx9FZj/STU1F3wpDK4PUIh3xh+OmUI5fw2dY3MaNDjyb5AyrS0M8BuQDeuoSuOR/Q7w==} + + '@walletconnect/utils@2.11.2': + resolution: {integrity: sha512-LyfdmrnZY6dWqlF4eDrx5jpUwsB2bEPjoqR5Z6rXPiHJKUOdJt7az+mNOn5KTSOlRpd1DmozrBrWr+G9fFLYVw==} '@walletconnect/utils@2.12.0': resolution: {integrity: sha512-GIpfHUe1Bjp1Tjda0SkJEizKOT2biuv7VPFnKsOLT1T+8QxEP9NruC+K2UUEvijS1Qr/LKH9P5004RYNgrch+w==} + '@walletconnect/utils@2.12.2': + resolution: {integrity: sha512-zf50HeS3SfoLv1N9GPl2IXTZ9TsXfet4usVAsZmX9P6/Xzq7d/7QakjVQCHH/Wk1O9XkcsfeoZoUhRxoMJ5uJw==} + '@walletconnect/utils@2.13.0': resolution: {integrity: sha512-q1eDCsRHj5iLe7fF8RroGoPZpdo2CYMZzQSrw1iqL+2+GOeqapxxuJ1vaJkmDUkwgklfB22ufqG6KQnz78sD4w==} - '@walletconnect/utils@2.13.3': - resolution: {integrity: sha512-hjyyNhnhTCezGNr6OCfKRzqRsiak+p+YP57iRo1Tsf222fsj/9JD++MP97YiDwc4e4xXaZp/boiLB+8hJHsCog==} + '@walletconnect/utils@2.16.1': + resolution: {integrity: sha512-aoQirVoDoiiEtYeYDtNtQxFzwO/oCrz9zqeEEXYJaAwXlGVTS34KFe7W3/Rxd/pldTYKFOZsku2EzpISfH8Wsw==} '@walletconnect/window-getters@1.0.1': resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} @@ -5018,18 +5505,38 @@ packages: '@walletconnect/window-metadata@1.0.1': resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + '@web3modal/common@4.1.11': + resolution: {integrity: sha512-zcoaixcI3dLC/D0QlhpT8MNCd717O1/3r1AemC5/9Wbk2F+YKXkzJZHmWlXoTvlTw9DH07rJzs9YTPxFyn855w==} + '@web3modal/common@4.2.3': resolution: {integrity: sha512-n0lvhoRjViqxmkgpy+iEM6E3HBylUgdxUDJU4hUxGmmrbGZGEP7USBRnQOEgXLqLCtWvxKjUAO33JBV/De+Osw==} - '@web3modal/common@5.1.0': - resolution: {integrity: sha512-TIYncrKDnFKE+q0mudzVCvGOZdNWa0kzkp+iL0zpbHm9sL+ceV4eOCip09Xcvrb5HeaBv1ROgAMPGLmpVCO3AA==} + '@web3modal/common@5.1.8': + resolution: {integrity: sha512-W3tvTQ5FPauFjDSRIx3H6SurzzDHPeN3q7cMaxuOZb3Scf76vMkz9Af970Q44Jmlz1PGDKZzhEsmOzw6LJF+CA==} + + '@web3modal/core@4.1.11': + resolution: {integrity: sha512-e475IIWywEtgH1CCB2Pl1C/wgPu0NzAvtTMOPSGNoHsw1ID2n6j/o4CURQb2HJjOoYQjTKKVkzXa44vFh2p9xw==} '@web3modal/core@4.2.3': resolution: {integrity: sha512-UykKZTELBpb6ey+IV6fkHWsLkjrIdILmRYzhlznyTPbm9qX5pOR9tH0Z3QGUo7YPFmUqMRH1tC9Irsr3SgIbbw==} + '@web3modal/polyfills@4.1.11': + resolution: {integrity: sha512-+aMmjGrLCKLo4gVAdWgFdOX2ZjExciSLw/YlZ01wLO8Yj3bZbCZ7sjBc9xndHOVMK0QyUzBtpCOpYMJzi+59jg==} + '@web3modal/polyfills@4.2.3': resolution: {integrity: sha512-RiGxh2hMLSD1s2aTjoejNK/UL377CJhGf5tzmdF1m5xsYHpil+Dnulpio8Yojnm27cOqQD+QiaYUKnHOxErLjQ==} + '@web3modal/scaffold-react@4.1.11': + resolution: {integrity: sha512-vouJHj77ZNKvR/Uyb3Hfc2UFSA4ZrrHmA0vbioCbgIh+V1rYT5XcAZDEu4AAo1qJ5NBRU1pkClVwAmQuWGY43w==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + '@web3modal/scaffold-react@4.2.3': resolution: {integrity: sha512-WRA244mO3qa9wnJtRa+mfXHkfW92VEkEt+HagLQuUcSRTQJH0Q95UF+EXZZ/r1mKbqdqIbpguewuF0dRtL/YrQ==} peerDependencies: @@ -5041,9 +5548,20 @@ packages: react-dom: optional: true + '@web3modal/scaffold-utils@4.1.11': + resolution: {integrity: sha512-nsS9yK5tp1N/VfecLLPc8H/dGJCzn0jElWjRS92VfGPhOSiEh5PIrPyCl9o6wUZsp4fH1YUsoSY2EFpPsuCWgw==} + '@web3modal/scaffold-utils@4.2.3': resolution: {integrity: sha512-z6t0ggYg1/8hpaKHUm77z2VyacjIZEZTI8IHSQYmHuRFGu5oDPJeAr1thr475JXdoGLYr08hwquZyed/ZINAvw==} + '@web3modal/scaffold-vue@4.1.11': + resolution: {integrity: sha512-PmIfD2TlKkZZa6V0sqwDtZ7t62BEk5JjCHd380QaZwGTbPEwS99leTWLKBTaxAPShK2p7+aj2Txss63wIXLRFg==} + peerDependencies: + vue: '>=3' + peerDependenciesMeta: + vue: + optional: true + '@web3modal/scaffold-vue@4.2.3': resolution: {integrity: sha512-0mlx/t0A7srcuFcxP3xuUt2ACFUUcAhyRIsNImtQHPq7QHx7i5zvabQ38iplDsWS0TA7j83hW5gxHycppa5PXg==} peerDependencies: @@ -5052,15 +5570,41 @@ packages: vue: optional: true + '@web3modal/scaffold@4.1.11': + resolution: {integrity: sha512-n8bP3cJNQxV8OD3s8bSj8QDbZvjn8a1Ui81jo2a3rIxOUAlD/cKRM8ivmNxiUdBMae8GP5CLiWtkIptmSLw40Q==} + '@web3modal/scaffold@4.2.3': resolution: {integrity: sha512-8K+IV+luDUvppKgmlgdA+RbQGT2STdRrgHVHFRsAqsORFoLiIYvlrpQlxvV7J5Xc1bgKEn3KvEXC+BH2NMqF4w==} + '@web3modal/siwe@4.1.11': + resolution: {integrity: sha512-gndcNA351mkAR0wUsO4dLS9CbpcFo+AQ2CUXF0Jx83DwaBStCVsX3yllfnYKh/gpVetF3B48mRUt9TTTJJ79dA==} + '@web3modal/siwe@4.2.3': resolution: {integrity: sha512-uPma0U/OxAy3LwnF7pCYYX8tn+ONBYNcssuVZxEGsusJD1kF4ueS8lK7eyQogyK5nXqOGdNESOjY1NImNNjMVw==} + '@web3modal/ui@4.1.11': + resolution: {integrity: sha512-lentHZvUpNjVasvNI8/jrVPIAV1M5zJKZ4Q4AeYwUJdEtlRon1uq10MRylmvlZAjWb98U130uJy245Fz87Th/w==} + '@web3modal/ui@4.2.3': resolution: {integrity: sha512-QPPgE0hii1gpAldTdnrP63D/ryI78Ohz99zRBp8vi81lawot7rbdUbryMoX13hMPCW9vW7JYyvX+jJN7uO3QwA==} + '@web3modal/wagmi@4.1.11': + resolution: {integrity: sha512-VoXV9idD0yV7jx0F2Xk722VXqQNCDKqDc+LR8WsuOU64TiTLJx9UDQpNcoigbC3bYCi/4Cpw41iSGgs7utbgyQ==} + peerDependencies: + '@wagmi/connectors': '>=4.0.0' + '@wagmi/core': '>=2.0.0' + react: '>=17' + react-dom: '>=17' + viem: '>=2.0.0' + vue: '>=3' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + vue: + optional: true + '@web3modal/wagmi@4.2.3': resolution: {integrity: sha512-oisBCMrOYn8TBgNaSPrumvMmTGox6+3Ii92zxQJalW5U/K9iBTxoejHT033Ss7mFEFybilcfXBAvGNFXfQmtkA==} peerDependencies: @@ -5078,31 +5622,31 @@ packages: vue: optional: true + '@web3modal/wallet@4.1.11': + resolution: {integrity: sha512-6eJSpNcrBxufJFEQu9+ZOMUZxPqa8438RvfYKCU9nLXwoBtweo6ecpQw2yhXDlrfG+uJZhFabtPxROabn2M8Kg==} + '@web3modal/wallet@4.2.3': resolution: {integrity: sha512-V+VpwmhQl9qeJMpzNkjpAaxercAsrr1O9oGRjrjD+c0q72NfdcbTalWSbjSQmqabI1M6N06Hw94FkAQuEfVGsg==} '@webgpu/types@0.1.21': resolution: {integrity: sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==} - '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15': - resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} - engines: {node: '>=14.15.0'} - peerDependencies: - esbuild: '>=0.10.0' - - '@yarnpkg/fslib@2.10.3': - resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - - '@yarnpkg/libzip@2.3.0': - resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - '@zerodevx/svelte-toast@0.9.5': resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} peerDependencies: svelte: ^3.57.0 || ^4.0.0 + abitype@0.9.10: + resolution: {integrity: sha512-FIS7U4n7qwAT58KibwYig5iFG4K61rbhAqaQh/UWj8v1Y8mjX3F8TC9gd8cz9yT1TYel9f8nS5NO5kZp2RW0jQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + abitype@0.9.8: resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} peerDependencies: @@ -5114,6 +5658,28 @@ packages: zod: optional: true + abitype@1.0.0: + resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.0.2: + resolution: {integrity: sha512-aFt4k2H+eiAKy/zxtnORa9iIb10BMBeWL18l8v4+QuwYEBXPxxjSB1bFZCzQmKPoj8m7j68K705l3uY+E2gAjg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + abitype@1.0.5: resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} peerDependencies: @@ -5125,10 +5691,24 @@ packages: zod: optional: true + abitype@1.0.6: + resolution: {integrity: sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} + abortcontroller-polyfill@1.7.5: + resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} + accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -5138,12 +5718,12 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.3: - resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - acorn@8.12.0: - resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true @@ -5152,15 +5732,14 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + + agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} ajv-draft-04@1.0.0: @@ -5174,8 +5753,11 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.16.0: - resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + amazon-cognito-identity-js@6.3.12: + resolution: {integrity: sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg==} anser@1.4.10: resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} @@ -5218,8 +5800,8 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - antlr4@4.13.1-patch-1: - resolution: {integrity: sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==} + antlr4@4.13.1: + resolution: {integrity: sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA==} engines: {node: '>=16'} any-promise@1.3.0: @@ -5232,9 +5814,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - app-root-dir@1.0.2: - resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} - appdirsjs@1.2.7: resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} @@ -5250,22 +5829,17 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} - aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} array-iterate@2.0.1: @@ -5275,8 +5849,8 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} array.prototype.flat@1.3.2: @@ -5287,19 +5861,27 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} engines: {node: '>= 0.4'} asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-parents@0.0.1: resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} @@ -5328,14 +5910,14 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^3.3.0 - astro-og-canvas@0.5.1: - resolution: {integrity: sha512-Xm37vqyMu3kNRU5tm7nheJf2n8+gweuaDX4efMxPSKEggSF8UznvgreOomzAPqDbcs8LM2fQsyOcMbJFtb3aZg==} + astro-og-canvas@0.5.0: + resolution: {integrity: sha512-nrwZpFL9d6tVJRKV5OLZa3xSSh+Cbaaoay/R9jAgHCrJ79WNyN2rgRT/+wtP1O/bCQ+wVP3GC3mBQN7vogImvg==} engines: {node: '>=18.14.1'} peerDependencies: astro: ^3.0.0 || ^4.0.0 - astro@4.13.3: - resolution: {integrity: sha512-MyhmM0v5sphiVwxAm5jjKxWeuPZijWPJ8Ajdign9QzEmLWSH8vUYIJWx/dWRQ6vF1I0jXrksoj3wtw5nzXt9nw==} + astro@4.15.6: + resolution: {integrity: sha512-SWcUNwm8CiVRaIbh4w5byh62BNihpsovlCd4ElvC7cL/53D24HcI7AaGFsPrromCamQklwQmIan/QS7x/3lLuQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -5345,8 +5927,14 @@ packages: async-mutex@0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} - async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + + async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + + async@3.2.3: + resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==} asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -5355,6 +5943,13 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} + autoprefixer@10.4.18: + resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + autoprefixer@10.4.19: resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} engines: {node: ^10 || ^12 || >=14} @@ -5362,12 +5957,24 @@ packages: peerDependencies: postcss: ^8.1.0 - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - axios@1.7.2: - resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + axios-proxy-builder@0.1.2: + resolution: {integrity: sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA==} + + axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} axobject-query@4.0.0: resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} @@ -5381,18 +5988,22 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - babel-plugin-polyfill-corejs2@0.4.11: - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-polyfill-corejs2@0.4.8: + resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.10.4: - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + babel-plugin-polyfill-corejs3@0.9.0: + resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.2: - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + babel-plugin-polyfill-regenerator@0.5.5: + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -5423,13 +6034,12 @@ packages: bcp-47@2.1.0: resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} - better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -5441,8 +6051,8 @@ packages: bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} bl@4.1.0: @@ -5454,8 +6064,11 @@ packages: blakejs@1.2.1: resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - blob-to-it@2.0.7: - resolution: {integrity: sha512-mFAR/GKDDqFOkSBB7shXfsUZwU5DgK453++I8/SImNacfJsdKlx/oHTO0T4ZYHz8A2dnSONE+CX8L29VlWGKiQ==} + blob-to-it@2.0.6: + resolution: {integrity: sha512-xveo/z3QNilIJgCZAjzvx2uWWVHE4JzOy7eMp45zkuBsmwZMgjfhn2h/+BsZPaByVFa3u1W/OBUleNiqgMtVpQ==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} bn.js@4.11.6: resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} @@ -5466,8 +6079,8 @@ packages: bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} boolbase@1.0.0: @@ -5490,6 +6103,10 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -5503,17 +6120,19 @@ packages: browser-readablestream-to-it@1.0.3: resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} - browser-readablestream-to-it@2.0.7: - resolution: {integrity: sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg==} + browser-readablestream-to-it@2.0.6: + resolution: {integrity: sha512-csJm66U/gTC6VHjeaOaziK6Y6ENdrzlNLdXnsdnvGX+3hGvedkxTyiMk2WbgKR8F15ACxDLJhDuE/cmovLPBQQ==} browserify-aes@1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - browserify-zlib@0.1.4: - resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true - browserslist@4.23.1: - resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -5529,9 +6148,8 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-crc32@1.0.0: - resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} - engines: {node: '>=8.0.0'} + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -5539,9 +6157,15 @@ packages: buffer-reverse@1.0.1: resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + buffer-to-arraybuffer@0.0.5: + resolution: {integrity: sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==} + buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + buffer@5.6.0: resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} @@ -5559,11 +6183,15 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + + bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} - bundle-require@4.2.1: - resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} + bundle-require@4.0.2: + resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' @@ -5580,6 +6208,14 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-lookup@6.1.0: + resolution: {integrity: sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==} + engines: {node: '>=10.6.0'} + cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -5588,6 +6224,10 @@ packages: resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} engines: {node: '>=14.16'} + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -5611,6 +6251,9 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} @@ -5627,14 +6270,26 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - caniuse-lite@1.0.30001639: - resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==} + caniuse-lite@1.0.30001593: + resolution: {integrity: sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==} + + caniuse-lite@1.0.30001614: + resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==} + + caniuse-lite@1.0.30001660: + resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} canvaskit-wasm@0.39.1: resolution: {integrity: sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==} - cborg@4.2.2: - resolution: {integrity: sha512-A0z7WhnY4HDLrVdnQI4i/OLG3kANHotk5NzDpr2iauf4xrmQPwJCxlbCnIXkVrFtsr8G3omfvvr5oF50i1Zt8g==} + capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + cborg@4.2.0: + resolution: {integrity: sha512-q6cFW5m3KxfP/9xGI3yGLaC1l5DP6DWM9IvjiJojnIwohL5CQDl02EXViPV852mOfQo+7PJGPN01MI87vFGzyA==} hasBin: true ccount@2.0.1: @@ -5644,6 +6299,10 @@ packages: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} + chai@5.1.1: + resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + engines: {node: '>=12'} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -5660,6 +6319,9 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + change-case@5.4.4: resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} @@ -5681,19 +6343,35 @@ packages: check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@4.0.0: + resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} + engines: {node: '>= 14.16.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} + chromatic@11.10.2: + resolution: {integrity: sha512-EbVlhmOLGdx9QRX3RMOTF3UzoyC1aaXNRjlzm1mc++2OI5+6C5Bzwt2ZUYJ3Jnf/pJa23q0y5Y3QEDcfRVqIbg==} + hasBin: true + peerDependencies: + '@chromatic-com/cypress': ^0.*.* || ^1.0.0 + '@chromatic-com/playwright': ^0.*.* || ^1.0.0 + peerDependenciesMeta: + '@chromatic-com/cypress': + optional: true + '@chromatic-com/playwright': + optional: true - chromatic@11.5.4: - resolution: {integrity: sha512-+J+CopeUSyGUIQJsU6X7CfvSmeVBs0j6LZ9AgF4+XTjI4pFmUiUXsTc00rH9x9W1jCppOaqDXv2kqJJXGDK3mA==} + chromatic@11.3.0: + resolution: {integrity: sha512-q1ZtJDJrjLGnz60ivpC16gmd7KFzcaA4eTb7gcytCqbaKqlHhCFr1xQmcUDsm14CK7JsqdkFU6S+JQdOd2ZNJg==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -5709,6 +6387,9 @@ packages: engines: {node: '>=12.13.0'} hasBin: true + chromium-edge-launcher@1.0.0: + resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==} + ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -5720,18 +6401,26 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} + cids@0.7.5: + resolution: {integrity: sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==} + engines: {node: '>=4.0.0', npm: '>=3.0.0'} + deprecated: This module has been superseded by the multiformats module + cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + class-is@1.1.0: + resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} + cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} - cli-color@2.0.4: - resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} + cli-color@2.0.3: + resolution: {integrity: sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==} engines: {node: '>=0.10'} cli-cursor@3.1.0: @@ -5742,14 +6431,14 @@ packages: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} - clipboardy@4.0.0: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} engines: {node: '>=18'} @@ -5765,6 +6454,9 @@ packages: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} @@ -5777,6 +6469,10 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + code-block-writer@12.0.0: resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} @@ -5813,6 +6509,10 @@ packages: colorette@1.4.0: resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + colors@1.0.3: + resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} + engines: {node: '>=0.1.90'} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -5834,10 +6534,6 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} @@ -5863,9 +6559,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -5877,22 +6570,31 @@ packages: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} + constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} + content-hash@2.5.2: + resolution: {integrity: sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==} + content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} - convert-csv-to-json@2.48.0: - resolution: {integrity: sha512-XkmztvCyY1qbUA1dlait7fmazAS0vDhYOzhMu90NPMvqBVY0/2GmAW1XzTzlKPpW5K/4ZaTKEO2Jb7e4saIQxg==} + convert-csv-to-json@2.46.0: + resolution: {integrity: sha512-Q7PjRjhECa5nBUEGbsKXvB8YaygVUesF/sYnaoCPTWoiwJEDCbLd2CcFDE1y80Q347IaTQukCQSCP2fR5IW+5g==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-es@1.1.0: - resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} + cookie-es@1.0.0: + resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==} cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} @@ -5901,16 +6603,27 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} - core-js-compat@3.37.1: - resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + core-js-compat@3.36.0: + resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + cosmiconfig@5.2.1: resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} engines: {node: '>=4'} + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -5947,13 +6660,8 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - crossws@0.2.4: - resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} - peerDependencies: - uWebSockets.js: '*' - peerDependenciesMeta: - uWebSockets.js: - optional: true + crossws@0.1.1: + resolution: {integrity: sha512-c9c/o7bS3OjsdpSkvexpka0JNlesBF2JU9B2V1yNsYGwRbAafxhJQ7VI9b48D5bpONz/oxbPGMzBojy9sXoQIQ==} crypto-js@3.3.0: resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} @@ -5961,10 +6669,6 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - crypto-random-string@4.0.0: - resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} - engines: {node: '>=12'} - css-selector-parser@3.0.5: resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} @@ -5994,33 +6698,32 @@ packages: resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} + cycle@1.0.3: + resolution: {integrity: sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==} + engines: {node: '>=0.4.0'} + + d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} dag-jose@4.0.0: resolution: {integrity: sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA==} - daisyui@4.12.10: - resolution: {integrity: sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==} + daisyui@4.10.1: + resolution: {integrity: sha512-Ds0Z0Fv+Xf6ZEqV4Q5JIOeKfg83xxnww0Lzid0V94vPtlQ0yYmucEa33zSctsX2VEgBALtmk5zVEqd59pnUbuQ==} + engines: {node: '>=16.9.0'} + + daisyui@4.11.1: + resolution: {integrity: sha512-obT9CUbQdW6eoHwSeT5VwaRrWlwrM4OT5qlfdJ0oQlSIEYhwnEl2+L2fwu5PioLbitwuMdYC2X8I1cyy8Pf6LQ==} engines: {node: '>=16.9.0'} + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} @@ -6028,9 +6731,6 @@ packages: dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dayjs@1.11.11: - resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} - debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -6047,8 +6747,8 @@ packages: supports-color: optional: true - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -6056,8 +6756,8 @@ packages: supports-color: optional: true - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -6079,6 +6779,10 @@ packages: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} + decompress-response@3.3.0: + resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} + engines: {node: '>=4'} + decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -6089,8 +6793,12 @@ packages: dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} deep-extend@0.6.0: @@ -6108,6 +6816,10 @@ packages: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} + default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -6123,6 +6835,10 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -6137,10 +6853,18 @@ packages: denodeify@1.2.1: resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + deprecated-react-native-prop-types@5.0.0: + resolution: {integrity: sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==} + engines: {node: '>=18'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -6168,18 +6892,6 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - detect-package-manager@2.0.1: - resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} - engines: {node: '>=12'} - - detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} - hasBin: true - deterministic-object-hash@2.0.2: resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} engines: {node: '>=18'} @@ -6243,6 +6955,9 @@ packages: dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -6257,6 +6972,9 @@ packages: domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dotenv-expand@10.0.0: resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} engines: {node: '>=12'} @@ -6267,45 +6985,42 @@ packages: ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} - name: ds-test version: 1.0.0 dset@3.1.3: resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} engines: {node: '>=4'} - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - - duplexify@4.1.3: - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + duplexify@4.1.2: + resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - eciesjs@0.3.19: - resolution: {integrity: sha512-b+PkRDZ3ym7HEcnbxc22CMVCpgsnr8+gGgST3U5PtgeX1luvINgfXW7efOyUtmn/jFtA/lg5ywBi/Uazf4oeaA==} + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + eciesjs@0.3.18: + resolution: {integrity: sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw==} ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - electron-fetch@1.9.1: resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} engines: {node: '>=6'} - electron-to-chromium@1.4.816: - resolution: {integrity: sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==} + electron-to-chromium@1.4.676: + resolution: {integrity: sha512-uHt4FB8SeYdhcOsj2ix/C39S7sPSNFJpzShjxGOm1KdF4MHyGqGi389+T5cErsodsijojXilYaHIKKqJfqh7uQ==} + + electron-to-chromium@1.5.23: + resolution: {integrity: sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==} elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - elliptic@6.5.5: - resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} + elliptic@6.5.7: + resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} emmet@2.4.7: resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} @@ -6326,14 +7041,18 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - engine.io-client@6.5.4: - resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} + engine.io-client@6.5.3: + resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} engine.io-parser@5.2.2: resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} @@ -6350,8 +7069,8 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + envinfo@7.11.1: + resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} engines: {node: '>=4'} hasBin: true @@ -6368,8 +7087,8 @@ packages: resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} engines: {node: '>= 0.8'} - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} es-define-property@1.0.0: @@ -6380,15 +7099,14 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-module-lexer@1.5.3: + resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} + es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} es-shim-unscopables@1.0.2: @@ -6398,6 +7116,10 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} + es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + es5-ext@0.10.64: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} @@ -6408,18 +7130,17 @@ packages: es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} es6-weak-map@2.0.3: resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} - esbuild-plugin-alias@0.2.1: - resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} - - esbuild-register@3.5.0: - resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} peerDependencies: esbuild: '>=0.12 <1' @@ -6438,6 +7159,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.21.3: + resolution: {integrity: sha512-Kgq0/ZsAPzKrbOjCQcjoSmPoWhlcVnGAUo7jvaLHoxW1Drto0KGkR1xBNg2Cp43b9ImvxmPEJZ9xkfcnqPsfBw==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -6466,8 +7192,14 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-compat-utils@0.5.1: - resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + eslint-compat-utils@0.1.2: + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-compat-utils@0.5.0: + resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' @@ -6490,8 +7222,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-module-utils@2.8.1: - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + eslint-module-utils@2.8.0: + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -6511,8 +7243,8 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-es-x@7.8.0: - resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + eslint-plugin-es-x@7.5.0: + resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' @@ -6523,8 +7255,8 @@ packages: peerDependencies: eslint: '>=4.19.1' - eslint-plugin-import@2.29.1: - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + eslint-plugin-import@2.29.0: + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -6559,14 +7291,14 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-promise@6.4.0: - resolution: {integrity: sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw==} + eslint-plugin-promise@6.1.1: + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint: ^7.0.0 || ^8.0.0 - eslint-plugin-simple-import-sort@12.1.0: - resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} + eslint-plugin-simple-import-sort@12.0.0: + resolution: {integrity: sha512-8o0dVEdAkYap0Cn5kNeklaKcT1nUsa3LITWEuFk3nJifOoD+5JQGoyDUW2W/iPWwBsNBJpyJS9y4je/BgxLcyQ==} peerDependencies: eslint: '>=5.0.0' @@ -6576,12 +7308,12 @@ packages: peerDependencies: eslint: '>=6' - eslint-plugin-svelte@2.41.0: - resolution: {integrity: sha512-gjU9Q/psxbWG1VNwYbEb0Q6U4W5PBGaDpYmO2zlQ+zlAMVS3Qt0luAK0ACi/tMSwRK6JENiySvMyJbO0YWmXSg==} + eslint-plugin-svelte@2.38.0: + resolution: {integrity: sha512-IwwxhHzitx3dr0/xo0z4jjDlb2AAHBPKt+juMyKKGTLlKi1rZfA4qixMwnveU20/JTHyipM6keX4Vr7LZFYc9g==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.155 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 peerDependenciesMeta: svelte: optional: true @@ -6621,8 +7353,13 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + eslint@8.55.0: + resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true @@ -6695,10 +7432,19 @@ packages: resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} engines: {node: '>=14.0.0'} + eth-ens-namehash@2.0.8: + resolution: {integrity: sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==} + eth-json-rpc-filters@6.0.1: resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} engines: {node: '>=14.0.0'} + eth-lib@0.1.29: + resolution: {integrity: sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==} + + eth-lib@0.2.8: + resolution: {integrity: sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==} + eth-query@2.1.2: resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} @@ -6709,8 +7455,8 @@ packages: resolution: {integrity: sha512-3Vwr2CikFLezh/zLAPBV6C51jC0fFnf6vjhkoIWsDms/W5MLgAZNhh9nZUxPmg899K8cVFbklrYQBxcD4JmfrA==} engines: {node: '>= 4.3.0', npm: '>= 3.7.0'} - ethereum-bloom-filters@1.1.0: - resolution: {integrity: sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==} + ethereum-bloom-filters@1.0.10: + resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} ethereum-cryptography@0.1.3: resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} @@ -6718,8 +7464,8 @@ packages: ethereum-cryptography@1.2.0: resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} - ethereum-cryptography@2.2.1: - resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + ethereum-cryptography@2.1.3: + resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} ethereumjs-util@7.1.5: resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} @@ -6728,6 +7474,10 @@ packages: ethers@5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + ethers@6.13.2: + resolution: {integrity: sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==} + engines: {node: '>=14.0.0'} + ethjs-unit@0.1.6: resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -6742,6 +7492,9 @@ packages: eventemitter2@6.4.9: resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + eventemitter3@4.0.4: + resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -6756,6 +7509,10 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -6764,8 +7521,8 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + express@4.21.0: + resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} engines: {node: '>= 0.10.0'} expressive-code@0.35.6: @@ -6784,6 +7541,10 @@ packages: extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + extension-port-stream@2.1.1: + resolution: {integrity: sha512-qknp5o5rj2J9CRKfVB8KJr+uXQlrojNZzdESUPhKYLXf97TPcGf6qWWKmpsNNtUyOdzFhab1ON0jzouNxHHvow==} + engines: {node: '>=12.0.0'} + extension-port-stream@3.0.0: resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} engines: {node: '>=12.0.0'} @@ -6792,6 +7553,20 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} + + fast-base64-decode@1.0.0: + resolution: {integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==} + + fast-deep-equal@2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -6811,8 +7586,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + fast-redact@3.3.0: + resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} engines: {node: '>=6'} fast-safe-stringify@2.1.1: @@ -6822,8 +7597,8 @@ packages: resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true - fast-xml-parser@4.4.0: - resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==} + fast-xml-parser@4.3.4: + resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} hasBin: true fastparse@1.1.2: @@ -6835,31 +7610,26 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - fdir@6.1.1: - resolution: {integrity: sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==} + fdir@6.3.0: + resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==} peerDependencies: - picomatch: 3.x + picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true - fetch-retry@5.0.6: - resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} - file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - file-system-cache@2.3.0: - resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - filesize@10.1.2: - resolution: {integrity: sha512-Dx770ai81ohflojxhU+oG+Z2QGvKdYxgEr9OSA8UVrqhwNHjfH9A8f5NKfg83fEH8ZFA5N5llJo5T3PIoZ4CRA==} + filesize@10.1.1: + resolution: {integrity: sha512-L0cdwZrKlwZQkMSFnCflJ6J2Y+5egO/p3vgRSDQGxQt++QbUZe5gMbRO6kg6gzwQDPvq2Fk9AmoxUNfZ5gdqaQ==} engines: {node: '>= 10.4.0'} + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -6872,8 +7642,8 @@ packages: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} find-cache-dir@2.1.0: @@ -6884,6 +7654,9 @@ packages: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + find-up-simple@1.0.0: resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} engines: {node: '>=18'} @@ -6915,8 +7688,8 @@ packages: resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} hasBin: true - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} @@ -6925,12 +7698,21 @@ packages: flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-parser@0.238.3: - resolution: {integrity: sha512-hNUhucq8V6KWSX1skXUS3vnDmrRNuKWzDvEVK5b+n97uMF32zj2y8pmcLDQEqlY5u926B0GYGWT/3XhwDJfLOQ==} + flow-parser@0.206.0: + resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} engines: {node: '>=0.4.0'} - follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -6941,24 +7723,32 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.2.1: - resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3} - name: forge-std version: 1.7.5 - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32} - name: forge-std - version: 1.9.0 + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/8f24d6b04c92975e0795b5868aa0d783251cdeaa: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/8f24d6b04c92975e0795b5868aa0d783251cdeaa} + version: 1.9.3 + + form-data-encoder@1.7.1: + resolution: {integrity: sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==} form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -6974,17 +7764,13 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} + fs-extra@4.0.3: + resolution: {integrity: sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -6993,9 +7779,8 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + fs-minipass@1.2.7: + resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -7049,17 +7834,13 @@ packages: get-iterator@1.0.2: resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - get-npm-tarball-url@2.1.0: - resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} - engines: {node: '>=12.17'} - get-port-please@3.1.2: resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -7068,16 +7849,15 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.5: - resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - giget@1.2.3: - resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} - hasBin: true + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -7090,12 +7870,14 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true - glob@10.4.2: - resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} - engines: {node: '>=16 || 14 >=14.18'} + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} hasBin: true glob@7.2.3: @@ -7107,16 +7889,23 @@ packages: engines: {node: '>=12'} deprecated: Glob versions prior to v9 are no longer supported + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} globalyzer@0.1.0: @@ -7126,9 +7915,9 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -7136,6 +7925,14 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + got@12.1.0: + resolution: {integrity: sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==} + engines: {node: '>=14.16'} + got@12.6.1: resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} engines: {node: '>=14.16'} @@ -7156,17 +7953,17 @@ packages: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} - gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} - hasBin: true + h3@1.10.2: + resolution: {integrity: sha512-r1iNNcFGL4G9pL3lgYxwX0O2ZmqdKqhILAJsnlw5icn5I1QHnADM4TgVdYRtHUqy+NntVpHIEFwnw/XCbebICg==} - h3@1.12.0: - resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -7190,8 +7987,8 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} hash-base@3.1.0: @@ -7204,8 +8001,8 @@ packages: hashlru@2.3.0: resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} engines: {node: '>= 0.4'} hast-util-embedded@3.0.0: @@ -7235,8 +8032,8 @@ packages: hast-util-phrasing@3.0.1: resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} - hast-util-raw@9.0.4: - resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} + hast-util-raw@9.0.3: + resolution: {integrity: sha512-ICWvVOF2fq4+7CMmtCPD5CM4QKjPbHpPotE6+8tDooV0ZuyJVUzHsrNX+O5NaRbieTf0F7FfeBOMAwi6Td0+yQ==} hast-util-select@6.0.2: resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} @@ -7247,6 +8044,9 @@ packages: hast-util-to-html@9.0.1: resolution: {integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==} + hast-util-to-html@9.0.2: + resolution: {integrity: sha512-RP5wNpj5nm1Z8cloDv4Sl4RS8jH5HYa0v93YB6Wb4poEzgMo/dAAL0KcT4974dCjcNG5pkLqTImeFHHCwwfY3g==} + hast-util-to-jsx-runtime@2.3.0: resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} @@ -7268,18 +8068,21 @@ packages: hastscript@9.0.0: resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} + header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + + hermes-estree@0.15.0: + resolution: {integrity: sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==} + hermes-estree@0.19.1: resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} - hermes-estree@0.20.1: - resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} + hermes-parser@0.15.0: + resolution: {integrity: sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==} hermes-parser@0.19.1: resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} - hermes-parser@0.20.1: - resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} - hermes-profile-transformer@0.0.6: resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} engines: {node: '>=8'} @@ -7290,8 +8093,8 @@ packages: hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} @@ -7322,6 +8125,9 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-https@1.0.0: + resolution: {integrity: sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -7330,12 +8136,20 @@ packages: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + http2-wrapper@2.2.1: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} - https-proxy-agent@7.0.5: - resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} engines: {node: '>= 14'} human-id@1.0.2: @@ -7345,6 +8159,10 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -7352,6 +8170,9 @@ packages: i18next-browser-languagedetector@7.1.0: resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} + i18next-browser-languagedetector@7.2.0: + resolution: {integrity: sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==} + i18next@22.5.1: resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} @@ -7369,6 +8190,10 @@ packages: idb-keyval@6.2.1: resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + idna-uts46-hx@2.3.1: + resolution: {integrity: sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==} + engines: {node: '>=4.0.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -7380,6 +8205,10 @@ packages: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} + ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -7389,6 +8218,9 @@ packages: engines: {node: '>=16.x'} hasBin: true + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + import-fresh@2.0.0: resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} engines: {node: '>=4'} @@ -7397,6 +8229,9 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} + import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} @@ -7438,16 +8273,23 @@ packages: interface-store@5.1.8: resolution: {integrity: sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==} - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} - intl-messageformat@10.5.14: - resolution: {integrity: sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==} + intl-messageformat@10.5.11: + resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==} invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + ioredis@5.3.2: + resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} + engines: {node: '>=12.22.0'} + + ip@1.1.9: + resolution: {integrity: sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -7475,8 +8317,8 @@ packages: resolution: {integrity: sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - iron-webcrypto@1.2.1: - resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + iron-webcrypto@1.0.0: + resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} is-absolute-url@4.0.1: resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} @@ -7492,9 +8334,8 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -7525,13 +8366,8 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.14.0: - resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -7540,9 +8376,6 @@ packages: is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - is-deflate@1.0.0: - resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} - is-directory@0.3.1: resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} engines: {node: '>=0.10.0'} @@ -7576,6 +8409,9 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} @@ -7584,10 +8420,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-gzip@1.0.0: - resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} - engines: {node: '>=0.10.0'} - is-hex-prefixed@1.0.0: resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -7608,12 +8440,8 @@ packages: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} - is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} is-number-object@1.0.7: @@ -7653,9 +8481,8 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} + is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -7677,10 +8504,13 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -7750,6 +8580,9 @@ packages: peerDependencies: ws: '*' + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -7758,8 +8591,8 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@5.0.5: - resolution: {integrity: sha512-gKf4eJ8bHmSX/ljiOCpnd8vtmHTwG71uugm0kXYd5aqFCl6z8cj8k7QduXSwU6QOst6LCdSXTlaoc8W4554crQ==} + istanbul-lib-source-maps@5.0.4: + resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} engines: {node: '>=10'} istanbul-reports@3.1.7: @@ -7806,14 +8639,13 @@ packages: it-to-stream@1.0.0: resolution: {integrity: sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==} - jackspeak@3.4.0: - resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} - jake@10.9.1: - resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} - engines: {node: '>=10'} - hasBin: true + jackspeak@4.0.1: + resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} + engines: {node: 20 || >=22} jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} @@ -7851,12 +8683,18 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true - joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + joi@17.12.1: + resolution: {integrity: sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==} + + js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + + js-sha3@0.5.7: + resolution: {integrity: sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==} js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -7864,8 +8702,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -7875,6 +8713,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + jsc-android@250231.0.0: resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} @@ -7887,17 +8728,8 @@ packages: peerDependencies: '@babel/preset-env': ^7.1.6 - jscodeshift@0.15.2: - resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - peerDependenciesMeta: - '@babel/preset-env': - optional: true - - jsdom@24.1.0: - resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} + jsdom@24.0.0: + resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -7927,6 +8759,10 @@ packages: resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} engines: {node: '>=10.0.0'} + json-rpc-middleware-stream@4.2.3: + resolution: {integrity: sha512-4iFb0yffm5vo3eFKDbQgke9o17XBcLQ2c3sONrXSbcOLzP8LTojqo8hRGVgtJShhm5q4ZDSNq039fAx9o65E1w==} + engines: {node: '>=14.0.0'} + json-rpc-random-id@1.0.1: resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} @@ -7936,9 +8772,15 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + json-to-ast@2.1.0: resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} engines: {node: '>= 4'} @@ -7955,6 +8797,9 @@ packages: jsonc-parser@2.3.1: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -7965,6 +8810,16 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + keccak256@1.0.6: + resolution: {integrity: sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==} + keccak@3.0.4: resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} engines: {node: '>=10.0.0'} @@ -7987,59 +8842,55 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - known-css-properties@0.34.0: - resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} + known-css-properties@0.30.0: + resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} latest-version@7.0.0: resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} engines: {node: '>=14.16'} - lazy-universal-dotenv@4.0.0: - resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} - engines: {node: '>=14.0.0'} - - lefthook-darwin-arm64@1.6.18: - resolution: {integrity: sha512-AkpsTeO7aLZIIy6CKQ7Chx8RltE8a9uItbwQWoeaCkIdzpV8TFjq7/Pw4F5CkoJ2315sHtB8k+VFkgipQMBw1w==} + lefthook-darwin-arm64@1.6.10: + resolution: {integrity: sha512-Hh11OkoKG7FEOByS1dcgNV7ETq45VmwBbw0VPTiBznyfOG4k+pi0fIdc1qbmbxvYqNE0r420QR/Q3bimaa4Kxg==} cpu: [arm64] os: [darwin] - lefthook-darwin-x64@1.6.18: - resolution: {integrity: sha512-qwKa+PaNIYjZ2PVrRRLq+HjNjQsjEItXN21byvSD89r7EYCULsIC8aW4H6aniOP2A6X1DIZ+djpg+3hNJ/94NA==} + lefthook-darwin-x64@1.6.10: + resolution: {integrity: sha512-FiOB0t5OBcQ8OnG/LSdfUYj736SJdlLjWuOZ4wTlJ7EUrHditieap6VNAxwMmFVyQN0X2ZwKWytwY35y+Hflhw==} cpu: [x64] os: [darwin] - lefthook-freebsd-arm64@1.6.18: - resolution: {integrity: sha512-UIOzQ+okwB7Ah9p8sNqomOiU6cPfmJnyW3HDPutRsdoHRD8udIap9d+ja4Kg4m/PkoYtkcLO78omANqAgA5wxQ==} + lefthook-freebsd-arm64@1.6.10: + resolution: {integrity: sha512-IxGgS3RrNwk3Kr83o5SQhGxqppQi7fu2t//nsp6ocgnJeStrTtXZJOrel2VohzrFxpzQdJVXBGgUGLXtY8t8qw==} cpu: [arm64] os: [freebsd] - lefthook-freebsd-x64@1.6.18: - resolution: {integrity: sha512-UQANUgyNpaAh0+2/PjPFiJ7yd6aF15yyJxKZCXyna5cQF7VU8pSHu5tiDDquNpjToXOg+6TmiIAJKyfrrwTF3w==} + lefthook-freebsd-x64@1.6.10: + resolution: {integrity: sha512-sFSe+dGLa4iBblWAhAGTP9moarcbFtFAH6aaCeyqSX51O6p9VPdGjqNtcE8aGbGAk4lO6v1ScRjk5ogMSinJwQ==} cpu: [x64] os: [freebsd] - lefthook-linux-arm64@1.6.18: - resolution: {integrity: sha512-4erletIa2HKUgY17/1ROvndAj6xn/9wkqO2GhBT3C0vFwIv6ycy5wpFzXOwKRZpFYv7UacN7iXhAZSK+vSOZZg==} + lefthook-linux-arm64@1.6.10: + resolution: {integrity: sha512-fXnKiNdRIW+FRvc1keVrvWX5EqIhVFfPjcy+PbsKdxiWRXgjtidi6LPmQ8eosH0DC9PxZ0mpdCMf40FHEZLbQA==} cpu: [arm64] os: [linux] - lefthook-linux-x64@1.6.18: - resolution: {integrity: sha512-l5SRqYMYygw9RjZncEg8uh29wShYN8kiYr53sp74DkntrlCttqWhLILBUlIr3fxH5s0ZyrmqUEjtMBryMk7b/g==} + lefthook-linux-x64@1.6.10: + resolution: {integrity: sha512-bm6l2GOFnmYreZxmHb47QeOiFAItttOOxvCEX1okIRD7JbUC+lGC9evW5GJv/ltjZBoTDYEtQAUa+BpHTGuY2A==} cpu: [x64] os: [linux] - lefthook-windows-arm64@1.6.18: - resolution: {integrity: sha512-jeNBRoya3+mOEsKyT4wXf29Kng1nkJD7Uv/dqGBszoGMktGVNUFdIjWoxx6HSfhUssucs5pKRZpXSMgK/KCP+Q==} + lefthook-windows-arm64@1.6.10: + resolution: {integrity: sha512-pFxT8KbOMzGxj6cz4glHYwQSNC7XCuy9RDqIO0AxPlpATsCpapkF4ngDxBT1iFv2VhdeweMa7RXUDsMAGQA4Qw==} cpu: [arm64] os: [win32] - lefthook-windows-x64@1.6.18: - resolution: {integrity: sha512-iEG8PbFOwMqlpAgCiqzANTxutERjwlwMx6WF6HDGEYwFJSCJsvi06TehDxaPIFbhmLLYYlbVrfSBlttWGoN0dg==} + lefthook-windows-x64@1.6.10: + resolution: {integrity: sha512-fcDnUSTv95AdLvm0NIrn3jBWXuRq8SlbDDjkkB5OHLiSmjz4eOr6wyD7xceDp33zZgZmWFzHebJngxxcIaUuHw==} cpu: [x64] os: [win32] - lefthook@1.6.18: - resolution: {integrity: sha512-Ftr/NkU1P1EsEyphsCqCX7lesGZA+QDXyUx4dS1RlSKB72xKtGW9VPjbGLK2kSQkONG5M+XYfbJkGA/r9NLTYQ==} + lefthook@1.6.10: + resolution: {integrity: sha512-HeVjsDCrHLe9htQHbLuQJu2YdLK6Tl5bh36fOpmXqckEXTI0BDR0Y5JYc7G5Inj4YXQsc51a9dUDZMeniSnSag==} hasBin: true leven@3.1.0: @@ -8050,6 +8901,9 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} @@ -8057,28 +8911,28 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} engines: {node: '>=14'} lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - listhen@1.7.2: - resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} + listhen@1.6.0: + resolution: {integrity: sha512-z0RcEXVX5oTpY1bO02SKoTU/kmZSrFSngNNzHRM6KICR17PTq7ANush6AE6ztGJwJD4RLpBrVHd9GnV51J7s3w==} hasBin: true lit-element@3.3.3: resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} - lit-element@4.0.6: - resolution: {integrity: sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==} + lit-element@4.0.4: + resolution: {integrity: sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==} lit-html@2.8.0: resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} - lit-html@3.1.4: - resolution: {integrity: sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==} + lit-html@3.1.2: + resolution: {integrity: sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==} lit@2.8.0: resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} @@ -8120,6 +8974,12 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} @@ -8170,23 +9030,38 @@ packages: loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@3.1.1: + resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lru-cache@10.3.0: - resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==} + lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} + lru-cache@11.0.1: + resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==} + engines: {node: 20 || >=22} + lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} @@ -8200,8 +9075,19 @@ packages: magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - magicast@0.3.4: - resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} + engines: {node: '>=12'} + + magic-string@0.30.9: + resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} + engines: {node: '>=12'} + + magicast@0.3.3: + resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} + + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -8231,8 +9117,8 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - markdown-to-jsx@7.3.2: - resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==} + markdown-to-jsx@7.5.0: + resolution: {integrity: sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==} engines: {node: '>= 10'} peerDependencies: react: '>= 0.14.0' @@ -8252,8 +9138,8 @@ packages: mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - mdast-util-from-markdown@2.0.1: - resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} mdast-util-gfm-autolink-literal@2.0.0: resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} @@ -8288,8 +9174,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.1.0: + resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -8307,9 +9193,8 @@ packages: memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - memoizee@0.4.17: - resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} - engines: {node: '>=0.12'} + memoizee@0.4.15: + resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} @@ -8318,8 +9203,8 @@ packages: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge-options@3.0.4: resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} @@ -8340,61 +9225,61 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - metro-babel-transformer@0.80.9: - resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} + metro-babel-transformer@0.80.6: + resolution: {integrity: sha512-ssuoVC4OzqaOt3LpwfUbDfBlFGRu9v1Yf2JJnKPz0ROYHNjSBws4aUesqQQ/Ea8DbiH7TK4j4cJmm+XjdHmgqA==} engines: {node: '>=18'} - metro-cache-key@0.80.9: - resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} + metro-cache-key@0.80.6: + resolution: {integrity: sha512-DFmjQacC8m/S3HpELklLMWkPGP/fZPX3BSgjd0xQvwIvWyFwk8Nn/lfp/uWdEVDtDSIr64/anXU5uWohGwlWXw==} engines: {node: '>=18'} - metro-cache@0.80.9: - resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} + metro-cache@0.80.6: + resolution: {integrity: sha512-NP81pHSPkzs+iNlpVkJqijrpcd6lfuDAunYH9/Rn8oLNz0yLfkl8lt+xOdUU4IkFt3oVcTBEFCnzAzv4B8YhyA==} engines: {node: '>=18'} - metro-config@0.80.9: - resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} + metro-config@0.80.6: + resolution: {integrity: sha512-vHYYvJpRTWYbmvqlR7i04xQpZCHJ6yfZ/xIcPdz2ssbdJGGJbiT1Aar9wr8RAhsccSxdJgfE5B1DB8Mo+DnhIg==} engines: {node: '>=18'} - metro-core@0.80.9: - resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} + metro-core@0.80.6: + resolution: {integrity: sha512-fn4rryTUAwzFJWj7VIPDH4CcW/q7MV4oGobqR6NsuxZoIGYrVpK7pBasumu5YbCqifuErMs5s23BhmrDNeZURw==} engines: {node: '>=18'} - metro-file-map@0.80.9: - resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} + metro-file-map@0.80.6: + resolution: {integrity: sha512-S3CUqvpXpc+q3q+hCEWvFKhVqgq0VmXdZQDF6u7ue86E2elq1XLnfLOt9JSpwyhpMQRyysjSCnd/Yh6GZMNHoQ==} engines: {node: '>=18'} - metro-minify-terser@0.80.9: - resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} + metro-minify-terser@0.80.6: + resolution: {integrity: sha512-83eZaH2+B+jP92KuodPqXknzwmiboKAuZY4doRfTEEXAG57pNVNN6cqSRJlwDnmaTBKRffxoncBXbYqHQgulgg==} engines: {node: '>=18'} - metro-resolver@0.80.9: - resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} + metro-resolver@0.80.6: + resolution: {integrity: sha512-R7trfglG4zY4X9XyM9cvuffAhQ9W1reWoahr1jdEWa6rOI8PyM0qXjcsb8l+fsOQhdSiVlkKcYAmkyrs1S/zrA==} engines: {node: '>=18'} - metro-runtime@0.80.9: - resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} + metro-runtime@0.80.6: + resolution: {integrity: sha512-21GQVd0pp2nACoK0C2PL8mBsEhIFUFFntYrWRlYNHtPQoqDzddrPEIgkyaABGXGued+dZoBlFQl+LASlmmfkvw==} engines: {node: '>=18'} - metro-source-map@0.80.9: - resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} + metro-source-map@0.80.6: + resolution: {integrity: sha512-lqDuSLctWy9Qccu4Zl0YB1PzItpsqcKGb1nK0aDY+lzJ26X65OCib2VzHlj+xj7e4PiIKOfsvDCczCBz4cnxdg==} engines: {node: '>=18'} - metro-symbolicate@0.80.9: - resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} + metro-symbolicate@0.80.6: + resolution: {integrity: sha512-SGwKeBi+lK7NmM5+EcW6DyRRa9HmGSvH0LJtlT4XoRMbpxzsLYs0qUEA+olD96pOIP+ta7I8S30nQr2ttqgO8A==} engines: {node: '>=18'} hasBin: true - metro-transform-plugins@0.80.9: - resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} + metro-transform-plugins@0.80.6: + resolution: {integrity: sha512-e04tdTC5Fy1vOQrTTXb5biao0t7nR/h+b1IaBTlM5UaHaAJZr658uVOoZhkRxKjbhF2mIwJ/8DdorD2CA15BCg==} engines: {node: '>=18'} - metro-transform-worker@0.80.9: - resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} + metro-transform-worker@0.80.6: + resolution: {integrity: sha512-jV+VgCLiCj5jQadW/h09qJaqDreL6XcBRY52STCoz2xWn6WWLLMB5nXzQtvFNPmnIOps+Xu8+d5hiPcBNOhYmA==} engines: {node: '>=18'} - metro@0.80.9: - resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} + metro@0.80.6: + resolution: {integrity: sha512-f6Nhnht9TxVRP6zdBq9J2jNdeDBxRmJFnjxhQS1GeCpokBvI6fTXq+wHTLz5jZA+75fwbkPSzBxBJzQa6xi0AQ==} engines: {node: '>=18'} hasBin: true @@ -8509,8 +9394,12 @@ packages: micromark@4.0.0: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} mime-db@1.52.0: @@ -8544,6 +9433,14 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -8552,6 +9449,9 @@ packages: resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -8566,39 +9466,45 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} engines: {node: '>=10'} minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + minipass@2.9.0: + resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} + minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minizlib@1.3.3: + resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} mipd@0.0.5: resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} @@ -8608,8 +9514,18 @@ packages: typescript: optional: true - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + mipd@0.0.7: + resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + mkdirp-promise@5.0.1: + resolution: {integrity: sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==} + engines: {node: '>=4'} + deprecated: This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that. mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} @@ -8625,11 +9541,14 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} - moralis@2.26.7: - resolution: {integrity: sha512-nJLSSePOAfEL2iAje1GdP164OwDaICdbbkyivN7lPHutjirDMRD6bxYdYqOxDdzR1fx3mf5nhQEeD7o/pndgiQ==} + mock-fs@4.14.0: + resolution: {integrity: sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==} + + moralis@2.26.2: + resolution: {integrity: sha512-9CfzUuPvTZrwyjQQ+rtpvnIXKR6G793iWDXCBUpZomAUHk/3KcR80KwuBZBAvH9uIfl7MGqkp3C0uk5vX2714Q==} motion@10.16.2: resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} @@ -8654,6 +9573,22 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + multibase@0.6.1: + resolution: {integrity: sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==} + deprecated: This module has been superseded by the multiformats module + + multibase@0.7.0: + resolution: {integrity: sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==} + deprecated: This module has been superseded by the multiformats module + + multicodec@0.5.7: + resolution: {integrity: sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==} + deprecated: This module has been superseded by the multiformats module + + multicodec@1.0.4: + resolution: {integrity: sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==} + deprecated: This module has been superseded by the multiformats module + multiformats@11.0.2: resolution: {integrity: sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -8662,20 +9597,28 @@ packages: resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - multiformats@13.1.3: - resolution: {integrity: sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==} + multiformats@13.1.0: + resolution: {integrity: sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==} multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + multihashes@0.4.21: + resolution: {integrity: sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==} + murky@https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d: resolution: {tarball: https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d} - name: murky version: 0.0.0 + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nano-json-stream-parser@0.1.2: + resolution: {integrity: sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==} + nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -8686,9 +9629,6 @@ packages: engines: {node: ^14 || ^16 || >=18} hasBin: true - napi-wasm@1.1.0: - resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} - native-fetch@3.0.0: resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} peerDependencies: @@ -8709,6 +9649,10 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + neotraverse@0.6.18: + resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} + engines: {node: '>= 10'} + next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} @@ -8739,8 +9683,8 @@ packages: resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} engines: {node: '>= 0.10.5'} - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + node-fetch-native@1.6.2: + resolution: {integrity: sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==} node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} @@ -8755,8 +9699,8 @@ packages: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} - node-gyp-build@4.8.1: - resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true node-int64@0.4.0: @@ -8765,13 +9709,13 @@ packages: node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-stream-zip@1.15.0: resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} engines: {node: '>=0.12.0'} - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -8780,8 +9724,12 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - normalize-url@8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + normalize-url@8.0.0: + resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} not@0.1.0: @@ -8804,8 +9752,8 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} nth-check@2.1.1: @@ -8818,16 +9766,14 @@ packages: resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} engines: {node: '>=6.5.0', npm: '>=3'} - nwsapi@2.2.10: - resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} + nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - nypm@0.3.9: - resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - ob1@0.80.9: - resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} + ob1@0.80.6: + resolution: {integrity: sha512-nlLGZPMQ/kbmkdIb5yvVzep1jKUII2x6ehNsHpgy71jpnJMW7V+KsB3AjYI2Ajb7UqMAMNjlssg6FUodrEMYzg==} engines: {node: '>=18'} obj-multiplex@1.0.0: @@ -8841,13 +9787,8 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -8857,20 +9798,22 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} + object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} - ofetch@1.3.4: - resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + oboe@2.1.5: + resolution: {integrity: sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==} + + ofetch@1.3.3: + resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} ohash@1.1.3: resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} @@ -8901,6 +9844,13 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + oniguruma-to-js@0.4.3: + resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} + open@6.4.0: resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} engines: {node: '>=8'} @@ -8913,17 +9863,20 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} optimism@https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8: resolution: {tarball: https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8} - name: optimism version: 1.0.0 engines: {node: '>=16', pnpm: '>=9'} - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} ora@5.4.1: @@ -8934,8 +9887,8 @@ packages: resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - ora@8.0.1: - resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} + ora@8.1.0: + resolution: {integrity: sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==} engines: {node: '>=18'} os-tmpdir@1.0.2: @@ -8945,6 +9898,10 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -9022,7 +9979,6 @@ packages: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da: resolution: {tarball: https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da} - name: p256-verifier#v0.1.0 version: 0.0.0 package-json-from-dist@1.0.0: @@ -9032,12 +9988,18 @@ packages: resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} engines: {node: '>=14.16'} + package-manager-detector@0.2.0: + resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + pagefind@1.1.0: resolution: {integrity: sha512-1nmj0/vfYcMxNEQj0YDRp6bTVv9hI7HLdPhK/vBBYlrnwjATndQvHyicj5Y7pUHrpCFZpFnLVQXIF829tpFmaw==} hasBin: true - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -9049,6 +10011,9 @@ packages: parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + parse-headers@2.0.5: + resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} + parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} @@ -9073,6 +10038,9 @@ packages: path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -9100,12 +10068,16 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} path-to-regexp@6.2.2: resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} @@ -9114,28 +10086,31 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + pbkdf2@3.1.2: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} engines: {node: '>=0.12'} - peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -9183,21 +10158,17 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - - pkg-types@1.1.2: - resolution: {integrity: sha512-VEGf1he2DR5yowYRl0XJhWJq5ktm9gYIsH+y8sNJpHlxch7JPDaufgrsl4vYjd9hMUY8QVjoNncKbow9I7exyA==} + pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - playwright-core@1.45.0: - resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} - engines: {node: '>=18'} + playwright-core@1.43.1: + resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} + engines: {node: '>=16'} hasBin: true - playwright@1.45.0: - resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} - engines: {node: '>=18'} + playwright@1.43.1: + resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} + engines: {node: '>=16'} hasBin: true pluralize@8.0.0: @@ -9212,14 +10183,10 @@ packages: resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} engines: {node: '>=10'} - pony-cause@2.1.11: - resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + pony-cause@2.1.10: + resolution: {integrity: sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==} engines: {node: '>=12.0.0'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - postcss-import@15.1.0: resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -9274,8 +10241,8 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-nesting@12.1.5: - resolution: {integrity: sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==} + postcss-nesting@12.1.0: + resolution: {integrity: sha512-QOYnosaZ+mlP6plQrAxFw09UUp2Sgtxj1BVHN+rSVbtV0Yx48zRt9/9F/ZOoxOKBBEsaJk2MYhhVRjeRRw5yuw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 @@ -9292,27 +10259,27 @@ packages: peerDependencies: postcss: ^8.4.29 - postcss-selector-parser@6.1.0: - resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + + postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.39: - resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.41: - resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} - preact@10.22.1: - resolution: {integrity: sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==} - - preferred-pm@3.1.3: - resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} - engines: {node: '>=10'} + preact@10.19.5: + resolution: {integrity: sha512-OPELkDmSVbKjbFqF9tgvOowiiQ9TmsJljIzXRyNE8nGiis94pwv1siF78rQkAP1Q1738Ce6pellRg/Ns/CtHqQ==} preferred-pm@4.0.0: resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==} @@ -9326,19 +10293,30 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier-plugin-svelte@3.2.5: - resolution: {integrity: sha512-vP/M/Goc8z4iVIvrwXwbrYVjJgA0Hf8PO1G4LBh/ocSt6vUP6sLvyu9F3ABEGr+dbKyxZjEKLkeFsWy/yYl0HQ==} + prettier-plugin-svelte@3.2.2: + resolution: {integrity: sha512-ZzzE/wMuf48/1+Lf2Ffko0uDa6pyCfgHV6+uAhtg2U0AAXGrhCSW88vEJNAkAxW5qyrFY1y1zZ4J8TgHrjW++Q==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + + prettier-plugin-svelte@3.2.3: + resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier@2.8.7: + resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} + engines: {node: '>=10.13.0'} + hasBin: true + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true - prettier@3.3.2: - resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} + prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true @@ -9354,14 +10332,13 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} + process-nextick-args@1.0.7: + resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -9383,18 +10360,25 @@ packages: promise@8.3.0: resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + prompt@1.3.0: + resolution: {integrity: sha512-ZkaRWtaLBZl7KKAKndKYUL8WqNT+cQHKRZnT4RYYms48jQkFw3rrBL+/N5K/KtdEveHkxs982MX2BkDKub2ZMg==} + engines: {node: '>= 6.0.0'} + prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - protobufjs@7.3.2: - resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==} + protobufjs@7.2.6: + resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==} engines: {node: '>=12.0.0'} proxy-addr@2.0.7: @@ -9418,14 +10402,12 @@ packages: engines: {node: '>=16'} hasBin: true - pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + punycode@2.1.0: + resolution: {integrity: sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==} + engines: {node: '>=6'} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -9446,23 +10428,22 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} - qs@6.12.2: - resolution: {integrity: sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==} + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} + query-string@5.1.1: + resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} + engines: {node: '>=0.10.0'} + query-string@7.1.3: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} - querystring@0.2.1: - resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -9479,11 +10460,8 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - radix3@1.1.2: - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - - ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + radix3@1.1.0: + resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==} randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -9512,13 +10490,13 @@ packages: peerDependencies: react: ^16.3.0 || ^17.0.1 || ^18.0.0 - react-devtools-core@5.3.0: - resolution: {integrity: sha512-IG3T+azv48Oc5VLdHR4XdBNKNZIUOKRtx0sJMRvb++Zom/uqtx73j6u37JCsIBNIaq6vA7RPH5Bbcf/Wj53KXA==} + react-devtools-core@4.28.5: + resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: - react: ^18.3.1 + react: ^18.2.0 react-i18next@13.5.0: resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} @@ -9533,11 +10511,14 @@ packages: react-native: optional: true + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} react-native-fetch-api@3.0.0: resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} @@ -9548,75 +10529,40 @@ packages: react: '*' react-native: '*' - react-native@0.74.3: - resolution: {integrity: sha512-UFutCC6WEw6HkxlcpQ2BemKqi0JkwrgDchYB5Svi8Sp4Xwt4HA6LGEjNQgZ+3KM44bjyFRpofQym0uh0jACGng==} + react-native@0.73.4: + resolution: {integrity: sha512-VtS+Yr6OOTIuJGDECIYWzNU8QpJjASQYvMtfa/Hvm/2/h5GdB6W9H9TOmh13x07Lj4AOhNMx3XSsz6TdrO4jIg==} engines: {node: '>=18'} hasBin: true peerDependencies: - '@types/react': ^18.2.6 react: 18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} - react-remove-scroll-bar@2.3.6: - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.7: - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-shallow-renderer@16.15.0: resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} + read@1.0.7: + resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} + engines: {node: '>=0.8'} + + readable-stream@2.3.3: + resolution: {integrity: sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==} + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -9628,6 +10574,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@4.0.1: + resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} + engines: {node: '>= 14.16.0'} + readline@1.3.0: resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} @@ -9650,6 +10600,14 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + regenerate-unicode-properties@10.1.1: resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} @@ -9666,8 +10624,11 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + regex@4.3.2: + resolution: {integrity: sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw==} + + regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} regexpp@3.2.0: @@ -9739,9 +10700,17 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + request-light@0.5.8: + resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} + request-light@0.7.0: resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -9782,6 +10751,9 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + responselike@3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} @@ -9794,11 +10766,15 @@ packages: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + retext-latin@4.0.0: resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} - retext-smartypants@6.1.0: - resolution: {integrity: sha512-LDPXg95346bqFZnDMHo0S7Rq5p64+B+N8Vz733+wPMDtwb9rCOs9LIdIEhrUOU+TAywX9St+ocQWJt8wrzivcQ==} + retext-smartypants@6.1.1: + resolution: {integrity: sha512-onsHf34i/GzgElJgtT1K2V+31yEhWs7NJboKNxXJcmVMMPxLpgxZ9iADoMdydd6j/bHic5F/aNq0CGqElEtu2g==} retext-stringify@4.0.0: resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} @@ -9809,10 +10785,18 @@ packages: retimer@3.0.0: resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + revalidator@0.1.8: + resolution: {integrity: sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==} + engines: {node: '>= 0.4.0'} + rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -9828,12 +10812,15 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} risc0-ethereum#v1.0.0@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900: resolution: {tarball: https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900} - name: risc0-ethereum#v1.0.0 version: 0.0.0 rlp@2.2.7: @@ -9855,16 +10842,27 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true - rollup@4.18.0: - resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + rollup@4.12.0: + resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rollup@4.17.2: + resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rollup@4.21.3: + resolution: {integrity: sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - rrweb-cssom@0.7.1: - resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -9873,8 +10871,8 @@ packages: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} safe-buffer@5.1.2: @@ -9883,9 +10881,8 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} + safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} @@ -9897,15 +10894,15 @@ packages: sander@0.5.1: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} scheduler@0.24.0-canary-efb381bbf-20230505: resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} @@ -9925,10 +10922,6 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -9937,6 +10930,11 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + semver@7.6.2: resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} @@ -9947,30 +10945,42 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} + sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + serialize-error@2.1.0: resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} engines: {node: '>=0.10.0'} - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} + serverless@4.4.3: + resolution: {integrity: sha512-Re/PCfW/vkWnY+IhelN7HUpt3r5l+6m4IrKE6SOKGawhODGYGqdGBZSkMNyNkvHdeq158zDNohcsM+Be7K9sBg==} + engines: {node: '>=18.0.0'} + hasBin: true + + servify@0.1.12: + resolution: {integrity: sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==} + engines: {node: '>=6'} + set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} engines: {node: '>= 0.4'} - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} setimmediate@1.0.5: @@ -9987,8 +10997,8 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - sharp@0.33.4: - resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} + sharp@0.33.3: + resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==} engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@1.2.0: @@ -10010,11 +11020,14 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - shiki@1.10.0: - resolution: {integrity: sha512-YD2sXQ+TMD/F9BimV9Jn0wj35pqOvywvOG/3PB6hGHyGKlM7TJ9tyJ02jOb2kF8F0HfJwKNYrh3sW7jEcuRlXA==} + shiki@1.17.6: + resolution: {integrity: sha512-RejGugKpDM75vh6YtF9R771acxHRDikC/01kxsUGW+Pnaz3pTY+c8aZB5CnD7p0vuFPs1HaoAIU/4E+NCfS+mQ==} - shiki@1.12.1: - resolution: {integrity: sha512-nwmjbHKnOYYAe1aaQyEBHvQymJgfm86ZSS7fT8OaPRr4sbAcBNz7PbfAikMEFSDQ6se2j2zobkXvVKcBOm0ysg==} + shiki@1.5.2: + resolution: {integrity: sha512-fpPbuSaatinmdGijE7VYUD3hxLozR3ZZ+iAx8Iy2X6REmJGyF5hQl94SgmiUNTospq346nXUVZx0035dyGvIVw==} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -10030,6 +11043,12 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@2.8.2: + resolution: {integrity: sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==} + simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -10049,9 +11068,9 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} slice-ansi@2.1.0: resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} @@ -10061,8 +11080,11 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - socket.io-client@4.7.5: - resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + socket.io-client@4.7.4: + resolution: {integrity: sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==} engines: {node: '>=10.0.0'} socket.io-parser@4.2.4: @@ -10071,12 +11093,10 @@ packages: solady@https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b: resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b} - name: solady version: 0.0.231 solady@https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d: resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d} - name: solady version: 0.0.167 solc@0.8.24: @@ -10094,20 +11114,23 @@ packages: solidity-stringutils@https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: resolution: {tarball: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461} - name: solidity-stringutils version: 0.0.0 sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} - sorcery@0.11.1: - resolution: {integrity: sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==} + sorcery@0.11.0: + resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} hasBin: true source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -10125,7 +11148,6 @@ packages: sp1-contracts#v2.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb: resolution: {tarball: https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb} - name: sp1-contracts#v2.0.0 version: 0.0.0 space-separated-tokens@2.0.2: @@ -10134,18 +11156,6 @@ packages: spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.18: - resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} - split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -10157,6 +11167,14 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -10171,6 +11189,9 @@ packages: resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} engines: {node: '>=6'} + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + starlight-links-validator@0.8.0: resolution: {integrity: sha512-FYZ5cfV7jSL4wOsWmIkpR+9dH0Z8fxslSQl8IiAv5URfkxLgsaFzjx51FBeSaaS5uVmO5WgfkUjx3N52Jl1/TQ==} engines: {node: '>=18.14.1'} @@ -10178,8 +11199,8 @@ packages: '@astrojs/starlight': '>=0.15.0' astro: '>=4.0.0' - starlight-openapi@0.6.4: - resolution: {integrity: sha512-TIioFhMmSKhKau6g/fx5WgWyPQve7cjP896wQek3sHqCJeLAsTSqUYCb33bBb/4D1/6sUioqlfJd9J3Lc1NQjA==} + starlight-openapi@0.6.3: + resolution: {integrity: sha512-AHTbCJeGHzzhwVVi7UMgFgNKkvio2bbi9zQVtcI7CrMXVdd4jqL/L+R7MUxtr/DtzWG7PCCRsKPriwYubJ1ZPQ==} engines: {node: '>=18.14.1'} peerDependencies: '@astrojs/markdown-remark': '>=4.2.0' @@ -10205,11 +11226,8 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} - store2@2.14.3: - resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==} - - storybook@8.1.11: - resolution: {integrity: sha512-3KjIhF8lczXhKKHyHbOqV30dvuRYJSxc0d1as/C8kybuwE7cLaydhWGma7VBv5bTSPv0rDzucx7KcO+achArPg==} + storybook@8.3.0: + resolution: {integrity: sha512-XKU+nem9OKX/juvJPwka1Q7DTpSbOe0IMp8ZyLQWorhFKpquJdUjryl7Z9GiFZyyTykCqH4ItQ7h8PaOmqVMOw==} hasBin: true stream-browserify@3.0.0: @@ -10218,12 +11236,16 @@ packages: stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + stream-shift@1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} stream-to-it@0.2.4: resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} + strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} @@ -10240,16 +11262,18 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} + string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + + string_decoder@1.0.3: + resolution: {integrity: sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==} string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -10304,8 +11328,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + strip-literal@2.0.0: + resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} @@ -10316,6 +11340,9 @@ packages: style-to-object@1.0.6: resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -10324,8 +11351,8 @@ packages: sudo-prompt@9.2.1: resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} - superstruct@1.0.4: - resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + superstruct@1.0.3: + resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} engines: {node: '>=14.0.0'} supports-color@5.5.0: @@ -10344,8 +11371,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte-check@3.8.4: - resolution: {integrity: sha512-61aHMkdinWyH8BkkTX9jPLYxYzaAAz/FK/VQqdr2FiCQQ/q04WCwDlpGbHff1GdrMYTmW8chlTFvRWL9k0A8vg==} + svelte-check@3.7.1: + resolution: {integrity: sha512-U4uJoLCzmz2o2U33c7mPDJNhRYX/DNFV11XTUDlFxaKLsO7P+40gvJHMPpoRfa24jqZfST4/G9fGNcUGMO8NAQ==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 @@ -10355,11 +11382,11 @@ packages: peerDependencies: svelte: ^3.55.0 || ^4.0.0 - svelte-eslint-parser@0.39.2: - resolution: {integrity: sha512-87UwLuWTtDIuzWOhOi1zBL5wYVd07M5BK1qZ57YmXJB5/UmjUNJqGy3XSOhPqjckY1dATNV9y+mx+nI0WH6HPA==} + svelte-eslint-parser@0.35.0: + resolution: {integrity: sha512-CtbPseajW0gjwEvHiuzYJkPDjAcHz2FaHt540j6RVYrZgnE6xWkzUBodQ4I3nV+G5AS0Svt8K6aIA/CIU9xT2Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.115 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 peerDependenciesMeta: svelte: optional: true @@ -10377,9 +11404,9 @@ packages: peerDependencies: svelte: ^3 || ^4 - svelte-preprocess@5.1.4: - resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} - engines: {node: '>= 16.0.0'} + svelte-preprocess@5.1.3: + resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} + engines: {node: '>= 16.0.0', pnpm: ^8.0.0} peerDependencies: '@babel/core': ^7.10.2 coffeescript: ^2.5.1 @@ -10419,53 +11446,53 @@ packages: peerDependencies: svelte: ^3 || ^4 - svelte2tsx@0.7.13: - resolution: {integrity: sha512-aObZ93/kGAiLXA/I/kP+x9FriZM+GboB/ReOIGmLNbVGEd2xC+aTCppm3mk1cc9I/z60VQf7b2QDxC3jOXu3yw==} + svelte2tsx@0.7.19: + resolution: {integrity: sha512-PME/9mILn9wOihtk2dxu9tmf2+B9X6oWuqYPJRKSjqU4wq3Pc6+fOuYV7T3H+QF5afmA1oDobfXC6dzmK9NAVw==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@4.2.18: - resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==} + svelte@4.2.13: + resolution: {integrity: sha512-jtVt2KXLbQnsWN93Zd7EVboNh8Tqexes4rZfXNP7nYRjd9+JjubTD8BXloUmU1OUYpc6pdd1aKBhCV+b2ZKoMg==} + engines: {node: '>=16'} + + svelte@4.2.17: + resolution: {integrity: sha512-N7m1YnoXtRf5wya5Gyx3TWuTddI4nAyayyIWFojiWV5IayDYNV5i2mRp/7qNGol4DtxEYxljmrbgp1HM6hUbmQ==} engines: {node: '>=16'} sveltedoc-parser@4.2.1: resolution: {integrity: sha512-sWJRa4qOfRdSORSVw9GhfDEwsbsYsegnDzBevUCF6k/Eis/QqCu9lJ6I0+d/E2wOWCjOhlcJ3+jl/Iur+5mmCw==} engines: {node: '>=10.0.0'} + swarm-js@0.1.42: + resolution: {integrity: sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==} + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + synckit@0.8.6: + resolution: {integrity: sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==} engines: {node: ^14.18.0 || >=16.0.0} system-architecture@0.1.0: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} - table@6.8.2: - resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + table@6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} tailwindcss-image-rendering@1.0.2: resolution: {integrity: sha512-WC3hJd2RbHBYIqtJxwpQ5z94wUNyBrJn1eFz3J/jR7OGrQB8WYbJGvJQ9scNNVzoHEYGoNdZbUI90l9YgpBCwg==} - tailwindcss@3.4.4: - resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} + tailwindcss@3.4.3: + resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} engines: {node: '>=14.0.0'} hasBin: true - tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} + tar@4.4.19: + resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} + engines: {node: '>=4.5'} telejson@7.2.0: resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} @@ -10474,24 +11501,16 @@ packages: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} - temp-dir@3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} - engines: {node: '>=14.16'} - temp@0.8.4: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} engines: {node: '>=6.0.0'} - tempy@3.1.0: - resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} - engines: {node: '>=14.16'} - term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} - terser@5.31.1: - resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} + terser@5.27.2: + resolution: {integrity: sha512-sHXmLSkImesJ4p5apTeT63DsV4Obe1s37qT8qvwHRmVxKTBH7Rv9Wr26VcAMmLbmk9UliiwK8z+657NyJHHy/w==} engines: {node: '>=10'} hasBin: true @@ -10518,12 +11537,15 @@ packages: through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + timed-out@4.0.1: + resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} + engines: {node: '>=0.10.0'} + timeout-abort-controller@3.0.0: resolution: {integrity: sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==} - timers-ext@0.1.8: - resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} - engines: {node: '>=0.12'} + timers-ext@0.1.7: + resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -10531,17 +11553,32 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + + tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + tinypool@0.8.3: + resolution: {integrity: sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==} engines: {node: '>=14.0.0'} - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} + tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -10557,9 +11594,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tocbot@4.28.2: - resolution: {integrity: sha512-/MaSa9xI6mIo84IxqqliSCtPlH0oy7sLcY9s26qPMyH/2CxtZ2vNAXYlIdEQ7kjAkCQnc0rbLygf//F5c663oQ==} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -10568,8 +11602,12 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + + tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} engines: {node: '>=6'} tr46@0.0.3: @@ -10589,6 +11627,12 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@1.2.1: + resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -10599,8 +11643,8 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - ts-essentials@9.4.2: - resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} + ts-essentials@9.4.1: + resolution: {integrity: sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==} peerDependencies: typescript: '>=4.1.0' peerDependenciesMeta: @@ -10627,8 +11671,18 @@ packages: '@swc/wasm': optional: true - tsconfck@3.1.1: - resolution: {integrity: sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==} + tsconfck@3.0.3: + resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + tsconfck@3.1.3: + resolution: {integrity: sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==} engines: {node: ^18 || >=20} hasBin: true peerDependencies: @@ -10637,14 +11691,17 @@ packages: typescript: optional: true - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} tsutils@3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -10652,9 +11709,19 @@ packages: peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + tween-functions@1.2.0: resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -10667,22 +11734,10 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - type-fest@0.7.1: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -10691,44 +11746,49 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - type@2.7.3: - resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + type@1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} + typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typesafe-path@0.2.2: resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} typescript-auto-import-cache@0.3.3: resolution: {integrity: sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==} - typescript@5.5.3: - resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} + typescript@5.4.3: + resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} engines: {node: '>=14.17'} hasBin: true - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - - uglify-js@3.18.0: - resolution: {integrity: sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==} - engines: {node: '>=0.8.0'} + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} hasBin: true + ufo@1.4.0: + resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + uint8-varint@2.0.4: resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} @@ -10744,8 +11804,11 @@ packages: uint8arrays@4.0.10: resolution: {integrity: sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==} - uint8arrays@5.1.0: - resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} + uint8arrays@5.0.3: + resolution: {integrity: sha512-6LBuKji28kHjgPJMkQ6GDaBb1lRwIhyOYq6pDGwYMoDPfImE9SkuYENVmR0yu9yGgs2clHUSY9fKDukR+AXfqQ==} + + ultron@1.1.1: + resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==} unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -10756,8 +11819,8 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + undici@5.28.3: + resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} engines: {node: '>=14.0'} unenv@1.9.0: @@ -10782,17 +11845,9 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unique-string@3.0.0: - resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} - engines: {node: '>=12'} - unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} @@ -10839,26 +11894,30 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin@1.11.0: - resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==} + unplugin@1.14.1: + resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} engines: {node: '>=14.0.0'} + peerDependencies: + webpack-sources: ^3 + peerDependenciesMeta: + webpack-sources: + optional: true - unstorage@1.10.2: - resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} + unstorage@1.10.1: + resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} peerDependencies: - '@azure/app-configuration': ^1.5.0 + '@azure/app-configuration': ^1.4.1 '@azure/cosmos': ^4.0.0 '@azure/data-tables': ^13.2.2 - '@azure/identity': ^4.0.1 - '@azure/keyvault-secrets': ^4.8.0 - '@azure/storage-blob': ^12.17.0 - '@capacitor/preferences': ^5.0.7 - '@netlify/blobs': ^6.5.0 || ^7.0.0 - '@planetscale/database': ^1.16.0 - '@upstash/redis': ^1.28.4 - '@vercel/kv': ^1.0.1 + '@azure/identity': ^3.3.2 + '@azure/keyvault-secrets': ^4.7.0 + '@azure/storage-blob': ^12.16.0 + '@capacitor/preferences': ^5.0.6 + '@netlify/blobs': ^6.2.0 + '@planetscale/database': ^1.11.0 + '@upstash/redis': ^1.23.4 + '@vercel/kv': ^0.2.3 idb-keyval: ^6.2.1 - ioredis: ^5.3.2 peerDependenciesMeta: '@azure/app-configuration': optional: true @@ -10884,8 +11943,6 @@ packages: optional: true idb-keyval: optional: true - ioredis: - optional: true untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -10895,12 +11952,24 @@ packages: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true - update-browserslist-db@1.0.16: - resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' + upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + + upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} @@ -10910,25 +11979,8 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - use-callback-ref@1.3.2: - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + url-set-query@1.0.0: + resolution: {integrity: sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==} use-sync-external-store@1.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} @@ -10939,8 +11991,8 @@ packages: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} - utf-8-validate@6.0.4: - resolution: {integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==} + utf-8-validate@6.0.3: + resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} utf8@3.0.0: @@ -10956,6 +12008,11 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -10970,8 +12027,9 @@ packages: v8-compile-cache@2.4.0: resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} valtio@1.11.2: resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} @@ -10985,6 +12043,9 @@ packages: react: optional: true + varint@5.0.2: + resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} + varint@6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} @@ -10992,6 +12053,10 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + vfile-location@5.0.2: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} @@ -11001,8 +12066,8 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - vfile@6.0.2: - resolution: {integrity: sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==} + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} viem@1.21.4: resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} @@ -11012,14 +12077,27 @@ packages: typescript: optional: true - viem@2.16.5: - resolution: {integrity: sha512-QDESALYDyLSP+pIr7adH3QPZ+3is16aOVMXXZE0X1GVbgL7PDMZQ8xIF1X/B1hgyqkBl2HhMpUaq6ksUdBV/YA==} + viem@2.21.7: + resolution: {integrity: sha512-PFgppakInuHX31wHDx1dzAjhj4t6Po6WrWtutDi33z2vabIT0Wv8qT6tl7DLqfLy2NkTqfN2mdshYLeoI5ZHvQ==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + viem@2.9.29: + resolution: {integrity: sha512-LWvDSyB2tftKuSMAyZTXk3pDYj3c0aaOdr2JbDZEsPJw5zVbqg3FpoPHnUkHai8KcZI8aPWRKV31TYV1cBse9A==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: typescript: optional: true + vite-node@1.5.0: + resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + vite-node@1.6.0: resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} @@ -11061,8 +12139,8 @@ packages: terser: optional: true - vite@5.3.2: - resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} + vite@5.1.3: + resolution: {integrity: sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -11089,8 +12167,8 @@ packages: terser: optional: true - vite@5.4.0: - resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==} + vite@5.2.11: + resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -11098,7 +12176,6 @@ packages: less: '*' lightningcss: ^1.21.0 sass: '*' - sass-embedded: '*' stylus: '*' sugarss: '*' terser: ^5.4.0 @@ -11111,8 +12188,6 @@ packages: optional: true sass: optional: true - sass-embedded: - optional: true stylus: optional: true sugarss: @@ -11120,11 +12195,50 @@ packages: terser: optional: true - vitefu@0.2.5: - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + vite@5.4.5: + resolution: {integrity: sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitefu@0.2.5: + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + + vitefu@1.0.2: + resolution: {integrity: sha512-0/iAvbXyM3RiPPJ4lyD4w6Mjgtf4ejTK6TPvTNG3H32PLwuT0N/ZjJLiXug7ETE/LWtTeHw9WRv7uX/tIKYyKg==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: vite: optional: true @@ -11140,6 +12254,31 @@ packages: typescript: 3.x || 4.x || 5.x vitest: '>=0.31.1' + vitest@1.5.0: + resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.5.0 + '@vitest/ui': 1.5.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vitest@1.6.0: resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -11172,34 +12311,34 @@ packages: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} - volar-service-css@0.0.59: - resolution: {integrity: sha512-gLNjJnECbalPvQB7qeJjhkDN8sR5M3ItbVYjnyio61aHaWptIiXm/HfDahcQ2ApwmvWidkMWWegjGq5L0BENDA==} + volar-service-css@0.0.61: + resolution: {integrity: sha512-Ct9L/w+IB1JU8F4jofcNCGoHy6TF83aiapfZq9A0qYYpq+Kk5dH+ONS+rVZSsuhsunq8UvAuF8Gk6B8IFLfniw==} peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-emmet@0.0.59: - resolution: {integrity: sha512-6EynHcuMwMBETpK29TbZvIMmvzdVG+Tkokk9VWfZeI+SwDptk2tgdhEqiXXvIkqYNgbuu73Itp66lpH76cAU+Q==} + volar-service-emmet@0.0.61: + resolution: {integrity: sha512-iiYqBxjjcekqrRruw4COQHZME6EZYWVbkHjHDbULpml3g8HGJHzpAMkj9tXNCPxf36A+f1oUYjsvZt36qPg4cg==} peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-html@0.0.59: - resolution: {integrity: sha512-hEXOsYpILDlITZxnqRLV9OepVWD63GZBsyjMxszwdzlxvGZjzbGcBBinJGGJRwFIV8djdJwnt91bkdg1V5tj6Q==} + volar-service-html@0.0.61: + resolution: {integrity: sha512-yFE+YmmgqIL5HI4ORqP++IYb1QaGcv+xBboI0WkCxJJ/M35HZj7f5rbT3eQ24ECLXFbFCFanckwyWJVz5KmN3Q==} peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-prettier@0.0.59: - resolution: {integrity: sha512-FmBR4lsgFRGR3V0LnxZZal0WqdOJjuLL6mQSj4p57M15APtQwuocG/FiF+ONGFnwRXMOIBDBTCARdth+TKgL3A==} + volar-service-prettier@0.0.61: + resolution: {integrity: sha512-F612nql5I0IS8HxXemCGvOR2Uxd4XooIwqYVUvk7WSBxP/+xu1jYvE3QJ7EVpl8Ty3S4SxPXYiYTsG3bi+gzIQ==} peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 + '@volar/language-service': ~2.4.0 prettier: ^2.2 || ^3.0 peerDependenciesMeta: '@volar/language-service': @@ -11207,41 +12346,73 @@ packages: prettier: optional: true - volar-service-typescript-twoslash-queries@0.0.59: - resolution: {integrity: sha512-skm8e6yhCIkqLwJB6S9MqT5lO9LNFuMD3dYxKpmOZs1CKbXmCZZTmLfEaD5VkJae1xdleEDZFFTHl2O5HLjOGQ==} + volar-service-typescript-twoslash-queries@0.0.61: + resolution: {integrity: sha512-99FICGrEF0r1E2tV+SvprHPw9Knyg7BdW2fUch0tf59kG+KG+Tj4tL6tUg+cy8f23O/VXlmsWFMIE+bx1dXPnQ==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-typescript@0.0.61: + resolution: {integrity: sha512-4kRHxVbW7wFBHZWRU6yWxTgiKETBDIJNwmJUAWeP0mHaKpnDGj/astdRFKqGFRYVeEYl45lcUPhdJyrzanjsdQ==} peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-typescript@0.0.59: - resolution: {integrity: sha512-VCOpfiu+lUo5lapWLB5L5vmQGtwzmNWn5MueV915eku7blpphmE+Z7hCNcL1NApn7AetXWhiblv8ZhmUx/dGIA==} + volar-service-yaml@0.0.61: + resolution: {integrity: sha512-L+gbDiLDQQ1rZUbJ3mf3doDsoQUa8OZM/xdpk/unMg1Vz24Zmi2Ign8GrZyBD7bRoIQDwOH9gdktGDKzRPpUNw==} peerDependencies: - '@volar/language-service': ~2.4.0-alpha.12 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - vscode-css-languageservice@6.3.0: - resolution: {integrity: sha512-nU92imtkgzpCL0xikrIb8WvedV553F2BENzgz23wFuok/HLN5BeQmroMy26pUwFxV2eV8oNRmYCUv8iO7kSMhw==} + vscode-css-languageservice@6.3.1: + resolution: {integrity: sha512-1BzTBuJfwMc3A0uX4JBdJgoxp74cjj4q2mDJdp49yD/GuAq4X0k5WtK6fNcMYr+FfJ9nqgR6lpfCSZDkARJ5qQ==} + + vscode-html-languageservice@5.2.0: + resolution: {integrity: sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==} - vscode-html-languageservice@5.3.0: - resolution: {integrity: sha512-C4Z3KsP5Ih+fjHpiBc5jxmvCl+4iEwvXegIrzu2F5pktbWvQaBT3YkVPk8N+QlSSMk8oCG6PKtZ/Sq2YHb5e8g==} + vscode-html-languageservice@5.3.1: + resolution: {integrity: sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==} + + vscode-json-languageservice@4.1.8: + resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} + engines: {npm: '>=7.0.0'} + + vscode-jsonrpc@6.0.0: + resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} + engines: {node: '>=8.0.0 || >=10.0.0'} vscode-jsonrpc@8.2.0: resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} engines: {node: '>=14.0.0'} + vscode-languageserver-protocol@3.16.0: + resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} + vscode-languageserver-protocol@3.17.5: resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} vscode-languageserver-textdocument@1.0.11: resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.16.0: + resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} + vscode-languageserver-types@3.17.5: resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + vscode-languageserver@7.0.0: + resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} + hasBin: true + vscode-languageserver@9.0.1: resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} hasBin: true @@ -11262,27 +12433,109 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - watchpack@2.4.1: - resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} - engines: {node: '>=10.13.0'} - wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + web3-bzz@1.10.4: + resolution: {integrity: sha512-ZZ/X4sJ0Uh2teU9lAGNS8EjveEppoHNQiKlOXAjedsrdWuaMErBPdLQjXfcrYvN6WM6Su9PMsAxf3FXXZ+HwQw==} + engines: {node: '>=8.0.0'} + + web3-core-helpers@1.10.4: + resolution: {integrity: sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==} + engines: {node: '>=8.0.0'} + + web3-core-method@1.10.4: + resolution: {integrity: sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==} + engines: {node: '>=8.0.0'} + + web3-core-promievent@1.10.4: + resolution: {integrity: sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==} + engines: {node: '>=8.0.0'} + + web3-core-requestmanager@1.10.4: + resolution: {integrity: sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==} + engines: {node: '>=8.0.0'} + + web3-core-subscriptions@1.10.4: + resolution: {integrity: sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==} + engines: {node: '>=8.0.0'} + + web3-core@1.10.4: + resolution: {integrity: sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==} + engines: {node: '>=8.0.0'} + web3-eth-abi@1.10.4: resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} engines: {node: '>=8.0.0'} + web3-eth-accounts@1.10.4: + resolution: {integrity: sha512-ysy5sVTg9snYS7tJjxVoQAH6DTOTkRGR8emEVCWNGLGiB9txj+qDvSeT0izjurS/g7D5xlMAgrEHLK1Vi6I3yg==} + engines: {node: '>=8.0.0'} + + web3-eth-contract@1.10.4: + resolution: {integrity: sha512-Q8PfolOJ4eV9TvnTj1TGdZ4RarpSLmHnUnzVxZ/6/NiTfe4maJz99R0ISgwZkntLhLRtw0C7LRJuklzGYCNN3A==} + engines: {node: '>=8.0.0'} + + web3-eth-ens@1.10.4: + resolution: {integrity: sha512-LLrvxuFeVooRVZ9e5T6OWKVflHPFgrVjJ/jtisRWcmI7KN/b64+D/wJzXqgmp6CNsMQcE7rpmf4CQmJCrTdsgg==} + engines: {node: '>=8.0.0'} + + web3-eth-iban@1.10.4: + resolution: {integrity: sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==} + engines: {node: '>=8.0.0'} + + web3-eth-personal@1.10.4: + resolution: {integrity: sha512-BRa/hs6jU1hKHz+AC/YkM71RP3f0Yci1dPk4paOic53R4ZZG4MgwKRkJhgt3/GPuPliwS46f/i5A7fEGBT4F9w==} + engines: {node: '>=8.0.0'} + + web3-eth@1.10.4: + resolution: {integrity: sha512-Sql2kYKmgt+T/cgvg7b9ce24uLS7xbFrxE4kuuor1zSCGrjhTJ5rRNG8gTJUkAJGKJc7KgnWmgW+cOfMBPUDSA==} + engines: {node: '>=8.0.0'} + + web3-net@1.10.4: + resolution: {integrity: sha512-mKINnhOOnZ4koA+yV2OT5s5ztVjIx7IY9a03w6s+yao/BUn+Luuty0/keNemZxTr1E8Ehvtn28vbOtW7Ids+Ow==} + engines: {node: '>=8.0.0'} + + web3-providers-http@1.10.4: + resolution: {integrity: sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==} + engines: {node: '>=8.0.0'} + + web3-providers-ipc@1.10.4: + resolution: {integrity: sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==} + engines: {node: '>=8.0.0'} + + web3-providers-ws@1.10.4: + resolution: {integrity: sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==} + engines: {node: '>=8.0.0'} + + web3-shh@1.10.4: + resolution: {integrity: sha512-cOH6iFFM71lCNwSQrC3niqDXagMqrdfFW85hC9PFUrAr3PUrIem8TNstTc3xna2bwZeWG6OBy99xSIhBvyIACw==} + engines: {node: '>=8.0.0'} + web3-utils@1.10.4: resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} engines: {node: '>=8.0.0'} + web3@1.10.4: + resolution: {integrity: sha512-kgJvQZjkmjOEKimx/tJQsqWfRDPTTcBfYPa9XletxuHLpHcXdx67w8EFn5AW3eVxCutE9dTVHgGa9VYe8vgsEA==} + engines: {node: '>=8.0.0'} + + webauthn-p256@0.0.5: + resolution: {integrity: sha512-drMGNWKdaixZNobeORVIqq7k5DsRC9FnG201K2QjeOoQLmtSDaSsVZdkg6n5jUALJKcAG++zBPJXmv6hy0nWFg==} + + webextension-polyfill-ts@0.25.0: + resolution: {integrity: sha512-ikQhwwHYkpBu00pFaUzIKY26I6L87DeRI+Q6jBT1daZUNuu8dSrg5U9l/ZbqdaQ1M/TTSPKeAa3kolP5liuedw==} + deprecated: This project has moved to @types/webextension-polyfill + webextension-polyfill@0.10.0: resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + webextension-polyfill@0.7.0: + resolution: {integrity: sha512-su48BkMLxqzTTvPSE1eWxKToPS2Tv5DLGxKexLEVpwFd6Po6N8hhSLIvG6acPAg7qERoEaDL+Y5HQJeJeml5Aw==} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -11290,13 +12543,13 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + websocket@1.0.35: + resolution: {integrity: sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==} + engines: {node: '>=4.0.0'} + whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -11325,16 +12578,12 @@ packages: resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} engines: {node: '>=4'} - which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - which-pm@3.0.0: resolution: {integrity: sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==} engines: {node: '>=18.12'} - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} which@1.3.1: @@ -11360,12 +12609,9 @@ packages: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + winston@2.4.7: + resolution: {integrity: sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==} + engines: {node: '>= 0.10.0'} wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -11385,8 +12631,19 @@ packages: write-file-atomic@2.4.3: resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - ws@6.2.3: - resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + ws@3.3.3: + resolution: {integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -11408,8 +12665,8 @@ packages: utf-8-validate: optional: true - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -11420,6 +12677,18 @@ packages: utf-8-validate: optional: true + ws@8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} @@ -11432,6 +12701,18 @@ packages: utf-8-validate: optional: true + ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.17.1: resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} @@ -11444,10 +12725,27 @@ packages: utf-8-validate: optional: true + xhr-request-promise@0.1.3: + resolution: {integrity: sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==} + + xhr-request@1.1.0: + resolution: {integrity: sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==} + + xhr@2.6.0: + resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} @@ -11459,6 +12757,9 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} + xxhash-wasm@1.0.2: + resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} + y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} @@ -11466,6 +12767,10 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + yaeti@0.0.6: + resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} + engines: {node: '>=0.10.32'} + yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} @@ -11475,12 +12780,24 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml-language-server@1.15.0: + resolution: {integrity: sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==} + hasBin: true + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.4.5: - resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} + yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} + engines: {node: '>= 14'} + + yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} engines: {node: '>= 14'} hasBin: true @@ -11508,15 +12825,25 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + yocto-queue@1.1.1: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} - zod-to-json-schema@3.23.2: - resolution: {integrity: sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==} + zod-to-json-schema@3.23.3: + resolution: {integrity: sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==} peerDependencies: zod: ^3.23.3 + zod-to-ts@1.2.0: + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} + peerDependencies: + typescript: ^4.9.4 || ^5.0.2 + zod: ^3 + zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} @@ -11543,57 +12870,64 @@ packages: snapshots: + '@aashutoshrathi/word-wrap@1.2.6': {} + '@adobe/css-tools@4.4.0': {} '@adraffy/ens-normalize@1.10.0': {} + '@adraffy/ens-normalize@1.10.1': {} + '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.3.0': + '@ampproject/remapping@2.2.1': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.25 '@apidevtools/openapi-schemas@2.1.0': {} '@apidevtools/swagger-methods@3.0.2': {} - '@astrojs/check@0.8.3(prettier@3.3.2)(typescript@5.5.3)': + '@astrojs/check@0.8.3(prettier@3.2.5)(typescript@5.4.5)': dependencies: - '@astrojs/language-server': 2.13.2(prettier@3.3.2)(typescript@5.5.3) + '@astrojs/language-server': 2.14.2(prettier@3.2.5)(typescript@5.4.5) chokidar: 3.6.0 fast-glob: 3.3.2 kleur: 4.1.5 - typescript: 5.5.3 + typescript: 5.4.5 yargs: 17.7.2 transitivePeerDependencies: - prettier - prettier-plugin-astro - '@astrojs/compiler@2.10.2': {} + '@astrojs/compiler@2.10.3': {} '@astrojs/internal-helpers@0.4.1': {} - '@astrojs/language-server@2.13.2(prettier@3.3.2)(typescript@5.5.3)': + '@astrojs/language-server@2.14.2(prettier@3.2.5)(typescript@5.4.5)': dependencies: - '@astrojs/compiler': 2.10.2 + '@astrojs/compiler': 2.10.3 + '@astrojs/yaml2ts': 0.2.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@volar/kit': 2.4.0-alpha.18(typescript@5.5.3) - '@volar/language-core': 2.4.0-alpha.18 - '@volar/language-server': 2.4.0-alpha.18 - '@volar/language-service': 2.4.0-alpha.18 - '@volar/typescript': 2.4.0-alpha.18 + '@volar/kit': 2.4.5(typescript@5.4.5) + '@volar/language-core': 2.4.5 + '@volar/language-server': 2.4.5 + '@volar/language-service': 2.4.5 + '@volar/typescript': 2.4.5 fast-glob: 3.3.2 muggle-string: 0.4.1 - prettier: 3.3.2 - volar-service-css: 0.0.59(@volar/language-service@2.4.0-alpha.18) - volar-service-emmet: 0.0.59(@volar/language-service@2.4.0-alpha.18) - volar-service-html: 0.0.59(@volar/language-service@2.4.0-alpha.18) - volar-service-prettier: 0.0.59(@volar/language-service@2.4.0-alpha.18)(prettier@3.3.2) - volar-service-typescript: 0.0.59(@volar/language-service@2.4.0-alpha.18) - volar-service-typescript-twoslash-queries: 0.0.59(@volar/language-service@2.4.0-alpha.18) - vscode-html-languageservice: 5.3.0 + volar-service-css: 0.0.61(@volar/language-service@2.4.5) + volar-service-emmet: 0.0.61(@volar/language-service@2.4.5) + volar-service-html: 0.0.61(@volar/language-service@2.4.5) + volar-service-prettier: 0.0.61(@volar/language-service@2.4.5)(prettier@3.2.5) + volar-service-typescript: 0.0.61(@volar/language-service@2.4.5) + volar-service-typescript-twoslash-queries: 0.0.61(@volar/language-service@2.4.5) + volar-service-yaml: 0.0.61(@volar/language-service@2.4.5) + vscode-html-languageservice: 5.2.0 vscode-uri: 3.0.8 + optionalDependencies: + prettier: 3.2.5 transitivePeerDependencies: - typescript @@ -11611,33 +12945,32 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.0 remark-smartypants: 3.0.2 - shiki: 1.12.1 + shiki: 1.17.6 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - vfile: 6.0.2 + vfile: 6.0.3 transitivePeerDependencies: - supports-color - '@astrojs/mdx@3.1.3(astro@4.13.3)': + '@astrojs/mdx@3.1.6(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5))': dependencies: '@astrojs/markdown-remark': 5.2.0 '@mdx-js/mdx': 3.0.1 acorn: 8.12.1 - astro: 4.13.3(typescript@5.5.3) + astro: 4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 - github-slugger: 2.0.0 gray-matter: 4.0.3 - hast-util-to-html: 9.0.1 + hast-util-to-html: 9.0.2 kleur: 4.1.5 rehype-raw: 7.0.0 remark-gfm: 4.0.0 remark-smartypants: 3.0.2 source-map: 0.7.4 unist-util-visit: 5.0.0 - vfile: 6.0.2 + vfile: 6.0.3 transitivePeerDependencies: - supports-color @@ -11651,15 +12984,15 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.23.8 - '@astrojs/starlight@0.25.4(astro@4.13.3)': + '@astrojs/starlight@0.25.5(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5))': dependencies: - '@astrojs/mdx': 3.1.3(astro@4.13.3) + '@astrojs/mdx': 3.1.6(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)) '@astrojs/sitemap': 3.1.6 '@pagefind/default-ui': 1.1.0 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - astro: 4.13.3(typescript@5.5.3) - astro-expressive-code: 0.35.6(astro@4.13.3) + astro: 4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5) + astro-expressive-code: 0.35.6(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)) bcp-47: 2.1.0 hast-util-from-html: 2.0.1 hast-util-select: 6.0.2 @@ -11674,14 +13007,14 @@ snapshots: remark-directive: 3.0.0 unified: 11.0.5 unist-util-visit: 5.0.0 - vfile: 6.0.2 + vfile: 6.0.3 transitivePeerDependencies: - supports-color '@astrojs/telemetry@3.1.0': dependencies: ci-info: 4.0.0 - debug: 4.3.6 + debug: 4.3.7 dlv: 1.1.3 dset: 3.1.3 is-docker: 3.0.0 @@ -11690,917 +13023,791 @@ snapshots: transitivePeerDependencies: - supports-color - '@aw-web-design/x-default-browser@1.4.126': + '@astrojs/yaml2ts@0.2.1': dependencies: - default-browser-id: 3.0.0 + yaml: 2.5.1 + + '@aws-crypto/crc32@3.0.0': + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.577.0 + tslib: 1.14.1 - '@aws-crypto/crc32@5.2.0': + '@aws-crypto/crc32c@3.0.0': dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.598.0 - tslib: 2.6.3 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.577.0 + tslib: 1.14.1 - '@aws-crypto/crc32c@5.2.0': + '@aws-crypto/ie11-detection@3.0.0': dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.598.0 - tslib: 2.6.3 + tslib: 1.14.1 - '@aws-crypto/sha1-browser@5.2.0': + '@aws-crypto/sha1-browser@3.0.0': dependencies: - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.598.0 + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.577.0 '@aws-sdk/util-locate-window': 3.568.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.3 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 - '@aws-crypto/sha256-browser@5.2.0': + '@aws-crypto/sha256-browser@3.0.0': dependencies: - '@aws-crypto/sha256-js': 5.2.0 - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.598.0 + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.577.0 '@aws-sdk/util-locate-window': 3.568.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.3 - - '@aws-crypto/sha256-js@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.598.0 - tslib: 2.6.3 - - '@aws-crypto/supports-web-crypto@5.2.0': - dependencies: - tslib: 2.6.3 - - '@aws-crypto/util@5.2.0': - dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.3 - - '@aws-sdk/client-s3@3.608.0': - dependencies: - '@aws-crypto/sha1-browser': 5.2.0 - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.606.0(@aws-sdk/client-sts@3.606.0) - '@aws-sdk/client-sts': 3.606.0 - '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0) - '@aws-sdk/middleware-bucket-endpoint': 3.598.0 - '@aws-sdk/middleware-expect-continue': 3.598.0 - '@aws-sdk/middleware-flexible-checksums': 3.598.0 - '@aws-sdk/middleware-host-header': 3.598.0 - '@aws-sdk/middleware-location-constraint': 3.598.0 - '@aws-sdk/middleware-logger': 3.598.0 - '@aws-sdk/middleware-recursion-detection': 3.598.0 - '@aws-sdk/middleware-sdk-s3': 3.598.0 - '@aws-sdk/middleware-signing': 3.598.0 - '@aws-sdk/middleware-ssec': 3.598.0 - '@aws-sdk/middleware-user-agent': 3.598.0 - '@aws-sdk/region-config-resolver': 3.598.0 - '@aws-sdk/signature-v4-multi-region': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@aws-sdk/util-user-agent-browser': 3.598.0 - '@aws-sdk/util-user-agent-node': 3.598.0 - '@aws-sdk/xml-builder': 3.598.0 - '@smithy/config-resolver': 3.0.4 - '@smithy/core': 2.2.4 - '@smithy/eventstream-serde-browser': 3.0.4 - '@smithy/eventstream-serde-config-resolver': 3.0.3 - '@smithy/eventstream-serde-node': 3.0.4 - '@smithy/fetch-http-handler': 3.2.0 - '@smithy/hash-blob-browser': 3.1.2 - '@smithy/hash-node': 3.0.3 - '@smithy/hash-stream-node': 3.1.2 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/md5-js': 3.0.3 - '@smithy/middleware-content-length': 3.0.3 - '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.1 - '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-js@1.2.2': + dependencies: + '@aws-crypto/util': 1.2.2 + '@aws-sdk/types': 3.577.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-js@3.0.0': + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.577.0 + tslib: 1.14.1 + + '@aws-crypto/supports-web-crypto@3.0.0': + dependencies: + tslib: 1.14.1 + + '@aws-crypto/util@1.2.2': + dependencies: + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/util@3.0.0': + dependencies: + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-sdk/client-s3@3.577.0': + dependencies: + '@aws-crypto/sha1-browser': 3.0.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sso-oidc': 3.577.0 + '@aws-sdk/client-sts': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/core': 3.576.0 + '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) + '@aws-sdk/middleware-bucket-endpoint': 3.577.0 + '@aws-sdk/middleware-expect-continue': 3.577.0 + '@aws-sdk/middleware-flexible-checksums': 3.577.0 + '@aws-sdk/middleware-host-header': 3.577.0 + '@aws-sdk/middleware-location-constraint': 3.577.0 + '@aws-sdk/middleware-logger': 3.577.0 + '@aws-sdk/middleware-recursion-detection': 3.577.0 + '@aws-sdk/middleware-sdk-s3': 3.577.0 + '@aws-sdk/middleware-signing': 3.577.0 + '@aws-sdk/middleware-ssec': 3.577.0 + '@aws-sdk/middleware-user-agent': 3.577.0 + '@aws-sdk/region-config-resolver': 3.577.0 + '@aws-sdk/signature-v4-multi-region': 3.577.0 + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-endpoints': 3.577.0 + '@aws-sdk/util-user-agent-browser': 3.577.0 + '@aws-sdk/util-user-agent-node': 3.577.0 + '@aws-sdk/xml-builder': 3.575.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.1 + '@smithy/eventstream-serde-browser': 3.0.0 + '@smithy/eventstream-serde-config-resolver': 3.0.0 + '@smithy/eventstream-serde-node': 3.0.0 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/hash-blob-browser': 3.0.0 + '@smithy/hash-node': 3.0.0 + '@smithy/hash-stream-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/md5-js': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.1 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.7 - '@smithy/util-defaults-mode-node': 3.0.7 - '@smithy/util-endpoints': 2.0.4 - '@smithy/util-retry': 3.0.3 - '@smithy/util-stream': 3.0.5 + '@smithy/util-defaults-mode-browser': 3.0.1 + '@smithy/util-defaults-mode-node': 3.0.1 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-retry': 3.0.0 + '@smithy/util-stream': 3.0.1 '@smithy/util-utf8': 3.0.0 - '@smithy/util-waiter': 3.1.2 - tslib: 2.6.3 + '@smithy/util-waiter': 3.0.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.606.0(@aws-sdk/client-sts@3.606.0)': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.606.0 - '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0) - '@aws-sdk/middleware-host-header': 3.598.0 - '@aws-sdk/middleware-logger': 3.598.0 - '@aws-sdk/middleware-recursion-detection': 3.598.0 - '@aws-sdk/middleware-user-agent': 3.598.0 - '@aws-sdk/region-config-resolver': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@aws-sdk/util-user-agent-browser': 3.598.0 - '@aws-sdk/util-user-agent-node': 3.598.0 - '@smithy/config-resolver': 3.0.4 - '@smithy/core': 2.2.4 - '@smithy/fetch-http-handler': 3.2.0 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.3 - '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.1 - '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 + '@aws-sdk/client-sso-oidc@3.577.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/core': 3.576.0 + '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) + '@aws-sdk/middleware-host-header': 3.577.0 + '@aws-sdk/middleware-logger': 3.577.0 + '@aws-sdk/middleware-recursion-detection': 3.577.0 + '@aws-sdk/middleware-user-agent': 3.577.0 + '@aws-sdk/region-config-resolver': 3.577.0 + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-endpoints': 3.577.0 + '@aws-sdk/util-user-agent-browser': 3.577.0 + '@aws-sdk/util-user-agent-node': 3.577.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.1 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/hash-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.1 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.7 - '@smithy/util-defaults-mode-node': 3.0.7 - '@smithy/util-endpoints': 2.0.4 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 + '@smithy/util-defaults-mode-browser': 3.0.1 + '@smithy/util-defaults-mode-node': 3.0.1 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.598.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.598.0 - '@aws-sdk/middleware-host-header': 3.598.0 - '@aws-sdk/middleware-logger': 3.598.0 - '@aws-sdk/middleware-recursion-detection': 3.598.0 - '@aws-sdk/middleware-user-agent': 3.598.0 - '@aws-sdk/region-config-resolver': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@aws-sdk/util-user-agent-browser': 3.598.0 - '@aws-sdk/util-user-agent-node': 3.598.0 - '@smithy/config-resolver': 3.0.4 - '@smithy/core': 2.2.4 - '@smithy/fetch-http-handler': 3.2.0 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.3 - '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.1 - '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 + '@aws-sdk/client-sso@3.577.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.576.0 + '@aws-sdk/middleware-host-header': 3.577.0 + '@aws-sdk/middleware-logger': 3.577.0 + '@aws-sdk/middleware-recursion-detection': 3.577.0 + '@aws-sdk/middleware-user-agent': 3.577.0 + '@aws-sdk/region-config-resolver': 3.577.0 + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-endpoints': 3.577.0 + '@aws-sdk/util-user-agent-browser': 3.577.0 + '@aws-sdk/util-user-agent-node': 3.577.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.1 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/hash-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.1 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.7 - '@smithy/util-defaults-mode-node': 3.0.7 - '@smithy/util-endpoints': 2.0.4 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 + '@smithy/util-defaults-mode-browser': 3.0.1 + '@smithy/util-defaults-mode-node': 3.0.1 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.606.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.606.0(@aws-sdk/client-sts@3.606.0) - '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0) - '@aws-sdk/middleware-host-header': 3.598.0 - '@aws-sdk/middleware-logger': 3.598.0 - '@aws-sdk/middleware-recursion-detection': 3.598.0 - '@aws-sdk/middleware-user-agent': 3.598.0 - '@aws-sdk/region-config-resolver': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@aws-sdk/util-user-agent-browser': 3.598.0 - '@aws-sdk/util-user-agent-node': 3.598.0 - '@smithy/config-resolver': 3.0.4 - '@smithy/core': 2.2.4 - '@smithy/fetch-http-handler': 3.2.0 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.3 - '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.1 - '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 + '@aws-sdk/client-sts@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sso-oidc': 3.577.0 + '@aws-sdk/core': 3.576.0 + '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) + '@aws-sdk/middleware-host-header': 3.577.0 + '@aws-sdk/middleware-logger': 3.577.0 + '@aws-sdk/middleware-recursion-detection': 3.577.0 + '@aws-sdk/middleware-user-agent': 3.577.0 + '@aws-sdk/region-config-resolver': 3.577.0 + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-endpoints': 3.577.0 + '@aws-sdk/util-user-agent-browser': 3.577.0 + '@aws-sdk/util-user-agent-node': 3.577.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.1 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/hash-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.1 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.7 - '@smithy/util-defaults-mode-node': 3.0.7 - '@smithy/util-endpoints': 2.0.4 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 + '@smithy/util-defaults-mode-browser': 3.0.1 + '@smithy/util-defaults-mode-node': 3.0.1 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/core@3.598.0': + '@aws-sdk/core@3.576.0': dependencies: - '@smithy/core': 2.2.4 - '@smithy/protocol-http': 4.0.3 - '@smithy/signature-v4': 3.1.2 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 + '@smithy/core': 2.0.1 + '@smithy/protocol-http': 4.0.0 + '@smithy/signature-v4': 3.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 fast-xml-parser: 4.2.5 - tslib: 2.6.3 - - '@aws-sdk/credential-provider-env@3.598.0': - dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@aws-sdk/credential-provider-http@3.598.0': - dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/fetch-http-handler': 3.2.0 - '@smithy/node-http-handler': 3.1.1 - '@smithy/property-provider': 3.1.3 - '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 - '@smithy/util-stream': 3.0.5 - tslib: 2.6.3 - - '@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0)': - dependencies: - '@aws-sdk/client-sts': 3.606.0 - '@aws-sdk/credential-provider-env': 3.598.0 - '@aws-sdk/credential-provider-http': 3.598.0 - '@aws-sdk/credential-provider-process': 3.598.0 - '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.606.0) - '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.606.0) - '@aws-sdk/types': 3.598.0 - '@smithy/credential-provider-imds': 3.1.3 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-env@3.577.0': + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-http@3.577.0': + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/node-http-handler': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/util-stream': 3.0.1 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-ini@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0)': + dependencies: + '@aws-sdk/client-sts': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/credential-provider-env': 3.577.0 + '@aws-sdk/credential-provider-process': 3.577.0 + '@aws-sdk/credential-provider-sso': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.577.0) + '@aws-sdk/types': 3.577.0 + '@smithy/credential-provider-imds': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0)': - dependencies: - '@aws-sdk/credential-provider-env': 3.598.0 - '@aws-sdk/credential-provider-http': 3.598.0 - '@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.606.0)(@aws-sdk/client-sts@3.606.0) - '@aws-sdk/credential-provider-process': 3.598.0 - '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.606.0) - '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.606.0) - '@aws-sdk/types': 3.598.0 - '@smithy/credential-provider-imds': 3.1.3 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/credential-provider-node@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0)': + dependencies: + '@aws-sdk/credential-provider-env': 3.577.0 + '@aws-sdk/credential-provider-http': 3.577.0 + '@aws-sdk/credential-provider-ini': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) + '@aws-sdk/credential-provider-process': 3.577.0 + '@aws-sdk/credential-provider-sso': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.577.0) + '@aws-sdk/types': 3.577.0 + '@smithy/credential-provider-imds': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sts' - aws-crt - '@aws-sdk/credential-provider-process@3.598.0': + '@aws-sdk/credential-provider-process@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.606.0)': + '@aws-sdk/credential-provider-sso@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)': dependencies: - '@aws-sdk/client-sso': 3.598.0 - '@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.606.0) - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/client-sso': 3.577.0 + '@aws-sdk/token-providers': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.598.0(@aws-sdk/client-sts@3.606.0)': + '@aws-sdk/credential-provider-web-identity@3.577.0(@aws-sdk/client-sts@3.577.0)': dependencies: - '@aws-sdk/client-sts': 3.606.0 - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/client-sts': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/lib-storage@3.608.0(@aws-sdk/client-s3@3.608.0)': + '@aws-sdk/lib-storage@3.578.0(@aws-sdk/client-s3@3.577.0)': dependencies: - '@aws-sdk/client-s3': 3.608.0 - '@smithy/abort-controller': 3.1.1 - '@smithy/middleware-endpoint': 3.0.4 - '@smithy/smithy-client': 3.1.5 + '@aws-sdk/client-s3': 3.577.0 + '@smithy/abort-controller': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/smithy-client': 3.0.1 buffer: 5.6.0 events: 3.3.0 stream-browserify: 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@aws-sdk/middleware-bucket-endpoint@3.598.0': + '@aws-sdk/middleware-bucket-endpoint@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.577.0 '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.1.3 - '@smithy/protocol-http': 4.0.3 - '@smithy/types': 3.3.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 '@smithy/util-config-provider': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@aws-sdk/middleware-expect-continue@3.598.0': + '@aws-sdk/middleware-expect-continue@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/protocol-http': 4.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/middleware-flexible-checksums@3.598.0': + '@aws-sdk/middleware-flexible-checksums@3.577.0': dependencies: - '@aws-crypto/crc32': 5.2.0 - '@aws-crypto/crc32c': 5.2.0 - '@aws-sdk/types': 3.598.0 + '@aws-crypto/crc32': 3.0.0 + '@aws-crypto/crc32c': 3.0.0 + '@aws-sdk/types': 3.577.0 '@smithy/is-array-buffer': 3.0.0 - '@smithy/protocol-http': 4.0.3 - '@smithy/types': 3.3.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@aws-sdk/middleware-host-header@3.598.0': + '@aws-sdk/middleware-host-header@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/protocol-http': 4.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/middleware-location-constraint@3.598.0': + '@aws-sdk/middleware-location-constraint@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/middleware-logger@3.598.0': + '@aws-sdk/middleware-logger@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/middleware-recursion-detection@3.598.0': + '@aws-sdk/middleware-recursion-detection@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/protocol-http': 4.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/middleware-sdk-s3@3.598.0': + '@aws-sdk/middleware-sdk-s3@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 + '@aws-sdk/types': 3.577.0 '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.1.3 - '@smithy/protocol-http': 4.0.3 - '@smithy/signature-v4': 3.1.2 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/signature-v4': 3.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 '@smithy/util-config-provider': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@aws-sdk/middleware-signing@3.598.0': + '@aws-sdk/middleware-signing@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.3 - '@smithy/protocol-http': 4.0.3 - '@smithy/signature-v4': 3.1.2 - '@smithy/types': 3.3.0 - '@smithy/util-middleware': 3.0.3 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/signature-v4': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/middleware-ssec@3.598.0': + '@aws-sdk/middleware-ssec@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/middleware-user-agent@3.598.0': + '@aws-sdk/middleware-user-agent@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@smithy/protocol-http': 4.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-endpoints': 3.577.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/region-config-resolver@3.598.0': + '@aws-sdk/region-config-resolver@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/node-config-provider': 3.1.3 - '@smithy/types': 3.3.0 + '@aws-sdk/types': 3.577.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/types': 3.0.0 '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.3 - tslib: 2.6.3 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/signature-v4-multi-region@3.598.0': + '@aws-sdk/signature-v4-multi-region@3.577.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@smithy/protocol-http': 4.0.3 - '@smithy/signature-v4': 3.1.2 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/middleware-sdk-s3': 3.577.0 + '@aws-sdk/types': 3.577.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/signature-v4': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.606.0)': + '@aws-sdk/token-providers@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)': dependencies: - '@aws-sdk/client-sso-oidc': 3.606.0(@aws-sdk/client-sts@3.606.0) - '@aws-sdk/types': 3.598.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/client-sso-oidc': 3.577.0 + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/types@3.598.0': + '@aws-sdk/types@3.577.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 '@aws-sdk/util-arn-parser@3.568.0': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 - '@aws-sdk/util-endpoints@3.598.0': + '@aws-sdk/util-endpoints@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/types': 3.3.0 - '@smithy/util-endpoints': 2.0.4 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@smithy/types': 3.0.0 + '@smithy/util-endpoints': 2.0.0 + tslib: 2.6.2 '@aws-sdk/util-locate-window@3.568.0': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 - '@aws-sdk/util-user-agent-browser@3.598.0': + '@aws-sdk/util-user-agent-browser@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/types': 3.3.0 + '@aws-sdk/types': 3.577.0 + '@smithy/types': 3.0.0 bowser: 2.11.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@aws-sdk/util-user-agent-node@3.598.0': + '@aws-sdk/util-user-agent-node@3.577.0': dependencies: - '@aws-sdk/types': 3.598.0 - '@smithy/node-config-provider': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@aws-sdk/types': 3.577.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@aws-sdk/xml-builder@3.598.0': + '@aws-sdk/util-utf8-browser@3.259.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@babel/code-frame@7.24.7': + '@aws-sdk/xml-builder@3.575.0': dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.0.1 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@babel/compat-data@7.24.7': {} + '@babel/code-frame@7.23.5': + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 - '@babel/compat-data@7.25.2': {} + '@babel/code-frame@7.24.2': + dependencies: + '@babel/highlight': 7.24.5 + picocolors: 1.0.0 - '@babel/core@7.24.7': + '@babel/code-frame@7.24.7': dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) - '@babel/helpers': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - convert-source-map: 2.0.0 - debug: 4.3.5 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@babel/highlight': 7.24.7 + picocolors: 1.0.0 + + '@babel/compat-data@7.25.4': {} '@babel/core@7.25.2': dependencies: - '@ampproject/remapping': 2.3.0 + '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 + '@babel/generator': 7.25.6 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 convert-source-map: 2.0.0 - debug: 4.3.6 + debug: 4.3.7 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.24.7': + '@babel/generator@7.25.6': dependencies: - '@babel/types': 7.24.7 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/generator@7.25.0': - dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.24.7 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': - dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.25.6 - '@babel/helper-compilation-targets@7.24.7': + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': dependencies: - '@babel/compat-data': 7.24.7 - '@babel/helper-validator-option': 7.24.7 - browserslist: 4.23.1 - lru-cache: 5.1.1 - semver: 6.3.1 + '@babel/types': 7.25.6 '@babel/helper-compilation-targets@7.25.2': dependencies: - '@babel/compat-data': 7.25.2 + '@babel/compat-data': 7.25.4 '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.1 + browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.25.2)': + '@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-annotate-as-pure': 7.24.7 - regexpu-core: 5.3.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.25.2)': + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - debug: 4.3.5 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': + '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - debug: 4.3.5 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + debug: 4.3.7 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: - supports-color - '@babel/helper-environment-visitor@7.24.7': + '@babel/helper-environment-visitor@7.22.20': {} + + '@babel/helper-function-name@7.23.0': dependencies: - '@babel/types': 7.24.7 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 - '@babel/helper-function-name@7.24.7': + '@babel/helper-hoist-variables@7.22.5': dependencies: - '@babel/template': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.6 - '@babel/helper-hoist-variables@7.24.7': + '@babel/helper-member-expression-to-functions@7.23.0': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.6 - '@babel/helper-member-expression-to-functions@7.24.7': + '@babel/helper-module-imports@7.22.15': dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.23.9 '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 + '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.24.7(@babel/core@7.25.2)': + '@babel/helper-optimise-call-expression@7.22.5': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.24.7': - dependencies: - '@babel/types': 7.24.7 - - '@babel/helper-plugin-utils@7.24.7': {} + '@babel/types': 7.25.6 '@babel/helper-plugin-utils@7.24.8': {} - '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-wrap-function': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.25.2)': + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-wrap-function': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 - '@babel/helper-optimise-call-expression': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 - '@babel/helper-replace-supers@7.24.7(@babel/core@7.25.2)': + '@babel/helper-replace-supers@7.22.20(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 - '@babel/helper-optimise-call-expression': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.25.6 - '@babel/helper-split-export-declaration@7.24.7': + '@babel/helper-split-export-declaration@7.24.5': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.6 - '@babel/helper-string-parser@7.24.7': {} + '@babel/helper-string-parser@7.23.4': {} '@babel/helper-string-parser@7.24.8': {} - '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-option@7.24.7': {} + '@babel/helper-validator-identifier@7.24.5': {} - '@babel/helper-validator-option@7.24.8': {} + '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-wrap-function@7.24.7': - dependencies: - '@babel/helper-function-name': 7.24.7 - '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-validator-option@7.24.8': {} - '@babel/helpers@7.24.7': + '@babel/helper-wrap-function@7.22.20': dependencies: - '@babel/template': 7.24.7 - '@babel/types': 7.24.7 + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 - '@babel/helpers@7.25.0': + '@babel/helpers@7.25.6': dependencies: '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 - '@babel/highlight@7.24.7': + '@babel/highlight@7.23.4': dependencies: - '@babel/helper-validator-identifier': 7.24.7 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 - '@babel/parser@7.24.7': + '@babel/highlight@7.24.5': dependencies: - '@babel/types': 7.24.7 + '@babel/helper-validator-identifier': 7.24.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 - '@babel/parser@7.25.3': + '@babel/highlight@7.24.7': dependencies: - '@babel/types': 7.25.2 + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7)': + '@babel/parser@7.23.9': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/types': 7.23.9 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.25.2)': + '@babel/parser@7.24.5': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/types': 7.25.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.7)': + '@babel/parser@7.25.6': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/types': 7.25.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.2)': + '@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.25.2) '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2)': dependencies: @@ -12616,12 +13823,12 @@ snapshots: '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2)': dependencies: - '@babel/compat-data': 7.25.2 + '@babel/compat-data': 7.25.4 '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.25.2) '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.2)': dependencies: @@ -12633,781 +13840,383 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-classes@7.23.8(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.25.2) + '@babel/helper-split-export-declaration': 7.24.5 + globals: 11.12.0 - '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/template': 7.25.0 - '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7) - transitivePeerDependencies: - - supports-color + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-classes@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) - '@babel/helper-split-export-declaration': 7.24.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-classes@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.2) - '@babel/helper-split-export-declaration': 7.24.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/template': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/template': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-literals@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.7) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/compat-data': 7.25.4 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.25.2) - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.25.2) - '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-transform-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.7)': + '@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) - - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) - - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) - - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 @@ -13419,272 +14228,108 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 regenerator-transform: 0.15.2 - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-runtime@7.23.9(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-spread@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-typescript@7.23.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/preset-env@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/compat-data': 7.24.7 - '@babel/core': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.7) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-typeof-symbol': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.24.7) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.7) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.7) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.7) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.7) - core-js-compat: 3.37.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 - '@babel/preset-env@7.24.7(@babel/core@7.25.2)': + '@babel/preset-env@7.23.9(@babel/core@7.25.2)': dependencies: - '@babel/compat-data': 7.24.7 + '@babel/compat-data': 7.25.4 '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.25.2) + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.25.2) '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.25.2) '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) @@ -13696,123 +14341,89 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.25.2) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.25.2) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.25.2) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.1 + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.25.2) + core-js-compat: 3.36.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.7 - '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.24.7) - - '@babel/preset-flow@7.24.7(@babel/core@7.25.2)': + '@babel/preset-flow@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.7 - '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.25.2) - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/types': 7.24.7 - esutils: 2.0.3 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.25.2) '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/types': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/types': 7.25.6 esutils: 2.0.3 - '@babel/preset-typescript@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.7 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) - transitivePeerDependencies: - - supports-color - - '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': + '@babel/preset-typescript@7.23.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/register@7.24.6(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - - '@babel/register@7.24.6(@babel/core@7.25.2)': + '@babel/register@7.23.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 clone-deep: 4.0.1 @@ -13823,56 +14434,35 @@ snapshots: '@babel/regjsgen@0.8.0': {} - '@babel/runtime@7.24.7': + '@babel/runtime@7.23.9': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.24.7': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 - '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 - - '@babel/traverse@7.24.7': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 - debug: 4.3.5 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 - '@babel/traverse@7.25.3': + '@babel/traverse@7.25.6': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - debug: 4.3.6 + '@babel/types': 7.25.6 + debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.24.7': + '@babel/types@7.23.9': dependencies: - '@babel/helper-string-parser': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - '@babel/types@7.25.2': + '@babel/types@7.25.6': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 @@ -13886,13 +14476,12 @@ snapshots: dependencies: '@chainsafe/is-ip': 2.0.2 - '@changesets/apply-release-plan@7.0.4': + '@changesets/apply-release-plan@7.0.5': dependencies: - '@babel/runtime': 7.24.7 - '@changesets/config': 3.0.2 + '@changesets/config': 3.0.3 '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.0 - '@changesets/should-skip-package': 0.1.0 + '@changesets/git': 3.0.1 + '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 detect-indent: 6.1.0 @@ -13901,132 +14490,122 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.3 + semver: 7.6.2 - '@changesets/assemble-release-plan@6.0.3': + '@changesets/assemble-release-plan@6.0.4': dependencies: - '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.1 - '@changesets/should-skip-package': 0.1.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.6.3 + semver: 7.6.2 '@changesets/changelog-git@0.2.0': dependencies: '@changesets/types': 6.0.0 - '@changesets/cli@2.27.7': + '@changesets/cli@2.27.8': dependencies: - '@babel/runtime': 7.24.7 - '@changesets/apply-release-plan': 7.0.4 - '@changesets/assemble-release-plan': 6.0.3 + '@changesets/apply-release-plan': 7.0.5 + '@changesets/assemble-release-plan': 6.0.4 '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.2 + '@changesets/config': 3.0.3 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.1 - '@changesets/get-release-plan': 4.0.3 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/should-skip-package': 0.1.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/get-release-plan': 4.0.4 + '@changesets/git': 3.0.1 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.1 + '@changesets/read': 0.6.1 + '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 - '@changesets/write': 0.3.1 + '@changesets/write': 0.3.2 '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.8 + '@types/semver': 7.5.7 ansi-colors: 4.1.3 - chalk: 2.4.2 ci-info: 3.9.0 enquirer: 2.4.1 external-editor: 3.1.0 fs-extra: 7.0.1 - human-id: 1.0.2 mri: 1.2.0 outdent: 0.5.0 p-limit: 2.3.0 - preferred-pm: 3.1.3 + package-manager-detector: 0.2.0 + picocolors: 1.1.0 resolve-from: 5.0.0 semver: 7.6.2 spawndamnit: 2.0.0 term-size: 2.2.1 - '@changesets/config@3.0.2': + '@changesets/config@3.0.3': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.1 - '@changesets/logger': 0.1.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/logger': 0.1.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - micromatch: 4.0.7 + micromatch: 4.0.5 '@changesets/errors@0.2.0': dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@2.1.1': + '@changesets/get-dependents-graph@2.1.2': dependencies: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.6.3 + picocolors: 1.1.0 + semver: 7.6.2 - '@changesets/get-release-plan@4.0.3': + '@changesets/get-release-plan@4.0.4': dependencies: - '@babel/runtime': 7.24.7 - '@changesets/assemble-release-plan': 6.0.3 - '@changesets/config': 3.0.2 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 + '@changesets/assemble-release-plan': 6.0.4 + '@changesets/config': 3.0.3 + '@changesets/pre': 2.0.1 + '@changesets/read': 0.6.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 '@changesets/get-version-range-type@0.4.0': {} - '@changesets/git@3.0.0': + '@changesets/git@3.0.1': dependencies: - '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 - micromatch: 4.0.7 + micromatch: 4.0.5 spawndamnit: 2.0.0 - '@changesets/logger@0.1.0': + '@changesets/logger@0.1.1': dependencies: - chalk: 2.4.2 + picocolors: 1.1.0 '@changesets/parse@0.4.0': dependencies: '@changesets/types': 6.0.0 js-yaml: 3.14.1 - '@changesets/pre@2.0.0': + '@changesets/pre@2.0.1': dependencies: - '@babel/runtime': 7.24.7 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.0': + '@changesets/read@0.6.1': dependencies: - '@babel/runtime': 7.24.7 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 + '@changesets/git': 3.0.1 + '@changesets/logger': 0.1.1 '@changesets/parse': 0.4.0 '@changesets/types': 6.0.0 - chalk: 2.4.2 fs-extra: 7.0.1 p-filter: 2.1.0 + picocolors: 1.1.0 - '@changesets/should-skip-package@0.1.0': + '@changesets/should-skip-package@0.1.1': dependencies: - '@babel/runtime': 7.24.7 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -14034,20 +14613,31 @@ snapshots: '@changesets/types@6.0.0': {} - '@changesets/write@0.3.1': + '@changesets/write@0.3.2': dependencies: - '@babel/runtime': 7.24.7 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 - '@chromatic-com/storybook@1.6.0(react@18.3.1)': + '@chromatic-com/storybook@1.3.3(react@18.2.0)': + dependencies: + chromatic: 11.3.0 + filesize: 10.1.1 + jsonfile: 6.1.0 + react-confetti: 6.1.0(react@18.2.0) + strip-ansi: 7.1.0 + transitivePeerDependencies: + - '@chromatic-com/cypress' + - '@chromatic-com/playwright' + - react + + '@chromatic-com/storybook@1.9.0(react@18.2.0)': dependencies: - chromatic: 11.5.4 - filesize: 10.1.2 + chromatic: 11.10.2 + filesize: 10.1.1 jsonfile: 6.1.0 - react-confetti: 6.1.0(react@18.3.1) + react-confetti: 6.1.0(react@18.2.0) strip-ansi: 7.1.0 transitivePeerDependencies: - '@chromatic-com/cypress' @@ -14063,7 +14653,7 @@ snapshots: eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.22.1 + preact: 10.19.5 sha.js: 2.4.11 transitivePeerDependencies: - supports-color @@ -14077,7 +14667,7 @@ snapshots: eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.22.1 + preact: 10.19.5 sha.js: 2.4.11 transitivePeerDependencies: - supports-color @@ -14088,28 +14678,25 @@ snapshots: clsx: 1.2.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.22.1 + preact: 10.19.5 sha.js: 2.4.11 - '@colors/colors@1.5.0': - optional: true + '@colors/colors@1.5.0': {} '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.1.0)': + '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.15)': dependencies: - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.0.15 - '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.0)': + '@csstools/selector-specificity@3.0.2(postcss-selector-parser@6.0.15)': dependencies: - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.0.15 '@ctrl/tinycolor@4.1.0': {} - '@discoveryjs/json-ext@0.5.7': {} - '@emmetio/abbreviation@2.3.3': dependencies: '@emmetio/scanner': 1.0.4 @@ -14133,26 +14720,102 @@ snapshots: '@emmetio/stream-reader@2.2.0': {} - '@emnapi/runtime@1.2.0': + '@emnapi/runtime@1.1.1': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 optional: true - '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.3.1)': + '@emotion/babel-plugin@11.11.0': dependencies: - react: 18.3.1 + '@babel/helper-module-imports': 7.22.15 + '@babel/runtime': 7.23.9 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 - '@esbuild/aix-ppc64@0.19.12': - optional: true + '@emotion/cache@11.11.0': + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 - '@esbuild/aix-ppc64@0.20.2': - optional: true + '@emotion/hash@0.9.1': {} - '@esbuild/aix-ppc64@0.21.5': - optional: true + '@emotion/is-prop-valid@1.2.1': + dependencies: + '@emotion/memoize': 0.8.1 - '@esbuild/android-arm64@0.18.20': - optional: true + '@emotion/memoize@0.8.1': {} + + '@emotion/react@11.11.3(@types/react@18.3.5)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.9 + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.5 + + '@emotion/serialize@1.1.3': + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.3 + + '@emotion/sheet@1.2.2': {} + + '@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.3.5)(react@18.2.0))(@types/react@18.3.5)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.9 + '@emotion/babel-plugin': 11.11.0 + '@emotion/is-prop-valid': 1.2.1 + '@emotion/react': 11.11.3(@types/react@18.3.5)(react@18.2.0) + '@emotion/serialize': 1.1.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.5 + + '@emotion/unitless@0.8.1': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': + dependencies: + react: 18.2.0 + + '@emotion/utils@1.2.1': {} + + '@emotion/weak-memoize@0.3.1': {} + + '@esbuild/aix-ppc64@0.19.12': + optional: true + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/aix-ppc64@0.21.3': + optional: true + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.18.20': + optional: true '@esbuild/android-arm64@0.19.12': optional: true @@ -14160,6 +14823,9 @@ snapshots: '@esbuild/android-arm64@0.20.2': optional: true + '@esbuild/android-arm64@0.21.3': + optional: true + '@esbuild/android-arm64@0.21.5': optional: true @@ -14172,6 +14838,9 @@ snapshots: '@esbuild/android-arm@0.20.2': optional: true + '@esbuild/android-arm@0.21.3': + optional: true + '@esbuild/android-arm@0.21.5': optional: true @@ -14184,6 +14853,9 @@ snapshots: '@esbuild/android-x64@0.20.2': optional: true + '@esbuild/android-x64@0.21.3': + optional: true + '@esbuild/android-x64@0.21.5': optional: true @@ -14196,6 +14868,9 @@ snapshots: '@esbuild/darwin-arm64@0.20.2': optional: true + '@esbuild/darwin-arm64@0.21.3': + optional: true + '@esbuild/darwin-arm64@0.21.5': optional: true @@ -14208,6 +14883,9 @@ snapshots: '@esbuild/darwin-x64@0.20.2': optional: true + '@esbuild/darwin-x64@0.21.3': + optional: true + '@esbuild/darwin-x64@0.21.5': optional: true @@ -14220,6 +14898,9 @@ snapshots: '@esbuild/freebsd-arm64@0.20.2': optional: true + '@esbuild/freebsd-arm64@0.21.3': + optional: true + '@esbuild/freebsd-arm64@0.21.5': optional: true @@ -14232,6 +14913,9 @@ snapshots: '@esbuild/freebsd-x64@0.20.2': optional: true + '@esbuild/freebsd-x64@0.21.3': + optional: true + '@esbuild/freebsd-x64@0.21.5': optional: true @@ -14244,6 +14928,9 @@ snapshots: '@esbuild/linux-arm64@0.20.2': optional: true + '@esbuild/linux-arm64@0.21.3': + optional: true + '@esbuild/linux-arm64@0.21.5': optional: true @@ -14256,6 +14943,9 @@ snapshots: '@esbuild/linux-arm@0.20.2': optional: true + '@esbuild/linux-arm@0.21.3': + optional: true + '@esbuild/linux-arm@0.21.5': optional: true @@ -14268,6 +14958,9 @@ snapshots: '@esbuild/linux-ia32@0.20.2': optional: true + '@esbuild/linux-ia32@0.21.3': + optional: true + '@esbuild/linux-ia32@0.21.5': optional: true @@ -14280,6 +14973,9 @@ snapshots: '@esbuild/linux-loong64@0.20.2': optional: true + '@esbuild/linux-loong64@0.21.3': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true @@ -14292,6 +14988,9 @@ snapshots: '@esbuild/linux-mips64el@0.20.2': optional: true + '@esbuild/linux-mips64el@0.21.3': + optional: true + '@esbuild/linux-mips64el@0.21.5': optional: true @@ -14304,6 +15003,9 @@ snapshots: '@esbuild/linux-ppc64@0.20.2': optional: true + '@esbuild/linux-ppc64@0.21.3': + optional: true + '@esbuild/linux-ppc64@0.21.5': optional: true @@ -14316,6 +15018,9 @@ snapshots: '@esbuild/linux-riscv64@0.20.2': optional: true + '@esbuild/linux-riscv64@0.21.3': + optional: true + '@esbuild/linux-riscv64@0.21.5': optional: true @@ -14328,6 +15033,9 @@ snapshots: '@esbuild/linux-s390x@0.20.2': optional: true + '@esbuild/linux-s390x@0.21.3': + optional: true + '@esbuild/linux-s390x@0.21.5': optional: true @@ -14340,6 +15048,9 @@ snapshots: '@esbuild/linux-x64@0.20.2': optional: true + '@esbuild/linux-x64@0.21.3': + optional: true + '@esbuild/linux-x64@0.21.5': optional: true @@ -14352,6 +15063,9 @@ snapshots: '@esbuild/netbsd-x64@0.20.2': optional: true + '@esbuild/netbsd-x64@0.21.3': + optional: true + '@esbuild/netbsd-x64@0.21.5': optional: true @@ -14364,6 +15078,9 @@ snapshots: '@esbuild/openbsd-x64@0.20.2': optional: true + '@esbuild/openbsd-x64@0.21.3': + optional: true + '@esbuild/openbsd-x64@0.21.5': optional: true @@ -14376,6 +15093,9 @@ snapshots: '@esbuild/sunos-x64@0.20.2': optional: true + '@esbuild/sunos-x64@0.21.3': + optional: true + '@esbuild/sunos-x64@0.21.5': optional: true @@ -14388,6 +15108,9 @@ snapshots: '@esbuild/win32-arm64@0.20.2': optional: true + '@esbuild/win32-arm64@0.21.3': + optional: true + '@esbuild/win32-arm64@0.21.5': optional: true @@ -14400,6 +15123,9 @@ snapshots: '@esbuild/win32-ia32@0.20.2': optional: true + '@esbuild/win32-ia32@0.21.3': + optional: true + '@esbuild/win32-ia32@0.21.5': optional: true @@ -14412,20 +15138,28 @@ snapshots: '@esbuild/win32-x64@0.20.2': optional: true + '@esbuild/win32-x64@0.21.3': + optional: true + '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@8.55.0)': dependencies: - eslint: 8.57.0 + eslint: 8.55.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.0': {} + '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)': + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.10.0': {} '@eslint/eslintrc@1.4.1': dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.4 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -14439,7 +15173,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.4 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -14450,7 +15184,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.0': {} + '@eslint/js@8.55.0': {} + + '@eslint/js@8.56.0': {} + + '@ethereumjs/common@2.6.5': + dependencies: + crc-32: 1.2.2 + ethereumjs-util: 7.1.5 '@ethereumjs/common@3.2.0': dependencies: @@ -14459,17 +15200,22 @@ snapshots: '@ethereumjs/rlp@4.0.1': {} + '@ethereumjs/tx@3.5.2': + dependencies: + '@ethereumjs/common': 2.6.5 + ethereumjs-util: 7.1.5 + '@ethereumjs/tx@4.2.0': dependencies: '@ethereumjs/common': 3.2.0 '@ethereumjs/rlp': 4.0.1 '@ethereumjs/util': 8.1.0 - ethereum-cryptography: 2.2.1 + ethereum-cryptography: 2.1.3 '@ethereumjs/util@8.1.0': dependencies: '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.2.1 + ethereum-cryptography: 2.1.3 micro-ftch: 0.3.1 '@ethersproject/abi@5.7.0': @@ -14609,7 +15355,7 @@ snapshots: dependencies: '@ethersproject/logger': 5.7.0 - '@ethersproject/providers@5.7.2': + '@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -14630,7 +15376,7 @@ snapshots: '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 bech32: 1.1.4 - ws: 7.4.6 + ws: 7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -14734,8 +15480,8 @@ snapshots: hast-util-to-html: 9.0.1 hast-util-to-text: 4.0.2 hastscript: 9.0.0 - postcss: 8.4.39 - postcss-nested: 6.0.1(postcss@8.4.39) + postcss: 8.4.38 + postcss-nested: 6.0.1(postcss@8.4.38) unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 @@ -14746,39 +15492,37 @@ snapshots: '@expressive-code/plugin-shiki@0.35.6': dependencies: '@expressive-code/core': 0.35.6 - shiki: 1.10.0 + shiki: 1.5.2 '@expressive-code/plugin-text-markers@0.35.6': dependencies: '@expressive-code/core': 0.35.6 - '@fal-works/esbuild-plugin-global-externals@2.1.2': {} + '@fastify/busboy@2.1.0': {} - '@fastify/busboy@2.1.1': {} - - '@formatjs/ecma402-abstract@2.0.0': + '@formatjs/ecma402-abstract@1.18.2': dependencies: '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.3 + tslib: 2.6.2 '@formatjs/fast-memoize@2.2.0': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 - '@formatjs/icu-messageformat-parser@2.7.8': + '@formatjs/icu-messageformat-parser@2.7.6': dependencies: - '@formatjs/ecma402-abstract': 2.0.0 - '@formatjs/icu-skeleton-parser': 1.8.2 - tslib: 2.6.3 + '@formatjs/ecma402-abstract': 1.18.2 + '@formatjs/icu-skeleton-parser': 1.8.0 + tslib: 2.6.2 - '@formatjs/icu-skeleton-parser@1.8.2': + '@formatjs/icu-skeleton-parser@1.8.0': dependencies: - '@formatjs/ecma402-abstract': 2.0.0 - tslib: 2.6.3 + '@formatjs/ecma402-abstract': 1.18.2 + tslib: 2.6.2 '@formatjs/intl-localematcher@0.5.4': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 '@hapi/hoek@9.3.0': {} @@ -14786,10 +15530,18 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 + '@humanwhocodes/config-array@0.11.13': + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + '@humanwhocodes/config-array@0.11.14': dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.5 + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -14797,7 +15549,7 @@ snapshots: '@humanwhocodes/config-array@0.9.5': dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.5 + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -14808,14 +15560,16 @@ snapshots: '@humanwhocodes/object-schema@1.2.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/object-schema@2.0.1': {} - '@img/sharp-darwin-arm64@0.33.4': + '@humanwhocodes/object-schema@2.0.2': {} + + '@img/sharp-darwin-arm64@0.33.3': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.2 optional: true - '@img/sharp-darwin-x64@0.33.4': + '@img/sharp-darwin-x64@0.33.3': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.0.2 optional: true @@ -14844,60 +15598,62 @@ snapshots: '@img/sharp-libvips-linuxmusl-x64@1.0.2': optional: true - '@img/sharp-linux-arm64@0.33.4': + '@img/sharp-linux-arm64@0.33.3': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.0.2 optional: true - '@img/sharp-linux-arm@0.33.4': + '@img/sharp-linux-arm@0.33.3': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.0.2 optional: true - '@img/sharp-linux-s390x@0.33.4': + '@img/sharp-linux-s390x@0.33.3': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.0.2 optional: true - '@img/sharp-linux-x64@0.33.4': + '@img/sharp-linux-x64@0.33.3': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.0.2 optional: true - '@img/sharp-linuxmusl-arm64@0.33.4': + '@img/sharp-linuxmusl-arm64@0.33.3': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 optional: true - '@img/sharp-linuxmusl-x64@0.33.4': + '@img/sharp-linuxmusl-x64@0.33.3': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.0.2 optional: true - '@img/sharp-wasm32@0.33.4': + '@img/sharp-wasm32@0.33.3': dependencies: - '@emnapi/runtime': 1.2.0 + '@emnapi/runtime': 1.1.1 optional: true - '@img/sharp-win32-ia32@0.33.4': + '@img/sharp-win32-ia32@0.33.3': optional: true - '@img/sharp-win32-x64@0.33.4': + '@img/sharp-win32-x64@0.33.3': optional: true - '@ipld/dag-cbor@9.2.1': + '@ioredis/commands@1.2.0': {} + + '@ipld/dag-cbor@9.2.0': dependencies: - cborg: 4.2.2 - multiformats: 13.1.3 + cborg: 4.2.0 + multiformats: 13.1.0 - '@ipld/dag-json@10.2.2': + '@ipld/dag-json@10.2.0': dependencies: - cborg: 4.2.2 - multiformats: 13.1.3 + cborg: 4.2.0 + multiformats: 13.1.0 - '@ipld/dag-pb@4.1.2': + '@ipld/dag-pb@4.1.0': dependencies: - multiformats: 13.1.3 + multiformats: 13.1.0 '@isaacs/cliui@8.0.2': dependencies: @@ -14920,7 +15676,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.9 + '@types/node': 20.12.7 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -14931,7 +15687,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.14.9 + '@types/node': 20.12.7 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -14944,7 +15700,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.9 + '@types/node': 20.12.7 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -14953,10 +15709,16 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.9 + '@types/node': 20.12.7 '@types/yargs': 17.0.32 chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.3': + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -14965,9 +15727,11 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} + '@jridgewell/set-array@1.1.2': {} + '@jridgewell/set-array@1.2.1': {} - '@jridgewell/source-map@0.3.6': + '@jridgewell/source-map@0.3.5': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 @@ -14994,7 +15758,7 @@ snapshots: dependencies: '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.2 - '@multiformats/multiaddr': 12.3.0 + '@multiformats/multiaddr': 12.2.1 it-stream-types: 1.0.5 uint8arraylist: 2.4.8 @@ -15010,7 +15774,7 @@ snapshots: '@libp2p/interface-peer-info@1.0.10': dependencies: '@libp2p/interface-peer-id': 2.0.2 - '@multiformats/multiaddr': 12.3.0 + '@multiformats/multiaddr': 12.2.1 '@libp2p/interface-pubsub@3.0.7': dependencies: @@ -15020,12 +15784,12 @@ snapshots: it-pushable: 3.2.3 uint8arraylist: 2.4.8 - '@libp2p/interface@1.5.0': + '@libp2p/interface@1.3.0': dependencies: - '@multiformats/multiaddr': 12.3.0 + '@multiformats/multiaddr': 12.2.1 it-pushable: 3.2.3 it-stream-types: 2.0.1 - multiformats: 13.1.3 + multiformats: 13.1.0 progress-events: 1.0.0 uint8arraylist: 2.4.8 @@ -15034,8 +15798,8 @@ snapshots: '@libp2p/logger@2.1.1': dependencies: '@libp2p/interface-peer-id': 2.0.2 - '@multiformats/multiaddr': 12.3.0 - debug: 4.3.5 + '@multiformats/multiaddr': 12.2.1 + debug: 4.3.4 interface-datastore: 8.2.11 multiformats: 11.0.2 transitivePeerDependencies: @@ -15060,14 +15824,14 @@ snapshots: '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.24.7 + '@babel/runtime': 7.23.9 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.24.7 + '@babel/runtime': 7.23.9 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -15098,41 +15862,64 @@ snapshots: unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.2 + vfile: 6.0.3 transitivePeerDependencies: - supports-color - '@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1)': + '@mdx-js/react@3.0.1(@types/react@18.3.5)(react@18.2.0)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.3 - react: 18.3.1 + '@types/react': 18.3.5 + react: 18.2.0 '@metamask/eth-json-rpc-provider@1.0.1': dependencies: - '@metamask/json-rpc-engine': 7.3.3 - '@metamask/safe-event-emitter': 3.1.1 + '@metamask/json-rpc-engine': 7.3.2 + '@metamask/safe-event-emitter': 3.0.0 '@metamask/utils': 5.0.2 transitivePeerDependencies: - supports-color - '@metamask/json-rpc-engine@7.3.3': + '@metamask/json-rpc-engine@7.3.2': + dependencies: + '@metamask/rpc-errors': 6.1.0 + '@metamask/safe-event-emitter': 3.0.0 + '@metamask/utils': 8.3.0 + transitivePeerDependencies: + - supports-color + + '@metamask/json-rpc-engine@8.0.2': dependencies: - '@metamask/rpc-errors': 6.3.0 + '@metamask/rpc-errors': 6.2.1 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.5.0 + '@metamask/utils': 8.3.0 transitivePeerDependencies: - supports-color '@metamask/json-rpc-middleware-stream@6.0.2': dependencies: - '@metamask/json-rpc-engine': 7.3.3 + '@metamask/json-rpc-engine': 7.3.2 + '@metamask/safe-event-emitter': 3.0.0 + '@metamask/utils': 8.3.0 + readable-stream: 3.6.2 + transitivePeerDependencies: + - supports-color + + '@metamask/json-rpc-middleware-stream@7.0.2': + dependencies: + '@metamask/json-rpc-engine': 8.0.2 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.5.0 + '@metamask/utils': 8.3.0 readable-stream: 3.6.2 transitivePeerDependencies: - supports-color + '@metamask/object-multiplex@1.3.0': + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + readable-stream: 2.3.8 + '@metamask/object-multiplex@2.0.0': dependencies: once: 1.4.0 @@ -15142,14 +15929,53 @@ snapshots: dependencies: bowser: 2.11.0 + '@metamask/post-message-stream@6.2.0': + dependencies: + '@metamask/utils': 5.0.2 + readable-stream: 2.3.3 + transitivePeerDependencies: + - supports-color + + '@metamask/providers@10.2.1': + dependencies: + '@metamask/object-multiplex': 1.3.0 + '@metamask/safe-event-emitter': 2.0.0 + '@types/chrome': 0.0.136 + detect-browser: 5.3.0 + eth-rpc-errors: 4.0.3 + extension-port-stream: 2.1.1 + fast-deep-equal: 2.0.1 + is-stream: 2.0.1 + json-rpc-engine: 6.1.0 + json-rpc-middleware-stream: 4.2.3 + pump: 3.0.0 + webextension-polyfill-ts: 0.25.0 + '@metamask/providers@15.0.0': dependencies: - '@metamask/json-rpc-engine': 7.3.3 + '@metamask/json-rpc-engine': 7.3.2 '@metamask/json-rpc-middleware-stream': 6.0.2 '@metamask/object-multiplex': 2.0.0 - '@metamask/rpc-errors': 6.3.0 + '@metamask/rpc-errors': 6.2.1 + '@metamask/safe-event-emitter': 3.0.0 + '@metamask/utils': 8.3.0 + detect-browser: 5.3.0 + extension-port-stream: 3.0.0 + fast-deep-equal: 3.1.3 + is-stream: 2.0.1 + readable-stream: 3.6.2 + webextension-polyfill: 0.10.0 + transitivePeerDependencies: + - supports-color + + '@metamask/providers@16.1.0': + dependencies: + '@metamask/json-rpc-engine': 8.0.2 + '@metamask/json-rpc-middleware-stream': 7.0.2 + '@metamask/object-multiplex': 2.0.0 + '@metamask/rpc-errors': 6.2.1 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.5.0 + '@metamask/utils': 8.3.0 detect-browser: 5.3.0 extension-port-stream: 3.0.0 fast-deep-equal: 3.1.3 @@ -15159,73 +15985,152 @@ snapshots: transitivePeerDependencies: - supports-color - '@metamask/rpc-errors@6.3.0': + '@metamask/rpc-errors@6.1.0': + dependencies: + '@metamask/utils': 8.3.0 + fast-safe-stringify: 2.1.1 + transitivePeerDependencies: + - supports-color + + '@metamask/rpc-errors@6.2.1': dependencies: - '@metamask/utils': 8.5.0 + '@metamask/utils': 8.3.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color '@metamask/safe-event-emitter@2.0.0': {} + '@metamask/safe-event-emitter@3.0.0': {} + '@metamask/safe-event-emitter@3.1.1': {} - '@metamask/sdk-communication-layer@0.20.2(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5)': + '@metamask/sdk-communication-layer@0.14.3(encoding@0.1.13)': + dependencies: + bufferutil: 4.0.8 + cross-fetch: 3.1.8(encoding@0.1.13) + date-fns: 2.30.0 + eciesjs: 0.3.18 + eventemitter2: 6.4.9 + socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3) + utf-8-validate: 6.0.3 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + - supports-color + + '@metamask/sdk-communication-layer@0.20.2(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: bufferutil: 4.0.8 - cross-fetch: 4.0.0 + cross-fetch: 4.0.0(encoding@0.1.13) date-fns: 2.30.0 - debug: 4.3.5 - eciesjs: 0.3.19 + debug: 4.3.4 + eciesjs: 0.3.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 - socket.io-client: 4.7.5 - utf-8-validate: 6.0.4 + socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) + utf-8-validate: 6.0.3 uuid: 8.3.2 transitivePeerDependencies: - supports-color - '@metamask/sdk-communication-layer@0.26.4(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5)': + '@metamask/sdk-communication-layer@0.28.2(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: bufferutil: 4.0.8 - cross-fetch: 4.0.0 + cross-fetch: 4.0.0(encoding@0.1.13) date-fns: 2.30.0 - debug: 4.3.5 - eciesjs: 0.3.19 + debug: 4.3.4 + eciesjs: 0.3.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 - socket.io-client: 4.7.5 + socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) utf-8-validate: 5.0.10 uuid: 8.3.2 transitivePeerDependencies: - supports-color - '@metamask/sdk-install-modal-web@0.20.2(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)': + '@metamask/sdk-install-modal-web@0.14.1(@types/react@18.3.5)(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))': + dependencies: + '@emotion/react': 11.11.3(@types/react@18.3.5)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3(@types/react@18.3.5)(react@18.2.0))(@types/react@18.3.5)(react@18.2.0) + i18next: 22.5.1 + qr-code-styling: 1.6.0-rc.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react-native + + '@metamask/sdk-install-modal-web@0.20.2(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)': dependencies: i18next: 22.5.1 qr-code-styling: 1.6.0-rc.1 - react: 18.3.1 - react-i18next: 13.5.0(i18next@22.5.1)(react-native@0.74.3)(react@18.3.1) - react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) + react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-native: 0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) - '@metamask/sdk-install-modal-web@0.26.4(i18next@23.11.5)(react-native@0.74.3)(react@18.3.1)': + '@metamask/sdk-install-modal-web@0.28.1(i18next@23.11.5)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)': dependencies: i18next: 23.11.5 qr-code-styling: 1.6.0-rc.1 - react: 18.3.1 - react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-native: 0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) + + '@metamask/sdk@0.14.3(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(utf-8-validate@5.0.10)': + dependencies: + '@metamask/onboarding': 1.0.1 + '@metamask/post-message-stream': 6.2.0 + '@metamask/providers': 10.2.1 + '@metamask/sdk-communication-layer': 0.14.3(encoding@0.1.13) + '@metamask/sdk-install-modal-web': 0.14.1(@types/react@18.3.5)(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)) + '@react-native-async-storage/async-storage': 1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)) + '@types/dom-screen-wake-lock': 1.0.3 + bowser: 2.11.0 + cross-fetch: 4.0.0(encoding@0.1.13) + eciesjs: 0.3.18 + eth-rpc-errors: 4.0.3 + eventemitter2: 6.4.9 + extension-port-stream: 2.1.1 + i18next: 22.5.1 + i18next-browser-languagedetector: 7.2.0 + obj-multiplex: 1.0.0 + pump: 3.0.0 + qrcode-terminal-nooctal: 0.12.1 + react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) + react-native-webview: 11.26.1(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) + readable-stream: 2.3.8 + rollup-plugin-visualizer: 5.12.0(rollup@4.21.3) + socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) + util: 0.12.5 + uuid: 8.3.2 + optionalDependencies: + react: 18.2.0 + react-native: 0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - encoding + - react-dom + - rollup + - supports-color + - utf-8-validate - '@metamask/sdk@0.20.3(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)': + '@metamask/sdk@0.20.3(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(utf-8-validate@5.0.10)': dependencies: '@metamask/onboarding': 1.0.1 '@metamask/providers': 15.0.0 - '@metamask/sdk-communication-layer': 0.20.2(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5) - '@metamask/sdk-install-modal-web': 0.20.2(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1) + '@metamask/sdk-communication-layer': 0.20.2(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metamask/sdk-install-modal-web': 0.20.2(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 - cross-fetch: 4.0.0 - debug: 4.3.5 - eciesjs: 0.3.19 + cross-fetch: 4.0.0(encoding@0.1.13) + debug: 4.3.4 + eciesjs: 0.3.18 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 i18next: 22.5.1 @@ -15233,13 +16138,15 @@ snapshots: obj-multiplex: 1.0.0 pump: 3.0.0 qrcode-terminal-nooctal: 0.12.1 - react: 18.3.1 - react-native-webview: 11.26.1(react-native@0.74.3)(react@18.3.1) + react-native-webview: 11.26.1(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) readable-stream: 3.6.2 - rollup-plugin-visualizer: 5.12.0 - socket.io-client: 4.7.5 + rollup-plugin-visualizer: 5.12.0(rollup@4.21.3) + socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) util: 0.12.5 uuid: 8.3.2 + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - bufferutil - encoding @@ -15249,17 +16156,18 @@ snapshots: - supports-color - utf-8-validate - '@metamask/sdk@0.26.4(react-native@0.74.3)(react@18.3.1)': + '@metamask/sdk@0.28.2(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(utf-8-validate@5.0.10)': dependencies: '@metamask/onboarding': 1.0.1 - '@metamask/providers': 15.0.0 - '@metamask/sdk-communication-layer': 0.26.4(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5) - '@metamask/sdk-install-modal-web': 0.26.4(i18next@23.11.5)(react-native@0.74.3)(react@18.3.1) + '@metamask/providers': 16.1.0 + '@metamask/sdk-communication-layer': 0.28.2(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metamask/sdk-install-modal-web': 0.28.1(i18next@23.11.5)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) '@types/dom-screen-wake-lock': 1.0.3 + '@types/uuid': 10.0.0 bowser: 2.11.0 - cross-fetch: 4.0.0 - debug: 4.3.5 - eciesjs: 0.3.19 + cross-fetch: 4.0.0(encoding@0.1.13) + debug: 4.3.4 + eciesjs: 0.3.18 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 i18next: 23.11.5 @@ -15267,13 +16175,15 @@ snapshots: obj-multiplex: 1.0.0 pump: 3.0.0 qrcode-terminal-nooctal: 0.12.1 - react: 18.3.1 - react-native-webview: 11.26.1(react-native@0.74.3)(react@18.3.1) + react-native-webview: 11.26.1(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0) readable-stream: 3.6.2 - rollup-plugin-visualizer: 5.12.0 - socket.io-client: 4.7.5 + rollup-plugin-visualizer: 5.12.0(rollup@4.21.3) + socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) util: 0.12.5 uuid: 8.3.2 + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - bufferutil - encoding @@ -15282,189 +16192,186 @@ snapshots: - supports-color - utf-8-validate - '@metamask/superstruct@3.1.0': {} - '@metamask/utils@5.0.2': dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.3.5 - semver: 7.6.3 - superstruct: 1.0.4 + debug: 4.3.4 + semver: 7.6.2 + superstruct: 1.0.3 transitivePeerDependencies: - supports-color - '@metamask/utils@8.5.0': + '@metamask/utils@8.3.0': dependencies: '@ethereumjs/tx': 4.2.0 - '@metamask/superstruct': 3.1.0 - '@noble/hashes': 1.4.0 - '@scure/base': 1.1.7 + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 '@types/debug': 4.1.12 - debug: 4.3.5 - pony-cause: 2.1.11 - semver: 7.6.3 - uuid: 9.0.1 + debug: 4.3.4 + pony-cause: 2.1.10 + semver: 7.6.0 + superstruct: 1.0.3 transitivePeerDependencies: - supports-color - '@moralisweb3/api-utils@2.26.7(debug@4.3.5)': + '@moralisweb3/api-utils@2.26.2(debug@4.3.4)': dependencies: - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) - '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) - axios: 1.7.2(debug@4.3.5) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.2(debug@4.3.4) + axios: 1.6.7(debug@4.3.4) transitivePeerDependencies: - debug - '@moralisweb3/aptos-api@2.26.7(debug@4.3.5)': + '@moralisweb3/aptos-api@2.26.2(debug@4.3.4)': dependencies: - '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/api-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-aptos-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) transitivePeerDependencies: - debug - '@moralisweb3/auth@2.26.7(debug@4.3.5)': + '@moralisweb3/auth@2.26.2(debug@4.3.4)': dependencies: - '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-auth-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) - '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-sol-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/api-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-aptos-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-auth-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-sol-utils': 2.26.2(debug@4.3.4) transitivePeerDependencies: - debug - '@moralisweb3/common-aptos-utils@2.26.7(debug@4.3.5)': + '@moralisweb3/common-aptos-utils@2.26.2(debug@4.3.4)': dependencies: - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) - '@noble/hashes': 1.4.0 + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) + '@noble/hashes': 1.3.3 transitivePeerDependencies: - debug - '@moralisweb3/common-auth-utils@2.26.7(debug@4.3.5)': + '@moralisweb3/common-auth-utils@2.26.2(debug@4.3.4)': dependencies: '@ethersproject/abi': 5.7.0 - '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) - '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-sol-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-aptos-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-sol-utils': 2.26.2(debug@4.3.4) '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug - '@moralisweb3/common-core@2.26.7(debug@4.3.5)': + '@moralisweb3/common-core@2.26.2(debug@4.3.4)': dependencies: - axios: 1.7.2(debug@4.3.5) + axios: 1.6.7(debug@4.3.4) transitivePeerDependencies: - debug - '@moralisweb3/common-evm-utils@2.26.7(debug@4.3.5)': + '@moralisweb3/common-evm-utils@2.26.2(debug@4.3.4)': dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/transactions': 5.7.0 - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) transitivePeerDependencies: - debug - '@moralisweb3/common-sol-utils@2.26.7(debug@4.3.5)': + '@moralisweb3/common-sol-utils@2.26.2(debug@4.3.4)': dependencies: - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) bn.js: 5.2.1 bs58: 5.0.0 buffer: 6.0.3 transitivePeerDependencies: - debug - '@moralisweb3/common-streams-utils@2.26.7(debug@4.3.5)': + '@moralisweb3/common-streams-utils@2.26.2(debug@4.3.4)': dependencies: '@ethersproject/abi': 5.7.0 - '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) - '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/common-aptos-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.2(debug@4.3.4) '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug - '@moralisweb3/evm-api@2.26.7(debug@4.3.5)': + '@moralisweb3/evm-api@2.26.2(debug@4.3.4)': dependencies: - '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) - '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/api-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.2(debug@4.3.4) transitivePeerDependencies: - debug - '@moralisweb3/sol-api@2.26.7(debug@4.3.5)': + '@moralisweb3/sol-api@2.26.2(debug@4.3.4)': dependencies: - '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) - '@moralisweb3/common-sol-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/api-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) + '@moralisweb3/common-sol-utils': 2.26.2(debug@4.3.4) transitivePeerDependencies: - debug '@moralisweb3/streams-typings@1.0.7': {} - '@moralisweb3/streams@2.26.7(debug@4.3.5)': + '@moralisweb3/streams@2.26.2(debug@4.3.4)': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/bignumber': 5.7.0 '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 - '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) - '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-streams-utils': 2.26.7(debug@4.3.5) + '@moralisweb3/api-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-streams-utils': 2.26.2(debug@4.3.4) '@moralisweb3/streams-typings': 1.0.7 ethereumjs-util: 7.1.5 web3-eth-abi: 1.10.4 transitivePeerDependencies: - debug - '@motionone/animation@10.18.0': + '@motionone/animation@10.16.3': dependencies: - '@motionone/easing': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - tslib: 2.6.3 + '@motionone/easing': 10.16.3 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 + tslib: 2.6.2 - '@motionone/dom@10.18.0': + '@motionone/dom@10.16.4': dependencies: - '@motionone/animation': 10.18.0 - '@motionone/generators': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 + '@motionone/animation': 10.16.3 + '@motionone/generators': 10.16.4 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 hey-listen: 1.0.8 - tslib: 2.6.3 + tslib: 2.6.2 - '@motionone/easing@10.18.0': + '@motionone/easing@10.16.3': dependencies: - '@motionone/utils': 10.18.0 - tslib: 2.6.3 + '@motionone/utils': 10.16.3 + tslib: 2.6.2 - '@motionone/generators@10.18.0': + '@motionone/generators@10.16.4': dependencies: - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - tslib: 2.6.3 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 + tslib: 2.6.2 '@motionone/svelte@10.16.4': dependencies: - '@motionone/dom': 10.18.0 - tslib: 2.6.3 + '@motionone/dom': 10.16.4 + tslib: 2.6.2 - '@motionone/types@10.17.1': {} + '@motionone/types@10.16.3': {} - '@motionone/utils@10.18.0': + '@motionone/utils@10.16.3': dependencies: - '@motionone/types': 10.17.1 + '@motionone/types': 10.16.3 hey-listen: 1.0.8 - tslib: 2.6.3 + tslib: 2.6.2 '@motionone/vue@10.16.4': dependencies: - '@motionone/dom': 10.18.0 - tslib: 2.6.3 + '@motionone/dom': 10.16.4 + tslib: 2.6.2 '@multiformats/dns@1.0.6': dependencies: @@ -15474,11 +16381,11 @@ snapshots: hashlru: 2.3.0 p-queue: 8.0.1 progress-events: 1.0.0 - uint8arrays: 5.1.0 + uint8arrays: 5.0.3 '@multiformats/multiaddr-to-uri@9.0.8': dependencies: - '@multiformats/multiaddr': 12.3.0 + '@multiformats/multiaddr': 12.2.1 '@multiformats/multiaddr@11.6.1': dependencies: @@ -15491,31 +16398,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@multiformats/multiaddr@12.3.0': + '@multiformats/multiaddr@12.2.1': dependencies: '@chainsafe/is-ip': 2.0.2 '@chainsafe/netmask': 2.0.0 - '@libp2p/interface': 1.5.0 + '@libp2p/interface': 1.3.0 '@multiformats/dns': 1.0.6 - multiformats: 13.1.3 + multiformats: 13.1.0 uint8-varint: 2.0.4 - uint8arrays: 5.1.0 - - '@ndelangen/get-tarball@3.0.9': - dependencies: - gunzip-maybe: 1.4.2 - pump: 3.0.0 - tar-fs: 2.1.1 + uint8arrays: 5.0.3 '@noble/curves@1.2.0': dependencies: '@noble/hashes': 1.3.2 - '@noble/curves@1.4.0': + '@noble/curves@1.3.0': dependencies: - '@noble/hashes': 1.4.0 + '@noble/hashes': 1.3.3 - '@noble/curves@1.4.2': + '@noble/curves@1.4.0': dependencies: '@noble/hashes': 1.4.0 @@ -15523,8 +16424,12 @@ snapshots: '@noble/hashes@1.3.2': {} + '@noble/hashes@1.3.3': {} + '@noble/hashes@1.4.0': {} + '@noble/hashes@1.5.0': {} + '@noble/secp256k1@1.7.1': {} '@nodelib/fs.scandir@2.1.5': @@ -15549,98 +16454,267 @@ snapshots: '@openzeppelin/contracts@5.0.2': {} - '@openzeppelin/merkle-tree@1.0.6': + '@openzeppelin/defender-as-code@3.0.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4(encoding@0.1.13))(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: - '@ethersproject/abi': 5.7.0 - ethereum-cryptography: 1.2.0 + '@openzeppelin/defender-sdk': 1.14.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4(encoding@0.1.13))(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) + keccak256: 1.0.6 + lodash: 4.17.21 + prompt: 1.3.0 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + - web3 + - web3-core + - web3-core-helpers + - web3-utils - '@pagefind/darwin-arm64@1.1.0': - optional: true + '@openzeppelin/defender-sdk-account-client@1.14.4(encoding@0.1.13)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + axios: 1.7.7 + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding - '@pagefind/darwin-x64@1.1.0': - optional: true + '@openzeppelin/defender-sdk-action-client@1.14.4(encoding@0.1.13)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + axios: 1.7.7 + dotenv: 16.4.5 + glob: 11.0.0 + jszip: 3.10.1 + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding - '@pagefind/default-ui@1.1.0': {} + '@openzeppelin/defender-sdk-base-client@1.14.4(encoding@0.1.13)': + dependencies: + amazon-cognito-identity-js: 6.3.12(encoding@0.1.13) + async-retry: 1.3.3 + transitivePeerDependencies: + - encoding - '@pagefind/linux-arm64@1.1.0': - optional: true + '@openzeppelin/defender-sdk-deploy-client@1.14.4(encoding@0.1.13)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + axios: 1.7.7 + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding - '@pagefind/linux-x64@1.1.0': - optional: true + '@openzeppelin/defender-sdk-key-value-store-client@1.14.4(encoding@0.1.13)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + axios: 1.7.7 + fs-extra: 11.2.0 + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding - '@pagefind/windows-x64@1.1.0': + '@openzeppelin/defender-sdk-monitor-client@1.14.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + axios: 1.7.7 + ethers: 6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + lodash: 4.17.21 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + + '@openzeppelin/defender-sdk-network-client@1.14.4(encoding@0.1.13)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + axios: 1.7.7 + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding + + '@openzeppelin/defender-sdk-notification-channel-client@1.14.4(encoding@0.1.13)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + axios: 1.7.7 + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding + + '@openzeppelin/defender-sdk-proposal-client@1.14.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + axios: 1.7.7 + ethers: 6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + lodash: 4.17.21 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + + '@openzeppelin/defender-sdk-relay-client@1.14.4(encoding@0.1.13)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + axios: 1.7.7 + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding + + '@openzeppelin/defender-sdk-relay-signer-client@1.14.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4(encoding@0.1.13))(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@ethersproject/strings': 5.7.0 + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + amazon-cognito-identity-js: 6.3.12(encoding@0.1.13) + axios: 1.7.7 + ethers: 6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + lodash: 4.17.21 + web3: 1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + web3-core: 1.10.4(encoding@0.1.13) + web3-core-helpers: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + + '@openzeppelin/defender-sdk@1.14.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4(encoding@0.1.13))(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))': + dependencies: + '@openzeppelin/defender-sdk-account-client': 1.14.4(encoding@0.1.13) + '@openzeppelin/defender-sdk-action-client': 1.14.4(encoding@0.1.13) + '@openzeppelin/defender-sdk-base-client': 1.14.4(encoding@0.1.13) + '@openzeppelin/defender-sdk-deploy-client': 1.14.4(encoding@0.1.13) + '@openzeppelin/defender-sdk-key-value-store-client': 1.14.4(encoding@0.1.13) + '@openzeppelin/defender-sdk-monitor-client': 1.14.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@openzeppelin/defender-sdk-network-client': 1.14.4(encoding@0.1.13) + '@openzeppelin/defender-sdk-notification-channel-client': 1.14.4(encoding@0.1.13) + '@openzeppelin/defender-sdk-proposal-client': 1.14.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@openzeppelin/defender-sdk-relay-client': 1.14.4(encoding@0.1.13) + '@openzeppelin/defender-sdk-relay-signer-client': 1.14.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4(encoding@0.1.13))(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + - web3 + - web3-core + - web3-core-helpers + - web3-utils + + '@openzeppelin/merkle-tree@1.0.6': + dependencies: + '@ethersproject/abi': 5.7.0 + ethereum-cryptography: 1.2.0 + + '@oslojs/encoding@0.4.1': {} + + '@pagefind/darwin-arm64@1.1.0': + optional: true + + '@pagefind/darwin-x64@1.1.0': + optional: true + + '@pagefind/default-ui@1.1.0': {} + + '@pagefind/linux-arm64@1.1.0': + optional: true + + '@pagefind/linux-x64@1.1.0': + optional: true + + '@pagefind/windows-x64@1.1.0': optional: true - '@parcel/watcher-android-arm64@2.4.1': + '@parcel/watcher-android-arm64@2.4.0': optional: true - '@parcel/watcher-darwin-arm64@2.4.1': + '@parcel/watcher-darwin-arm64@2.4.0': optional: true - '@parcel/watcher-darwin-x64@2.4.1': + '@parcel/watcher-darwin-x64@2.4.0': optional: true - '@parcel/watcher-freebsd-x64@2.4.1': + '@parcel/watcher-freebsd-x64@2.4.0': optional: true - '@parcel/watcher-linux-arm-glibc@2.4.1': + '@parcel/watcher-linux-arm-glibc@2.4.0': optional: true - '@parcel/watcher-linux-arm64-glibc@2.4.1': + '@parcel/watcher-linux-arm64-glibc@2.4.0': optional: true - '@parcel/watcher-linux-arm64-musl@2.4.1': + '@parcel/watcher-linux-arm64-musl@2.4.0': optional: true - '@parcel/watcher-linux-x64-glibc@2.4.1': + '@parcel/watcher-linux-x64-glibc@2.4.0': optional: true - '@parcel/watcher-linux-x64-musl@2.4.1': + '@parcel/watcher-linux-x64-musl@2.4.0': optional: true - '@parcel/watcher-wasm@2.4.1': + '@parcel/watcher-wasm@2.4.0': dependencies: is-glob: 4.0.3 - micromatch: 4.0.7 - napi-wasm: 1.1.0 + micromatch: 4.0.5 - '@parcel/watcher-win32-arm64@2.4.1': + '@parcel/watcher-win32-arm64@2.4.0': optional: true - '@parcel/watcher-win32-ia32@2.4.1': + '@parcel/watcher-win32-ia32@2.4.0': optional: true - '@parcel/watcher-win32-x64@2.4.1': + '@parcel/watcher-win32-x64@2.4.0': optional: true - '@parcel/watcher@2.4.1': + '@parcel/watcher@2.4.0': dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 - micromatch: 4.0.7 + micromatch: 4.0.5 node-addon-api: 7.1.0 optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.1 - '@parcel/watcher-darwin-arm64': 2.4.1 - '@parcel/watcher-darwin-x64': 2.4.1 - '@parcel/watcher-freebsd-x64': 2.4.1 - '@parcel/watcher-linux-arm-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-musl': 2.4.1 - '@parcel/watcher-linux-x64-glibc': 2.4.1 - '@parcel/watcher-linux-x64-musl': 2.4.1 - '@parcel/watcher-win32-arm64': 2.4.1 - '@parcel/watcher-win32-ia32': 2.4.1 - '@parcel/watcher-win32-x64': 2.4.1 + '@parcel/watcher-android-arm64': 2.4.0 + '@parcel/watcher-darwin-arm64': 2.4.0 + '@parcel/watcher-darwin-x64': 2.4.0 + '@parcel/watcher-freebsd-x64': 2.4.0 + '@parcel/watcher-linux-arm-glibc': 2.4.0 + '@parcel/watcher-linux-arm64-glibc': 2.4.0 + '@parcel/watcher-linux-arm64-musl': 2.4.0 + '@parcel/watcher-linux-x64-glibc': 2.4.0 + '@parcel/watcher-linux-x64-musl': 2.4.0 + '@parcel/watcher-win32-arm64': 2.4.0 + '@parcel/watcher-win32-ia32': 2.4.0 + '@parcel/watcher-win32-x64': 2.4.0 '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.1.1': {} + '@pkgr/utils@2.4.2': + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.2 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 - '@playwright/test@1.45.0': + '@playwright/test@1.43.1': dependencies: - playwright: 1.45.0 + playwright: 1.43.1 '@pnpm/config.env-replace@1.1.0': {} @@ -15654,7 +16728,7 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@polka/url@1.0.0-next.25': {} + '@polka/url@1.0.0-next.24': {} '@protobufjs/aspromise@1.1.2': {} @@ -15679,230 +16753,116 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@radix-ui/primitive@1.1.0': {} - - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@types/react': 18.3.3 - react: 18.3.1 - - '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@types/react': 18.3.3 - react: 18.3.1 - - '@radix-ui/react-dialog@1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) - - '@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@types/react': 18.3.3 - react: 18.3.1 - - '@radix-ui/react-focus-scope@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 - react: 18.3.1 - - '@radix-ui/react-portal@1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': + '@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@radix-ui/react-presence@1.1.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@radix-ui/react-primitive@2.0.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': - dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 - react: 18.3.1 - - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@types/react': 18.3.3 - react: 18.3.1 - - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 - react: 18.3.1 - - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 - react: 18.3.1 - - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@types/react': 18.3.3 - react: 18.3.1 + merge-options: 3.0.4 + react-native: 0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) - '@react-native-community/cli-clean@13.6.9': + '@react-native-community/cli-clean@12.3.2(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 13.6.9 + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) chalk: 4.1.2 execa: 5.1.1 - fast-glob: 3.3.2 transitivePeerDependencies: - encoding - '@react-native-community/cli-config@13.6.9': + '@react-native-community/cli-config@12.3.2(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 13.6.9 + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) chalk: 4.1.2 cosmiconfig: 5.2.1 deepmerge: 4.3.1 - fast-glob: 3.3.2 - joi: 17.13.3 + glob: 7.2.3 + joi: 17.12.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-debugger-ui@13.6.9': + '@react-native-community/cli-debugger-ui@12.3.2': dependencies: - serve-static: 1.15.0 + serve-static: 1.16.2 transitivePeerDependencies: - supports-color - '@react-native-community/cli-doctor@13.6.9': + '@react-native-community/cli-doctor@12.3.2(encoding@0.1.13)': dependencies: - '@react-native-community/cli-config': 13.6.9 - '@react-native-community/cli-platform-android': 13.6.9 - '@react-native-community/cli-platform-apple': 13.6.9 - '@react-native-community/cli-platform-ios': 13.6.9 - '@react-native-community/cli-tools': 13.6.9 + '@react-native-community/cli-config': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-platform-android': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-platform-ios': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) chalk: 4.1.2 command-exists: 1.2.9 deepmerge: 4.3.1 - envinfo: 7.13.0 + envinfo: 7.11.1 execa: 5.1.1 hermes-profile-transformer: 0.0.6 + ip: 1.1.9 node-stream-zip: 1.15.0 ora: 5.4.1 semver: 7.6.3 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.4.5 + yaml: 2.5.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-hermes@13.6.9': + '@react-native-community/cli-hermes@12.3.2(encoding@0.1.13)': dependencies: - '@react-native-community/cli-platform-android': 13.6.9 - '@react-native-community/cli-tools': 13.6.9 + '@react-native-community/cli-platform-android': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) chalk: 4.1.2 hermes-profile-transformer: 0.0.6 + ip: 1.1.9 transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-android@13.6.9': + '@react-native-community/cli-platform-android@12.3.2(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 13.6.9 + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) chalk: 4.1.2 execa: 5.1.1 - fast-glob: 3.3.2 - fast-xml-parser: 4.4.0 + fast-xml-parser: 4.3.4 + glob: 7.2.3 logkitty: 0.7.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-apple@13.6.9': + '@react-native-community/cli-platform-ios@12.3.2(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 13.6.9 + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) chalk: 4.1.2 execa: 5.1.1 - fast-glob: 3.3.2 - fast-xml-parser: 4.4.0 + fast-xml-parser: 4.3.4 + glob: 7.2.3 ora: 5.4.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-ios@13.6.9': - dependencies: - '@react-native-community/cli-platform-apple': 13.6.9 - transitivePeerDependencies: - - encoding + '@react-native-community/cli-plugin-metro@12.3.2': {} - '@react-native-community/cli-server-api@13.6.9': + '@react-native-community/cli-server-api@12.3.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@react-native-community/cli-debugger-ui': 13.6.9 - '@react-native-community/cli-tools': 13.6.9 + '@react-native-community/cli-debugger-ui': 12.3.2 + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) compression: 1.7.4 connect: 3.7.0 errorhandler: 1.5.1 nocache: 3.0.4 pretty-format: 26.6.2 - serve-static: 1.15.0 - ws: 6.2.3 + serve-static: 1.16.2 + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - '@react-native-community/cli-tools@13.6.9': + '@react-native-community/cli-tools@12.3.2(encoding@0.1.13)': dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 - execa: 5.1.1 find-up: 5.0.0 mime: 2.6.0 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) open: 6.4.0 ora: 5.4.1 semver: 7.6.3 @@ -15911,20 +16871,21 @@ snapshots: transitivePeerDependencies: - encoding - '@react-native-community/cli-types@13.6.9': + '@react-native-community/cli-types@12.3.2': dependencies: - joi: 17.13.3 + joi: 17.12.1 - '@react-native-community/cli@13.6.9': + '@react-native-community/cli@12.3.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@react-native-community/cli-clean': 13.6.9 - '@react-native-community/cli-config': 13.6.9 - '@react-native-community/cli-debugger-ui': 13.6.9 - '@react-native-community/cli-doctor': 13.6.9 - '@react-native-community/cli-hermes': 13.6.9 - '@react-native-community/cli-server-api': 13.6.9 - '@react-native-community/cli-tools': 13.6.9 - '@react-native-community/cli-types': 13.6.9 + '@react-native-community/cli-clean': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-config': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-debugger-ui': 12.3.2 + '@react-native-community/cli-doctor': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-hermes': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-plugin-metro': 12.3.2 + '@react-native-community/cli-server-api': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-types': 12.3.2 chalk: 4.1.2 commander: 9.5.0 deepmerge: 4.3.1 @@ -15940,90 +16901,88 @@ snapshots: - supports-color - utf-8-validate - '@react-native/assets-registry@0.74.85': {} + '@react-native/assets-registry@0.73.1': {} - '@react-native/babel-plugin-codegen@0.74.85(@babel/preset-env@7.24.7)': + '@react-native/babel-plugin-codegen@0.73.4(@babel/preset-env@7.23.9(@babel/core@7.25.2))': dependencies: - '@react-native/codegen': 0.74.85(@babel/preset-env@7.24.7) + '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9(@babel/core@7.25.2)) transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/babel-preset@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7)': + '@react-native/babel-preset@0.73.21(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.2) '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.25.2) + '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.25.2) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.2) '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.25.2) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.25.2) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.25.2) '@babel/template': 7.25.0 - '@react-native/babel-plugin-codegen': 0.74.85(@babel/preset-env@7.24.7) + '@react-native/babel-plugin-codegen': 0.73.4(@babel/preset-env@7.23.9(@babel/core@7.25.2)) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.25.2) - react-refresh: 0.14.2 + react-refresh: 0.14.0 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/codegen@0.74.85(@babel/preset-env@7.24.7)': + '@react-native/codegen@0.73.3(@babel/preset-env@7.23.9(@babel/core@7.25.2))': dependencies: - '@babel/parser': 7.25.3 - '@babel/preset-env': 7.24.7(@babel/core@7.25.2) + '@babel/parser': 7.25.6 + '@babel/preset-env': 7.23.9(@babel/core@7.25.2) + flow-parser: 0.206.0 glob: 7.2.3 - hermes-parser: 0.19.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.24.7) + jscodeshift: 0.14.0(@babel/preset-env@7.23.9(@babel/core@7.25.2)) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - '@react-native/community-cli-plugin@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7)': + '@react-native/community-cli-plugin@0.73.16(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@react-native-community/cli-server-api': 13.6.9 - '@react-native-community/cli-tools': 13.6.9 - '@react-native/dev-middleware': 0.74.85 - '@react-native/metro-babel-transformer': 0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7) + '@react-native-community/cli-server-api': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native/dev-middleware': 0.73.7(encoding@0.1.13) + '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2)) chalk: 4.1.2 execa: 5.1.1 - metro: 0.80.9 - metro-config: 0.80.9 - metro-core: 0.80.9 - node-fetch: 2.7.0 - querystring: 0.2.1 + metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + metro-config: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + metro-core: 0.80.6 + node-fetch: 2.7.0(encoding@0.1.13) readline: 1.3.0 transitivePeerDependencies: - '@babel/core' @@ -16033,58 +16992,52 @@ snapshots: - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.74.85': {} + '@react-native/debugger-frontend@0.73.3': {} - '@react-native/dev-middleware@0.74.85': + '@react-native/dev-middleware@0.73.7(encoding@0.1.13)': dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.74.85 - '@rnx-kit/chromium-edge-launcher': 1.0.0 + '@react-native/debugger-frontend': 0.73.3 chrome-launcher: 0.15.2 + chromium-edge-launcher: 1.0.0 connect: 3.7.0 debug: 2.6.9 - node-fetch: 2.7.0 - nullthrows: 1.1.1 + node-fetch: 2.7.0(encoding@0.1.13) open: 7.4.2 - selfsigned: 2.4.1 - serve-static: 1.15.0 + serve-static: 1.16.2 temp-dir: 2.0.0 - ws: 6.2.3 transitivePeerDependencies: - - bufferutil - encoding - supports-color - - utf-8-validate - '@react-native/gradle-plugin@0.74.85': {} + '@react-native/gradle-plugin@0.73.4': {} - '@react-native/js-polyfills@0.74.85': {} + '@react-native/js-polyfills@0.73.1': {} - '@react-native/metro-babel-transformer@0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7)': + '@react-native/metro-babel-transformer@0.73.15(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))': dependencies: '@babel/core': 7.25.2 - '@react-native/babel-preset': 0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7) - hermes-parser: 0.19.1 + '@react-native/babel-preset': 0.73.21(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2)) + hermes-parser: 0.15.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/normalize-colors@0.74.85': {} + '@react-native/normalize-colors@0.73.2': {} - '@react-native/virtualized-lists@0.74.85(react-native@0.74.3)(react@18.3.1)': + '@react-native/virtualized-lists@0.73.4(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react: 18.3.1 - react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) + react-native: 0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) - '@readme/better-ajv-errors@1.6.0(ajv@8.16.0)': + '@readme/better-ajv-errors@1.6.0(ajv@8.12.0)': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.24.7 + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.23.9 '@humanwhocodes/momoa': 2.0.4 - ajv: 8.16.0 + ajv: 8.12.0 chalk: 4.1.2 json-to-ast: 2.1.0 jsonpointer: 5.0.1 @@ -16102,75 +17055,179 @@ snapshots: '@apidevtools/openapi-schemas': 2.1.0 '@apidevtools/swagger-methods': 3.0.2 '@jsdevtools/ono': 7.1.3 - '@readme/better-ajv-errors': 1.6.0(ajv@8.16.0) + '@readme/better-ajv-errors': 1.6.0(ajv@8.12.0) '@readme/json-schema-ref-parser': 1.2.0 - ajv: 8.16.0 - ajv-draft-04: 1.0.0(ajv@8.16.0) + ajv: 8.12.0 + ajv-draft-04: 1.0.0(ajv@8.12.0) call-me-maybe: 1.0.2 openapi-types: 12.1.3 - '@rnx-kit/chromium-edge-launcher@1.0.0': + '@rollup/pluginutils@5.1.0(rollup@4.21.3)': dependencies: - '@types/node': 18.19.39 - escape-string-regexp: 4.0.0 - is-wsl: 2.2.0 - lighthouse-logger: 1.4.2 - mkdirp: 1.0.4 - rimraf: 3.0.2 - transitivePeerDependencies: - - supports-color + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.21.3 + + '@rollup/rollup-android-arm-eabi@4.12.0': + optional: true + + '@rollup/rollup-android-arm-eabi@4.17.2': + optional: true + + '@rollup/rollup-android-arm-eabi@4.21.3': + optional: true + + '@rollup/rollup-android-arm64@4.12.0': + optional: true + + '@rollup/rollup-android-arm64@4.17.2': + optional: true + + '@rollup/rollup-android-arm64@4.21.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.12.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.17.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.21.3': + optional: true + + '@rollup/rollup-darwin-x64@4.12.0': + optional: true + + '@rollup/rollup-darwin-x64@4.17.2': + optional: true + + '@rollup/rollup-darwin-x64@4.21.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.12.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.17.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.21.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.17.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.21.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.12.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.17.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.21.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.12.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.17.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.21.3': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.21.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.12.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.17.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.21.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.17.2': + optional: true - '@rollup/rollup-android-arm-eabi@4.18.0': + '@rollup/rollup-linux-s390x-gnu@4.21.3': optional: true - '@rollup/rollup-android-arm64@4.18.0': + '@rollup/rollup-linux-x64-gnu@4.12.0': optional: true - '@rollup/rollup-darwin-arm64@4.18.0': + '@rollup/rollup-linux-x64-gnu@4.17.2': optional: true - '@rollup/rollup-darwin-x64@4.18.0': + '@rollup/rollup-linux-x64-gnu@4.21.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + '@rollup/rollup-linux-x64-musl@4.12.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.18.0': + '@rollup/rollup-linux-x64-musl@4.17.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.18.0': + '@rollup/rollup-linux-x64-musl@4.21.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.18.0': + '@rollup/rollup-win32-arm64-msvc@4.12.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + '@rollup/rollup-win32-arm64-msvc@4.17.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.18.0': + '@rollup/rollup-win32-arm64-msvc@4.21.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.18.0': + '@rollup/rollup-win32-ia32-msvc@4.12.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.18.0': + '@rollup/rollup-win32-ia32-msvc@4.17.2': optional: true - '@rollup/rollup-linux-x64-musl@4.18.0': + '@rollup/rollup-win32-ia32-msvc@4.21.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.18.0': + '@rollup/rollup-win32-x64-msvc@4.12.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.18.0': + '@rollup/rollup-win32-x64-msvc@4.17.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.18.0': + '@rollup/rollup-win32-x64-msvc@4.21.3': optional: true - '@safe-global/safe-apps-provider@0.18.1(typescript@5.5.3)': + '@safe-global/safe-apps-provider@0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + dependencies: + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + events: 3.3.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-provider@0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8)': + dependencies: + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + events: 3.3.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-provider@0.18.3(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8)': dependencies: - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.5.3) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -16178,59 +17235,114 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@8.1.0(typescript@5.5.3)': + '@safe-global/safe-apps-sdk@8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + dependencies: + '@safe-global/safe-gateway-typescript-sdk': 3.15.0 + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-sdk@8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8)': + dependencies: + '@safe-global/safe-gateway-typescript-sdk': 3.15.0 + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8)': dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.21.8 - viem: 1.21.4(typescript@5.5.3) + '@safe-global/safe-gateway-typescript-sdk': 3.15.0 + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@safe-global/safe-gateway-typescript-sdk@3.21.8': {} + '@safe-global/safe-gateway-typescript-sdk@3.15.0': {} + + '@scure/base@1.1.5': {} - '@scure/base@1.1.7': {} + '@scure/base@1.1.8': {} '@scure/bip32@1.1.5': dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.7 + '@scure/base': 1.1.5 '@scure/bip32@1.3.2': dependencies: '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.7 + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 + + '@scure/bip32@1.3.3': + dependencies: + '@noble/curves': 1.3.0 + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.8 '@scure/bip32@1.4.0': dependencies: '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 - '@scure/base': 1.1.7 + '@scure/base': 1.1.8 '@scure/bip39@1.1.1': dependencies: '@noble/hashes': 1.2.0 - '@scure/base': 1.1.7 + '@scure/base': 1.1.5 '@scure/bip39@1.2.1': dependencies: - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.7 + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 - '@scure/bip39@1.3.0': + '@scure/bip39@1.2.2': dependencies: - '@noble/hashes': 1.4.0 - '@scure/base': 1.1.7 + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.8 + + '@scure/bip39@1.4.0': + dependencies: + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.8 + + '@shikijs/core@1.17.6': + dependencies: + '@shikijs/engine-javascript': 1.17.6 + '@shikijs/engine-oniguruma': 1.17.6 + '@shikijs/types': 1.17.6 + '@shikijs/vscode-textmate': 9.2.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.2 + + '@shikijs/core@1.5.2': {} + + '@shikijs/engine-javascript@1.17.6': + dependencies: + '@shikijs/types': 1.17.6 + oniguruma-to-js: 0.4.3 - '@shikijs/core@1.10.0': {} + '@shikijs/engine-oniguruma@1.17.6': + dependencies: + '@shikijs/types': 1.17.6 + '@shikijs/vscode-textmate': 9.2.2 - '@shikijs/core@1.12.1': + '@shikijs/types@1.17.6': dependencies: + '@shikijs/vscode-textmate': 9.2.2 '@types/hast': 3.0.4 + '@shikijs/vscode-textmate@9.2.2': {} + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -16241,9 +17353,9 @@ snapshots: '@sinclair/typebox@0.27.8': {} - '@sindresorhus/is@5.6.0': {} + '@sindresorhus/is@4.6.0': {} - '@sindresorhus/merge-streams@2.3.0': {} + '@sindresorhus/is@5.6.0': {} '@sinonjs/commons@3.0.1': dependencies: @@ -16253,335 +17365,321 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@smithy/abort-controller@3.1.1': + '@smithy/abort-controller@3.0.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 '@smithy/chunked-blob-reader-native@3.0.0': dependencies: '@smithy/util-base64': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 '@smithy/chunked-blob-reader@3.0.0': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/config-resolver@3.0.4': + '@smithy/config-resolver@3.0.0': dependencies: - '@smithy/node-config-provider': 3.1.3 - '@smithy/types': 3.3.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/types': 3.0.0 '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.3 - tslib: 2.6.3 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 - '@smithy/core@2.2.4': + '@smithy/core@2.0.1': dependencies: - '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 - '@smithy/middleware-serde': 3.0.3 - '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 - '@smithy/util-middleware': 3.0.3 - tslib: 2.6.3 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.1 + '@smithy/middleware-serde': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 - '@smithy/credential-provider-imds@3.1.3': + '@smithy/credential-provider-imds@3.0.0': dependencies: - '@smithy/node-config-provider': 3.1.3 - '@smithy/property-provider': 3.1.3 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - tslib: 2.6.3 + '@smithy/node-config-provider': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + tslib: 2.6.2 - '@smithy/eventstream-codec@3.1.2': + '@smithy/eventstream-codec@3.0.0': dependencies: - '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 3.3.0 + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 3.0.0 '@smithy/util-hex-encoding': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/eventstream-serde-browser@3.0.4': + '@smithy/eventstream-serde-browser@3.0.0': dependencies: - '@smithy/eventstream-serde-universal': 3.0.4 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/eventstream-serde-universal': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/eventstream-serde-config-resolver@3.0.3': + '@smithy/eventstream-serde-config-resolver@3.0.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/eventstream-serde-node@3.0.4': + '@smithy/eventstream-serde-node@3.0.0': dependencies: - '@smithy/eventstream-serde-universal': 3.0.4 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/eventstream-serde-universal': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/eventstream-serde-universal@3.0.4': + '@smithy/eventstream-serde-universal@3.0.0': dependencies: - '@smithy/eventstream-codec': 3.1.2 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/eventstream-codec': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/fetch-http-handler@3.2.0': + '@smithy/fetch-http-handler@3.0.1': dependencies: - '@smithy/protocol-http': 4.0.3 - '@smithy/querystring-builder': 3.0.3 - '@smithy/types': 3.3.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/querystring-builder': 3.0.0 + '@smithy/types': 3.0.0 '@smithy/util-base64': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/hash-blob-browser@3.1.2': + '@smithy/hash-blob-browser@3.0.0': dependencies: '@smithy/chunked-blob-reader': 3.0.0 '@smithy/chunked-blob-reader-native': 3.0.0 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/hash-node@3.0.3': + '@smithy/hash-node@3.0.0': dependencies: - '@smithy/types': 3.3.0 + '@smithy/types': 3.0.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/hash-stream-node@3.1.2': + '@smithy/hash-stream-node@3.0.0': dependencies: - '@smithy/types': 3.3.0 + '@smithy/types': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 - - '@smithy/invalid-dependency@3.0.3': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/is-array-buffer@2.2.0': + '@smithy/invalid-dependency@3.0.0': dependencies: - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 '@smithy/is-array-buffer@3.0.0': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/md5-js@3.0.3': + '@smithy/md5-js@3.0.0': dependencies: - '@smithy/types': 3.3.0 + '@smithy/types': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 - - '@smithy/middleware-content-length@3.0.3': - dependencies: - '@smithy/protocol-http': 4.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@smithy/middleware-endpoint@3.0.4': - dependencies: - '@smithy/middleware-serde': 3.0.3 - '@smithy/node-config-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.3 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-middleware': 3.0.3 - tslib: 2.6.3 - - '@smithy/middleware-retry@3.0.7': - dependencies: - '@smithy/node-config-provider': 3.1.3 - '@smithy/protocol-http': 4.0.3 - '@smithy/service-error-classification': 3.0.3 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 - tslib: 2.6.3 + tslib: 2.6.2 + + '@smithy/middleware-content-length@3.0.0': + dependencies: + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + + '@smithy/middleware-endpoint@3.0.0': + dependencies: + '@smithy/middleware-serde': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 + + '@smithy/middleware-retry@3.0.1': + dependencies: + '@smithy/node-config-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/service-error-classification': 3.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 + tslib: 2.6.2 uuid: 9.0.1 - '@smithy/middleware-serde@3.0.3': + '@smithy/middleware-serde@3.0.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/middleware-stack@3.0.3': + '@smithy/middleware-stack@3.0.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/node-config-provider@3.1.3': + '@smithy/node-config-provider@3.0.0': dependencies: - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/node-http-handler@3.1.1': + '@smithy/node-http-handler@3.0.0': dependencies: - '@smithy/abort-controller': 3.1.1 - '@smithy/protocol-http': 4.0.3 - '@smithy/querystring-builder': 3.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/abort-controller': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/querystring-builder': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/property-provider@3.1.3': + '@smithy/property-provider@3.0.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/protocol-http@4.0.3': + '@smithy/protocol-http@4.0.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/querystring-builder@3.0.3': + '@smithy/querystring-builder@3.0.0': dependencies: - '@smithy/types': 3.3.0 + '@smithy/types': 3.0.0 '@smithy/util-uri-escape': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/querystring-parser@3.0.3': + '@smithy/querystring-parser@3.0.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/service-error-classification@3.0.3': + '@smithy/service-error-classification@3.0.0': dependencies: - '@smithy/types': 3.3.0 + '@smithy/types': 3.0.0 - '@smithy/shared-ini-file-loader@3.1.3': + '@smithy/shared-ini-file-loader@3.0.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/signature-v4@3.1.2': + '@smithy/signature-v4@3.0.0': dependencies: '@smithy/is-array-buffer': 3.0.0 - '@smithy/types': 3.3.0 + '@smithy/types': 3.0.0 '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-middleware': 3.0.3 + '@smithy/util-middleware': 3.0.0 '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/smithy-client@3.1.5': + '@smithy/smithy-client@3.0.1': dependencies: - '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-stack': 3.0.3 - '@smithy/protocol-http': 4.0.3 - '@smithy/types': 3.3.0 - '@smithy/util-stream': 3.0.5 - tslib: 2.6.3 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-stream': 3.0.1 + tslib: 2.6.2 - '@smithy/types@3.3.0': + '@smithy/types@3.0.0': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/url-parser@3.0.3': + '@smithy/url-parser@3.0.0': dependencies: - '@smithy/querystring-parser': 3.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/querystring-parser': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 '@smithy/util-base64@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 '@smithy/util-body-length-browser@3.0.0': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 '@smithy/util-body-length-node@3.0.0': dependencies: - tslib: 2.6.3 - - '@smithy/util-buffer-from@2.2.0': - dependencies: - '@smithy/is-array-buffer': 2.2.0 - tslib: 2.6.3 + tslib: 2.6.2 '@smithy/util-buffer-from@3.0.0': dependencies: '@smithy/is-array-buffer': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 '@smithy/util-config-provider@3.0.0': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/util-defaults-mode-browser@3.0.7': + '@smithy/util-defaults-mode-browser@3.0.1': dependencies: - '@smithy/property-provider': 3.1.3 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 + '@smithy/property-provider': 3.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 bowser: 2.11.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/util-defaults-mode-node@3.0.7': + '@smithy/util-defaults-mode-node@3.0.1': dependencies: - '@smithy/config-resolver': 3.0.4 - '@smithy/credential-provider-imds': 3.1.3 - '@smithy/node-config-provider': 3.1.3 - '@smithy/property-provider': 3.1.3 - '@smithy/smithy-client': 3.1.5 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/config-resolver': 3.0.0 + '@smithy/credential-provider-imds': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/util-endpoints@2.0.4': + '@smithy/util-endpoints@2.0.0': dependencies: - '@smithy/node-config-provider': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/node-config-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 '@smithy/util-hex-encoding@3.0.0': dependencies: - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/util-middleware@3.0.3': + '@smithy/util-middleware@3.0.0': dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/util-retry@3.0.3': + '@smithy/util-retry@3.0.0': dependencies: - '@smithy/service-error-classification': 3.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/service-error-classification': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@smithy/util-stream@3.0.5': + '@smithy/util-stream@3.0.1': dependencies: - '@smithy/fetch-http-handler': 3.2.0 - '@smithy/node-http-handler': 3.1.1 - '@smithy/types': 3.3.0 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/node-http-handler': 3.0.0 + '@smithy/types': 3.0.0 '@smithy/util-base64': 3.0.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 '@smithy/util-uri-escape@3.0.0': dependencies: - tslib: 2.6.3 - - '@smithy/util-utf8@2.3.0': - dependencies: - '@smithy/util-buffer-from': 2.2.0 - tslib: 2.6.3 + tslib: 2.6.2 '@smithy/util-utf8@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 - tslib: 2.6.3 + tslib: 2.6.2 - '@smithy/util-waiter@3.1.2': + '@smithy/util-waiter@3.0.0': dependencies: - '@smithy/abort-controller': 3.1.1 - '@smithy/types': 3.3.0 - tslib: 2.6.3 + '@smithy/abort-controller': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 - '@socket.io/component-emitter@3.1.2': {} + '@socket.io/component-emitter@3.1.0': {} '@solidity-parser/parser@0.18.0': {} @@ -16665,551 +17763,237 @@ snapshots: '@stablelib/random': 1.0.2 '@stablelib/wipe': 1.0.1 - '@storybook/addon-actions@8.1.11': + '@storybook/addon-actions@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) uuid: 9.0.1 - '@storybook/addon-backgrounds@8.1.11': + '@storybook/addon-backgrounds@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)': + '@storybook/addon-controls@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/blocks': 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) + '@storybook/global': 5.0.0 dequal: 2.0.3 lodash: 4.17.21 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - prettier - - react - - react-dom - - supports-color - '@storybook/addon-docs@8.1.11(prettier@3.3.2)': + '@storybook/addon-docs@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@babel/core': 7.24.7 - '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1) - '@storybook/blocks': 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) - '@storybook/client-logger': 8.1.11 - '@storybook/components': 8.1.11(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@storybook/csf-plugin': 8.1.11 - '@storybook/csf-tools': 8.1.11 + '@mdx-js/react': 3.0.1(@types/react@18.3.5)(react@18.2.0) + '@storybook/blocks': 8.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/csf-plugin': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) '@storybook/global': 5.0.0 - '@storybook/node-logger': 8.1.11 - '@storybook/preview-api': 8.1.11 - '@storybook/react-dom-shim': 8.1.11(react-dom@18.3.1)(react@18.3.1) - '@storybook/theming': 8.1.11(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 8.1.11 - '@types/react': 18.3.3 + '@storybook/react-dom-shim': 8.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@types/react': 18.3.5 fs-extra: 11.2.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) rehype-external-links: 3.0.0 rehype-slug: 6.0.0 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) ts-dedent: 2.2.0 transitivePeerDependencies: - - '@types/react-dom' - - encoding - - prettier - - supports-color + - webpack-sources - '@storybook/addon-essentials@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)': - dependencies: - '@storybook/addon-actions': 8.1.11 - '@storybook/addon-backgrounds': 8.1.11 - '@storybook/addon-controls': 8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) - '@storybook/addon-docs': 8.1.11(prettier@3.3.2) - '@storybook/addon-highlight': 8.1.11 - '@storybook/addon-measure': 8.1.11 - '@storybook/addon-outline': 8.1.11 - '@storybook/addon-toolbars': 8.1.11 - '@storybook/addon-viewport': 8.1.11 - '@storybook/core-common': 8.1.11(prettier@3.3.2) - '@storybook/manager-api': 8.1.11(react-dom@18.3.1)(react@18.3.1) - '@storybook/node-logger': 8.1.11 - '@storybook/preview-api': 8.1.11 + '@storybook/addon-essentials@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': + dependencies: + '@storybook/addon-actions': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/addon-backgrounds': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/addon-controls': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/addon-docs': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/addon-highlight': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/addon-measure': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/addon-outline': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/addon-toolbars': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/addon-viewport': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) ts-dedent: 2.2.0 transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - prettier - - react - - react-dom - - supports-color + - webpack-sources - '@storybook/addon-highlight@8.1.11': + '@storybook/addon-highlight@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: '@storybook/global': 5.0.0 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - '@storybook/addon-interactions@8.1.11(vitest@1.6.0)': + '@storybook/addon-interactions@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.1.11 - '@storybook/test': 8.1.11(vitest@1.6.0) - '@storybook/types': 8.1.11 + '@storybook/instrumenter': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/test': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) polished: 4.3.1 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - jest - - vitest - '@storybook/addon-links@8.1.11(react@18.3.1)': + '@storybook/addon-links@8.3.0(react@18.2.0)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/csf': 0.1.9 + '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 - react: 18.3.1 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) ts-dedent: 2.2.0 + optionalDependencies: + react: 18.2.0 - '@storybook/addon-measure@8.1.11': + '@storybook/addon-measure@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: '@storybook/global': 5.0.0 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) tiny-invariant: 1.3.3 - '@storybook/addon-outline@8.1.11': + '@storybook/addon-outline@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: '@storybook/global': 5.0.0 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) ts-dedent: 2.2.0 - '@storybook/addon-themes@8.1.11': + '@storybook/addon-themes@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) ts-dedent: 2.2.0 - '@storybook/addon-toolbars@8.1.11': {} + '@storybook/addon-toolbars@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': + dependencies: + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - '@storybook/addon-viewport@8.1.11': + '@storybook/addon-viewport@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: memoizerific: 1.11.3 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - '@storybook/blocks@8.1.11(@types/react@18.3.3)(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)': + '@storybook/blocks@8.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/channels': 8.1.11 - '@storybook/client-logger': 8.1.11 - '@storybook/components': 8.1.11(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@storybook/core-events': 8.1.11 - '@storybook/csf': 0.1.9 - '@storybook/docs-tools': 8.1.11(prettier@3.3.2) + '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1) - '@storybook/manager-api': 8.1.11(react-dom@18.3.1)(react@18.3.1) - '@storybook/preview-api': 8.1.11 - '@storybook/theming': 8.1.11(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 8.1.11 - '@types/lodash': 4.17.6 + '@storybook/icons': 1.2.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/lodash': 4.17.7 color-convert: 2.0.1 dequal: 2.0.3 lodash: 4.17.21 - markdown-to-jsx: 7.3.2(react@18.3.1) + markdown-to-jsx: 7.5.0(react@18.2.0) memoizerific: 1.11.3 polished: 4.3.1 - react: 18.3.1 - react-colorful: 5.6.1(react-dom@18.3.1)(react@18.3.1) - react-dom: 18.3.1(react@18.3.1) + react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) telejson: 7.2.0 - tocbot: 4.28.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - prettier - - supports-color + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) - '@storybook/builder-manager@8.1.11(prettier@3.3.2)': + '@storybook/builder-vite@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))': dependencies: - '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 8.1.11(prettier@3.3.2) - '@storybook/manager': 8.1.11 - '@storybook/node-logger': 8.1.11 - '@types/ejs': 3.1.5 - '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.20.2) - browser-assert: 1.2.1 - ejs: 3.1.10 - esbuild: 0.20.2 - esbuild-plugin-alias: 0.2.1 - express: 4.19.2 - fs-extra: 11.2.0 - process: 0.11.10 - util: 0.12.5 - transitivePeerDependencies: - - encoding - - prettier - - supports-color - - '@storybook/builder-vite@8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2)': - dependencies: - '@storybook/channels': 8.1.11 - '@storybook/client-logger': 8.1.11 - '@storybook/core-common': 8.1.11(prettier@3.3.2) - '@storybook/core-events': 8.1.11 - '@storybook/csf-plugin': 8.1.11 - '@storybook/node-logger': 8.1.11 - '@storybook/preview': 8.1.11 - '@storybook/preview-api': 8.1.11 - '@storybook/types': 8.1.11 + '@storybook/csf-plugin': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 - es-module-lexer: 1.5.4 - express: 4.19.2 + es-module-lexer: 1.5.3 + express: 4.21.0 find-cache-dir: 3.3.2 fs-extra: 11.2.0 magic-string: 0.30.10 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) ts-dedent: 2.2.0 - typescript: 5.5.3 - vite: 5.3.2(@types/node@20.14.9) - transitivePeerDependencies: - - encoding - - prettier - - supports-color - - '@storybook/channels@8.1.11': - dependencies: - '@storybook/client-logger': 8.1.11 - '@storybook/core-events': 8.1.11 - '@storybook/global': 5.0.0 - telejson: 7.2.0 - tiny-invariant: 1.3.3 - - '@storybook/cli@8.1.11(react-dom@18.3.1)(react@18.3.1)': - dependencies: - '@babel/core': 7.24.7 - '@babel/types': 7.24.7 - '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 8.1.11 - '@storybook/core-common': 8.1.11(prettier@3.3.2) - '@storybook/core-events': 8.1.11 - '@storybook/core-server': 8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) - '@storybook/csf-tools': 8.1.11 - '@storybook/node-logger': 8.1.11 - '@storybook/telemetry': 8.1.11(prettier@3.3.2) - '@storybook/types': 8.1.11 - '@types/semver': 7.5.8 - '@yarnpkg/fslib': 2.10.3 - '@yarnpkg/libzip': 2.3.0 - chalk: 4.1.2 - commander: 6.2.1 - cross-spawn: 7.0.3 - detect-indent: 6.1.0 - envinfo: 7.13.0 - execa: 5.1.1 - find-up: 5.0.0 - fs-extra: 11.2.0 - get-npm-tarball-url: 2.1.0 - giget: 1.2.3 - globby: 14.0.2 - jscodeshift: 0.15.2(@babel/preset-env@7.24.7) - leven: 3.1.0 - ora: 5.4.1 - prettier: 3.3.2 - prompts: 2.4.2 - read-pkg-up: 7.0.1 - semver: 7.6.2 - strip-json-comments: 3.1.1 - tempy: 3.1.0 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + optionalDependencies: + typescript: 5.4.5 transitivePeerDependencies: - - '@babel/preset-env' - - bufferutil - - encoding - - react - - react-dom - supports-color - - utf-8-validate + - webpack-sources - '@storybook/client-logger@8.1.11': + '@storybook/components@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/global': 5.0.0 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - '@storybook/codemod@8.1.11': + '@storybook/core@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)': dependencies: - '@babel/core': 7.24.7 - '@babel/preset-env': 7.24.7(@babel/core@7.24.7) - '@babel/types': 7.24.7 - '@storybook/csf': 0.1.9 - '@storybook/csf-tools': 8.1.11 - '@storybook/node-logger': 8.1.11 - '@storybook/types': 8.1.11 - '@types/cross-spawn': 6.0.6 - cross-spawn: 7.0.3 - globby: 14.0.2 - jscodeshift: 0.15.2(@babel/preset-env@7.24.7) - lodash: 4.17.21 - prettier: 3.3.2 + '@storybook/csf': 0.1.11 + '@types/express': 4.17.21 + browser-assert: 1.2.1 + esbuild: 0.21.3 + esbuild-register: 3.6.0(esbuild@0.21.3) + express: 4.21.0 + process: 0.11.10 recast: 0.23.9 - tiny-invariant: 1.3.3 - transitivePeerDependencies: - - supports-color - - '@storybook/components@8.1.11(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': - dependencies: - '@radix-ui/react-dialog': 1.1.1(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@storybook/client-logger': 8.1.11 - '@storybook/csf': 0.1.9 - '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1) - '@storybook/theming': 8.1.11(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 8.1.11 - memoizerific: 1.11.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - '@storybook/core-common@8.1.11(prettier@3.3.2)': - dependencies: - '@storybook/core-events': 8.1.11 - '@storybook/csf-tools': 8.1.11 - '@storybook/node-logger': 8.1.11 - '@storybook/types': 8.1.11 - '@yarnpkg/fslib': 2.10.3 - '@yarnpkg/libzip': 2.3.0 - chalk: 4.1.2 - cross-spawn: 7.0.3 - esbuild: 0.20.2 - esbuild-register: 3.5.0(esbuild@0.20.2) - execa: 5.1.1 - file-system-cache: 2.3.0 - find-cache-dir: 3.3.2 - find-up: 5.0.0 - fs-extra: 11.2.0 - glob: 10.4.2 - handlebars: 4.7.8 - lazy-universal-dotenv: 4.0.0 - node-fetch: 2.7.0 - picomatch: 2.3.1 - pkg-dir: 5.0.0 - prettier: 3.3.2 - prettier-fallback: prettier@3.3.2 - pretty-hrtime: 1.0.3 - resolve-from: 5.0.0 semver: 7.6.2 - tempy: 3.1.0 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 - util: 0.12.5 - transitivePeerDependencies: - - encoding - - supports-color - - '@storybook/core-events@8.1.11': - dependencies: - '@storybook/csf': 0.1.9 - ts-dedent: 2.2.0 - - '@storybook/core-server@8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)': - dependencies: - '@aw-web-design/x-default-browser': 1.4.126 - '@babel/core': 7.24.7 - '@babel/parser': 7.24.7 - '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 8.1.11(prettier@3.3.2) - '@storybook/channels': 8.1.11 - '@storybook/core-common': 8.1.11(prettier@3.3.2) - '@storybook/core-events': 8.1.11 - '@storybook/csf': 0.1.9 - '@storybook/csf-tools': 8.1.11 - '@storybook/docs-mdx': 3.1.0-next.0 - '@storybook/global': 5.0.0 - '@storybook/manager': 8.1.11 - '@storybook/manager-api': 8.1.11(react-dom@18.3.1)(react@18.3.1) - '@storybook/node-logger': 8.1.11 - '@storybook/preview-api': 8.1.11 - '@storybook/telemetry': 8.1.11(prettier@3.3.2) - '@storybook/types': 8.1.11 - '@types/detect-port': 1.3.5 - '@types/diff': 5.2.1 - '@types/node': 18.19.39 - '@types/pretty-hrtime': 1.0.3 - '@types/semver': 7.5.8 - better-opn: 3.0.2 - chalk: 4.1.2 - cli-table3: 0.6.5 - compression: 1.7.4 - detect-port: 1.6.1 - diff: 5.2.0 - express: 4.19.2 - fs-extra: 11.2.0 - globby: 14.0.2 - lodash: 4.17.21 - open: 8.4.2 - pretty-hrtime: 1.0.3 - prompts: 2.4.2 - read-pkg-up: 7.0.1 - semver: 7.6.3 - telejson: 7.2.0 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 util: 0.12.5 - util-deprecate: 1.0.2 - watchpack: 2.4.1 - ws: 8.17.1 + ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - - encoding - - prettier - - react - - react-dom - supports-color - utf-8-validate - '@storybook/csf-plugin@8.1.11': + '@storybook/csf-plugin@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/csf-tools': 8.1.11 - unplugin: 1.11.0 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + unplugin: 1.14.1 transitivePeerDependencies: - - supports-color - - '@storybook/csf-tools@8.1.11': - dependencies: - '@babel/generator': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - '@storybook/csf': 0.1.9 - '@storybook/types': 8.1.11 - fs-extra: 11.2.0 - recast: 0.23.9 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color + - webpack-sources '@storybook/csf@0.0.1': dependencies: lodash: 4.17.21 - '@storybook/csf@0.1.9': + '@storybook/csf@0.1.11': dependencies: type-fest: 2.19.0 - '@storybook/docs-mdx@3.1.0-next.0': {} - - '@storybook/docs-tools@8.1.11(prettier@3.3.2)': - dependencies: - '@storybook/core-common': 8.1.11(prettier@3.3.2) - '@storybook/core-events': 8.1.11 - '@storybook/preview-api': 8.1.11 - '@storybook/types': 8.1.11 - '@types/doctrine': 0.0.3 - assert: 2.1.0 - doctrine: 3.0.0 - lodash: 4.17.21 - transitivePeerDependencies: - - encoding - - prettier - - supports-color - '@storybook/global@5.0.0': {} - '@storybook/icons@1.2.9(react-dom@18.3.1)(react@18.3.1)': + '@storybook/icons@1.2.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) - '@storybook/instrumenter@8.1.11': + '@storybook/instrumenter@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/channels': 8.1.11 - '@storybook/client-logger': 8.1.11 - '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 - '@storybook/preview-api': 8.1.11 - '@vitest/utils': 1.6.0 + '@vitest/utils': 2.1.1 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) util: 0.12.5 - '@storybook/manager-api@8.1.11(react-dom@18.3.1)(react@18.3.1)': - dependencies: - '@storybook/channels': 8.1.11 - '@storybook/client-logger': 8.1.11 - '@storybook/core-events': 8.1.11 - '@storybook/csf': 0.1.9 - '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1) - '@storybook/router': 8.1.11 - '@storybook/theming': 8.1.11(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 8.1.11 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - store2: 2.14.3 - telejson: 7.2.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - react - - react-dom - - '@storybook/manager@8.1.11': {} - - '@storybook/node-logger@8.1.11': {} - - '@storybook/preview-api@8.1.11': + '@storybook/manager-api@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/channels': 8.1.11 - '@storybook/client-logger': 8.1.11 - '@storybook/core-events': 8.1.11 - '@storybook/csf': 0.1.9 - '@storybook/global': 5.0.0 - '@storybook/types': 8.1.11 - '@types/qs': 6.9.15 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.12.2 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/preview@8.1.11': {} + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - '@storybook/react-dom-shim@8.1.11(react-dom@18.3.1)(react@18.3.1)': + '@storybook/preview-api@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - '@storybook/router@8.1.11': + '@storybook/react-dom-shim@8.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/client-logger': 8.1.11 - memoizerific: 1.11.3 - qs: 6.12.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - '@storybook/svelte-vite@8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2)': + '@storybook/svelte-vite@8.3.0(@babel/core@7.25.2)(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.47)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(svelte@4.2.17)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))': dependencies: - '@storybook/builder-vite': 8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2) - '@storybook/node-logger': 8.1.11 - '@storybook/svelte': 8.1.11(prettier@3.3.2)(svelte@4.2.18) - '@storybook/types': 8.1.11 - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.2) + '@storybook/builder-vite': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + '@storybook/svelte': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(svelte@4.2.17) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) magic-string: 0.30.10 - svelte: 4.2.18 - svelte-preprocess: 5.1.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.3) + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + svelte: 4.2.17 + svelte-preprocess: 5.1.3(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.47)(svelte@4.2.17)(typescript@5.4.5) sveltedoc-parser: 4.2.1 ts-dedent: 2.2.0 - vite: 5.3.2(@types/node@20.14.9) + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) transitivePeerDependencies: - '@babel/core' - '@preact/preset-vite' - coffeescript - - encoding - less - postcss - postcss-load-config - - prettier - pug - sass - stylus @@ -17217,43 +18001,40 @@ snapshots: - supports-color - typescript - vite-plugin-glimmerx + - webpack-sources - '@storybook/svelte@8.1.11(prettier@3.3.2)(svelte@4.2.18)': + '@storybook/svelte@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(svelte@4.2.17)': dependencies: - '@storybook/client-logger': 8.1.11 - '@storybook/core-events': 8.1.11 - '@storybook/docs-tools': 8.1.11(prettier@3.3.2) + '@storybook/components': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) '@storybook/global': 5.0.0 - '@storybook/preview-api': 8.1.11 - '@storybook/types': 8.1.11 - svelte: 4.2.18 + '@storybook/manager-api': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/preview-api': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/theming': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + svelte: 4.2.17 sveltedoc-parser: 4.2.1 ts-dedent: 2.2.0 type-fest: 2.19.0 transitivePeerDependencies: - - encoding - - prettier - supports-color - '@storybook/sveltekit@8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2)': + '@storybook/sveltekit@8.3.0(@babel/core@7.25.2)(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.47)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(svelte@4.2.17)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))': dependencies: - '@storybook/addon-actions': 8.1.11 - '@storybook/builder-vite': 8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2) - '@storybook/svelte': 8.1.11(prettier@3.3.2)(svelte@4.2.18) - '@storybook/svelte-vite': 8.1.11(@babel/core@7.24.7)(@sveltejs/vite-plugin-svelte@3.1.1)(postcss@8.4.41)(prettier@3.3.2)(svelte@4.2.18)(typescript@5.5.3)(vite@5.3.2) - '@storybook/types': 8.1.11 - svelte: 4.2.18 - vite: 5.3.2(@types/node@20.14.9) + '@storybook/addon-actions': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@storybook/builder-vite': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + '@storybook/svelte': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(svelte@4.2.17) + '@storybook/svelte-vite': 8.3.0(@babel/core@7.25.2)(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.47)(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(svelte@4.2.17)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + svelte: 4.2.17 + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) transitivePeerDependencies: - '@babel/core' - '@preact/preset-vite' - '@sveltejs/vite-plugin-svelte' - coffeescript - - encoding - less - postcss - postcss-load-config - - prettier - pug - sass - stylus @@ -17261,167 +18042,191 @@ snapshots: - supports-color - typescript - vite-plugin-glimmerx + - webpack-sources - '@storybook/telemetry@8.1.11(prettier@3.3.2)': + '@storybook/test@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/client-logger': 8.1.11 - '@storybook/core-common': 8.1.11(prettier@3.3.2) - '@storybook/csf-tools': 8.1.11 - chalk: 4.1.2 - detect-package-manager: 2.0.1 - fetch-retry: 5.0.6 - fs-extra: 11.2.0 - read-pkg-up: 7.0.1 - transitivePeerDependencies: - - encoding - - prettier - - supports-color + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + '@testing-library/dom': 10.4.0 + '@testing-library/jest-dom': 6.5.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/expect': 2.0.5 + '@vitest/spy': 2.0.5 + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + util: 0.12.5 - '@storybook/test@8.1.11(vitest@1.6.0)': + '@storybook/theming@8.3.0(storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))': dependencies: - '@storybook/client-logger': 8.1.11 - '@storybook/core-events': 8.1.11 - '@storybook/instrumenter': 8.1.11 - '@storybook/preview-api': 8.1.11 - '@testing-library/dom': 10.1.0 - '@testing-library/jest-dom': 6.4.5(vitest@1.6.0) - '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) - '@vitest/expect': 1.6.0 - '@vitest/spy': 1.6.0 - util: 0.12.5 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - jest - - vitest + storybook: 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - '@storybook/theming@8.1.11(react-dom@18.3.1)(react@18.3.1)': + '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))': dependencies: - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) - '@storybook/client-logger': 8.1.11 - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@sveltejs/kit': 2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + import-meta-resolve: 4.0.0 - '@storybook/types@8.1.11': + '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)))': dependencies: - '@storybook/channels': 8.1.11 - '@types/express': 4.17.21 - file-system-cache: 2.3.0 + '@sveltejs/kit': 2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)) + import-meta-resolve: 4.0.0 + + '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))': + dependencies: + '@sveltejs/kit': 2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + import-meta-resolve: 4.0.0 - '@sveltejs/adapter-auto@3.2.2(@sveltejs/kit@2.5.24)': + '@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2))': dependencies: - '@sveltejs/kit': 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 5.0.0 + esm-env: 1.0.0 import-meta-resolve: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.10 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.4 + svelte: 4.2.13 + tiny-glob: 0.2.9 + vite: 4.5.3(@types/node@20.12.7)(terser@5.27.2) - '@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3)': + '@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@4.5.3) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 esm-env: 1.0.0 import-meta-resolve: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.11 + magic-string: 0.30.10 mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 4.2.18 + svelte: 4.2.13 tiny-glob: 0.2.9 - vite: 4.5.3 + vite: 5.1.3(@types/node@20.12.7)(terser@5.27.2) - '@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2)': + '@sveltejs/kit@2.5.27(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.2) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 esm-env: 1.0.0 import-meta-resolve: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.11 + magic-string: 0.30.10 mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 4.2.18 + svelte: 4.2.17 tiny-glob: 0.2.9 - vite: 5.3.2(@types/node@20.14.9) + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) - '@sveltejs/package@2.3.2(svelte@4.2.18)(typescript@5.5.3)': + '@sveltejs/package@2.3.5(svelte@4.2.17)(typescript@5.4.5)': dependencies: - chokidar: 3.6.0 + chokidar: 4.0.0 kleur: 4.1.5 sade: 1.8.1 semver: 7.6.2 - svelte: 4.2.18 - svelte2tsx: 0.7.13(svelte@4.2.18)(typescript@5.5.3) + svelte: 4.2.17 + svelte2tsx: 0.7.19(svelte@4.2.17)(typescript@5.4.5) transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3)': + '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + debug: 4.3.4 + svelte: 4.2.13 + vite: 4.5.3(@types/node@20.12.7)(terser@5.27.2) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@4.5.3) - debug: 4.3.5 - svelte: 4.2.18 - vite: 4.5.3 + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)) + debug: 4.3.4 + svelte: 4.2.13 + vite: 5.1.3(@types/node@20.12.7)(terser@5.27.2) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2)': + '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.2) - debug: 4.3.5 - svelte: 4.2.18 - vite: 5.3.2(@types/node@20.14.9) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + debug: 4.3.4 + svelte: 4.2.17 + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@4.5.3)': + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@4.5.3) - debug: 4.3.5 + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.10 - svelte: 4.2.18 - svelte-hmr: 0.16.0(svelte@4.2.18) - vite: 4.5.3 - vitefu: 0.2.5(vite@4.5.3) + magic-string: 0.30.9 + svelte: 4.2.13 + svelte-hmr: 0.16.0(svelte@4.2.13) + vite: 4.5.3(@types/node@20.12.7)(terser@5.27.2) + vitefu: 0.2.5(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.2)': + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1)(svelte@4.2.18)(vite@5.3.2) - debug: 4.3.5 + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)) + debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.10 - svelte: 4.2.18 - svelte-hmr: 0.16.0(svelte@4.2.18) - vite: 5.3.2(@types/node@20.14.9) - vitefu: 0.2.5(vite@5.3.2) + magic-string: 0.30.9 + svelte: 4.2.13 + svelte-hmr: 0.16.0(svelte@4.2.13) + vite: 5.1.3(@types/node@20.12.7)(terser@5.27.2) + vitefu: 0.2.5(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.17)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.9 + svelte: 4.2.17 + svelte-hmr: 0.16.0(svelte@4.2.17) + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) transitivePeerDependencies: - supports-color + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + '@szmarczak/http-timer@5.0.1': dependencies: defer-to-connect: 2.0.1 - '@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.4.39)': + '@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.4.38)': dependencies: - postcss: 8.4.39 - postcss-nested: 5.0.6(postcss@8.4.39) + postcss: 8.4.38 + postcss-nested: 5.0.6(postcss@8.4.38) - '@testing-library/dom@10.1.0': + '@testing-library/dom@10.4.0': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.24.7 + '@babel/code-frame': 7.24.2 + '@babel/runtime': 7.23.9 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -17429,21 +18234,19 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.5(vitest@1.6.0)': + '@testing-library/jest-dom@6.5.0': dependencies: '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.24.7 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - vitest: 1.6.0(jsdom@24.1.0) - '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)': + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': dependencies: - '@testing-library/dom': 10.1.0 + '@testing-library/dom': 10.4.0 '@ts-morph/common@0.20.0': dependencies: @@ -17452,7 +18255,7 @@ snapshots: mkdirp: 2.1.6 path-browserify: 1.0.1 - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.9': {} '@tsconfig/node12@1.0.11': {} @@ -17468,64 +18271,62 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.24.5 + '@babel/types': 7.25.6 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.5 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.24.5 + '@babel/types': 7.25.6 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.20.5': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@types/bn.js@5.1.5': dependencies: - '@types/node': 20.14.9 + '@types/node': 20.12.7 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.14.9 + '@types/node': 20.12.7 - '@types/connect@3.4.38': + '@types/cacheable-request@6.0.3': dependencies: - '@types/node': 20.14.9 + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.12.7 + '@types/responselike': 1.0.3 - '@types/cookie@0.6.0': {} + '@types/chrome@0.0.136': + dependencies: + '@types/filesystem': 0.0.35 + '@types/har-format': 1.2.15 - '@types/cross-spawn@6.0.6': + '@types/connect@3.4.38': dependencies: - '@types/node': 20.14.9 + '@types/node': 20.12.7 + + '@types/cookie@0.6.0': {} '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 - '@types/detect-port@1.3.5': {} - - '@types/diff@5.2.1': {} - '@types/dns-packet@5.6.5': dependencies: - '@types/node': 20.14.9 - - '@types/doctrine@0.0.3': {} + '@types/node': 20.12.7 '@types/dom-screen-wake-lock@1.0.3': {} - '@types/ejs@3.1.5': {} - - '@types/emscripten@1.39.13': {} - '@types/eslint@8.56.10': dependencies: '@types/estree': 1.0.5 @@ -17539,8 +18340,8 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 20.14.9 - '@types/qs': 6.9.15 + '@types/node': 20.12.7 + '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -17548,11 +18349,19 @@ snapshots: dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.19.5 - '@types/qs': 6.9.15 + '@types/qs': 6.9.16 '@types/serve-static': 1.15.7 + '@types/filesystem@0.0.35': + dependencies: + '@types/filewriter': 0.0.33 + + '@types/filewriter@0.0.33': {} + '@types/find-cache-dir@3.2.1': {} + '@types/har-format@1.2.15': {} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.2 @@ -17580,7 +18389,11 @@ snapshots: '@types/json5@0.0.29': {} - '@types/lodash@4.17.6': {} + '@types/keyv@3.1.4': + dependencies: + '@types/node': 20.12.7 + + '@types/lodash@4.17.7': {} '@types/mdast@4.0.4': dependencies: @@ -17598,64 +18411,64 @@ snapshots: dependencies: '@types/unist': 3.0.2 - '@types/node-forge@1.3.11': - dependencies: - '@types/node': 20.14.9 - '@types/node@12.20.55': {} '@types/node@17.0.45': {} - '@types/node@18.19.39': + '@types/node@18.15.13': {} + + '@types/node@18.19.31': dependencies: undici-types: 5.26.5 - '@types/node@20.14.9': + '@types/node@20.12.7': dependencies: undici-types: 5.26.5 - '@types/normalize-package-data@2.4.4': {} - '@types/object-hash@3.0.6': {} + '@types/parse-json@4.0.2': {} + '@types/pbkdf2@3.1.2': dependencies: - '@types/node': 20.14.9 - - '@types/pretty-hrtime@1.0.3': {} + '@types/node': 20.12.7 '@types/prop-types@15.7.12': {} '@types/pug@2.0.10': {} - '@types/qs@6.9.15': {} + '@types/qs@6.9.16': {} '@types/range-parser@1.2.7': {} - '@types/react@18.3.3': + '@types/react@18.3.5': dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 + '@types/responselike@1.0.3': + dependencies: + '@types/node': 20.12.7 + '@types/sax@1.2.7': dependencies: - '@types/node': 20.14.9 + '@types/node': 20.12.7 '@types/secp256k1@4.0.6': dependencies: - '@types/node': 20.14.9 + '@types/node': 20.12.7 - '@types/semver@7.5.8': {} + '@types/semver@7.5.7': {} '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.14.9 + '@types/node': 20.12.7 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.14.9 + '@types/node': 20.12.7 '@types/send': 0.17.4 '@types/stack-utils@2.0.3': {} @@ -17666,6 +18479,8 @@ snapshots: '@types/unist@3.0.2': {} + '@types/uuid@10.0.0': {} + '@types/uuid@9.0.8': {} '@types/yargs-parser@21.0.3': {} @@ -17678,109 +18493,374 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0)(typescript@5.4.3)': dependencies: - '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 7.15.0 - '@typescript-eslint/type-utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/visitor-keys': 7.15.0 - eslint: 8.57.0 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.7.0(eslint@8.55.0)(typescript@5.4.3) + '@typescript-eslint/scope-manager': 7.4.0 + '@typescript-eslint/type-utils': 7.4.0(eslint@8.55.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.4.0(eslint@8.55.0)(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.4.0 + debug: 4.3.4 + eslint: 8.55.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.3) - typescript: 5.5.3 + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.4.3) + optionalDependencies: + typescript: 5.4.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.15.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3)': dependencies: - '@typescript-eslint/scope-manager': 7.15.0 - '@typescript-eslint/types': 7.15.0 - '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) - '@typescript-eslint/visitor-keys': 7.15.0 - debug: 4.3.5 - eslint: 8.57.0 - typescript: 5.5.3 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.7.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/scope-manager': 7.4.0 + '@typescript-eslint/type-utils': 7.4.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.4.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.4.0 + debug: 4.3.4 + eslint: 8.56.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.4.3) + optionalDependencies: + typescript: 5.4.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@5.62.0': - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - - '@typescript-eslint/scope-manager@7.15.0': - dependencies: - '@typescript-eslint/types': 7.15.0 - '@typescript-eslint/visitor-keys': 7.15.0 - - '@typescript-eslint/type-utils@7.15.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3)': dependencies: - '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) - '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.5 - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.5.3) - typescript: 5.5.3 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.9.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/type-utils': 7.9.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.9.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.9.0 + eslint: 8.56.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.4.3) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0)(typescript@5.4.5)': + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.9.0(eslint@8.56.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/type-utils': 7.9.0(eslint@8.56.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@8.56.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.9.0 + eslint: 8.56.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3)': + dependencies: + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.7.0 + debug: 4.3.4 + eslint: 8.55.0 + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3)': + dependencies: + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.7.0 + debug: 4.3.4 + eslint: 8.56.0 + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.3)': + dependencies: + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.9.0 + debug: 4.3.4 + eslint: 8.56.0 + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.9.0 + debug: 4.3.4 + eslint: 8.56.0 + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + '@typescript-eslint/scope-manager@7.4.0': + dependencies: + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/visitor-keys': 7.4.0 + + '@typescript-eslint/scope-manager@7.7.0': + dependencies: + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 + + '@typescript-eslint/scope-manager@7.9.0': + dependencies: + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/visitor-keys': 7.9.0 + + '@typescript-eslint/type-utils@7.4.0(eslint@8.55.0)(typescript@5.4.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) + '@typescript-eslint/utils': 7.4.0(eslint@8.55.0)(typescript@5.4.3) + debug: 4.3.4 + eslint: 8.55.0 + ts-api-utils: 1.2.1(typescript@5.4.3) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@7.4.0(eslint@8.56.0)(typescript@5.4.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) + '@typescript-eslint/utils': 7.4.0(eslint@8.56.0)(typescript@5.4.3) + debug: 4.3.4 + eslint: 8.56.0 + ts-api-utils: 1.2.1(typescript@5.4.3) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@7.9.0(eslint@8.56.0)(typescript@5.4.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.3) + '@typescript-eslint/utils': 7.9.0(eslint@8.56.0)(typescript@5.4.3) + debug: 4.3.4 + eslint: 8.56.0 + ts-api-utils: 1.3.0(typescript@5.4.3) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@7.9.0(eslint@8.56.0)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@8.56.0)(typescript@5.4.5) + debug: 4.3.4 + eslint: 8.56.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 transitivePeerDependencies: - supports-color '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/types@7.15.0': {} + '@typescript-eslint/types@7.4.0': {} + + '@typescript-eslint/types@7.7.0': {} + + '@typescript-eslint/types@7.9.0': {} - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.3)': + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.3)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.5 + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.3 - tsutils: 3.21.0(typescript@5.5.3) - typescript: 5.5.3 + semver: 7.6.2 + tsutils: 3.21.0(typescript@5.4.3) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.2 + tsutils: 3.21.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.15.0(typescript@5.5.3)': + '@typescript-eslint/typescript-estree@7.4.0(typescript@5.4.3)': dependencies: - '@typescript-eslint/types': 7.15.0 - '@typescript-eslint/visitor-keys': 7.15.0 - debug: 4.3.5 + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/visitor-keys': 7.4.0 + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.5 + minimatch: 9.0.3 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.5.3) - typescript: 5.5.3 + ts-api-utils: 1.3.0(typescript@5.4.3) + optionalDependencies: + typescript: 5.4.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.3) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@7.9.0(typescript@5.4.3)': + dependencies: + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/visitor-keys': 7.9.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.3) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@7.9.0(typescript@5.4.5)': + dependencies: + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/visitor-keys': 7.9.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.4.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.7 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3) + eslint: 8.56.0 + eslint-scope: 5.1.1 + semver: 7.6.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 + '@types/semver': 7.5.7 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3) - eslint: 8.57.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + eslint: 8.56.0 eslint-scope: 5.1.1 semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.15.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/utils@7.4.0(eslint@8.55.0)(typescript@5.4.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.7 + '@typescript-eslint/scope-manager': 7.4.0 + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) + eslint: 8.55.0 + semver: 7.6.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@7.4.0(eslint@8.56.0)(typescript@5.4.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.7 + '@typescript-eslint/scope-manager': 7.4.0 + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) + eslint: 8.56.0 + semver: 7.6.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@7.9.0(eslint@8.56.0)(typescript@5.4.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.15.0 - '@typescript-eslint/types': 7.15.0 - '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.3) + eslint: 8.56.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@7.9.0(eslint@8.56.0)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + eslint: 8.56.0 transitivePeerDependencies: - supports-color - typescript @@ -17790,53 +18870,112 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.15.0': + '@typescript-eslint/visitor-keys@7.4.0': + dependencies: + '@typescript-eslint/types': 7.4.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@7.7.0': + dependencies: + '@typescript-eslint/types': 7.7.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@7.9.0': dependencies: - '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/types': 7.9.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} - '@vitest/coverage-v8@1.6.0(vitest@1.6.0)': + '@vitest/coverage-v8@1.4.0(vitest@1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2))': dependencies: - '@ampproject/remapping': 2.3.0 + '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.5 + debug: 4.3.4 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.5 + istanbul-lib-source-maps: 5.0.4 istanbul-reports: 3.1.7 - magic-string: 0.30.10 - magicast: 0.3.4 - picocolors: 1.0.1 + magic-string: 0.30.7 + magicast: 0.3.3 + picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.1.0 + strip-literal: 2.0.0 test-exclude: 6.0.0 - vitest: 1.6.0(jsdom@24.1.0) + v8-to-istanbul: 9.2.0 + vitest: 1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2) transitivePeerDependencies: - supports-color + '@vitest/expect@1.5.0': + dependencies: + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 + chai: 4.4.1 + '@vitest/expect@1.6.0': dependencies: '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 chai: 4.4.1 + '@vitest/expect@2.0.5': + dependencies: + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.1 + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.1.1': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/runner@1.5.0': + dependencies: + '@vitest/utils': 1.5.0 + p-limit: 5.0.0 + pathe: 1.1.2 + '@vitest/runner@1.6.0': dependencies: '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 - '@vitest/snapshot@1.6.0': + '@vitest/snapshot@1.5.0': dependencies: magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.9 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/spy@1.5.0': + dependencies: + tinyspy: 2.2.0 + '@vitest/spy@1.6.0': dependencies: - tinyspy: 2.2.1 + tinyspy: 2.2.0 + + '@vitest/spy@2.0.5': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@1.5.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 '@vitest/utils@1.6.0': dependencies: @@ -17845,25 +18984,37 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@volar/kit@2.4.0-alpha.18(typescript@5.5.3)': + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.1 + tinyrainbow: 1.2.0 + + '@vitest/utils@2.1.1': + dependencies: + '@vitest/pretty-format': 2.1.1 + loupe: 3.1.1 + tinyrainbow: 1.2.0 + + '@volar/kit@2.4.5(typescript@5.4.5)': dependencies: - '@volar/language-service': 2.4.0-alpha.18 - '@volar/typescript': 2.4.0-alpha.18 + '@volar/language-service': 2.4.5 + '@volar/typescript': 2.4.5 typesafe-path: 0.2.2 - typescript: 5.5.3 + typescript: 5.4.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - '@volar/language-core@2.4.0-alpha.18': + '@volar/language-core@2.4.5': dependencies: - '@volar/source-map': 2.4.0-alpha.18 + '@volar/source-map': 2.4.5 - '@volar/language-server@2.4.0-alpha.18': + '@volar/language-server@2.4.5': dependencies: - '@volar/language-core': 2.4.0-alpha.18 - '@volar/language-service': 2.4.0-alpha.18 - '@volar/snapshot-document': 2.4.0-alpha.18 - '@volar/typescript': 2.4.0-alpha.18 + '@volar/language-core': 2.4.5 + '@volar/language-service': 2.4.5 + '@volar/typescript': 2.4.5 path-browserify: 1.0.1 request-light: 0.7.0 vscode-languageserver: 9.0.1 @@ -17871,23 +19022,18 @@ snapshots: vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - '@volar/language-service@2.4.0-alpha.18': + '@volar/language-service@2.4.5': dependencies: - '@volar/language-core': 2.4.0-alpha.18 + '@volar/language-core': 2.4.5 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - '@volar/snapshot-document@2.4.0-alpha.18': - dependencies: - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 + '@volar/source-map@2.4.5': {} - '@volar/source-map@2.4.0-alpha.18': {} - - '@volar/typescript@2.4.0-alpha.18': + '@volar/typescript@2.4.5': dependencies: - '@volar/language-core': 2.4.0-alpha.18 + '@volar/language-core': 2.4.5 path-browserify: 1.0.1 vscode-uri: 3.0.8 @@ -17901,10 +19047,10 @@ snapshots: '@vscode/l10n@0.0.18': {} - '@wagmi/cli@2.1.13(typescript@5.5.3)': + '@wagmi/cli@2.1.15(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)': dependencies: - abitype: 1.0.5(typescript@5.5.3)(zod@3.23.8) - bundle-require: 4.2.1(esbuild@0.19.12) + abitype: 1.0.6(typescript@5.4.5)(zod@3.23.8) + bundle-require: 4.0.2(esbuild@0.19.12) cac: 6.7.14 change-case: 5.4.4 chokidar: 3.6.0 @@ -17913,32 +19059,276 @@ snapshots: dotenv-expand: 10.0.0 esbuild: 0.19.12 execa: 8.0.1 - fdir: 6.1.1(picomatch@3.0.1) + fdir: 6.3.0(picomatch@3.0.1) find-up: 6.3.0 fs-extra: 11.2.0 ora: 6.3.1 pathe: 1.1.2 - picocolors: 1.0.1 + picocolors: 1.0.0 picomatch: 3.0.1 - prettier: 3.3.2 - typescript: 5.5.3 - viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) + prettier: 3.2.5 + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) zod: 3.23.8 + optionalDependencies: + typescript: 5.4.5 transitivePeerDependencies: - bufferutil - utf-8-validate - '@wagmi/connectors@4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5)': + '@wagmi/cli@2.1.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)': + dependencies: + abitype: 0.9.10(typescript@5.4.3)(zod@3.22.4) + bundle-require: 4.0.2(esbuild@0.19.12) + cac: 6.7.14 + change-case: 4.1.2 + chokidar: 3.6.0 + dedent: 0.7.0 + dotenv: 16.4.5 + dotenv-expand: 10.0.0 + esbuild: 0.19.12 + execa: 8.0.1 + find-up: 6.3.0 + fs-extra: 11.2.0 + globby: 13.2.2 + ora: 6.3.1 + pathe: 1.1.2 + picocolors: 1.0.0 + prettier: 3.2.5 + viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + zod: 3.22.4 + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@wagmi/connectors@4.1.18(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@coinbase/wallet-sdk': 3.9.1 + '@metamask/sdk': 0.14.3(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + '@wagmi/core': 2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@walletconnect/ethereum-provider': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) + '@walletconnect/modal': 2.6.2(@types/react@18.3.5)(react@18.2.0) + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - react + - react-dom + - react-native + - rollup + - supports-color + - utf-8-validate + - zod + + '@wagmi/connectors@4.3.10(yrxxgsr3s6m7a4itnzsb2c7inm)': dependencies: '@coinbase/wallet-sdk': 3.9.1 - '@metamask/sdk': 0.20.3(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1) - '@safe-global/safe-apps-provider': 0.18.1(typescript@5.5.3) - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.5.3) - '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) - '@walletconnect/ethereum-provider': 2.13.0(react@18.3.1) - '@walletconnect/modal': 2.6.2(react@18.3.1) - typescript: 5.5.3 - viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) + '@metamask/sdk': 0.20.3(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@wagmi/core': 2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + '@walletconnect/ethereum-provider': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) + '@walletconnect/modal': 2.6.2(@types/react@18.3.5)(react@18.2.0) + viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - react + - react-dom + - react-i18next + - react-native + - rollup + - supports-color + - utf-8-validate + - zod + + '@wagmi/connectors@5.1.10(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.13.5(@types/react@18.3.5)(react@18.2.0)(typescript@5.4.5)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.5)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@coinbase/wallet-sdk': 4.0.4 + '@metamask/sdk': 0.28.2(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.3(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) + '@wagmi/core': 2.13.5(@types/react@18.3.5)(react@18.2.0)(typescript@5.4.5)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8)) + '@walletconnect/ethereum-provider': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) + '@walletconnect/modal': 2.6.2(@types/react@18.3.5)(react@18.2.0) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - react + - react-dom + - react-native + - rollup + - supports-color + - utf-8-validate + - zod + + '@wagmi/core@2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4)': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + zustand: 4.4.1(@types/react@18.3.5)(react@18.2.0) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - react + - utf-8-validate + - zod + + '@wagmi/core@2.13.5(@types/react@18.3.5)(react@18.2.0)(typescript@5.4.5)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.4.5) + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) + zustand: 4.4.1(@types/react@18.3.5)(react@18.2.0) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - '@types/react' + - immer + - react + + '@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + zustand: 4.4.1(@types/react@18.3.5)(react@18.2.0) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - react + - utf-8-validate + - zod + + '@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8)': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) + viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) + zustand: 4.4.1(@types/react@18.3.5)(react@18.2.0) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - react + - utf-8-validate + - zod + + '@walletconnect/core@2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + events: 3.3.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) + lodash.isequal: 4.5.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@walletconnect/core@2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + events: 3.3.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) + lodash.isequal: 4.5.0 + uint8arrays: 3.1.1 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -17950,34 +19340,32 @@ snapshots: - '@netlify/blobs' - '@planetscale/database' - '@react-native-async-storage/async-storage' - - '@types/react' - '@upstash/redis' - '@vercel/kv' - bufferutil - encoding - - ioredis - - react - - react-dom - - react-i18next - - react-native - - rollup - supports-color - - uWebSockets.js - utf-8-validate - - zod - '@wagmi/connectors@5.0.21(@wagmi/core@2.11.6)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5)': + '@walletconnect/core@2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@coinbase/wallet-sdk': 4.0.4 - '@metamask/sdk': 0.26.4(react-native@0.74.3)(react@18.3.1) - '@safe-global/safe-apps-provider': 0.18.1(typescript@5.5.3) - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.5.3) - '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) - '@walletconnect/ethereum-provider': 2.13.0(react@18.3.1) - '@walletconnect/modal': 2.6.2(react@18.3.1) - cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - typescript: 5.5.3 - viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.10 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + events: 3.3.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) + lodash.isequal: 4.5.0 + uint8arrays: 3.1.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -17989,53 +19377,29 @@ snapshots: - '@netlify/blobs' - '@planetscale/database' - '@react-native-async-storage/async-storage' - - '@types/react' - '@upstash/redis' - '@vercel/kv' - bufferutil - encoding - - ioredis - - react - - react-dom - - react-native - - rollup - supports-color - - uWebSockets.js - - utf-8-validate - - zod - - '@wagmi/core@2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5)': - dependencies: - eventemitter3: 5.0.1 - mipd: 0.0.5(typescript@5.5.3) - typescript: 5.5.3 - viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) - zustand: 4.4.1(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - bufferutil - - immer - - react - utf-8-validate - - zod - '@walletconnect/core@2.13.0': + '@walletconnect/core@2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14 - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.10 + '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.13.0 - '@walletconnect/utils': 2.13.0 + '@walletconnect/types': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) events: 3.3.0 - isomorphic-unfetch: 3.1.0 lodash.isequal: 4.5.0 uint8arrays: 3.1.0 transitivePeerDependencies: @@ -18052,30 +19416,25 @@ snapshots: - '@upstash/redis' - '@vercel/kv' - bufferutil - - encoding - - ioredis - - uWebSockets.js + - supports-color - utf-8-validate - '@walletconnect/core@2.13.3': + '@walletconnect/environment@1.0.1': dependencies: - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 + tslib: 1.14.1 + + '@walletconnect/ethereum-provider@2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14 - '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.10 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.13.3 - '@walletconnect/utils': 2.13.3 + '@walletconnect/modal': 2.6.2(@types/react@18.3.5)(react@18.2.0) + '@walletconnect/sign-client': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/universal-provider': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/utils': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) events: 3.3.0 - isomorphic-unfetch: 3.1.0 - lodash.isequal: 4.5.0 - uint8arrays: 3.1.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18087,29 +19446,58 @@ snapshots: - '@netlify/blobs' - '@planetscale/database' - '@react-native-async-storage/async-storage' + - '@types/react' - '@upstash/redis' - '@vercel/kv' - bufferutil - encoding - - ioredis - - uWebSockets.js + - react + - supports-color - utf-8-validate - '@walletconnect/environment@1.0.1': + '@walletconnect/ethereum-provider@2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)': dependencies: - tslib: 1.14.1 + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/modal': 2.6.2(@types/react@18.3.5)(react@18.2.0) + '@walletconnect/sign-client': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/universal-provider': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/utils': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - react + - supports-color + - utf-8-validate - '@walletconnect/ethereum-provider@2.13.0(react@18.3.1)': + '@walletconnect/ethereum-provider@2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.6.2(react@18.3.1) - '@walletconnect/sign-client': 2.13.0 - '@walletconnect/types': 2.13.0 - '@walletconnect/universal-provider': 2.13.0 - '@walletconnect/utils': 2.13.0 + '@walletconnect/modal': 2.6.2(@types/react@18.3.5)(react@18.2.0) + '@walletconnect/sign-client': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/universal-provider': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18127,22 +19515,21 @@ snapshots: - '@vercel/kv' - bufferutil - encoding - - ioredis - react - - uWebSockets.js + - supports-color - utf-8-validate - '@walletconnect/ethereum-provider@2.13.3(react@18.3.1)': + '@walletconnect/ethereum-provider@2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.6.2(react@18.3.1) - '@walletconnect/sign-client': 2.13.3 - '@walletconnect/types': 2.13.3 - '@walletconnect/universal-provider': 2.13.3 - '@walletconnect/utils': 2.13.3 + '@walletconnect/modal': 2.6.2(@types/react@18.3.5)(react@18.2.0) + '@walletconnect/sign-client': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/universal-provider': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/utils': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18160,9 +19547,8 @@ snapshots: - '@vercel/kv' - bufferutil - encoding - - ioredis - react - - uWebSockets.js + - supports-color - utf-8-validate '@walletconnect/events@1.0.1': @@ -18182,15 +19568,30 @@ snapshots: '@walletconnect/time': 1.0.2 events: 3.3.0 - '@walletconnect/jsonrpc-http-connection@1.0.8': + '@walletconnect/jsonrpc-http-connection@1.0.7(encoding@0.1.13)': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + cross-fetch: 3.1.8(encoding@0.1.13) + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + + '@walletconnect/jsonrpc-http-connection@1.0.8(encoding@0.1.13)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 - cross-fetch: 3.1.8 + cross-fetch: 3.1.8(encoding@0.1.13) events: 3.3.0 transitivePeerDependencies: - encoding + '@walletconnect/jsonrpc-provider@1.0.13': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + tslib: 1.14.1 + '@walletconnect/jsonrpc-provider@1.0.14': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 @@ -18210,24 +19611,26 @@ snapshots: '@walletconnect/jsonrpc-utils@1.0.8': dependencies: '@walletconnect/environment': 1.0.1 - '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-types': 1.0.3 tslib: 1.14.1 - '@walletconnect/jsonrpc-ws-connection@1.0.14': + '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - ws: 7.5.10 + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - '@walletconnect/keyvaluestorage@1.1.1': + '@walletconnect/keyvaluestorage@1.1.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': dependencies: '@walletconnect/safe-json': 1.0.2 idb-keyval: 6.2.1 - unstorage: 1.10.2(idb-keyval@6.2.1) + unstorage: 1.10.1(idb-keyval@6.2.1) + optionalDependencies: + '@react-native-async-storage/async-storage': 1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18240,24 +19643,23 @@ snapshots: - '@planetscale/database' - '@upstash/redis' - '@vercel/kv' - - ioredis - - uWebSockets.js + - supports-color '@walletconnect/logger@2.1.2': dependencies: '@walletconnect/safe-json': 1.0.2 pino: 7.11.0 - '@walletconnect/modal-core@2.6.2(react@18.3.1)': + '@walletconnect/modal-core@2.6.2(@types/react@18.3.5)(react@18.2.0)': dependencies: - valtio: 1.11.2(react@18.3.1) + valtio: 1.11.2(@types/react@18.3.5)(react@18.2.0) transitivePeerDependencies: - '@types/react' - react - '@walletconnect/modal-ui@2.6.2(react@18.3.1)': + '@walletconnect/modal-ui@2.6.2(@types/react@18.3.5)(react@18.2.0)': dependencies: - '@walletconnect/modal-core': 2.6.2(react@18.3.1) + '@walletconnect/modal-core': 2.6.2(@types/react@18.3.5)(react@18.2.0) lit: 2.8.0 motion: 10.16.2 qrcode: 1.5.3 @@ -18265,10 +19667,10 @@ snapshots: - '@types/react' - react - '@walletconnect/modal@2.6.2(react@18.3.1)': + '@walletconnect/modal@2.6.2(@types/react@18.3.5)(react@18.2.0)': dependencies: - '@walletconnect/modal-core': 2.6.2(react@18.3.1) - '@walletconnect/modal-ui': 2.6.2(react@18.3.1) + '@walletconnect/modal-core': 2.6.2(@types/react@18.3.5)(react@18.2.0) + '@walletconnect/modal-ui': 2.6.2(@types/react@18.3.5)(react@18.2.0) transitivePeerDependencies: - '@types/react' - react @@ -18277,6 +19679,15 @@ snapshots: dependencies: '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/relay-api@1.0.11': + dependencies: + '@walletconnect/jsonrpc-types': 1.0.4 + + '@walletconnect/relay-api@1.0.9': + dependencies: + '@walletconnect/jsonrpc-types': 1.0.3 + tslib: 1.14.1 + '@walletconnect/relay-auth@1.0.4': dependencies: '@stablelib/ed25519': 1.0.3 @@ -18284,22 +19695,184 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 tslib: 1.14.1 - uint8arrays: 3.1.0 + uint8arrays: 3.1.1 '@walletconnect/safe-json@1.0.2': dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.13.0': + '@walletconnect/sign-client@2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/core': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@walletconnect/sign-client@2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/core': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@walletconnect/sign-client@2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/core': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@walletconnect/sign-client@2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/core': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - supports-color + - utf-8-validate + + '@walletconnect/time@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/types@2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - supports-color + + '@walletconnect/types@2.12.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - supports-color + + '@walletconnect/types@2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': dependencies: - '@walletconnect/core': 2.13.0 '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.13.0 - '@walletconnect/utils': 2.13.0 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18314,22 +19887,15 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - uWebSockets.js - - utf-8-validate + - supports-color - '@walletconnect/sign-client@2.13.3': + '@walletconnect/types@2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': dependencies: - '@walletconnect/core': 2.13.3 '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.13.3 - '@walletconnect/utils': 2.13.3 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18344,22 +19910,14 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - uWebSockets.js - - utf-8-validate - - '@walletconnect/time@1.0.2': - dependencies: - tslib: 1.14.1 + - supports-color - '@walletconnect/types@2.12.0': + '@walletconnect/types@2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': dependencies: '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -18375,16 +19933,18 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - ioredis - - uWebSockets.js + - supports-color - '@walletconnect/types@2.13.0': + '@walletconnect/universal-provider@2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18399,16 +19959,21 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - ioredis - - uWebSockets.js + - bufferutil + - encoding + - supports-color + - utf-8-validate - '@walletconnect/types@2.13.3': + '@walletconnect/universal-provider@2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18423,19 +19988,21 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - ioredis - - uWebSockets.js + - bufferutil + - encoding + - supports-color + - utf-8-validate - '@walletconnect/universal-provider@2.13.0': + '@walletconnect/universal-provider@2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.13.0 - '@walletconnect/types': 2.13.0 - '@walletconnect/utils': 2.13.0 + '@walletconnect/sign-client': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18452,20 +20019,19 @@ snapshots: - '@vercel/kv' - bufferutil - encoding - - ioredis - - uWebSockets.js + - supports-color - utf-8-validate - '@walletconnect/universal-provider@2.13.3': + '@walletconnect/universal-provider@2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.13.3 - '@walletconnect/types': 2.13.3 - '@walletconnect/utils': 2.13.3 + '@walletconnect/sign-client': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18482,11 +20048,41 @@ snapshots: - '@vercel/kv' - bufferutil - encoding - - ioredis - - uWebSockets.js + - supports-color - utf-8-validate - '@walletconnect/utils@2.12.0': + '@walletconnect/utils@2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': + dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.9 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - supports-color + + '@walletconnect/utils@2.12.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -18496,7 +20092,7 @@ snapshots: '@walletconnect/relay-api': 1.0.10 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.12.0 + '@walletconnect/types': 2.12.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -18515,10 +20111,40 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - ioredis - - uWebSockets.js + - supports-color - '@walletconnect/utils@2.13.0': + '@walletconnect/utils@2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': + dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.9 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - supports-color + + '@walletconnect/utils@2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -18528,7 +20154,7 @@ snapshots: '@walletconnect/relay-api': 1.0.10 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.13.0 + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -18547,23 +20173,24 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - ioredis - - uWebSockets.js + - supports-color - '@walletconnect/utils@2.13.3': + '@walletconnect/utils@2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 '@stablelib/random': 1.0.2 '@stablelib/sha256': 1.0.1 '@stablelib/x25519': 1.0.3 - '@walletconnect/relay-api': 1.0.10 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.13.3 + '@walletconnect/types': 2.16.1(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 + elliptic: 6.5.7 query-string: 7.1.3 uint8arrays: 3.1.0 transitivePeerDependencies: @@ -18579,8 +20206,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - ioredis - - uWebSockets.js + - supports-color '@walletconnect/window-getters@1.0.1': dependencies: @@ -18591,33 +20217,62 @@ snapshots: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 + '@web3modal/common@4.1.11': + dependencies: + bignumber.js: 9.1.2 + dayjs: 1.11.10 + '@web3modal/common@4.2.3': dependencies: bignumber.js: 9.1.2 dayjs: 1.11.10 - '@web3modal/common@5.1.0': + '@web3modal/common@5.1.8': dependencies: bignumber.js: 9.1.2 dayjs: 1.11.10 - '@web3modal/core@4.2.3(react@18.3.1)': + '@web3modal/core@4.1.11(@types/react@18.3.5)(react@18.2.0)': + dependencies: + '@web3modal/common': 4.1.11 + '@web3modal/wallet': 4.1.11 + valtio: 1.11.2(@types/react@18.3.5)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react + + '@web3modal/core@4.2.3(@types/react@18.3.5)(react@18.2.0)': dependencies: '@web3modal/common': 4.2.3 '@web3modal/wallet': 4.2.3 - valtio: 1.11.2(react@18.3.1) + valtio: 1.11.2(@types/react@18.3.5)(react@18.2.0) transitivePeerDependencies: - '@types/react' - react + '@web3modal/polyfills@4.1.11': + dependencies: + buffer: 6.0.3 + '@web3modal/polyfills@4.2.3': dependencies: buffer: 6.0.3 - '@web3modal/scaffold-react@4.2.3(react@18.3.1)': + '@web3modal/scaffold-react@4.1.11(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@web3modal/scaffold': 4.1.11(@types/react@18.3.5)(react@18.2.0) + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + + '@web3modal/scaffold-react@4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@web3modal/scaffold': 4.2.3(react@18.3.1) - react: 18.3.1 + '@web3modal/scaffold': 4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react@18.2.0) + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18632,21 +20287,36 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/kv' - - ioredis - - uWebSockets.js + - supports-color + + '@web3modal/scaffold-utils@4.1.11(@types/react@18.3.5)(react@18.2.0)': + dependencies: + '@web3modal/core': 4.1.11(@types/react@18.3.5)(react@18.2.0) + '@web3modal/polyfills': 4.1.11 + valtio: 1.11.2(@types/react@18.3.5)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react - '@web3modal/scaffold-utils@4.2.3(react@18.3.1)': + '@web3modal/scaffold-utils@4.2.3(@types/react@18.3.5)(react@18.2.0)': dependencies: - '@web3modal/core': 4.2.3(react@18.3.1) + '@web3modal/core': 4.2.3(@types/react@18.3.5)(react@18.2.0) '@web3modal/polyfills': 4.2.3 - valtio: 1.11.2(react@18.3.1) + valtio: 1.11.2(@types/react@18.3.5)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react + + '@web3modal/scaffold-vue@4.1.11(@types/react@18.3.5)(react@18.2.0)': + dependencies: + '@web3modal/scaffold': 4.1.11(@types/react@18.3.5)(react@18.2.0) transitivePeerDependencies: - '@types/react' - react - '@web3modal/scaffold-vue@4.2.3(react@18.3.1)': + '@web3modal/scaffold-vue@4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react@18.2.0)': dependencies: - '@web3modal/scaffold': 4.2.3(react@18.3.1) + '@web3modal/scaffold': 4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react@18.2.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18661,15 +20331,26 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/kv' - - ioredis - react - - uWebSockets.js + - supports-color + + '@web3modal/scaffold@4.1.11(@types/react@18.3.5)(react@18.2.0)': + dependencies: + '@web3modal/common': 4.1.11 + '@web3modal/core': 4.1.11(@types/react@18.3.5)(react@18.2.0) + '@web3modal/siwe': 4.1.11(@types/react@18.3.5)(react@18.2.0) + '@web3modal/ui': 4.1.11 + '@web3modal/wallet': 4.1.11 + lit: 3.1.0 + transitivePeerDependencies: + - '@types/react' + - react - '@web3modal/scaffold@4.2.3(react@18.3.1)': + '@web3modal/scaffold@4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react@18.2.0)': dependencies: '@web3modal/common': 4.2.3 - '@web3modal/core': 4.2.3(react@18.3.1) - '@web3modal/siwe': 4.2.3(react@18.3.1) + '@web3modal/core': 4.2.3(@types/react@18.3.5)(react@18.2.0) + '@web3modal/siwe': 4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react@18.2.0) '@web3modal/ui': 4.2.3 '@web3modal/wallet': 4.2.3 lit: 3.1.0 @@ -18687,17 +20368,26 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/kv' - - ioredis - react - - uWebSockets.js + - supports-color + + '@web3modal/siwe@4.1.11(@types/react@18.3.5)(react@18.2.0)': + dependencies: + '@web3modal/core': 4.1.11(@types/react@18.3.5)(react@18.2.0) + '@web3modal/scaffold-utils': 4.1.11(@types/react@18.3.5)(react@18.2.0) + lit: 3.1.0 + valtio: 1.11.2(@types/react@18.3.5)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react - '@web3modal/siwe@4.2.3(react@18.3.1)': + '@web3modal/siwe@4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react@18.2.0)': dependencies: - '@walletconnect/utils': 2.12.0 - '@web3modal/core': 4.2.3(react@18.3.1) - '@web3modal/scaffold-utils': 4.2.3(react@18.3.1) + '@walletconnect/utils': 2.12.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))) + '@web3modal/core': 4.2.3(@types/react@18.3.5)(react@18.2.0) + '@web3modal/scaffold-utils': 4.2.3(@types/react@18.3.5)(react@18.2.0) lit: 3.1.0 - valtio: 1.11.2(react@18.3.1) + valtio: 1.11.2(@types/react@18.3.5)(react@18.2.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18712,61 +20402,68 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/kv' - - ioredis - react - - uWebSockets.js + - supports-color - '@web3modal/ui@4.2.3': + '@web3modal/ui@4.1.11': dependencies: lit: 3.1.0 qrcode: 1.5.3 - '@web3modal/wagmi@4.2.3(@wagmi/connectors@4.3.10)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5)': + '@web3modal/ui@4.2.3': dependencies: - '@wagmi/connectors': 4.3.10(@wagmi/core@2.11.6)(react-i18next@13.5.0)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) - '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) - '@walletconnect/ethereum-provider': 2.13.0(react@18.3.1) - '@web3modal/polyfills': 4.2.3 - '@web3modal/scaffold': 4.2.3(react@18.3.1) - '@web3modal/scaffold-react': 4.2.3(react@18.3.1) - '@web3modal/scaffold-utils': 4.2.3(react@18.3.1) - '@web3modal/scaffold-vue': 4.2.3(react@18.3.1) - '@web3modal/siwe': 4.2.3(react@18.3.1) - react: 18.3.1 - viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) + lit: 3.1.0 + qrcode: 1.5.3 + + '@web3modal/wagmi@4.1.11(@types/react@18.3.5)(@wagmi/connectors@4.3.10(yrxxgsr3s6m7a4itnzsb2c7inm))(@wagmi/core@2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))': + dependencies: + '@wagmi/connectors': 4.3.10(yrxxgsr3s6m7a4itnzsb2c7inm) + '@wagmi/core': 2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + '@web3modal/polyfills': 4.1.11 + '@web3modal/scaffold': 4.1.11(@types/react@18.3.5)(react@18.2.0) + '@web3modal/scaffold-react': 4.1.11(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@web3modal/scaffold-utils': 4.1.11(@types/react@18.3.5)(react@18.2.0) + '@web3modal/scaffold-vue': 4.1.11(@types/react@18.3.5)(react@18.2.0) + '@web3modal/siwe': 4.1.11(@types/react@18.3.5)(react@18.2.0) + viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + + '@web3modal/wagmi@4.1.11(xgqwdfny5esqdjztzawvofqbai)': + dependencies: + '@wagmi/connectors': 4.1.18(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@wagmi/core': 2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@web3modal/polyfills': 4.1.11 + '@web3modal/scaffold': 4.1.11(@types/react@18.3.5)(react@18.2.0) + '@web3modal/scaffold-react': 4.1.11(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@web3modal/scaffold-utils': 4.1.11(@types/react@18.3.5)(react@18.2.0) + '@web3modal/scaffold-vue': 4.1.11(@types/react@18.3.5)(react@18.2.0) + '@web3modal/siwe': 4.1.11(@types/react@18.3.5)(react@18.2.0) + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - '@types/react' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - ioredis - - uWebSockets.js - - utf-8-validate - '@web3modal/wagmi@4.2.3(@wagmi/connectors@5.0.21)(@wagmi/core@2.11.6)(react@18.3.1)(viem@2.16.5)': + '@web3modal/wagmi@4.2.3(hoyagxhmve75vyxjsj4tjya6zm)': dependencies: - '@wagmi/connectors': 5.0.21(@wagmi/core@2.11.6)(react-native@0.74.3)(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) - '@wagmi/core': 2.11.6(react@18.3.1)(typescript@5.5.3)(viem@2.16.5) - '@walletconnect/ethereum-provider': 2.13.0(react@18.3.1) + '@wagmi/connectors': 5.1.10(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.13.5(@types/react@18.3.5)(react@18.2.0)(typescript@5.4.5)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.5)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@wagmi/core': 2.13.5(@types/react@18.3.5)(react@18.2.0)(typescript@5.4.5)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8)) + '@walletconnect/ethereum-provider': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) '@web3modal/polyfills': 4.2.3 - '@web3modal/scaffold': 4.2.3(react@18.3.1) - '@web3modal/scaffold-react': 4.2.3(react@18.3.1) - '@web3modal/scaffold-utils': 4.2.3(react@18.3.1) - '@web3modal/scaffold-vue': 4.2.3(react@18.3.1) - '@web3modal/siwe': 4.2.3(react@18.3.1) - react: 18.3.1 - viem: 2.16.5(typescript@5.5.3)(zod@3.23.8) + '@web3modal/scaffold': 4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react@18.2.0) + '@web3modal/scaffold-react': 4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@web3modal/scaffold-utils': 4.2.3(@types/react@18.3.5)(react@18.2.0) + '@web3modal/scaffold-vue': 4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react@18.2.0) + '@web3modal/siwe': 4.2.3(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(react@18.2.0) + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18783,10 +20480,14 @@ snapshots: - '@vercel/kv' - bufferutil - encoding - - ioredis - - uWebSockets.js + - supports-color - utf-8-validate + '@web3modal/wallet@4.1.11': + dependencies: + '@web3modal/polyfills': 4.1.11 + zod: 3.22.4 + '@web3modal/wallet@4.2.3': dependencies: '@web3modal/polyfills': 4.2.3 @@ -18794,72 +20495,97 @@ snapshots: '@webgpu/types@0.1.21': {} - '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.20.2)': + '@zerodevx/svelte-toast@0.9.5(svelte@4.2.13)': dependencies: - esbuild: 0.20.2 - tslib: 2.6.3 + svelte: 4.2.13 - '@yarnpkg/fslib@2.10.3': + '@zerodevx/svelte-toast@0.9.5(svelte@4.2.17)': dependencies: - '@yarnpkg/libzip': 2.3.0 - tslib: 1.14.1 + svelte: 4.2.17 - '@yarnpkg/libzip@2.3.0': - dependencies: - '@types/emscripten': 1.39.13 - tslib: 1.14.1 + abitype@0.9.10(typescript@5.4.3)(zod@3.22.4): + optionalDependencies: + typescript: 5.4.3 + zod: 3.22.4 - '@zerodevx/svelte-toast@0.9.5(svelte@4.2.18)': - dependencies: - svelte: 4.2.18 + abitype@0.9.8(typescript@5.4.3)(zod@3.22.4): + optionalDependencies: + typescript: 5.4.3 + zod: 3.22.4 - abitype@0.9.8(typescript@5.5.3): - dependencies: - typescript: 5.5.3 + abitype@0.9.8(typescript@5.4.3)(zod@3.23.8): + optionalDependencies: + typescript: 5.4.3 + zod: 3.23.8 - abitype@1.0.5(typescript@5.5.3)(zod@3.23.8): - dependencies: - typescript: 5.5.3 + abitype@1.0.0(typescript@5.4.3)(zod@3.22.4): + optionalDependencies: + typescript: 5.4.3 + zod: 3.22.4 + + abitype@1.0.0(typescript@5.4.3)(zod@3.23.8): + optionalDependencies: + typescript: 5.4.3 + zod: 3.23.8 + + abitype@1.0.2(typescript@5.4.3)(zod@3.22.4): + optionalDependencies: + typescript: 5.4.3 + zod: 3.22.4 + + abitype@1.0.5(typescript@5.4.3)(zod@3.23.8): + optionalDependencies: + typescript: 5.4.3 + zod: 3.23.8 + + abitype@1.0.5(typescript@5.4.5)(zod@3.23.8): + optionalDependencies: + typescript: 5.4.5 + zod: 3.23.8 + + abitype@1.0.6(typescript@5.4.5)(zod@3.23.8): + optionalDependencies: + typescript: 5.4.5 zod: 3.23.8 abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 + abortcontroller-polyfill@1.7.5: {} + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.12.0): + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: - acorn: 8.12.0 + acorn: 8.11.3 acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 - acorn-walk@8.3.3: - dependencies: - acorn: 8.12.0 + acorn-walk@8.3.2: {} - acorn@8.12.0: {} + acorn@8.11.3: {} acorn@8.12.1: {} - address@1.2.2: {} - aes-js@3.0.0: {} - agent-base@7.1.1: + aes-js@4.0.0-beta.5: {} + + agent-base@7.1.0: dependencies: - debug: 4.3.5 + debug: 4.3.4 transitivePeerDependencies: - supports-color - ajv-draft-04@1.0.0(ajv@8.16.0): - dependencies: - ajv: 8.16.0 + ajv-draft-04@1.0.0(ajv@8.12.0): + optionalDependencies: + ajv: 8.12.0 ajv@6.12.6: dependencies: @@ -18868,13 +20594,23 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.16.0: + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 + amazon-cognito-identity-js@6.3.12(encoding@0.1.13): + dependencies: + '@aws-crypto/sha256-js': 1.2.2 + buffer: 4.9.2 + fast-base64-decode: 1.0.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) + js-cookie: 2.2.1 + transitivePeerDependencies: + - encoding + anser@1.4.10: {} ansi-align@3.0.1: @@ -18907,7 +20643,7 @@ snapshots: ansi-styles@6.2.1: {} - antlr4@4.13.1-patch-1: {} + antlr4@4.13.1: {} any-promise@1.3.0: {} @@ -18918,8 +20654,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - app-root-dir@1.0.2: {} - appdirsjs@1.2.7: {} arg@4.1.3: {} @@ -18932,27 +20666,22 @@ snapshots: argparse@2.0.1: {} - aria-hidden@1.2.4: - dependencies: - tslib: 2.6.3 - aria-query@5.3.0: dependencies: dequal: 2.0.3 - array-buffer-byte-length@1.0.1: + array-buffer-byte-length@1.0.0: dependencies: call-bind: 1.0.7 - is-array-buffer: 3.0.4 + is-array-buffer: 3.0.2 array-flatten@1.1.1: {} - array-includes@3.1.8: + array-includes@3.1.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 + es-abstract: 1.22.3 get-intrinsic: 1.2.4 is-string: 1.0.7 @@ -18960,61 +20689,59 @@ snapshots: array-union@2.1.0: {} - array.prototype.findlastindex@1.2.5: + array.prototype.findlastindex@1.2.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.4 array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 - arraybuffer.prototype.slice@1.0.3: + arraybuffer.prototype.slice@1.0.2: dependencies: - array-buffer-byte-length: 1.0.1 + array-buffer-byte-length: 1.0.0 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 + es-abstract: 1.22.3 get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 asap@2.0.6: {} - assert@2.1.0: + asn1@0.2.6: dependencies: - call-bind: 1.0.7 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.5 - util: 0.12.5 + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} assertion-error@1.1.0: {} + assertion-error@2.0.1: {} + ast-parents@0.0.1: {} ast-types@0.15.2: dependencies: - tslib: 2.6.3 + tslib: 2.6.2 ast-types@0.16.1: dependencies: - tslib: 2.6.3 + tslib: 2.6.2 astral-regex@1.0.0: {} @@ -19022,30 +20749,29 @@ snapshots: astring@1.8.6: {} - astro-expressive-code@0.35.6(astro@4.13.3): + astro-expressive-code@0.35.6(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)): dependencies: - astro: 4.13.3(typescript@5.5.3) + astro: 4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5) rehype-expressive-code: 0.35.6 - astro-og-canvas@0.5.1(astro@4.13.3): + astro-og-canvas@0.5.0(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)): dependencies: - astro: 4.13.3(typescript@5.5.3) + astro: 4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5) canvaskit-wasm: 0.39.1 deterministic-object-hash: 2.0.2 entities: 4.5.0 - astro@4.13.3(typescript@5.5.3): + astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5): dependencies: - '@astrojs/compiler': 2.10.2 + '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.2.0 '@astrojs/telemetry': 3.1.0 '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 + '@oslojs/encoding': 0.4.1 + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 acorn: 8.12.1 @@ -19057,7 +20783,7 @@ snapshots: common-ancestor-path: 1.0.1 cookie: 0.6.0 cssesc: 3.0.0 - debug: 4.3.6 + debug: 4.3.7 deterministic-object-hash: 2.0.2 devalue: 5.0.0 diff: 5.2.0 @@ -19066,8 +20792,8 @@ snapshots: es-module-lexer: 1.5.4 esbuild: 0.21.5 estree-walker: 3.0.3 - execa: 8.0.1 fast-glob: 3.3.2 + fastq: 1.17.1 flattie: 1.1.1 github-slugger: 2.0.0 gray-matter: 4.0.3 @@ -19076,8 +20802,11 @@ snapshots: js-yaml: 4.1.0 kleur: 4.1.5 magic-string: 0.30.11 + magicast: 0.3.5 + micromatch: 4.0.8 mrmime: 2.0.0 - ora: 8.0.1 + neotraverse: 0.6.18 + ora: 8.1.0 p-limit: 6.1.0 p-queue: 8.0.1 path-to-regexp: 6.2.2 @@ -19085,24 +20814,28 @@ snapshots: prompts: 2.4.2 rehype: 13.0.1 semver: 7.6.3 - shiki: 1.12.1 + shiki: 1.17.6 string-width: 7.2.0 strip-ansi: 7.1.0 - tsconfck: 3.1.1(typescript@5.5.3) + tinyexec: 0.3.0 + tsconfck: 3.1.3(typescript@5.4.5) unist-util-visit: 5.0.0 - vfile: 6.0.2 - vite: 5.4.0 - vitefu: 0.2.5(vite@5.4.0) + vfile: 6.0.3 + vite: 5.4.5(@types/node@20.12.7)(terser@5.27.2) + vitefu: 1.0.2(vite@5.4.5(@types/node@20.12.7)(terser@5.27.2)) which-pm: 3.0.0 + xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 zod: 3.23.8 - zod-to-json-schema: 3.23.2(zod@3.23.8) + zod-to-json-schema: 3.23.3(zod@3.23.8) + zod-to-ts: 1.2.0(typescript@5.4.5)(zod@3.23.8) optionalDependencies: - sharp: 0.33.4 + sharp: 0.33.3 transitivePeerDependencies: - '@types/node' - less - lightningcss + - rollup - sass - sass-embedded - stylus @@ -19115,41 +20848,73 @@ snapshots: async-mutex@0.2.6: dependencies: - tslib: 2.6.3 + tslib: 2.6.2 + + async-retry@1.3.3: + dependencies: + retry: 0.13.1 + + async@2.6.4: + dependencies: + lodash: 4.17.21 - async@3.2.5: {} + async@3.2.3: {} asynckit@0.4.0: {} atomic-sleep@1.0.0: {} - autoprefixer@10.4.19(postcss@8.4.39): + autoprefixer@10.4.18(postcss@8.4.38): dependencies: - browserslist: 4.23.1 - caniuse-lite: 1.0.30001639 + browserslist: 4.23.0 + caniuse-lite: 1.0.30001593 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.39 + picocolors: 1.0.0 + postcss: 8.4.38 postcss-value-parser: 4.2.0 - autoprefixer@10.4.19(postcss@8.4.41): + autoprefixer@10.4.19(postcss@8.4.38): dependencies: - browserslist: 4.23.1 - caniuse-lite: 1.0.30001639 + browserslist: 4.23.0 + caniuse-lite: 1.0.30001614 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.41 + picocolors: 1.0.0 + postcss: 8.4.38 postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.7: + autoprefixer@10.4.19(postcss@8.4.47): dependencies: - possible-typed-array-names: 1.0.0 + browserslist: 4.23.0 + caniuse-lite: 1.0.30001614 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.5: {} + + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + + axios-proxy-builder@0.1.2: + dependencies: + tunnel: 0.0.6 - axios@1.7.2(debug@4.3.5): + axios@1.6.7(debug@4.3.4): dependencies: - follow-redirects: 1.15.6(debug@4.3.5) + follow-redirects: 1.15.5(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -19161,65 +20926,43 @@ snapshots: axobject-query@4.1.0: {} - babel-core@7.0.0-bridge.0(@babel/core@7.24.7): - dependencies: - '@babel/core': 7.24.7 - babel-core@7.0.0-bridge.0(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.7): + babel-plugin-macros@3.1.0: dependencies: - '@babel/compat-data': 7.24.7 - '@babel/core': 7.24.7 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.23.9 + cosmiconfig: 7.1.0 + resolve: 1.22.8 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.25.2): dependencies: - '@babel/compat-data': 7.24.7 + '@babel/compat-data': 7.25.4 '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.7): - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) - core-js-compat: 3.37.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): + babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.1 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.25.2) + core-js-compat: 3.36.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.7): - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7) - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.25.2) transitivePeerDependencies: - supports-color babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.2): dependencies: - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.25.2) transitivePeerDependencies: - '@babel/core' @@ -19245,11 +20988,11 @@ snapshots: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 - bech32@1.1.4: {} - - better-opn@3.0.2: + bcrypt-pbkdf@1.0.2: dependencies: - open: 8.4.2 + tweetnacl: 0.14.5 + + bech32@1.1.4: {} better-path-resolve@1.0.0: dependencies: @@ -19259,7 +21002,7 @@ snapshots: bignumber.js@9.1.2: {} - binary-extensions@2.3.0: {} + binary-extensions@2.2.0: {} bl@4.1.0: dependencies: @@ -19275,9 +21018,11 @@ snapshots: blakejs@1.2.1: {} - blob-to-it@2.0.7: + blob-to-it@2.0.6: dependencies: - browser-readablestream-to-it: 2.0.7 + browser-readablestream-to-it: 2.0.6 + + bluebird@3.7.2: {} bn.js@4.11.6: {} @@ -19285,7 +21030,7 @@ snapshots: bn.js@5.2.1: {} - body-parser@1.20.2: + body-parser@1.20.3: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -19295,7 +21040,7 @@ snapshots: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -19330,6 +21075,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + braces@3.0.2: + dependencies: + fill-range: 7.0.1 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -19340,7 +21089,7 @@ snapshots: browser-readablestream-to-it@1.0.3: {} - browser-readablestream-to-it@2.0.7: {} + browser-readablestream-to-it@2.0.6: {} browserify-aes@1.2.0: dependencies: @@ -19351,16 +21100,19 @@ snapshots: inherits: 2.0.4 safe-buffer: 5.2.1 - browserify-zlib@0.1.4: + browserslist@4.23.0: dependencies: - pako: 0.2.9 + caniuse-lite: 1.0.30001593 + electron-to-chromium: 1.4.676 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) - browserslist@4.23.1: + browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001639 - electron-to-chromium: 1.4.816 - node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.1) + caniuse-lite: 1.0.30001660 + electron-to-chromium: 1.5.23 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) bs58@4.0.1: dependencies: @@ -19380,14 +21132,22 @@ snapshots: dependencies: node-int64: 0.4.0 - buffer-crc32@1.0.0: {} + buffer-crc32@0.2.13: {} buffer-from@1.1.2: {} buffer-reverse@1.0.1: {} + buffer-to-arraybuffer@0.0.5: {} + buffer-xor@1.0.3: {} + buffer@4.9.2: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + buffer@5.6.0: dependencies: base64-js: 1.5.1 @@ -19405,15 +21165,19 @@ snapshots: bufferutil@4.0.8: dependencies: - node-gyp-build: 4.8.1 + node-gyp-build: 4.8.0 builtin-modules@3.3.0: {} - builtins@5.1.0: + builtins@5.0.1: dependencies: semver: 7.6.3 - bundle-require@4.2.1(esbuild@0.19.12): + bundle-name@3.0.0: + dependencies: + run-applescript: 5.0.0 + + bundle-require@4.0.2(esbuild@0.19.12): dependencies: esbuild: 0.19.12 load-tsconfig: 0.2.5 @@ -19424,6 +21188,10 @@ snapshots: cac@6.7.14: {} + cacheable-lookup@5.0.4: {} + + cacheable-lookup@6.1.0: {} + cacheable-lookup@7.0.0: {} cacheable-request@10.2.14: @@ -19433,16 +21201,26 @@ snapshots: http-cache-semantics: 4.1.1 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.1 + normalize-url: 8.0.0 responselike: 3.0.0 + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 - set-function-length: 1.2.2 + set-function-length: 1.2.1 call-me-maybe@1.0.2: {} @@ -19458,6 +21236,11 @@ snapshots: callsites@3.1.0: {} + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.2 + camelcase-css@2.0.1: {} camelcase@5.3.1: {} @@ -19466,13 +21249,25 @@ snapshots: camelcase@7.0.1: {} - caniuse-lite@1.0.30001639: {} + caniuse-lite@1.0.30001593: {} + + caniuse-lite@1.0.30001614: {} + + caniuse-lite@1.0.30001660: {} canvaskit-wasm@0.39.1: dependencies: '@webgpu/types': 0.1.21 - cborg@4.2.2: {} + capital-case@1.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case-first: 2.0.2 + + caseless@0.12.0: {} + + cborg@4.2.0: {} ccount@2.0.1: {} @@ -19480,12 +21275,20 @@ snapshots: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.4 + deep-eql: 4.1.3 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 + chai@5.1.1: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.1 + pathval: 2.0.0 + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -19504,6 +21307,21 @@ snapshots: chalk@5.3.0: {} + change-case@4.1.2: + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.6.2 + change-case@5.4.4: {} character-entities-html4@2.1.0: {} @@ -19520,10 +21338,12 @@ snapshots: dependencies: get-func-name: 2.0.2 + check-error@2.1.1: {} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.3 + braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -19532,18 +21352,33 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@4.0.0: + dependencies: + readdirp: 4.0.1 + chownr@1.1.4: {} - chownr@2.0.0: {} + chromatic@11.10.2: {} - chromatic@11.5.4: {} + chromatic@11.3.0: {} chrome-launcher@0.15.2: dependencies: - '@types/node': 20.14.9 + '@types/node': 20.12.7 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + transitivePeerDependencies: + - supports-color + + chromium-edge-launcher@1.0.0: + dependencies: + '@types/node': 20.12.7 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 transitivePeerDependencies: - supports-color @@ -19553,6 +21388,14 @@ snapshots: ci-info@4.0.0: {} + cids@0.7.5: + dependencies: + buffer: 5.7.1 + class-is: 1.1.0 + multibase: 0.6.1 + multicodec: 1.0.4 + multihashes: 0.4.21 + cipher-base@1.0.4: dependencies: inherits: 2.0.4 @@ -19562,15 +21405,17 @@ snapshots: dependencies: consola: 3.2.3 + class-is@1.1.0: {} + cli-boxes@3.0.0: {} - cli-color@2.0.4: + cli-color@2.0.3: dependencies: - d: 1.0.2 - es5-ext: 0.10.64 + d: 1.0.1 + es5-ext: 0.10.62 es6-iterator: 2.0.3 - memoizee: 0.4.17 - timers-ext: 0.1.8 + memoizee: 0.4.15 + timers-ext: 0.1.7 cli-cursor@3.1.0: dependencies: @@ -19580,13 +21425,11 @@ snapshots: dependencies: restore-cursor: 4.0.0 - cli-spinners@2.9.2: {} - - cli-table3@0.6.5: + cli-cursor@5.0.0: dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} clipboardy@4.0.0: dependencies: @@ -19612,12 +21455,18 @@ snapshots: kind-of: 6.0.3 shallow-clone: 3.0.1 + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + clone@1.0.4: {} clsx@1.2.1: {} clsx@2.1.1: {} + cluster-key-slot@1.1.2: {} + code-block-writer@12.0.0: {} code-error-fragment@0.0.230: {} @@ -19626,7 +21475,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 '@types/estree': 1.0.5 - acorn: 8.12.0 + acorn: 8.11.3 estree-walker: 3.0.3 periscopic: 3.1.0 @@ -19656,6 +21505,8 @@ snapshots: colorette@1.4.0: {} + colors@1.0.3: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -19670,8 +21521,6 @@ snapshots: commander@4.1.1: {} - commander@6.2.1: {} - commander@8.3.0: {} commander@9.5.0: {} @@ -19698,8 +21547,6 @@ snapshots: concat-map@0.0.1: {} - confbox@0.1.7: {} - config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -19716,28 +21563,49 @@ snapshots: consola@3.2.3: {} + constant-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case: 2.0.2 + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 + content-hash@2.5.2: + dependencies: + cids: 0.7.5 + multicodec: 0.5.7 + multihashes: 0.4.21 + content-type@1.0.5: {} - convert-csv-to-json@2.48.0: {} + convert-csv-to-json@2.46.0: {} + + convert-source-map@1.9.0: {} convert-source-map@2.0.0: {} - cookie-es@1.1.0: {} + cookie-es@1.0.0: {} cookie-signature@1.0.6: {} cookie@0.6.0: {} - core-js-compat@3.37.1: + core-js-compat@3.36.0: dependencies: - browserslist: 4.23.1 + browserslist: 4.23.3 + + core-util-is@1.0.2: {} core-util-is@1.0.3: {} + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + cosmiconfig@5.2.1: dependencies: import-fresh: 2.0.0 @@ -19745,13 +21613,31 @@ snapshots: js-yaml: 3.14.1 parse-json: 4.0.0 - cosmiconfig@8.3.6(typescript@5.5.3): + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@8.3.6(typescript@5.4.3): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.4.3 + + cosmiconfig@8.3.6(typescript@5.4.5): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.5.3 + optionalDependencies: + typescript: 5.4.5 crc-32@1.2.2: {} @@ -19774,15 +21660,15 @@ snapshots: create-require@1.1.1: {} - cross-fetch@3.1.8: + cross-fetch@3.1.8(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding - cross-fetch@4.0.0: + cross-fetch@4.0.0(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -19798,16 +21684,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crossws@0.2.4: {} + crossws@0.1.1: {} crypto-js@3.3.0: {} crypto-js@4.2.0: {} - crypto-random-string@4.0.0: - dependencies: - type-fest: 1.4.0 - css-selector-parser@3.0.5: {} css-selector-tokenizer@0.8.0: @@ -19832,65 +21714,60 @@ snapshots: culori@3.3.0: {} - d@1.0.2: + cycle@1.0.3: {} + + d@1.0.1: dependencies: es5-ext: 0.10.64 - type: 2.7.3 + type: 1.2.0 dag-jose@4.0.0: dependencies: - '@ipld/dag-cbor': 9.2.1 + '@ipld/dag-cbor': 9.2.0 multiformats: 11.0.2 - daisyui@4.12.10(postcss@8.4.39): + daisyui@4.10.1(postcss@8.4.38): dependencies: css-selector-tokenizer: 0.8.0 culori: 3.3.0 - picocolors: 1.0.1 - postcss-js: 4.0.1(postcss@8.4.39) + picocolors: 1.0.0 + postcss-js: 4.0.1(postcss@8.4.38) transitivePeerDependencies: - postcss - daisyui@4.12.10(postcss@8.4.41): + daisyui@4.11.1(postcss@8.4.38): dependencies: css-selector-tokenizer: 0.8.0 culori: 3.3.0 - picocolors: 1.0.1 - postcss-js: 4.0.1(postcss@8.4.41) + picocolors: 1.0.0 + postcss-js: 4.0.1(postcss@8.4.38) transitivePeerDependencies: - postcss - data-urls@5.0.0: - dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 - - data-view-buffer@1.0.1: + daisyui@4.11.1(postcss@8.4.47): dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 + css-selector-tokenizer: 0.8.0 + culori: 3.3.0 + picocolors: 1.0.0 + postcss-js: 4.0.1(postcss@8.4.47) + transitivePeerDependencies: + - postcss - data-view-byte-length@1.0.1: + dashdash@1.14.1: dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 + assert-plus: 1.0.0 - data-view-byte-offset@1.0.0: + data-urls@5.0.0: dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 date-fns@2.30.0: dependencies: - '@babel/runtime': 7.24.7 + '@babel/runtime': 7.23.9 dayjs@1.11.10: {} - dayjs@1.11.11: {} - debug@2.6.9: dependencies: ms: 2.0.0 @@ -19899,13 +21776,13 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.5: + debug@4.3.4: dependencies: ms: 2.1.2 - debug@4.3.6: + debug@4.3.7: dependencies: - ms: 2.1.2 + ms: 2.1.3 decamelize@1.2.0: {} @@ -19917,6 +21794,10 @@ snapshots: decode-uri-component@0.2.2: {} + decompress-response@3.3.0: + dependencies: + mimic-response: 1.0.1 + decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 @@ -19925,10 +21806,12 @@ snapshots: dedent@0.7.0: {} - deep-eql@4.1.4: + deep-eql@4.1.3: dependencies: type-detect: 4.0.8 + deep-eql@5.0.2: {} + deep-extend@0.6.0: {} deep-is@0.1.4: {} @@ -19940,6 +21823,13 @@ snapshots: bplist-parser: 0.2.0 untildify: 4.0.0 + default-browser@4.0.0: + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + defaults@1.0.4: dependencies: clone: 1.0.4 @@ -19954,6 +21844,8 @@ snapshots: define-lazy-prop@2.0.0: {} + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -19966,8 +21858,16 @@ snapshots: denodeify@1.2.1: {} + denque@2.1.0: {} + depd@2.0.0: {} + deprecated-react-native-prop-types@5.0.0: + dependencies: + '@react-native/normalize-colors': 0.73.2 + invariant: 2.2.4 + prop-types: 15.8.1 + dequal@2.0.3: {} destr@2.0.3: {} @@ -19982,19 +21882,6 @@ snapshots: detect-libc@2.0.3: {} - detect-node-es@1.1.0: {} - - detect-package-manager@2.0.1: - dependencies: - execa: 5.1.1 - - detect-port@1.6.1: - dependencies: - address: 1.2.2 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - deterministic-object-hash@2.0.2: dependencies: base-64: 1.0.0 @@ -20025,10 +21912,10 @@ snapshots: dns-over-http-resolver@2.1.3: dependencies: - debug: 4.3.5 - native-fetch: 4.0.2(undici@5.28.4) + debug: 4.3.4 + native-fetch: 4.0.2(undici@5.28.3) receptacle: 1.3.2 - undici: 5.28.4 + undici: 5.28.3 transitivePeerDependencies: - supports-color @@ -20054,6 +21941,8 @@ snapshots: domhandler: 4.3.1 entities: 2.2.0 + dom-walk@0.1.2: {} + domelementtype@2.3.0: {} domhandler@3.3.0: @@ -20070,6 +21959,11 @@ snapshots: domelementtype: 2.3.0 domhandler: 4.3.1 + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dotenv-expand@10.0.0: {} dotenv@16.4.5: {} @@ -20078,23 +21972,21 @@ snapshots: dset@3.1.3: {} - duplexify@3.7.1: - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 - - duplexify@4.1.3: + duplexify@4.1.2: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 - stream-shift: 1.0.3 + stream-shift: 1.0.1 eastasianwidth@0.2.0: {} - eciesjs@0.3.19: + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + eciesjs@0.3.18: dependencies: '@types/secp256k1': 4.0.6 futoin-hkdf: 1.5.3 @@ -20102,15 +21994,13 @@ snapshots: ee-first@1.1.1: {} - ejs@3.1.10: - dependencies: - jake: 10.9.1 - electron-fetch@1.9.1: dependencies: encoding: 0.1.13 - electron-to-chromium@1.4.816: {} + electron-to-chromium@1.4.676: {} + + electron-to-chromium@1.5.23: {} elliptic@6.5.4: dependencies: @@ -20122,7 +22012,7 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - elliptic@6.5.5: + elliptic@6.5.7: dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -20147,6 +22037,8 @@ snapshots: encodeurl@1.0.2: {} + encodeurl@2.0.0: {} + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 @@ -20155,12 +22047,24 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.5.4: + engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + engine.io-parser: 5.2.2 + ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + xmlhttprequest-ssl: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3): dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.5 + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 engine.io-parser: 5.2.2 - ws: 8.17.1 + ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) xmlhttprequest-ssl: 2.0.0 transitivePeerDependencies: - bufferutil @@ -20178,7 +22082,7 @@ snapshots: entities@4.5.0: {} - envinfo@7.13.0: {} + envinfo@7.11.1: {} err-code@3.0.1: {} @@ -20195,54 +22099,47 @@ snapshots: accepts: 1.3.8 escape-html: 1.0.3 - es-abstract@1.23.3: + es-abstract@1.22.3: dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 + es-set-tostringtag: 2.0.2 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.4 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 + hasown: 2.0.1 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 + is-negative-zero: 2.0.2 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 + is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.13 + is-typed-array: 1.1.12 is-weakref: 1.0.2 - object-inspect: 1.13.2 + object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 + which-typed-array: 1.1.13 es-define-property@1.0.0: dependencies: @@ -20250,21 +22147,19 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.5.4: {} + es-module-lexer@1.5.3: {} - es-object-atoms@1.0.0: - dependencies: - es-errors: 1.3.0 + es-module-lexer@1.5.4: {} - es-set-tostringtag@2.0.3: + es-set-tostringtag@2.0.2: dependencies: get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 + has-tostringtag: 1.0.0 + hasown: 2.0.1 es-shim-unscopables@1.0.2: dependencies: - hasown: 2.0.2 + hasown: 2.0.1 es-to-primitive@1.2.1: dependencies: @@ -20272,39 +22167,45 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 + es5-ext@0.10.62: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + es5-ext@0.10.64: dependencies: es6-iterator: 2.0.3 - es6-symbol: 3.1.4 + es6-symbol: 3.1.3 esniff: 2.0.1 next-tick: 1.1.0 es6-iterator@2.0.3: dependencies: - d: 1.0.2 + d: 1.0.1 es5-ext: 0.10.64 - es6-symbol: 3.1.4 + es6-symbol: 3.1.3 es6-promise@3.3.1: {} - es6-symbol@3.1.4: + es6-promise@4.2.8: {} + + es6-symbol@3.1.3: dependencies: - d: 1.0.2 + d: 1.0.1 ext: 1.7.0 es6-weak-map@2.0.3: dependencies: - d: 1.0.2 - es5-ext: 0.10.64 + d: 1.0.1 + es5-ext: 0.10.62 es6-iterator: 2.0.3 - es6-symbol: 3.1.4 + es6-symbol: 3.1.3 - esbuild-plugin-alias@0.2.1: {} - - esbuild-register@3.5.0(esbuild@0.20.2): + esbuild-register@3.6.0(esbuild@0.21.3): dependencies: - debug: 4.3.5 - esbuild: 0.20.2 + debug: 4.3.4 + esbuild: 0.21.3 transitivePeerDependencies: - supports-color @@ -20385,6 +22286,32 @@ snapshots: '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 + esbuild@0.21.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.3 + '@esbuild/android-arm': 0.21.3 + '@esbuild/android-arm64': 0.21.3 + '@esbuild/android-x64': 0.21.3 + '@esbuild/darwin-arm64': 0.21.3 + '@esbuild/darwin-x64': 0.21.3 + '@esbuild/freebsd-arm64': 0.21.3 + '@esbuild/freebsd-x64': 0.21.3 + '@esbuild/linux-arm': 0.21.3 + '@esbuild/linux-arm64': 0.21.3 + '@esbuild/linux-ia32': 0.21.3 + '@esbuild/linux-loong64': 0.21.3 + '@esbuild/linux-mips64el': 0.21.3 + '@esbuild/linux-ppc64': 0.21.3 + '@esbuild/linux-riscv64': 0.21.3 + '@esbuild/linux-s390x': 0.21.3 + '@esbuild/linux-x64': 0.21.3 + '@esbuild/netbsd-x64': 0.21.3 + '@esbuild/openbsd-x64': 0.21.3 + '@esbuild/sunos-x64': 0.21.3 + '@esbuild/win32-arm64': 0.21.3 + '@esbuild/win32-ia32': 0.21.3 + '@esbuild/win32-x64': 0.21.3 + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -20423,146 +22350,358 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@8.57.0): + eslint-compat-utils@0.1.2(eslint@8.55.0): dependencies: - eslint: 8.57.0 - semver: 7.6.2 + eslint: 8.55.0 + + eslint-compat-utils@0.1.2(eslint@8.56.0): + dependencies: + eslint: 8.56.0 + + eslint-compat-utils@0.5.0(eslint@8.56.0): + dependencies: + eslint: 8.56.0 + semver: 7.6.0 + + eslint-config-prettier@9.1.0(eslint@8.55.0): + dependencies: + eslint: 8.55.0 + + eslint-config-prettier@9.1.0(eslint@8.56.0): + dependencies: + eslint: 8.56.0 + + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0))(eslint-plugin-n@16.6.2(eslint@8.55.0))(eslint-plugin-promise@6.1.1(eslint@8.55.0))(eslint@8.55.0): + dependencies: + eslint: 8.55.0 + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0) + eslint-plugin-n: 16.6.2(eslint@8.55.0) + eslint-plugin-promise: 6.1.1(eslint@8.55.0) + + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@16.6.2(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0): + dependencies: + eslint: 8.56.0 + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0) + eslint-plugin-n: 16.6.2(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0))(eslint-plugin-n@16.6.2(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0): + dependencies: + eslint: 8.56.0 + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0) + eslint-plugin-n: 16.6.2(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint-import-resolver-node@0.3.9)(eslint@8.55.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.7.0(eslint@8.55.0)(typescript@5.4.3) + eslint: 8.55.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.7.0(eslint@8.56.0)(typescript@5.4.3) + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.9.0(eslint@8.56.0)(typescript@5.4.5) + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-plugin-es-x@7.5.0(eslint@8.55.0): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/regexpp': 4.10.0 + eslint: 8.55.0 + eslint-compat-utils: 0.1.2(eslint@8.55.0) + + eslint-plugin-es-x@7.5.0(eslint@8.56.0): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + eslint: 8.56.0 + eslint-compat-utils: 0.1.2(eslint@8.56.0) - eslint-config-prettier@9.1.0(eslint@8.57.0): + eslint-plugin-es@3.0.1(eslint@8.55.0): dependencies: - eslint: 8.57.0 + eslint: 8.55.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 - eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0): + eslint-plugin-es@3.0.1(eslint@8.56.0): dependencies: - eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0) - eslint-plugin-n: 16.6.2(eslint@8.57.0) - eslint-plugin-promise: 6.4.0(eslint@8.57.0) + eslint: 8.56.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 - eslint-import-resolver-node@0.3.9: + eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0): dependencies: + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 debug: 3.2.7 - is-core-module: 2.14.0 - resolve: 1.22.8 + doctrine: 2.1.0 + eslint: 8.55.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint-import-resolver-node@0.3.9)(eslint@8.55.0) + hasown: 2.0.1 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + optionalDependencies: + '@typescript-eslint/parser': 7.7.0(eslint@8.55.0)(typescript@5.4.3) transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0): dependencies: - '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 debug: 3.2.7 - eslint: 8.57.0 + doctrine: 2.1.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) + hasown: 2.0.1 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + optionalDependencies: + '@typescript-eslint/parser': 7.7.0(eslint@8.56.0)(typescript@5.4.3) transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack - supports-color - eslint-plugin-es-x@7.8.0(eslint@8.57.0): + eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.11.0 - eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) - - eslint-plugin-es@3.0.1(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - eslint-utils: 2.1.0 - regexpp: 3.2.0 - - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0): - dependencies: - '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) - hasown: 2.0.2 - is-core-module: 2.14.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.9.0(eslint@8.56.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) + hasown: 2.0.1 + is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 semver: 6.3.1 - tsconfig-paths: 3.15.0 + tsconfig-paths: 3.14.2 + optionalDependencies: + '@typescript-eslint/parser': 7.9.0(eslint@8.56.0)(typescript@5.4.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-n@16.6.2(eslint@8.57.0): + eslint-plugin-n@16.6.2(eslint@8.55.0): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + builtins: 5.0.1 + eslint: 8.55.0 + eslint-plugin-es-x: 7.5.0(eslint@8.55.0) + get-tsconfig: 4.7.2 + globals: 13.24.0 + ignore: 5.3.1 + is-builtin-module: 3.2.1 + is-core-module: 2.13.1 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 7.6.3 + + eslint-plugin-n@16.6.2(eslint@8.56.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - builtins: 5.1.0 - eslint: 8.57.0 - eslint-plugin-es-x: 7.8.0(eslint@8.57.0) - get-tsconfig: 4.7.5 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + builtins: 5.0.1 + eslint: 8.56.0 + eslint-plugin-es-x: 7.5.0(eslint@8.56.0) + get-tsconfig: 4.7.2 globals: 13.24.0 ignore: 5.3.1 is-builtin-module: 3.2.1 - is-core-module: 2.14.0 + is-core-module: 2.13.1 minimatch: 3.1.2 resolve: 1.22.8 semver: 7.6.3 - eslint-plugin-node@11.1.0(eslint@8.57.0): + eslint-plugin-node@11.1.0(eslint@8.55.0): + dependencies: + eslint: 8.55.0 + eslint-plugin-es: 3.0.1(eslint@8.55.0) + eslint-utils: 2.1.0 + ignore: 5.3.1 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 6.3.1 + + eslint-plugin-node@11.1.0(eslint@8.56.0): dependencies: - eslint: 8.57.0 - eslint-plugin-es: 3.0.1(eslint@8.57.0) + eslint: 8.56.0 + eslint-plugin-es: 3.0.1(eslint@8.56.0) eslint-utils: 2.1.0 ignore: 5.3.1 minimatch: 3.1.2 resolve: 1.22.8 semver: 6.3.1 - eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.2): + eslint-plugin-prettier@5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.55.0))(eslint@8.55.0)(prettier@3.2.5): + dependencies: + eslint: 8.55.0 + prettier: 3.2.5 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.6 + optionalDependencies: + '@types/eslint': 8.56.10 + eslint-config-prettier: 9.1.0(eslint@8.55.0) + + eslint-plugin-prettier@5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.56.0))(eslint@8.56.0)(prettier@3.2.5): dependencies: - eslint: 8.57.0 - eslint-config-prettier: 9.1.0(eslint@8.57.0) - prettier: 3.3.2 + eslint: 8.56.0 + prettier: 3.2.5 prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 + synckit: 0.8.6 + optionalDependencies: + '@types/eslint': 8.56.10 + eslint-config-prettier: 9.1.0(eslint@8.56.0) + + eslint-plugin-promise@6.1.1(eslint@8.55.0): + dependencies: + eslint: 8.55.0 + + eslint-plugin-promise@6.1.1(eslint@8.56.0): + dependencies: + eslint: 8.56.0 - eslint-plugin-promise@6.4.0(eslint@8.57.0): + eslint-plugin-simple-import-sort@12.0.0(eslint@8.56.0): dependencies: - eslint: 8.57.0 + eslint: 8.56.0 - eslint-plugin-simple-import-sort@12.1.0(eslint@8.57.0): + eslint-plugin-storybook@0.8.0(eslint@8.56.0)(typescript@5.4.3): dependencies: - eslint: 8.57.0 + '@storybook/csf': 0.0.1 + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.4.3) + eslint: 8.56.0 + requireindex: 1.2.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + - typescript - eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.5.3): + eslint-plugin-storybook@0.8.0(eslint@8.56.0)(typescript@5.4.5): dependencies: '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3) - eslint: 8.57.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.4.5) + eslint: 8.56.0 requireindex: 1.2.0 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-svelte@2.41.0(eslint@8.57.0)(svelte@4.2.18): + eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.13)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@jridgewell/sourcemap-codec': 1.4.15 - eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) + debug: 4.3.4 + eslint: 8.56.0 + eslint-compat-utils: 0.5.0(eslint@8.56.0) esutils: 2.0.3 - known-css-properties: 0.34.0 - postcss: 8.4.39 - postcss-load-config: 3.1.4(postcss@8.4.39) - postcss-safe-parser: 6.0.0(postcss@8.4.39) - postcss-selector-parser: 6.1.0 - semver: 7.6.2 - svelte: 4.2.18 - svelte-eslint-parser: 0.39.2(svelte@4.2.18) + known-css-properties: 0.30.0 + postcss: 8.4.38 + postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + postcss-safe-parser: 6.0.0(postcss@8.4.38) + postcss-selector-parser: 6.0.16 + semver: 7.6.0 + svelte-eslint-parser: 0.35.0(svelte@4.2.13) + optionalDependencies: + svelte: 4.2.13 + transitivePeerDependencies: + - supports-color + - ts-node + + eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.17)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@jridgewell/sourcemap-codec': 1.4.15 + debug: 4.3.4 + eslint: 8.56.0 + eslint-compat-utils: 0.5.0(eslint@8.56.0) + esutils: 2.0.3 + known-css-properties: 0.30.0 + postcss: 8.4.38 + postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + postcss-safe-parser: 6.0.0(postcss@8.4.38) + postcss-selector-parser: 6.0.16 + semver: 7.6.0 + svelte-eslint-parser: 0.35.0(svelte@4.2.17) + optionalDependencies: + svelte: 4.2.17 + transitivePeerDependencies: + - supports-color + - ts-node + + eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.17)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@jridgewell/sourcemap-codec': 1.4.15 + debug: 4.3.4 + eslint: 8.56.0 + eslint-compat-utils: 0.5.0(eslint@8.56.0) + esutils: 2.0.3 + known-css-properties: 0.30.0 + postcss: 8.4.38 + postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) + postcss-safe-parser: 6.0.0(postcss@8.4.38) + postcss-selector-parser: 6.0.16 + semver: 7.6.0 + svelte-eslint-parser: 0.35.0(svelte@4.2.17) + optionalDependencies: + svelte: 4.2.17 transitivePeerDependencies: + - supports-color - ts-node eslint-scope@5.1.1: @@ -20597,14 +22736,14 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.4 doctrine: 3.0.0 enquirer: 2.4.1 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 eslint-utils: 3.0.0(eslint@8.4.1) eslint-visitor-keys: 3.4.3 - espree: 9.2.0 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -20622,10 +22761,10 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.4 + optionator: 0.9.3 progress: 2.0.3 regexpp: 3.2.0 - semver: 7.6.3 + semver: 7.6.2 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 @@ -20633,12 +22772,55 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@8.57.0: + eslint@8.55.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.55.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + eslint@8.56.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 + '@eslint/js': 8.56.0 '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -20646,7 +22828,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -20670,7 +22852,7 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.4 + optionator: 0.9.3 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -20680,21 +22862,21 @@ snapshots: esniff@2.0.1: dependencies: - d: 1.0.2 + d: 1.0.1 es5-ext: 0.10.64 event-emitter: 0.3.5 - type: 2.7.3 + type: 2.7.2 espree@9.2.0: dependencies: - acorn: 8.12.0 - acorn-jsx: 5.3.2(acorn@8.12.0) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 espree@9.6.1: dependencies: - acorn: 8.12.0 - acorn-jsx: 5.3.2(acorn@8.12.0) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -20755,6 +22937,11 @@ snapshots: transitivePeerDependencies: - supports-color + eth-ens-namehash@2.0.8: + dependencies: + idna-uts46-hx: 2.3.1 + js-sha3: 0.5.7 + eth-json-rpc-filters@6.0.1: dependencies: '@metamask/safe-event-emitter': 3.1.1 @@ -20763,6 +22950,25 @@ snapshots: json-rpc-engine: 6.1.0 pify: 5.0.0 + eth-lib@0.1.29(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.7 + nano-json-stream-parser: 0.1.2 + servify: 0.1.12 + ws: 3.3.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + xhr-request-promise: 0.1.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + eth-lib@0.2.8: + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.7 + xhr-request-promise: 0.1.3 + eth-query@2.1.2: dependencies: json-rpc-random-id: 1.0.1 @@ -20776,9 +22982,9 @@ snapshots: dependencies: crypto-js: 3.3.0 - ethereum-bloom-filters@1.1.0: + ethereum-bloom-filters@1.0.10: dependencies: - '@noble/hashes': 1.4.0 + js-sha3: 0.8.0 ethereum-cryptography@0.1.3: dependencies: @@ -20805,12 +23011,12 @@ snapshots: '@scure/bip32': 1.1.5 '@scure/bip39': 1.1.1 - ethereum-cryptography@2.2.1: + ethereum-cryptography@2.1.3: dependencies: - '@noble/curves': 1.4.2 - '@noble/hashes': 1.4.0 - '@scure/bip32': 1.4.0 - '@scure/bip39': 1.3.0 + '@noble/curves': 1.3.0 + '@noble/hashes': 1.3.3 + '@scure/bip32': 1.3.3 + '@scure/bip39': 1.2.2 ethereumjs-util@7.1.5: dependencies: @@ -20820,7 +23026,7 @@ snapshots: ethereum-cryptography: 0.1.3 rlp: 2.2.7 - ethers@5.7.2: + ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -20840,7 +23046,7 @@ snapshots: '@ethersproject/networks': 5.7.1 '@ethersproject/pbkdf2': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@ethersproject/random': 5.7.0 '@ethersproject/rlp': 5.7.0 '@ethersproject/sha2': 5.7.0 @@ -20856,6 +23062,19 @@ snapshots: - bufferutil - utf-8-validate + ethers@6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + ethjs-unit@0.1.6: dependencies: bn.js: 4.11.6 @@ -20863,13 +23082,15 @@ snapshots: event-emitter@0.3.5: dependencies: - d: 1.0.2 + d: 1.0.1 es5-ext: 0.10.64 event-target-shim@5.0.1: {} eventemitter2@6.4.9: {} + eventemitter3@4.0.4: {} + eventemitter3@5.0.1: {} events@3.3.0: {} @@ -20891,6 +23112,18 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 + execa@7.2.0: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -20898,7 +23131,7 @@ snapshots: human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.3.0 + npm-run-path: 5.2.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 @@ -20911,34 +23144,34 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - express@4.19.2: + express@4.21.0: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.10 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -20956,7 +23189,7 @@ snapshots: ext@1.7.0: dependencies: - type: 2.7.3 + type: 2.7.2 extend-shallow@2.0.1: dependencies: @@ -20966,6 +23199,10 @@ snapshots: extendable-error@0.1.7: {} + extension-port-stream@2.1.1: + dependencies: + webextension-polyfill: 0.10.0 + extension-port-stream@3.0.0: dependencies: readable-stream: 3.6.2 @@ -20977,6 +23214,14 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + extsprintf@1.3.0: {} + + eyes@0.1.8: {} + + fast-base64-decode@1.0.0: {} + + fast-deep-equal@2.0.1: {} + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -20989,13 +23234,13 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.7 + micromatch: 4.0.5 fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fast-redact@3.5.0: {} + fast-redact@3.3.0: {} fast-safe-stringify@2.1.1: {} @@ -21003,7 +23248,7 @@ snapshots: dependencies: strnum: 1.0.5 - fast-xml-parser@4.4.0: + fast-xml-parser@4.3.4: dependencies: strnum: 1.0.5 @@ -21017,26 +23262,19 @@ snapshots: dependencies: bser: 2.1.1 - fdir@6.1.1(picomatch@3.0.1): - dependencies: + fdir@6.3.0(picomatch@3.0.1): + optionalDependencies: picomatch: 3.0.1 - fetch-retry@5.0.6: {} - file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 - file-system-cache@2.3.0: - dependencies: - fs-extra: 11.1.1 - ramda: 0.29.0 + filesize@10.1.1: {} - filelist@1.0.4: + fill-range@7.0.1: dependencies: - minimatch: 5.1.6 - - filesize@10.1.2: {} + to-regex-range: 5.0.1 fill-range@7.1.1: dependencies: @@ -21056,10 +23294,10 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@1.2.0: + finalhandler@1.3.1: dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 @@ -21080,6 +23318,8 @@ snapshots: make-dir: 3.1.0 pkg-dir: 4.2.0 + find-root@1.1.0: {} + find-up-simple@1.0.0: {} find-up@3.0.0: @@ -21103,12 +23343,12 @@ snapshots: find-yarn-workspace-root2@1.2.16: dependencies: - micromatch: 4.0.7 + micromatch: 4.0.8 pkg-dir: 4.2.0 flat-cache@3.2.0: dependencies: - flatted: 3.3.1 + flatted: 3.2.9 keyv: 4.5.4 rimraf: 3.0.2 @@ -21116,33 +23356,45 @@ snapshots: dependencies: is-buffer: 2.0.5 - flatted@3.3.1: {} + flatted@3.2.9: {} flattie@1.1.1: {} flow-enums-runtime@0.0.6: {} - flow-parser@0.238.3: {} + flow-parser@0.206.0: {} - follow-redirects@1.15.6(debug@4.3.5): - dependencies: - debug: 4.3.5 + follow-redirects@1.15.5(debug@4.3.4): + optionalDependencies: + debug: 4.3.4 + + follow-redirects@1.15.9: {} for-each@0.3.3: dependencies: is-callable: 1.2.7 - foreground-child@3.2.1: + foreground-child@3.1.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 + forever-agent@0.6.1: {} + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: {} - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/8948d45d3d9022c508b83eb5d26fd3a7a93f2f32: {} + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/8f24d6b04c92975e0795b5868aa0d783251cdeaa: {} + + form-data-encoder@1.7.1: {} form-data-encoder@2.1.4: {} + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + form-data@4.0.0: dependencies: asynckit: 0.4.0 @@ -21155,19 +23407,17 @@ snapshots: fresh@0.5.2: {} - fs-constants@1.0.0: {} - - fs-extra@11.1.1: + fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - fs-extra@11.2.0: + fs-extra@4.0.3: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 + jsonfile: 4.0.0 + universalify: 0.1.2 fs-extra@7.0.1: dependencies: @@ -21181,9 +23431,9 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 - fs-minipass@2.1.0: + fs-minipass@1.2.7: dependencies: - minipass: 3.3.6 + minipass: 2.9.0 fs.realpath@1.0.0: {} @@ -21199,7 +23449,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.22.3 functions-have-names: 1.2.3 functional-red-black-tree@1.0.1: {} @@ -21222,40 +23472,32 @@ snapshots: function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.2 + hasown: 2.0.1 get-iterator@1.0.2: {} - get-nonce@1.0.1: {} - - get-npm-tarball-url@2.1.0: {} - get-port-please@3.1.2: {} + get-stream@5.2.0: + dependencies: + pump: 3.0.0 + get-stream@6.0.1: {} get-stream@8.0.1: {} - get-symbol-description@1.0.2: + get-symbol-description@1.0.0: dependencies: call-bind: 1.0.7 - es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-tsconfig@4.7.5: + get-tsconfig@4.7.2: dependencies: resolve-pkg-maps: 1.0.0 - giget@1.2.3: + getpass@0.1.7: dependencies: - citty: 0.1.6 - consola: 3.2.3 - defu: 6.1.4 - node-fetch-native: 1.6.4 - nypm: 0.3.9 - ohash: 1.1.3 - pathe: 1.1.2 - tar: 6.2.1 + assert-plus: 1.0.0 github-slugger@2.0.0: {} @@ -21267,16 +23509,22 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} + glob@10.3.10: + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.4 + minipass: 7.0.4 + path-scurry: 1.10.1 - glob@10.4.2: + glob@11.0.0: dependencies: - foreground-child: 3.2.1 - jackspeak: 3.4.0 - minimatch: 9.0.5 + foreground-child: 3.1.1 + jackspeak: 4.0.1 + minimatch: 10.0.1 minipass: 7.1.2 package-json-from-dist: 1.0.0 - path-scurry: 1.11.1 + path-scurry: 2.0.0 glob@7.2.3: dependencies: @@ -21292,19 +23540,27 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.1.6 + minimatch: 5.0.1 once: 1.4.0 + global@4.4.0: + dependencies: + min-document: 2.19.0 + process: 0.11.10 + globals@11.12.0: {} + globals@13.23.0: + dependencies: + type-fest: 0.20.2 + globals@13.24.0: dependencies: type-fest: 0.20.2 - globalthis@1.0.4: + globalthis@1.0.3: dependencies: define-properties: 1.2.1 - gopd: 1.0.1 globalyzer@0.1.0: {} @@ -21317,14 +23573,13 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@14.0.2: + globby@13.2.2: dependencies: - '@sindresorhus/merge-streams': 2.3.0 + dir-glob: 3.0.1 fast-glob: 3.3.2 ignore: 5.3.1 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 + merge2: 1.4.1 + slash: 4.0.0 globrex@0.1.2: {} @@ -21332,6 +23587,36 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + got@12.1.0: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 5.0.1 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 6.1.0 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + form-data-encoder: 1.7.1 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 2.0.1 + got@12.6.1: dependencies: '@sindresorhus/is': 5.6.0 @@ -21361,38 +23646,24 @@ snapshots: section-matter: 1.0.0 strip-bom-string: 1.0.0 - gunzip-maybe@1.4.2: - dependencies: - browserify-zlib: 0.1.4 - is-deflate: 1.0.0 - is-gzip: 1.0.0 - peek-stream: 1.1.3 - pumpify: 1.5.1 - through2: 2.0.5 - - h3@1.12.0: + h3@1.10.2: dependencies: - cookie-es: 1.1.0 - crossws: 0.2.4 + cookie-es: 1.0.0 defu: 6.1.4 destr: 2.0.3 - iron-webcrypto: 1.2.1 + iron-webcrypto: 1.0.0 ohash: 1.1.3 - radix3: 1.1.2 - ufo: 1.5.3 + radix3: 1.1.0 + ufo: 1.4.0 uncrypto: 0.1.3 unenv: 1.9.0 - transitivePeerDependencies: - - uWebSockets.js - handlebars@4.7.8: + har-schema@2.0.0: {} + + har-validator@5.1.5: dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.18.0 + ajv: 6.12.6 + har-schema: 2.0.0 has-bigints@1.0.2: {} @@ -21408,7 +23679,7 @@ snapshots: has-symbols@1.0.3: {} - has-tostringtag@1.0.2: + has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 @@ -21425,7 +23696,7 @@ snapshots: hashlru@2.3.0: {} - hasown@2.0.2: + hasown@2.0.1: dependencies: function-bind: 1.1.2 @@ -21482,7 +23753,7 @@ snapshots: hast-util-is-body-ok-link: 3.0.0 hast-util-is-element: 3.0.0 - hast-util-raw@9.0.4: + hast-util-raw@9.0.3: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -21490,11 +23761,11 @@ snapshots: hast-util-from-parse5: 8.0.1 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.1.0 parse5: 7.1.2 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.2 + vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -21544,10 +23815,24 @@ snapshots: '@types/unist': 3.0.2 ccount: 2.0.1 comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.4 + hast-util-raw: 9.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.1.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-html@9.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.1.0 property-information: 6.5.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 @@ -21614,18 +23899,23 @@ snapshots: property-information: 6.5.0 space-separated-tokens: 2.0.2 + header-case@2.0.4: + dependencies: + capital-case: 1.0.4 + tslib: 2.6.2 + + hermes-estree@0.15.0: {} + hermes-estree@0.19.1: {} - hermes-estree@0.20.1: {} + hermes-parser@0.15.0: + dependencies: + hermes-estree: 0.15.0 hermes-parser@0.19.1: dependencies: hermes-estree: 0.19.1 - hermes-parser@0.20.1: - dependencies: - hermes-estree: 0.20.1 - hermes-profile-transformer@0.0.6: dependencies: source-map: 0.7.4 @@ -21638,7 +23928,9 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - hosted-git-info@2.8.9: {} + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 html-encoding-sniffer@4.0.0: dependencies: @@ -21673,24 +23965,37 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-https@1.0.0: {} + http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.1 - debug: 4.3.5 + agent-base: 7.1.0 + debug: 4.3.4 transitivePeerDependencies: - supports-color http-shutdown@1.2.2: {} + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + http2-wrapper@2.2.1: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - https-proxy-agent@7.0.5: + https-proxy-agent@7.0.4: dependencies: - agent-base: 7.1.1 - debug: 4.3.5 + agent-base: 7.1.0 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -21698,19 +24003,25 @@ snapshots: human-signals@2.1.0: {} + human-signals@4.3.1: {} + human-signals@5.0.0: {} i18next-browser-languagedetector@7.1.0: dependencies: - '@babel/runtime': 7.24.7 + '@babel/runtime': 7.23.9 + + i18next-browser-languagedetector@7.2.0: + dependencies: + '@babel/runtime': 7.23.9 i18next@22.5.1: dependencies: - '@babel/runtime': 7.24.7 + '@babel/runtime': 7.23.9 i18next@23.11.5: dependencies: - '@babel/runtime': 7.24.7 + '@babel/runtime': 7.23.9 iconv-lite@0.4.24: dependencies: @@ -21722,20 +24033,28 @@ snapshots: idb-keyval@6.2.1: {} + idna-uts46-hx@2.3.1: + dependencies: + punycode: 2.1.0 + ieee754@1.2.1: {} ignore-walk@5.0.1: dependencies: - minimatch: 5.1.6 + minimatch: 5.0.1 ignore@4.0.6: {} + ignore@5.3.0: {} + ignore@5.3.1: {} image-size@1.1.1: dependencies: queue: 6.0.2 + immediate@3.0.6: {} + import-fresh@2.0.0: dependencies: caller-path: 2.0.0 @@ -21746,6 +24065,8 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-meta-resolve@4.0.0: {} + import-meta-resolve@4.1.0: {} imurmurhash@0.1.4: {} @@ -21774,58 +24095,74 @@ snapshots: interface-datastore@8.2.11: dependencies: interface-store: 5.1.8 - uint8arrays: 5.1.0 + uint8arrays: 5.0.3 interface-store@3.0.4: {} interface-store@5.1.8: {} - internal-slot@1.0.7: + internal-slot@1.0.6: dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 + get-intrinsic: 1.2.4 + hasown: 2.0.1 + side-channel: 1.0.4 - intl-messageformat@10.5.14: + intl-messageformat@10.5.11: dependencies: - '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/fast-memoize': 2.2.0 - '@formatjs/icu-messageformat-parser': 2.7.8 - tslib: 2.6.3 + '@formatjs/icu-messageformat-parser': 2.7.6 + tslib: 2.6.2 invariant@2.2.4: dependencies: loose-envify: 1.4.0 + ioredis@5.3.2: + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.3.4 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + + ip@1.1.9: {} + ipaddr.js@1.9.1: {} ipfs-core-types@0.14.1: dependencies: - '@ipld/dag-pb': 4.1.2 + '@ipld/dag-pb': 4.1.0 '@libp2p/interface-keychain': 2.0.5 '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interface-peer-info': 1.0.10 '@libp2p/interface-pubsub': 3.0.7 '@multiformats/multiaddr': 11.6.1 - '@types/node': 18.19.39 + '@types/node': 18.19.31 interface-datastore: 7.0.4 ipfs-unixfs: 9.0.1 multiformats: 11.0.2 transitivePeerDependencies: - supports-color - ipfs-core-utils@0.18.1: + ipfs-core-utils@0.18.1(encoding@0.1.13): dependencies: '@libp2p/logger': 2.1.1 '@multiformats/multiaddr': 11.6.1 '@multiformats/multiaddr-to-uri': 9.0.8 any-signal: 3.0.1 - blob-to-it: 2.0.7 - browser-readablestream-to-it: 2.0.7 + blob-to-it: 2.0.6 + browser-readablestream-to-it: 2.0.6 err-code: 3.0.1 ipfs-core-types: 0.14.1 ipfs-unixfs: 9.0.1 - ipfs-utils: 9.0.14 + ipfs-utils: 9.0.14(encoding@0.1.13) it-all: 2.0.1 it-map: 2.0.1 it-peekable: 2.0.1 @@ -21840,11 +24177,11 @@ snapshots: - encoding - supports-color - ipfs-http-client@60.0.1: + ipfs-http-client@60.0.1(encoding@0.1.13): dependencies: - '@ipld/dag-cbor': 9.2.1 - '@ipld/dag-json': 10.2.2 - '@ipld/dag-pb': 4.1.2 + '@ipld/dag-cbor': 9.2.0 + '@ipld/dag-json': 10.2.0 + '@ipld/dag-pb': 4.1.0 '@libp2p/logger': 2.1.1 '@libp2p/peer-id': 2.0.4 '@multiformats/multiaddr': 11.6.1 @@ -21852,8 +24189,8 @@ snapshots: dag-jose: 4.0.0 err-code: 3.0.1 ipfs-core-types: 0.14.1 - ipfs-core-utils: 0.18.1 - ipfs-utils: 9.0.14 + ipfs-core-utils: 0.18.1(encoding@0.1.13) + ipfs-utils: 9.0.14(encoding@0.1.13) it-first: 2.0.1 it-last: 2.0.1 merge-options: 3.0.4 @@ -21868,9 +24205,9 @@ snapshots: ipfs-unixfs@9.0.1: dependencies: err-code: 3.0.1 - protobufjs: 7.3.2 + protobufjs: 7.2.6 - ipfs-utils@9.0.14: + ipfs-utils@9.0.14(encoding@0.1.13): dependencies: any-signal: 3.0.1 browser-readablestream-to-it: 1.0.3 @@ -21884,14 +24221,14 @@ snapshots: it-to-stream: 1.0.0 merge-options: 3.0.4 nanoid: 3.3.7 - native-fetch: 3.0.0(node-fetch@2.7.0) - node-fetch: 2.7.0 + native-fetch: 3.0.0(node-fetch@2.7.0(encoding@0.1.13)) + node-fetch: 2.7.0(encoding@0.1.13) react-native-fetch-api: 3.0.0 stream-to-it: 0.2.4 transitivePeerDependencies: - encoding - iron-webcrypto@1.2.1: {} + iron-webcrypto@1.0.0: {} is-absolute-url@4.0.1: {} @@ -21905,12 +24242,13 @@ snapshots: is-arguments@1.1.1: dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.2 + has-tostringtag: 1.0.0 - is-array-buffer@3.0.4: + is-array-buffer@3.0.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 + is-typed-array: 1.1.12 is-arrayish@0.2.1: {} @@ -21922,12 +24260,12 @@ snapshots: is-binary-path@2.1.0: dependencies: - binary-extensions: 2.3.0 + binary-extensions: 2.2.0 is-boolean-object@1.1.2: dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.2 + has-tostringtag: 1.0.0 is-buffer@2.0.5: {} @@ -21937,22 +24275,16 @@ snapshots: is-callable@1.2.7: {} - is-core-module@2.14.0: + is-core-module@2.13.1: dependencies: - hasown: 2.0.2 - - is-data-view@1.0.1: - dependencies: - is-typed-array: 1.1.13 + hasown: 2.0.1 is-date-object@1.0.5: dependencies: - has-tostringtag: 1.0.2 + has-tostringtag: 1.0.0 is-decimal@2.0.1: {} - is-deflate@1.0.0: {} - is-directory@0.3.1: {} is-docker@2.2.1: {} @@ -21969,16 +24301,16 @@ snapshots: is-fullwidth-code-point@3.0.0: {} + is-function@1.0.2: {} + is-generator-function@1.0.10: dependencies: - has-tostringtag: 1.0.2 + has-tostringtag: 1.0.0 is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-gzip@1.0.0: {} - is-hex-prefixed@1.0.0: {} is-hexadecimal@2.0.1: {} @@ -21991,16 +24323,11 @@ snapshots: is-interactive@2.0.0: {} - is-nan@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - is-negative-zero@2.0.3: {} + is-negative-zero@2.0.2: {} is-number-object@1.0.7: dependencies: - has-tostringtag: 1.0.2 + has-tostringtag: 1.0.0 is-number@7.0.0: {} @@ -22025,9 +24352,9 @@ snapshots: is-regex@1.1.4: dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.2 + has-tostringtag: 1.0.0 - is-shared-array-buffer@1.0.3: + is-shared-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 @@ -22037,7 +24364,7 @@ snapshots: is-string@1.0.7: dependencies: - has-tostringtag: 1.0.2 + has-tostringtag: 1.0.0 is-subdir@1.2.0: dependencies: @@ -22047,9 +24374,11 @@ snapshots: dependencies: has-symbols: 1.0.3 - is-typed-array@1.1.13: + is-typed-array@1.1.12: dependencies: - which-typed-array: 1.1.15 + which-typed-array: 1.1.13 + + is-typedarray@1.0.0: {} is-unicode-supported@0.1.0: {} @@ -22089,20 +24418,26 @@ snapshots: isobject@3.0.1: {} - isomorphic-unfetch@3.1.0: + isomorphic-unfetch@3.1.0(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) unfetch: 4.2.0 transitivePeerDependencies: - encoding - isows@1.0.3(ws@8.13.0): + isows@1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + isows@1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)): dependencies: - ws: 8.13.0 + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) - isows@1.0.4(ws@8.17.1): + isows@1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)): dependencies: - ws: 8.17.1 + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + isstream@0.1.2: {} istanbul-lib-coverage@3.2.2: {} @@ -22112,10 +24447,10 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@5.0.5: + istanbul-lib-source-maps@5.0.4: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.5 + debug: 4.3.4 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -22159,18 +24494,17 @@ snapshots: p-fifo: 1.0.0 readable-stream: 3.6.2 - jackspeak@3.4.0: + jackspeak@2.3.6: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jake@10.9.1: + jackspeak@4.0.1: dependencies: - async: 3.2.5 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 jest-diff@29.7.0: dependencies: @@ -22184,7 +24518,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.9 + '@types/node': 20.12.7 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -22199,12 +24533,12 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.24.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.7 + micromatch: 4.0.5 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 @@ -22212,13 +24546,13 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.9 + '@types/node': 20.12.7 jest-util: 29.7.0 jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.9 + '@types/node': 20.12.7 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -22235,14 +24569,14 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 20.14.9 + '@types/node': 20.12.7 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@1.21.6: {} + jiti@1.21.0: {} - joi@17.13.3: + joi@17.12.1: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -22250,11 +24584,15 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + js-cookie@2.2.1: {} + + js-sha3@0.5.7: {} + js-sha3@0.8.0: {} js-tokens@4.0.0: {} - js-tokens@9.0.0: {} + js-tokens@8.0.3: {} js-yaml@3.14.1: dependencies: @@ -22265,27 +24603,29 @@ snapshots: dependencies: argparse: 2.0.1 + jsbn@0.1.1: {} + jsc-android@250231.0.0: {} jsc-safe-url@0.2.4: {} - jscodeshift@0.14.0(@babel/preset-env@7.24.7): + jscodeshift@0.14.0(@babel/preset-env@7.23.9(@babel/core@7.25.2)): dependencies: '@babel/core': 7.25.2 - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.6 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.25.2) - '@babel/preset-env': 7.24.7(@babel/core@7.25.2) - '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/register': 7.24.6(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.25.2) + '@babel/preset-env': 7.23.9(@babel/core@7.25.2) + '@babel/preset-flow': 7.23.3(@babel/core@7.25.2) + '@babel/preset-typescript': 7.23.3(@babel/core@7.25.2) + '@babel/register': 7.23.7(@babel/core@7.25.2) babel-core: 7.0.0-bridge.0(@babel/core@7.25.2) chalk: 4.1.2 - flow-parser: 0.238.3 + flow-parser: 0.206.0 graceful-fs: 4.2.11 - micromatch: 4.0.7 + micromatch: 4.0.8 neo-async: 2.6.2 node-dir: 0.1.17 recast: 0.21.5 @@ -22294,33 +24634,35 @@ snapshots: transitivePeerDependencies: - supports-color - jscodeshift@0.15.2(@babel/preset-env@7.24.7): - dependencies: - '@babel/core': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7) - '@babel/preset-env': 7.24.7(@babel/core@7.24.7) - '@babel/preset-flow': 7.24.7(@babel/core@7.24.7) - '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) - '@babel/register': 7.24.6(@babel/core@7.24.7) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.7) - chalk: 4.1.2 - flow-parser: 0.238.3 - graceful-fs: 4.2.11 - micromatch: 4.0.7 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.23.9 - temp: 0.8.4 - write-file-atomic: 2.4.3 + jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + cssstyle: 4.0.1 + data-urls: 5.0.0 + decimal.js: 10.4.3 + form-data: 4.0.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 + ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + xml-name-validator: 5.0.0 transitivePeerDependencies: + - bufferutil - supports-color + - utf-8-validate - jsdom@24.1.0: + jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -22328,25 +24670,26 @@ snapshots: form-data: 4.0.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 + https-proxy-agent: 7.0.4 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.10 + nwsapi: 2.2.7 parse5: 7.1.2 - rrweb-cssom: 0.7.1 + rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.4 + tough-cookie: 4.1.3 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.17.1 + ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate + optional: true jsesc@0.5.0: {} @@ -22363,14 +24706,24 @@ snapshots: '@metamask/safe-event-emitter': 2.0.0 eth-rpc-errors: 4.0.3 + json-rpc-middleware-stream@4.2.3: + dependencies: + '@metamask/safe-event-emitter': 3.0.0 + json-rpc-engine: 6.1.0 + readable-stream: 2.3.8 + json-rpc-random-id@1.0.1: {} json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} + json-schema@0.4.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} + json-stringify-safe@5.0.1: {} + json-to-ast@2.1.0: dependencies: code-error-fragment: 0.0.230 @@ -22384,6 +24737,8 @@ snapshots: jsonc-parser@2.3.1: {} + jsonc-parser@3.2.0: {} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -22396,10 +24751,30 @@ snapshots: jsonpointer@5.0.1: {} + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + keccak256@1.0.6: + dependencies: + bn.js: 5.2.1 + buffer: 6.0.3 + keccak: 3.0.4 + keccak@3.0.4: dependencies: node-addon-api: 2.0.2 - node-gyp-build: 4.8.1 + node-gyp-build: 4.8.0 readable-stream: 3.6.2 keyv@4.5.4: @@ -22414,52 +24789,46 @@ snapshots: kleur@4.1.5: {} - known-css-properties@0.34.0: {} + known-css-properties@0.30.0: {} latest-version@7.0.0: dependencies: package-json: 8.1.1 - lazy-universal-dotenv@4.0.0: - dependencies: - app-root-dir: 1.0.2 - dotenv: 16.4.5 - dotenv-expand: 10.0.0 - - lefthook-darwin-arm64@1.6.18: + lefthook-darwin-arm64@1.6.10: optional: true - lefthook-darwin-x64@1.6.18: + lefthook-darwin-x64@1.6.10: optional: true - lefthook-freebsd-arm64@1.6.18: + lefthook-freebsd-arm64@1.6.10: optional: true - lefthook-freebsd-x64@1.6.18: + lefthook-freebsd-x64@1.6.10: optional: true - lefthook-linux-arm64@1.6.18: + lefthook-linux-arm64@1.6.10: optional: true - lefthook-linux-x64@1.6.18: + lefthook-linux-x64@1.6.10: optional: true - lefthook-windows-arm64@1.6.18: + lefthook-windows-arm64@1.6.10: optional: true - lefthook-windows-x64@1.6.18: + lefthook-windows-x64@1.6.10: optional: true - lefthook@1.6.18: + lefthook@1.6.10: optionalDependencies: - lefthook-darwin-arm64: 1.6.18 - lefthook-darwin-x64: 1.6.18 - lefthook-freebsd-arm64: 1.6.18 - lefthook-freebsd-x64: 1.6.18 - lefthook-linux-arm64: 1.6.18 - lefthook-linux-x64: 1.6.18 - lefthook-windows-arm64: 1.6.18 - lefthook-windows-x64: 1.6.18 + lefthook-darwin-arm64: 1.6.10 + lefthook-darwin-x64: 1.6.10 + lefthook-freebsd-arm64: 1.6.10 + lefthook-freebsd-x64: 1.6.10 + lefthook-linux-arm64: 1.6.10 + lefthook-linux-x64: 1.6.10 + lefthook-windows-arm64: 1.6.10 + lefthook-windows-x64: 1.6.10 leven@3.1.0: {} @@ -22468,6 +24837,10 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lie@3.3.0: + dependencies: + immediate: 3.0.6 + lighthouse-logger@1.4.2: dependencies: debug: 2.6.9 @@ -22477,32 +24850,30 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.1.2: {} + lilconfig@3.1.1: {} lines-and-columns@1.2.4: {} - listhen@1.7.2: + listhen@1.6.0: dependencies: - '@parcel/watcher': 2.4.1 - '@parcel/watcher-wasm': 2.4.1 + '@parcel/watcher': 2.4.0 + '@parcel/watcher-wasm': 2.4.0 citty: 0.1.6 clipboardy: 4.0.0 consola: 3.2.3 - crossws: 0.2.4 + crossws: 0.1.1 defu: 6.1.4 get-port-please: 3.1.2 - h3: 1.12.0 + h3: 1.10.2 http-shutdown: 1.2.2 - jiti: 1.21.6 - mlly: 1.7.1 + jiti: 1.21.0 + mlly: 1.5.0 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.7.0 - ufo: 1.5.3 + ufo: 1.4.0 untun: 0.1.3 uqr: 0.1.2 - transitivePeerDependencies: - - uWebSockets.js lit-element@3.3.3: dependencies: @@ -22510,17 +24881,17 @@ snapshots: '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 - lit-element@4.0.6: + lit-element@4.0.4: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 2.0.4 - lit-html: 3.1.4 + lit-html: 3.1.2 lit-html@2.8.0: dependencies: '@types/trusted-types': 2.0.7 - lit-html@3.1.4: + lit-html@3.1.2: dependencies: '@types/trusted-types': 2.0.7 @@ -22533,8 +24904,8 @@ snapshots: lit@3.1.0: dependencies: '@lit/reactive-element': 2.0.4 - lit-element: 4.0.6 - lit-html: 3.1.4 + lit-element: 4.0.4 + lit-html: 3.1.2 load-tsconfig@0.2.5: {} @@ -22547,8 +24918,8 @@ snapshots: local-pkg@0.5.0: dependencies: - mlly: 1.7.1 - pkg-types: 1.1.2 + mlly: 1.5.0 + pkg-types: 1.0.3 locate-character@3.0.0: {} @@ -22571,6 +24942,10 @@ snapshots: lodash.debounce@4.0.8: {} + lodash.defaults@4.2.0: {} + + lodash.isarguments@3.1.0: {} + lodash.isequal@4.5.0: {} lodash.merge@4.6.2: {} @@ -22601,7 +24976,7 @@ snapshots: logkitty@0.7.1: dependencies: ansi-fragments: 0.2.1 - dayjs: 1.11.11 + dayjs: 1.11.10 yargs: 15.4.1 lokijs@1.5.12: {} @@ -22618,13 +24993,21 @@ snapshots: dependencies: get-func-name: 2.0.2 + loupe@3.1.1: + dependencies: + get-func-name: 2.0.2 + lower-case@2.0.2: dependencies: - tslib: 2.6.3 + tslib: 2.6.2 + + lowercase-keys@2.0.0: {} lowercase-keys@3.0.0: {} - lru-cache@10.3.0: {} + lru-cache@10.2.0: {} + + lru-cache@11.0.1: {} lru-cache@4.1.5: dependencies: @@ -22635,9 +25018,13 @@ snapshots: dependencies: yallist: 3.1.1 + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + lru-queue@0.1.0: dependencies: - es5-ext: 0.10.64 + es5-ext: 0.10.62 lz-string@1.5.0: {} @@ -22649,10 +25036,24 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - magicast@0.3.4: + magic-string@0.30.7: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + magic-string@0.30.9: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + magicast@0.3.3: + dependencies: + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + source-map-js: 1.2.0 + + magicast@0.3.5: dependencies: - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 source-map-js: 1.2.0 make-dir@2.1.0: @@ -22666,7 +25067,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.3 + semver: 7.6.0 make-error@1.3.6: {} @@ -22680,9 +25081,9 @@ snapshots: markdown-table@3.0.3: {} - markdown-to-jsx@7.3.2(react@18.3.1): + markdown-to-jsx@7.5.0(react@18.2.0): dependencies: - react: 18.3.1 + react: 18.2.0 marky@1.2.5: {} @@ -22703,7 +25104,7 @@ snapshots: '@types/mdast': 4.0.4 '@types/unist': 3.0.2 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 stringify-entities: 4.0.4 @@ -22718,7 +25119,7 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - mdast-util-from-markdown@2.0.1: + mdast-util-from-markdown@2.0.0: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.2 @@ -22747,7 +25148,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: @@ -22756,7 +25157,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -22766,7 +25167,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -22775,14 +25176,14 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color mdast-util-gfm@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-gfm-autolink-literal: 2.0.0 mdast-util-gfm-footnote: 2.0.0 mdast-util-gfm-strikethrough: 2.0.0 @@ -22798,7 +25199,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -22811,7 +25212,7 @@ snapshots: '@types/unist': 3.0.2 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 stringify-entities: 4.0.4 @@ -22823,7 +25224,7 @@ snapshots: mdast-util-mdx@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-mdx-expression: 2.0.0 mdast-util-mdx-jsx: 3.1.2 mdast-util-mdxjs-esm: 2.0.1 @@ -22837,7 +25238,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -22847,7 +25248,7 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.1.0: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -22857,7 +25258,7 @@ snapshots: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.2 + vfile: 6.0.3 mdast-util-to-markdown@2.1.0: dependencies: @@ -22880,16 +25281,16 @@ snapshots: memoize-one@5.2.1: {} - memoizee@0.4.17: + memoizee@0.4.15: dependencies: - d: 1.0.2 - es5-ext: 0.10.64 + d: 1.0.1 + es5-ext: 0.10.62 es6-weak-map: 2.0.3 event-emitter: 0.3.5 is-promise: 2.2.2 lru-queue: 0.1.0 next-tick: 1.1.0 - timers-ext: 0.1.8 + timers-ext: 0.1.7 memoizerific@1.11.3: dependencies: @@ -22897,7 +25298,7 @@ snapshots: memorystream@0.3.1: {} - merge-descriptors@1.0.1: {} + merge-descriptors@1.0.3: {} merge-options@3.0.4: dependencies: @@ -22917,42 +25318,42 @@ snapshots: methods@1.1.2: {} - metro-babel-transformer@0.80.9: + metro-babel-transformer@0.80.6: dependencies: '@babel/core': 7.25.2 - hermes-parser: 0.20.1 + hermes-parser: 0.19.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-cache-key@0.80.9: {} + metro-cache-key@0.80.6: {} - metro-cache@0.80.9: + metro-cache@0.80.6: dependencies: - metro-core: 0.80.9 + metro-core: 0.80.6 rimraf: 3.0.2 - metro-config@0.80.9: + metro-config@0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10): dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 jest-validate: 29.7.0 - metro: 0.80.9 - metro-cache: 0.80.9 - metro-core: 0.80.9 - metro-runtime: 0.80.9 + metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + metro-cache: 0.80.6 + metro-core: 0.80.6 + metro-runtime: 0.80.6 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - metro-core@0.80.9: + metro-core@0.80.6: dependencies: lodash.throttle: 4.1.1 - metro-resolver: 0.80.9 + metro-resolver: 0.80.6 - metro-file-map@0.80.9: + metro-file-map@0.80.6: dependencies: anymatch: 3.1.3 debug: 2.6.9 @@ -22960,7 +25361,7 @@ snapshots: graceful-fs: 4.2.11 invariant: 2.2.4 jest-worker: 29.7.0 - micromatch: 4.0.7 + micromatch: 4.0.8 node-abort-controller: 3.1.1 nullthrows: 1.1.1 walker: 1.0.8 @@ -22969,33 +25370,33 @@ snapshots: transitivePeerDependencies: - supports-color - metro-minify-terser@0.80.9: + metro-minify-terser@0.80.6: dependencies: - terser: 5.31.1 + terser: 5.27.2 - metro-resolver@0.80.9: {} + metro-resolver@0.80.6: {} - metro-runtime@0.80.9: + metro-runtime@0.80.6: dependencies: - '@babel/runtime': 7.24.7 + '@babel/runtime': 7.23.9 - metro-source-map@0.80.9: + metro-source-map@0.80.6: dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 invariant: 2.2.4 - metro-symbolicate: 0.80.9 + metro-symbolicate: 0.80.6 nullthrows: 1.1.1 - ob1: 0.80.9 + ob1: 0.80.6 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - metro-symbolicate@0.80.9: + metro-symbolicate@0.80.6: dependencies: invariant: 2.2.4 - metro-source-map: 0.80.9 + metro-source-map: 0.80.6 nullthrows: 1.1.1 source-map: 0.5.7 through2: 2.0.5 @@ -23003,29 +25404,29 @@ snapshots: transitivePeerDependencies: - supports-color - metro-transform-plugins@0.80.9: + metro-transform-plugins@0.80.6: dependencies: '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 + '@babel/generator': 7.25.6 '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-transform-worker@0.80.9: + metro-transform-worker@0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10): dependencies: '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 - metro: 0.80.9 - metro-babel-transformer: 0.80.9 - metro-cache: 0.80.9 - metro-cache-key: 0.80.9 - metro-minify-terser: 0.80.9 - metro-source-map: 0.80.9 - metro-transform-plugins: 0.80.9 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + metro-babel-transformer: 0.80.6 + metro-cache: 0.80.6 + metro-cache-key: 0.80.6 + metro-minify-terser: 0.80.6 + metro-source-map: 0.80.6 + metro-transform-plugins: 0.80.6 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil @@ -23033,15 +25434,15 @@ snapshots: - supports-color - utf-8-validate - metro@0.80.9: + metro@0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10): dependencies: '@babel/code-frame': 7.24.7 '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -23050,33 +25451,33 @@ snapshots: denodeify: 1.2.1 error-stack-parser: 2.1.4 graceful-fs: 4.2.11 - hermes-parser: 0.20.1 + hermes-parser: 0.19.1 image-size: 1.1.1 invariant: 2.2.4 jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.80.9 - metro-cache: 0.80.9 - metro-cache-key: 0.80.9 - metro-config: 0.80.9 - metro-core: 0.80.9 - metro-file-map: 0.80.9 - metro-resolver: 0.80.9 - metro-runtime: 0.80.9 - metro-source-map: 0.80.9 - metro-symbolicate: 0.80.9 - metro-transform-plugins: 0.80.9 - metro-transform-worker: 0.80.9 + metro-babel-transformer: 0.80.6 + metro-cache: 0.80.6 + metro-cache-key: 0.80.6 + metro-config: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + metro-core: 0.80.6 + metro-file-map: 0.80.6 + metro-resolver: 0.80.6 + metro-runtime: 0.80.6 + metro-source-map: 0.80.6 + metro-symbolicate: 0.80.6 + metro-transform-plugins: 0.80.6 + metro-transform-worker: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) mime-types: 2.1.35 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) nullthrows: 1.1.1 rimraf: 3.0.2 serialize-error: 2.1.0 source-map: 0.5.7 strip-ansi: 6.0.1 throat: 5.0.0 - ws: 7.5.10 + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -23341,7 +25742,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.5 + debug: 4.3.4 decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -23360,7 +25761,12 @@ snapshots: transitivePeerDependencies: - supports-color - micromatch@4.0.7: + micromatch@4.0.5: + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 @@ -23381,10 +25787,18 @@ snapshots: mimic-fn@4.0.0: {} + mimic-function@5.0.1: {} + + mimic-response@1.0.1: {} + mimic-response@3.1.0: {} mimic-response@4.0.0: {} + min-document@2.19.0: + dependencies: + dom-walk: 0.1.2 + min-indent@1.0.1: {} minidenticons@4.2.1: {} @@ -23393,11 +25807,15 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: + minimatch@5.0.1: dependencies: brace-expansion: 2.0.1 @@ -23405,35 +25823,66 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.5: + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.4: dependencies: brace-expansion: 2.0.1 minimist@1.2.8: {} - minipass@3.3.6: + minipass@2.9.0: dependencies: - yallist: 4.0.0 + safe-buffer: 5.2.1 + yallist: 3.1.1 - minipass@5.0.0: {} + minipass@7.0.4: {} minipass@7.1.2: {} - minizlib@2.1.2: + minizlib@1.3.3: dependencies: - minipass: 3.3.6 - yallist: 4.0.0 + minipass: 2.9.0 + + mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4): + dependencies: + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8): + dependencies: + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod - mipd@0.0.5(typescript@5.5.3): + mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8): dependencies: - typescript: 5.5.3 - viem: 1.21.4(typescript@5.5.3) + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) + optionalDependencies: + typescript: 5.4.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - mkdirp-classic@0.5.3: {} + mipd@0.0.7(typescript@5.4.5): + optionalDependencies: + typescript: 5.4.5 + + mkdirp-promise@5.0.1: + dependencies: + mkdirp: 2.1.6 mkdirp@0.5.6: dependencies: @@ -23443,38 +25892,40 @@ snapshots: mkdirp@2.1.6: {} - mlly@1.7.1: + mlly@1.5.0: dependencies: - acorn: 8.12.0 + acorn: 8.11.3 pathe: 1.1.2 - pkg-types: 1.1.2 - ufo: 1.5.3 - - moralis@2.26.7(debug@4.3.5): - dependencies: - '@moralisweb3/api-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/aptos-api': 2.26.7(debug@4.3.5) - '@moralisweb3/auth': 2.26.7(debug@4.3.5) - '@moralisweb3/common-aptos-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-auth-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-core': 2.26.7(debug@4.3.5) - '@moralisweb3/common-evm-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-sol-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/common-streams-utils': 2.26.7(debug@4.3.5) - '@moralisweb3/evm-api': 2.26.7(debug@4.3.5) - '@moralisweb3/sol-api': 2.26.7(debug@4.3.5) - '@moralisweb3/streams': 2.26.7(debug@4.3.5) + pkg-types: 1.0.3 + ufo: 1.4.0 + + mock-fs@4.14.0: {} + + moralis@2.26.2(debug@4.3.4): + dependencies: + '@moralisweb3/api-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/aptos-api': 2.26.2(debug@4.3.4) + '@moralisweb3/auth': 2.26.2(debug@4.3.4) + '@moralisweb3/common-aptos-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-auth-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-core': 2.26.2(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-sol-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/common-streams-utils': 2.26.2(debug@4.3.4) + '@moralisweb3/evm-api': 2.26.2(debug@4.3.4) + '@moralisweb3/sol-api': 2.26.2(debug@4.3.4) + '@moralisweb3/streams': 2.26.2(debug@4.3.4) '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug motion@10.16.2: dependencies: - '@motionone/animation': 10.18.0 - '@motionone/dom': 10.18.0 + '@motionone/animation': 10.16.3 + '@motionone/dom': 10.16.4 '@motionone/svelte': 10.16.4 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 '@motionone/vue': 10.16.4 mri@1.2.0: {} @@ -23489,35 +25940,62 @@ snapshots: muggle-string@0.4.1: {} + multibase@0.6.1: + dependencies: + base-x: 3.0.9 + buffer: 5.7.1 + + multibase@0.7.0: + dependencies: + base-x: 3.0.9 + buffer: 5.7.1 + + multicodec@0.5.7: + dependencies: + varint: 5.0.2 + + multicodec@1.0.4: + dependencies: + buffer: 5.7.1 + varint: 5.0.2 + multiformats@11.0.2: {} multiformats@12.1.3: {} - multiformats@13.1.3: {} + multiformats@13.1.0: {} multiformats@9.9.0: {} + multihashes@0.4.21: + dependencies: + buffer: 5.7.1 + multibase: 0.7.0 + varint: 5.0.2 + murky@https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d: {} + mute-stream@0.0.8: {} + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 + nano-json-stream-parser@0.1.2: {} + nanoid@3.3.7: {} nanoid@4.0.2: {} - napi-wasm@1.1.0: {} - - native-fetch@3.0.0(node-fetch@2.7.0): + native-fetch@3.0.0(node-fetch@2.7.0(encoding@0.1.13)): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) - native-fetch@4.0.2(undici@5.28.4): + native-fetch@4.0.2(undici@5.28.3): dependencies: - undici: 5.28.4 + undici: 5.28.3 natural-compare@1.4.0: {} @@ -23525,6 +26003,8 @@ snapshots: neo-async@2.6.2: {} + neotraverse@0.6.18: {} + next-tick@1.1.0: {} nlcst-to-string@4.0.0: @@ -23534,7 +26014,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.6.3 + tslib: 2.6.2 nocache@3.0.4: {} @@ -23550,34 +26030,33 @@ snapshots: dependencies: minimatch: 3.1.2 - node-fetch-native@1.6.4: {} + node-fetch-native@1.6.2: {} - node-fetch@2.7.0: + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 node-forge@1.3.1: {} - node-gyp-build@4.8.1: {} + node-gyp-build@4.8.0: {} node-int64@0.4.0: {} node-releases@2.0.14: {} - node-stream-zip@1.15.0: {} + node-releases@2.0.18: {} - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 + node-stream-zip@1.15.0: {} normalize-path@3.0.0: {} normalize-range@0.1.2: {} - normalize-url@8.0.1: {} + normalize-url@6.1.0: {} + + normalize-url@8.0.0: {} not@0.1.0: {} @@ -23598,7 +26077,7 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.3.0: + npm-run-path@5.2.0: dependencies: path-key: 4.0.0 @@ -23613,18 +26092,11 @@ snapshots: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 - nwsapi@2.2.10: {} + nwsapi@2.2.7: {} - nypm@0.3.9: - dependencies: - citty: 0.1.6 - consola: 3.2.3 - execa: 8.0.1 - pathe: 1.1.2 - pkg-types: 1.1.2 - ufo: 1.5.3 + oauth-sign@0.9.0: {} - ob1@0.80.9: {} + ob1@0.80.6: {} obj-multiplex@1.0.0: dependencies: @@ -23636,12 +26108,7 @@ snapshots: object-hash@3.0.0: {} - object-inspect@1.13.2: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 + object-inspect@1.13.1: {} object-keys@1.1.1: {} @@ -23652,30 +26119,34 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 - object.fromentries@2.0.8: + object.fromentries@2.0.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 + es-abstract: 1.22.3 - object.groupby@1.0.3: + object.groupby@1.0.1: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.22.3 + get-intrinsic: 1.2.4 - object.values@1.2.0: + object.values@1.1.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-abstract: 1.22.3 + + oboe@2.1.5: + dependencies: + http-https: 1.0.0 - ofetch@1.3.4: + ofetch@1.3.3: dependencies: destr: 2.0.3 - node-fetch-native: 1.6.4 - ufo: 1.5.3 + node-fetch-native: 1.6.2 + ufo: 1.4.0 ohash@1.1.3: {} @@ -23703,6 +26174,14 @@ snapshots: dependencies: mimic-fn: 4.0.0 + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + oniguruma-to-js@0.4.3: + dependencies: + regex: 4.3.2 + open@6.4.0: dependencies: is-wsl: 1.1.0 @@ -23718,20 +26197,27 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + open@9.1.0: + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + openapi-types@12.1.3: {} optimism@https://codeload.github.com/ethereum-optimism/optimism/tar.gz/ab3a54febb36398539fd3b849c222b7e70169dc8: dependencies: - '@changesets/cli': 2.27.7 + '@changesets/cli': 2.27.8 - optionator@0.9.4: + optionator@0.9.3: dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.5 ora@5.4.1: dependencies: @@ -23757,10 +26243,10 @@ snapshots: strip-ansi: 7.1.0 wcwidth: 1.0.1 - ora@8.0.1: + ora@8.1.0: dependencies: chalk: 5.3.0 - cli-cursor: 4.0.0 + cli-cursor: 5.0.0 cli-spinners: 2.9.2 is-interactive: 2.0.0 is-unicode-supported: 2.0.0 @@ -23773,6 +26259,8 @@ snapshots: outdent@0.5.0: {} + p-cancelable@2.1.1: {} + p-cancelable@3.0.0: {} p-defer@3.0.0: {} @@ -23798,11 +26286,11 @@ snapshots: p-limit@4.0.0: dependencies: - yocto-queue: 1.1.1 + yocto-queue: 1.0.0 p-limit@5.0.0: dependencies: - yocto-queue: 1.1.1 + yocto-queue: 1.0.0 p-limit@6.1.0: dependencies: @@ -23846,7 +26334,9 @@ snapshots: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.6.3 + semver: 7.6.2 + + package-manager-detector@0.2.0: {} pagefind@1.1.0: optionalDependencies: @@ -23856,7 +26346,12 @@ snapshots: '@pagefind/linux-x64': 1.1.0 '@pagefind/windows-x64': 1.1.0 - pako@0.2.9: {} + pako@1.0.11: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 parent-module@1.0.1: dependencies: @@ -23875,6 +26370,8 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + parse-headers@2.0.5: {} + parse-json@4.0.0: dependencies: error-ex: 1.3.2 @@ -23882,7 +26379,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.23.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -23894,7 +26391,7 @@ snapshots: nlcst-to-string: 4.0.0 unist-util-modify-children: 4.0.0 unist-util-visit-children: 3.0.0 - vfile: 6.0.2 + vfile: 6.0.3 parse5@7.1.2: dependencies: @@ -23905,10 +26402,15 @@ snapshots: pascal-case@3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.6.3 + tslib: 2.6.2 path-browserify@1.0.1: {} + path-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + path-exists@3.0.0: {} path-exists@4.0.0: {} @@ -23923,23 +26425,28 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: + path-scurry@1.10.1: + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + + path-scurry@2.0.0: dependencies: - lru-cache: 10.3.0 + lru-cache: 11.0.1 minipass: 7.1.2 - path-to-regexp@0.1.7: {} + path-to-regexp@0.1.10: {} path-to-regexp@6.2.2: {} path-type@4.0.0: {} - path-type@5.0.0: {} - pathe@1.1.2: {} pathval@1.1.1: {} + pathval@2.0.0: {} + pbkdf2@3.1.2: dependencies: create-hash: 1.2.0 @@ -23948,11 +26455,7 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.11 - peek-stream@1.1.3: - dependencies: - buffer-from: 1.1.2 - duplexify: 3.7.1 - through2: 2.0.5 + performance-now@2.1.0: {} periscopic@3.1.0: dependencies: @@ -23960,7 +26463,9 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.2 - picocolors@1.0.1: {} + picocolors@1.0.0: {} + + picocolors@1.1.0: {} picomatch@2.3.1: {} @@ -23976,7 +26481,7 @@ snapshots: pino-abstract-transport@0.5.0: dependencies: - duplexify: 4.1.3 + duplexify: 4.1.2 split2: 4.2.0 pino-std-serializers@4.0.0: {} @@ -23984,7 +26489,7 @@ snapshots: pino@7.11.0: dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.5.0 + fast-redact: 3.3.0 on-exit-leak-free: 0.2.0 pino-abstract-transport: 0.5.0 pino-std-serializers: 4.0.0 @@ -24005,21 +26510,17 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-dir@5.0.0: - dependencies: - find-up: 5.0.0 - - pkg-types@1.1.2: + pkg-types@1.0.3: dependencies: - confbox: 0.1.7 - mlly: 1.7.1 + jsonc-parser: 3.2.0 + mlly: 1.5.0 pathe: 1.1.2 - playwright-core@1.45.0: {} + playwright-core@1.43.1: {} - playwright@1.45.0: + playwright@1.43.1: dependencies: - playwright-core: 1.45.0 + playwright-core: 1.43.1 optionalDependencies: fsevents: 2.3.2 @@ -24029,100 +26530,125 @@ snapshots: polished@4.3.1: dependencies: - '@babel/runtime': 7.24.7 + '@babel/runtime': 7.23.9 - pony-cause@2.1.11: {} + pony-cause@2.1.10: {} - possible-typed-array-names@1.0.0: {} - - postcss-import@15.1.0(postcss@8.4.39): + postcss-import@15.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.39 + postcss: 8.4.38 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-import@16.1.0(postcss@8.4.39): + postcss-import@16.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.39 + postcss: 8.4.38 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.39): + postcss-js@4.0.1(postcss@8.4.38): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.39 + postcss: 8.4.38 - postcss-js@4.0.1(postcss@8.4.41): + postcss-js@4.0.1(postcss@8.4.47): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.41 + postcss: 8.4.47 + + postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) - postcss-load-config@3.1.4(postcss@8.4.39): + postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)): dependencies: lilconfig: 2.1.0 - postcss: 8.4.39 yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.5) + + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): + dependencies: + lilconfig: 3.1.1 + yaml: 2.3.4 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)): + dependencies: + lilconfig: 3.1.1 + yaml: 2.3.4 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.5) - postcss-load-config@4.0.2(postcss@8.4.39): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)): dependencies: - lilconfig: 3.1.2 - postcss: 8.4.39 - yaml: 2.4.5 + lilconfig: 3.1.1 + yaml: 2.3.4 + optionalDependencies: + postcss: 8.4.47 + ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.5) + optional: true - postcss-nested@5.0.6(postcss@8.4.39): + postcss-nested@5.0.6(postcss@8.4.38): dependencies: - postcss: 8.4.39 - postcss-selector-parser: 6.1.0 + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 - postcss-nested@6.0.1(postcss@8.4.39): + postcss-nested@6.0.1(postcss@8.4.38): dependencies: - postcss: 8.4.39 - postcss-selector-parser: 6.1.0 + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 - postcss-nesting@12.1.5(postcss@8.4.39): + postcss-nesting@12.1.0(postcss@8.4.38): dependencies: - '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.1.0) - '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) - postcss: 8.4.39 - postcss-selector-parser: 6.1.0 + '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.15) + '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.15) + postcss: 8.4.38 + postcss-selector-parser: 6.0.15 - postcss-safe-parser@6.0.0(postcss@8.4.39): + postcss-safe-parser@6.0.0(postcss@8.4.38): dependencies: - postcss: 8.4.39 + postcss: 8.4.38 - postcss-scss@4.0.9(postcss@8.4.39): + postcss-scss@4.0.9(postcss@8.4.38): dependencies: - postcss: 8.4.39 + postcss: 8.4.38 - postcss-selector-parser@6.1.0: + postcss-selector-parser@6.0.15: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-value-parser@4.2.0: {} - - postcss@8.4.39: + postcss-selector-parser@6.0.16: dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} - postcss@8.4.41: + postcss@8.4.38: dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 + picocolors: 1.0.0 source-map-js: 1.2.0 - preact@10.22.1: {} - - preferred-pm@3.1.3: - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + + preact@10.19.5: {} preferred-pm@4.0.0: dependencies: @@ -24136,14 +26662,22 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-svelte@3.2.5(prettier@3.3.2)(svelte@4.2.18): + prettier-plugin-svelte@3.2.2(prettier@3.2.5)(svelte@4.2.13): + dependencies: + prettier: 3.2.5 + svelte: 4.2.13 + + prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.17): dependencies: - prettier: 3.3.2 - svelte: 4.2.18 + prettier: 3.2.5 + svelte: 4.2.17 + + prettier@2.8.7: + optional: true prettier@2.8.8: {} - prettier@3.3.2: {} + prettier@3.2.5: {} pretty-format@26.6.2: dependencies: @@ -24162,12 +26696,12 @@ snapshots: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.3.1 - - pretty-hrtime@1.0.3: {} + react-is: 18.2.0 prismjs@1.29.0: {} + process-nextick-args@1.0.7: {} + process-nextick-args@2.0.1: {} process-warning@1.0.0: {} @@ -24182,16 +26716,30 @@ snapshots: dependencies: asap: 2.0.6 + prompt@1.3.0: + dependencies: + '@colors/colors': 1.5.0 + async: 3.2.3 + read: 1.0.7 + revalidator: 0.1.8 + winston: 2.4.7 + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + property-information@6.5.0: {} proto-list@1.2.4: {} - protobufjs@7.3.2: + protobufjs@7.2.6: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -24203,7 +26751,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.14.9 + '@types/node': 20.12.7 long: 5.2.3 proxy-addr@2.0.7: @@ -24222,24 +26770,15 @@ snapshots: publint@0.1.16: dependencies: npm-packlist: 5.1.3 - picocolors: 1.0.1 + picocolors: 1.0.0 sade: 1.8.1 - pump@2.0.1: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - pumpify@1.5.1: - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 + punycode@2.1.0: {} punycode@2.3.1: {} @@ -24258,13 +26797,17 @@ snapshots: pngjs: 5.0.0 yargs: 15.4.1 - qs@6.11.0: + qs@6.13.0: dependencies: side-channel: 1.0.6 - qs@6.12.2: + qs@6.5.3: {} + + query-string@5.1.1: dependencies: - side-channel: 1.0.6 + decode-uri-component: 0.2.2 + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 query-string@7.1.3: dependencies: @@ -24273,8 +26816,6 @@ snapshots: split-on-first: 1.1.0 strict-uri-encode: 2.0.0 - querystring@0.2.1: {} - querystringify@2.2.0: {} queue-microtask@1.2.3: {} @@ -24287,9 +26828,7 @@ snapshots: quick-lru@5.1.1: {} - radix3@1.1.2: {} - - ramda@0.29.0: {} + radix3@1.1.0: {} randombytes@2.1.0: dependencies: @@ -24311,92 +26850,97 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-colorful@5.6.1(react-dom@18.3.1)(react@18.3.1): + react-colorful@5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) - react-confetti@6.1.0(react@18.3.1): + react-confetti@6.1.0(react@18.2.0): dependencies: - react: 18.3.1 + react: 18.2.0 tween-functions: 1.2.0 - react-devtools-core@5.3.0: + react-devtools-core@4.28.5(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: shell-quote: 1.8.1 - ws: 7.5.10 + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - react-dom@18.3.1(react@18.3.1): + react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 + react: 18.2.0 + scheduler: 0.23.0 - react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.3)(react@18.3.1): + react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0): dependencies: - '@babel/runtime': 7.24.7 + '@babel/runtime': 7.23.9 html-parse-stringify: 3.0.1 i18next: 22.5.1 - react: 18.3.1 - react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) + react: 18.2.0 + optionalDependencies: + react-dom: 18.2.0(react@18.2.0) + react-native: 0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) + + react-is@16.13.1: {} react-is@17.0.2: {} - react-is@18.3.1: {} + react-is@18.2.0: {} react-native-fetch-api@3.0.0: dependencies: p-defer: 3.0.0 - react-native-webview@11.26.1(react-native@0.74.3)(react@18.3.1): + react-native-webview@11.26.1(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0): dependencies: escape-string-regexp: 2.0.0 invariant: 2.2.4 - react: 18.3.1 - react-native: 0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1) + react: 18.2.0 + react-native: 0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) - react-native@0.74.3(@babel/core@7.25.2)(@babel/preset-env@7.24.7)(react@18.3.1): + react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 13.6.9 - '@react-native-community/cli-platform-android': 13.6.9 - '@react-native-community/cli-platform-ios': 13.6.9 - '@react-native/assets-registry': 0.74.85 - '@react-native/codegen': 0.74.85(@babel/preset-env@7.24.7) - '@react-native/community-cli-plugin': 0.74.85(@babel/core@7.25.2)(@babel/preset-env@7.24.7) - '@react-native/gradle-plugin': 0.74.85 - '@react-native/js-polyfills': 0.74.85 - '@react-native/normalize-colors': 0.74.85 - '@react-native/virtualized-lists': 0.74.85(react-native@0.74.3)(react@18.3.1) + '@react-native-community/cli': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native-community/cli-platform-android': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-platform-ios': 12.3.2(encoding@0.1.13) + '@react-native/assets-registry': 0.73.1 + '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9(@babel/core@7.25.2)) + '@react-native/community-cli-plugin': 0.73.16(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native/gradle-plugin': 0.73.4 + '@react-native/js-polyfills': 0.73.1 + '@react-native/normalize-colors': 0.73.2 + '@react-native/virtualized-lists': 0.73.4(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 base64-js: 1.5.1 chalk: 4.1.2 + deprecated-react-native-prop-types: 5.0.0 event-target-shim: 5.0.1 flow-enums-runtime: 0.0.6 invariant: 2.2.4 jest-environment-node: 29.7.0 jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-runtime: 0.80.9 - metro-source-map: 0.80.9 + metro-runtime: 0.80.6 + metro-source-map: 0.80.6 mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 26.6.2 promise: 8.3.0 - react: 18.3.1 - react-devtools-core: 5.3.0 - react-refresh: 0.14.2 - react-shallow-renderer: 16.15.0(react@18.3.1) + react: 18.2.0 + react-devtools-core: 4.28.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) + react-refresh: 0.14.0 + react-shallow-renderer: 16.15.0(react@18.2.0) regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 stacktrace-parser: 0.1.10 whatwg-fetch: 3.6.20 - ws: 6.2.3 + ws: 6.2.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) yargs: 17.7.2 transitivePeerDependencies: - '@babel/core' @@ -24406,40 +26950,15 @@ snapshots: - supports-color - utf-8-validate - react-refresh@0.14.2: {} - - react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): - dependencies: - '@types/react': 18.3.3 - react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.3 - - react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): - dependencies: - '@types/react': 18.3.3 - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.3 - use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) + react-refresh@0.14.0: {} - react-shallow-renderer@16.15.0(react@18.3.1): + react-shallow-renderer@16.15.0(react@18.2.0): dependencies: object-assign: 4.1.1 - react: 18.3.1 - react-is: 18.3.1 - - react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): - dependencies: - '@types/react': 18.3.3 - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.3.1 - tslib: 2.6.3 + react: 18.2.0 + react-is: 18.2.0 - react@18.3.1: + react@18.2.0: dependencies: loose-envify: 1.4.0 @@ -24447,19 +26966,6 @@ snapshots: dependencies: pify: 2.3.0 - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -24467,6 +26973,20 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + read@1.0.7: + dependencies: + mute-stream: 0.0.8 + + readable-stream@2.3.3: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 1.0.7 + safe-buffer: 5.1.2 + string_decoder: 1.0.3 + util-deprecate: 1.0.2 + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -24487,6 +27007,8 @@ snapshots: dependencies: picomatch: 2.3.1 + readdirp@4.0.1: {} + readline@1.3.0: {} real-require@0.1.0: {} @@ -24496,7 +27018,7 @@ snapshots: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.6.3 + tslib: 2.6.2 recast@0.23.9: dependencies: @@ -24504,7 +27026,7 @@ snapshots: esprima: 4.0.1 source-map: 0.6.1 tiny-invariant: 1.3.3 - tslib: 2.6.3 + tslib: 2.6.2 receptacle@1.3.2: dependencies: @@ -24515,6 +27037,12 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + redis-errors@1.2.0: {} + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + regenerate-unicode-properties@10.1.1: dependencies: regenerate: 1.4.2 @@ -24527,14 +27055,15 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.24.7 + '@babel/runtime': 7.23.9 + + regex@4.3.2: {} - regexp.prototype.flags@1.5.2: + regexp.prototype.flags@1.5.1: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 + set-function-name: 2.0.1 regexpp@3.2.0: {} @@ -24600,8 +27129,8 @@ snapshots: rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 - hast-util-raw: 9.0.4 - vfile: 6.0.2 + hast-util-raw: 9.0.3 + vfile: 6.0.3 rehype-slug@6.0.0: dependencies: @@ -24654,7 +27183,7 @@ snapshots: remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.1 + mdast-util-from-markdown: 2.0.0 micromark-util-types: 2.0.0 unified: 11.0.5 transitivePeerDependencies: @@ -24664,14 +27193,14 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.1.0 unified: 11.0.5 - vfile: 6.0.2 + vfile: 6.0.3 remark-smartypants@3.0.2: dependencies: retext: 9.0.0 - retext-smartypants: 6.1.0 + retext-smartypants: 6.1.1 unified: 11.0.5 unist-util-visit: 5.0.0 @@ -24681,8 +27210,33 @@ snapshots: mdast-util-to-markdown: 2.1.0 unified: 11.0.5 + request-light@0.5.8: {} + request-light@0.7.0: {} + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -24705,10 +27259,14 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.14.0 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + responselike@3.0.0: dependencies: lowercase-keys: 3.0.0 @@ -24723,13 +27281,18 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + retext-latin@4.0.0: dependencies: '@types/nlcst': 2.0.3 parse-latin: 7.0.0 unified: 11.0.5 - retext-smartypants@6.1.0: + retext-smartypants@6.1.1: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 @@ -24750,8 +27313,12 @@ snapshots: retimer@3.0.0: {} + retry@0.13.1: {} + reusify@1.0.4: {} + revalidator@0.1.8: {} + rimraf@2.6.3: dependencies: glob: 7.2.3 @@ -24764,6 +27331,10 @@ snapshots: dependencies: glob: 7.2.3 + rimraf@5.0.10: + dependencies: + glob: 10.3.10 + ripemd160@2.0.2: dependencies: hash-base: 3.1.0 @@ -24775,42 +27346,87 @@ snapshots: dependencies: bn.js: 5.2.1 - rollup-plugin-visualizer@5.12.0: + rollup-plugin-visualizer@5.12.0(rollup@4.21.3): dependencies: open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.7.2 + optionalDependencies: + rollup: 4.21.3 rollup@3.29.4: optionalDependencies: fsevents: 2.3.3 - rollup@4.18.0: + rollup@4.12.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.12.0 + '@rollup/rollup-android-arm64': 4.12.0 + '@rollup/rollup-darwin-arm64': 4.12.0 + '@rollup/rollup-darwin-x64': 4.12.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.12.0 + '@rollup/rollup-linux-arm64-gnu': 4.12.0 + '@rollup/rollup-linux-arm64-musl': 4.12.0 + '@rollup/rollup-linux-riscv64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-musl': 4.12.0 + '@rollup/rollup-win32-arm64-msvc': 4.12.0 + '@rollup/rollup-win32-ia32-msvc': 4.12.0 + '@rollup/rollup-win32-x64-msvc': 4.12.0 + fsevents: 2.3.3 + + rollup@4.17.2: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.18.0 - '@rollup/rollup-android-arm64': 4.18.0 - '@rollup/rollup-darwin-arm64': 4.18.0 - '@rollup/rollup-darwin-x64': 4.18.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 - '@rollup/rollup-linux-arm-musleabihf': 4.18.0 - '@rollup/rollup-linux-arm64-gnu': 4.18.0 - '@rollup/rollup-linux-arm64-musl': 4.18.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 - '@rollup/rollup-linux-riscv64-gnu': 4.18.0 - '@rollup/rollup-linux-s390x-gnu': 4.18.0 - '@rollup/rollup-linux-x64-gnu': 4.18.0 - '@rollup/rollup-linux-x64-musl': 4.18.0 - '@rollup/rollup-win32-arm64-msvc': 4.18.0 - '@rollup/rollup-win32-ia32-msvc': 4.18.0 - '@rollup/rollup-win32-x64-msvc': 4.18.0 + '@rollup/rollup-android-arm-eabi': 4.17.2 + '@rollup/rollup-android-arm64': 4.17.2 + '@rollup/rollup-darwin-arm64': 4.17.2 + '@rollup/rollup-darwin-x64': 4.17.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.17.2 + '@rollup/rollup-linux-arm-musleabihf': 4.17.2 + '@rollup/rollup-linux-arm64-gnu': 4.17.2 + '@rollup/rollup-linux-arm64-musl': 4.17.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2 + '@rollup/rollup-linux-riscv64-gnu': 4.17.2 + '@rollup/rollup-linux-s390x-gnu': 4.17.2 + '@rollup/rollup-linux-x64-gnu': 4.17.2 + '@rollup/rollup-linux-x64-musl': 4.17.2 + '@rollup/rollup-win32-arm64-msvc': 4.17.2 + '@rollup/rollup-win32-ia32-msvc': 4.17.2 + '@rollup/rollup-win32-x64-msvc': 4.17.2 + fsevents: 2.3.3 + + rollup@4.21.3: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.21.3 + '@rollup/rollup-android-arm64': 4.21.3 + '@rollup/rollup-darwin-arm64': 4.21.3 + '@rollup/rollup-darwin-x64': 4.21.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.3 + '@rollup/rollup-linux-arm-musleabihf': 4.21.3 + '@rollup/rollup-linux-arm64-gnu': 4.21.3 + '@rollup/rollup-linux-arm64-musl': 4.21.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.3 + '@rollup/rollup-linux-riscv64-gnu': 4.21.3 + '@rollup/rollup-linux-s390x-gnu': 4.21.3 + '@rollup/rollup-linux-x64-gnu': 4.21.3 + '@rollup/rollup-linux-x64-musl': 4.21.3 + '@rollup/rollup-win32-arm64-msvc': 4.21.3 + '@rollup/rollup-win32-ia32-msvc': 4.21.3 + '@rollup/rollup-win32-x64-msvc': 4.21.3 fsevents: 2.3.3 rrweb-cssom@0.6.0: {} - rrweb-cssom@0.7.1: {} + run-applescript@5.0.0: + dependencies: + execa: 5.1.1 run-parallel@1.2.0: dependencies: @@ -24820,7 +27436,7 @@ snapshots: dependencies: mri: 1.2.0 - safe-array-concat@1.1.2: + safe-array-concat@1.0.1: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 @@ -24831,10 +27447,10 @@ snapshots: safe-buffer@5.2.1: {} - safe-regex-test@1.0.3: + safe-regex-test@1.0.0: dependencies: call-bind: 1.0.7 - es-errors: 1.3.0 + get-intrinsic: 1.2.4 is-regex: 1.1.4 safe-stable-stringify@2.4.3: {} @@ -24848,13 +27464,13 @@ snapshots: mkdirp: 0.5.6 rimraf: 2.7.1 - sax@1.4.1: {} + sax@1.3.0: {} saxes@6.0.0: dependencies: xmlchars: 2.2.0 - scheduler@0.23.2: + scheduler@0.23.0: dependencies: loose-envify: 1.4.0 @@ -24866,35 +27482,34 @@ snapshots: secp256k1@4.0.3: dependencies: - elliptic: 6.5.5 + elliptic: 6.5.7 node-addon-api: 2.0.2 - node-gyp-build: 4.8.1 + node-gyp-build: 4.8.0 secp256k1@5.0.0: dependencies: - elliptic: 6.5.5 + elliptic: 6.5.4 node-addon-api: 5.1.0 - node-gyp-build: 4.8.1 + node-gyp-build: 4.8.0 section-matter@1.0.0: dependencies: extend-shallow: 2.0.1 kind-of: 6.0.3 - selfsigned@2.4.1: - dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 - semver@5.7.2: {} semver@6.3.1: {} + semver@7.6.0: + dependencies: + lru-cache: 6.0.0 + semver@7.6.2: {} semver@7.6.3: {} - send@0.18.0: + send@0.19.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -24912,14 +27527,39 @@ snapshots: transitivePeerDependencies: - supports-color + sentence-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case-first: 2.0.2 + serialize-error@2.1.0: {} - serve-static@1.15.0: + serve-static@1.16.2: dependencies: - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + serverless@4.4.3: + dependencies: + axios: 1.7.7 + axios-proxy-builder: 0.1.2 + rimraf: 5.0.10 + xml2js: 0.6.2 + transitivePeerDependencies: + - debug + + servify@0.1.12: + dependencies: + body-parser: 1.20.3 + cors: 2.8.5 + express: 4.21.0 + request: 2.88.2 + xhr: 2.6.0 transitivePeerDependencies: - supports-color @@ -24927,7 +27567,7 @@ snapshots: set-cookie-parser@2.6.0: {} - set-function-length@1.2.2: + set-function-length@1.2.1: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -24936,10 +27576,9 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: + set-function-name@2.0.1: dependencies: define-data-property: 1.1.4 - es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 @@ -24956,14 +27595,14 @@ snapshots: dependencies: kind-of: 6.0.3 - sharp@0.33.4: + sharp@0.33.3: dependencies: color: 4.2.3 detect-libc: 2.0.3 - semver: 7.6.2 + semver: 7.6.0 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.4 - '@img/sharp-darwin-x64': 0.33.4 + '@img/sharp-darwin-arm64': 0.33.3 + '@img/sharp-darwin-x64': 0.33.3 '@img/sharp-libvips-darwin-arm64': 1.0.2 '@img/sharp-libvips-darwin-x64': 1.0.2 '@img/sharp-libvips-linux-arm': 1.0.2 @@ -24972,15 +27611,15 @@ snapshots: '@img/sharp-libvips-linux-x64': 1.0.2 '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - '@img/sharp-linux-arm': 0.33.4 - '@img/sharp-linux-arm64': 0.33.4 - '@img/sharp-linux-s390x': 0.33.4 - '@img/sharp-linux-x64': 0.33.4 - '@img/sharp-linuxmusl-arm64': 0.33.4 - '@img/sharp-linuxmusl-x64': 0.33.4 - '@img/sharp-wasm32': 0.33.4 - '@img/sharp-win32-ia32': 0.33.4 - '@img/sharp-win32-x64': 0.33.4 + '@img/sharp-linux-arm': 0.33.3 + '@img/sharp-linux-arm64': 0.33.3 + '@img/sharp-linux-s390x': 0.33.3 + '@img/sharp-linux-x64': 0.33.3 + '@img/sharp-linuxmusl-arm64': 0.33.3 + '@img/sharp-linuxmusl-x64': 0.33.3 + '@img/sharp-wasm32': 0.33.3 + '@img/sharp-win32-ia32': 0.33.3 + '@img/sharp-win32-x64': 0.33.3 shebang-command@1.2.0: dependencies: @@ -24996,21 +27635,31 @@ snapshots: shell-quote@1.8.1: {} - shiki@1.10.0: + shiki@1.17.6: dependencies: - '@shikijs/core': 1.10.0 + '@shikijs/core': 1.17.6 + '@shikijs/engine-javascript': 1.17.6 + '@shikijs/engine-oniguruma': 1.17.6 + '@shikijs/types': 1.17.6 + '@shikijs/vscode-textmate': 9.2.2 + '@types/hast': 3.0.4 - shiki@1.12.1: + shiki@1.5.2: dependencies: - '@shikijs/core': 1.12.1 - '@types/hast': 3.0.4 + '@shikijs/core': 1.5.2 + + side-channel@1.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.2 + object-inspect: 1.13.1 siginfo@2.0.0: {} @@ -25018,13 +27667,21 @@ snapshots: signal-exit@4.1.0: {} + simple-concat@1.0.1: {} + + simple-get@2.8.2: + dependencies: + decompress-response: 3.3.0 + once: 1.4.0 + simple-concat: 1.0.1 + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 sirv@2.0.4: dependencies: - '@polka/url': 1.0.0-next.25 + '@polka/url': 1.0.0-next.24 mrmime: 2.0.0 totalist: 3.0.1 @@ -25035,11 +27692,11 @@ snapshots: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.4.1 + sax: 1.3.0 slash@3.0.0: {} - slash@5.1.0: {} + slash@4.0.0: {} slice-ansi@2.1.0: dependencies: @@ -25053,11 +27710,27 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - socket.io-client@4.7.5: + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + + socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3): dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.5 - engine.io-client: 6.5.4 + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3) socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil @@ -25066,8 +27739,8 @@ snapshots: socket.io-parser@4.2.4: dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.5 + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -25079,7 +27752,7 @@ snapshots: dependencies: command-exists: 1.2.9 commander: 8.3.0 - follow-redirects: 1.15.6(debug@4.3.5) + follow-redirects: 1.15.5(debug@4.3.4) js-sha3: 0.8.0 memorystream: 0.3.1 semver: 5.7.2 @@ -25087,15 +27760,15 @@ snapshots: transitivePeerDependencies: - debug - solhint@4.5.4(typescript@5.5.3): + solhint@4.5.4(typescript@5.4.3): dependencies: '@solidity-parser/parser': 0.18.0 ajv: 6.12.6 - antlr4: 4.13.1-patch-1 + antlr4: 4.13.1 ast-parents: 0.0.1 chalk: 4.1.2 commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@5.5.3) + cosmiconfig: 8.3.6(typescript@5.4.3) fast-diff: 1.3.0 glob: 8.1.0 ignore: 5.3.1 @@ -25103,24 +27776,24 @@ snapshots: latest-version: 7.0.0 lodash: 4.17.21 pluralize: 8.0.0 - semver: 7.6.2 + semver: 7.6.0 strip-ansi: 6.0.1 - table: 6.8.2 + table: 6.8.1 text-table: 0.2.0 optionalDependencies: prettier: 2.8.8 transitivePeerDependencies: - typescript - solhint@5.0.3(typescript@5.5.3): + solhint@4.5.4(typescript@5.4.5): dependencies: '@solidity-parser/parser': 0.18.0 ajv: 6.12.6 - antlr4: 4.13.1-patch-1 + antlr4: 4.13.1 ast-parents: 0.0.1 chalk: 4.1.2 commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@5.5.3) + cosmiconfig: 8.3.6(typescript@5.4.5) fast-diff: 1.3.0 glob: 8.1.0 ignore: 5.3.1 @@ -25128,9 +27801,34 @@ snapshots: latest-version: 7.0.0 lodash: 4.17.21 pluralize: 8.0.0 - semver: 7.6.3 + semver: 7.6.0 + strip-ansi: 6.0.1 + table: 6.8.1 + text-table: 0.2.0 + optionalDependencies: + prettier: 2.8.8 + transitivePeerDependencies: + - typescript + + solhint@5.0.3(typescript@5.4.3): + dependencies: + '@solidity-parser/parser': 0.18.0 + ajv: 6.12.6 + antlr4: 4.13.1 + ast-parents: 0.0.1 + chalk: 4.1.2 + commander: 10.0.1 + cosmiconfig: 8.3.6(typescript@5.4.3) + fast-diff: 1.3.0 + glob: 8.1.0 + ignore: 5.3.1 + js-yaml: 4.1.0 + latest-version: 7.0.0 + lodash: 4.17.21 + pluralize: 8.0.0 + semver: 7.6.2 strip-ansi: 6.0.1 - table: 6.8.2 + table: 6.8.1 text-table: 0.2.0 optionalDependencies: prettier: 2.8.8 @@ -25143,15 +27841,17 @@ snapshots: dependencies: atomic-sleep: 1.0.0 - sorcery@0.11.1: + sorcery@0.11.0: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - buffer-crc32: 1.0.0 + buffer-crc32: 0.2.13 minimist: 1.2.8 sander: 0.5.1 source-map-js@1.2.0: {} + source-map-js@1.2.1: {} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -25172,26 +27872,26 @@ snapshots: cross-spawn: 5.1.0 signal-exit: 3.0.7 - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.18 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.18 - - spdx-license-ids@3.0.18: {} - split-on-first@1.1.0: {} split2@4.2.0: {} sprintf-js@1.0.3: {} + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + + stack-trace@0.0.10: {} + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -25204,10 +27904,12 @@ snapshots: dependencies: type-fest: 0.7.1 - starlight-links-validator@0.8.0(@astrojs/starlight@0.25.4)(astro@4.13.3): + standard-as-callback@2.1.0: {} + + starlight-links-validator@0.8.0(@astrojs/starlight@0.25.5(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)))(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)): dependencies: - '@astrojs/starlight': 0.25.4(astro@4.13.3) - astro: 4.13.3(typescript@5.5.3) + '@astrojs/starlight': 0.25.5(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)) + astro: 4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5) github-slugger: 2.0.0 hast-util-from-html: 2.0.1 hast-util-has-property: 3.0.0 @@ -25216,12 +27918,12 @@ snapshots: mdast-util-to-string: 4.0.0 unist-util-visit: 5.0.0 - starlight-openapi@0.6.4(@astrojs/markdown-remark@5.2.0)(@astrojs/starlight@0.25.4)(astro@4.13.3)(openapi-types@12.1.3): + starlight-openapi@0.6.3(@astrojs/markdown-remark@5.2.0)(@astrojs/starlight@0.25.5(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)))(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5))(openapi-types@12.1.3): dependencies: '@astrojs/markdown-remark': 5.2.0 - '@astrojs/starlight': 0.25.4(astro@4.13.3) + '@astrojs/starlight': 0.25.5(astro@4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5)) '@readme/openapi-parser': 2.5.0(openapi-types@12.1.3) - astro: 4.13.3(typescript@5.5.3) + astro: 4.15.6(@types/node@20.12.7)(rollup@4.21.3)(terser@5.27.2)(typescript@5.4.5) github-slugger: 2.0.0 transitivePeerDependencies: - openapi-types @@ -25238,17 +27940,11 @@ snapshots: stdin-discarder@0.2.2: {} - store2@2.14.3: {} - - storybook@8.1.11(react-dom@18.3.1)(react@18.3.1): + storybook@8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): dependencies: - '@storybook/cli': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/core': 8.3.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) transitivePeerDependencies: - - '@babel/preset-env' - bufferutil - - encoding - - react - - react-dom - supports-color - utf-8-validate @@ -25259,12 +27955,14 @@ snapshots: stream-replace-string@2.0.0: {} - stream-shift@1.0.3: {} + stream-shift@1.0.1: {} stream-to-it@0.2.4: dependencies: get-iterator: 1.0.2 + strict-uri-encode@1.1.0: {} + strict-uri-encode@2.0.0: {} string-width@4.2.3: @@ -25285,24 +27983,27 @@ snapshots: get-east-asian-width: 1.2.0 strip-ansi: 7.1.0 - string.prototype.trim@1.2.9: + string.prototype.trim@1.2.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 + es-abstract: 1.22.3 - string.prototype.trimend@1.0.8: + string.prototype.trimend@1.0.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-abstract: 1.22.3 - string.prototype.trimstart@1.0.8: + string.prototype.trimstart@1.0.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-abstract: 1.22.3 + + string_decoder@1.0.3: + dependencies: + safe-buffer: 5.1.2 string_decoder@1.1.1: dependencies: @@ -25349,9 +28050,9 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@2.1.0: + strip-literal@2.0.0: dependencies: - js-tokens: 9.0.0 + js-tokens: 8.0.3 strnum@1.0.5: {} @@ -25363,11 +28064,13 @@ snapshots: dependencies: inline-style-parser: 0.2.3 + stylis@4.2.0: {} + sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 - glob: 10.4.2 + glob: 10.3.10 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -25375,7 +28078,7 @@ snapshots: sudo-prompt@9.2.1: {} - superstruct@1.0.4: {} + superstruct@1.0.3: {} supports-color@5.5.0: dependencies: @@ -25391,15 +28094,61 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.8.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18): + svelte-check@3.7.1(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 3.6.0 + fast-glob: 3.3.2 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 4.2.13 + svelte-preprocess: 5.1.3(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + + svelte-check@3.7.1(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.17): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 3.6.0 + fast-glob: 3.3.2 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 4.2.17 + svelte-preprocess: 5.1.3(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.17)(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + + svelte-check@3.7.1(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.38)(svelte@4.2.17): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 - picocolors: 1.0.1 + fast-glob: 3.3.2 + import-fresh: 3.3.0 + picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.18 - svelte-preprocess: 5.1.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.3) - typescript: 5.5.3 + svelte: 4.2.17 + svelte-preprocess: 5.1.3(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.38)(svelte@4.2.17)(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -25411,15 +28160,17 @@ snapshots: - stylus - sugarss - svelte-check@3.8.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18): + svelte-check@3.7.1(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.47)(svelte@4.2.17): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 - picocolors: 1.0.1 + fast-glob: 3.3.2 + import-fresh: 3.3.0 + picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.18 - svelte-preprocess: 5.1.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18)(typescript@5.5.3) - typescript: 5.5.3 + svelte: 4.2.17 + svelte-preprocess: 5.1.3(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.47)(svelte@4.2.17)(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -25431,76 +28182,142 @@ snapshots: - stylus - sugarss - svelte-copy@1.4.2(svelte@4.2.18): + svelte-copy@1.4.2(svelte@4.2.13): + dependencies: + svelte: 4.2.13 + + svelte-copy@1.4.2(svelte@4.2.17): + dependencies: + svelte: 4.2.17 + + svelte-eslint-parser@0.35.0(svelte@4.2.13): dependencies: - svelte: 4.2.18 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + postcss: 8.4.38 + postcss-scss: 4.0.9(postcss@8.4.38) + optionalDependencies: + svelte: 4.2.13 - svelte-eslint-parser@0.39.2(svelte@4.2.18): + svelte-eslint-parser@0.35.0(svelte@4.2.17): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.39 - postcss-scss: 4.0.9(postcss@8.4.39) - svelte: 4.2.18 + postcss: 8.4.38 + postcss-scss: 4.0.9(postcss@8.4.38) + optionalDependencies: + svelte: 4.2.17 + + svelte-hmr@0.16.0(svelte@4.2.13): + dependencies: + svelte: 4.2.13 + + svelte-hmr@0.16.0(svelte@4.2.17): + dependencies: + svelte: 4.2.17 - svelte-hmr@0.16.0(svelte@4.2.18): + svelte-i18n@4.0.0(svelte@4.2.13): dependencies: - svelte: 4.2.18 + cli-color: 2.0.3 + deepmerge: 4.3.1 + esbuild: 0.19.12 + estree-walker: 2.0.2 + intl-messageformat: 10.5.11 + sade: 1.8.1 + svelte: 4.2.13 + tiny-glob: 0.2.9 - svelte-i18n@4.0.0(svelte@4.2.18): + svelte-i18n@4.0.0(svelte@4.2.17): dependencies: - cli-color: 2.0.4 + cli-color: 2.0.3 deepmerge: 4.3.1 esbuild: 0.19.12 estree-walker: 2.0.2 - intl-messageformat: 10.5.14 + intl-messageformat: 10.5.11 sade: 1.8.1 - svelte: 4.2.18 + svelte: 4.2.17 tiny-glob: 0.2.9 - svelte-preprocess@5.1.4(@babel/core@7.24.7)(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.3): + svelte-preprocess@5.1.3(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.5): dependencies: - '@babel/core': 7.24.7 '@types/pug': 2.0.10 detect-indent: 6.1.0 - magic-string: 0.30.10 - postcss: 8.4.41 - sorcery: 0.11.1 + magic-string: 0.30.9 + sorcery: 0.11.0 + strip-indent: 3.0.0 + svelte: 4.2.13 + optionalDependencies: + '@babel/core': 7.25.2 + postcss: 8.4.38 + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + typescript: 5.4.5 + + svelte-preprocess@5.1.3(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.17)(typescript@5.4.5): + dependencies: + '@types/pug': 2.0.10 + detect-indent: 6.1.0 + magic-string: 0.30.9 + sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.18 - typescript: 5.5.3 + svelte: 4.2.17 + optionalDependencies: + '@babel/core': 7.25.2 + postcss: 8.4.38 + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + typescript: 5.4.5 - svelte-preprocess@5.1.4(@babel/core@7.25.2)(postcss@8.4.39)(svelte@4.2.18)(typescript@5.5.3): + svelte-preprocess@5.1.3(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.38)(svelte@4.2.17)(typescript@5.4.5): dependencies: + '@types/pug': 2.0.10 + detect-indent: 6.1.0 + magic-string: 0.30.9 + sorcery: 0.11.0 + strip-indent: 3.0.0 + svelte: 4.2.17 + optionalDependencies: '@babel/core': 7.25.2 + postcss: 8.4.38 + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) + typescript: 5.4.5 + + svelte-preprocess@5.1.3(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(postcss@8.4.47)(svelte@4.2.17)(typescript@5.4.5): + dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 - magic-string: 0.30.10 - postcss: 8.4.39 - sorcery: 0.11.1 + magic-string: 0.30.9 + sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.18 - typescript: 5.5.3 + svelte: 4.2.17 + optionalDependencies: + '@babel/core': 7.25.2 + postcss: 8.4.47 + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) + typescript: 5.4.5 + + svelte-scrolling@1.4.0(svelte@4.2.13): + dependencies: + svelte: 4.2.13 - svelte-scrolling@1.4.0(svelte@4.2.18): + svelte-scrolling@1.4.0(svelte@4.2.17): dependencies: - svelte: 4.2.18 + svelte: 4.2.17 - svelte2tsx@0.7.13(svelte@4.2.18)(typescript@5.5.3): + svelte2tsx@0.7.19(svelte@4.2.17)(typescript@5.4.5): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.18 - typescript: 5.5.3 + svelte: 4.2.17 + typescript: 5.4.5 - svelte@4.2.18: + svelte@4.2.13: dependencies: - '@ampproject/remapping': 2.3.0 + '@ampproject/remapping': 2.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 '@types/estree': 1.0.5 - acorn: 8.12.0 + acorn: 8.11.3 aria-query: 5.3.0 axobject-query: 4.0.0 code-red: 1.0.4 @@ -25508,7 +28325,24 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.10 + magic-string: 0.30.9 + periscopic: 3.1.0 + + svelte@4.2.17: + dependencies: + '@ampproject/remapping': 2.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + '@types/estree': 1.0.5 + acorn: 8.11.3 + aria-query: 5.3.0 + axobject-query: 4.0.0 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.9 periscopic: 3.1.0 sveltedoc-parser@4.2.1: @@ -25519,18 +28353,36 @@ snapshots: transitivePeerDependencies: - supports-color + swarm-js@0.1.42(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + bluebird: 3.7.2 + buffer: 5.7.1 + eth-lib: 0.1.29(bufferutil@4.0.8)(utf-8-validate@5.0.10) + fs-extra: 4.0.3 + got: 11.8.6 + mime-types: 2.1.35 + mkdirp-promise: 5.0.1 + mock-fs: 4.14.0 + setimmediate: 1.0.5 + tar: 4.4.19 + xhr-request: 1.1.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + symbol-tree@3.2.4: {} - synckit@0.8.8: + synckit@0.8.6: dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.6.3 + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 system-architecture@0.1.0: {} - table@6.8.2: + table@6.8.1: dependencies: - ajv: 8.16.0 + ajv: 8.12.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -25541,7 +28393,7 @@ snapshots: flat: 4.1.1 lodash: 4.17.21 - tailwindcss@3.4.4: + tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -25551,46 +28403,59 @@ snapshots: fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.6 + jiti: 1.21.0 lilconfig: 2.1.0 - micromatch: 4.0.7 + micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.1 - postcss: 8.4.39 - postcss-import: 15.1.0(postcss@8.4.39) - postcss-js: 4.0.1(postcss@8.4.39) - postcss-load-config: 4.0.2(postcss@8.4.39) - postcss-nested: 6.0.1(postcss@8.4.39) - postcss-selector-parser: 6.1.0 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.0.15 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: - ts-node - tar-fs@2.1.1: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - - tar-stream@2.2.0: + tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)): dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.0.15 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node - tar@6.2.1: + tar@4.4.19: dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 + chownr: 1.1.4 + fs-minipass: 1.2.7 + minipass: 2.9.0 + minizlib: 1.3.3 + mkdirp: 0.5.6 + safe-buffer: 5.2.1 + yallist: 3.1.1 telejson@7.2.0: dependencies: @@ -25598,24 +28463,15 @@ snapshots: temp-dir@2.0.0: {} - temp-dir@3.0.0: {} - temp@0.8.4: dependencies: rimraf: 2.6.3 - tempy@3.1.0: - dependencies: - is-stream: 3.0.0 - temp-dir: 3.0.0 - type-fest: 2.19.0 - unique-string: 3.0.0 - term-size@2.2.1: {} - terser@5.31.1: + terser@5.27.2: dependencies: - '@jridgewell/source-map': 0.3.6 + '@jridgewell/source-map': 0.3.5 acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -25647,13 +28503,15 @@ snapshots: readable-stream: 2.3.8 xtend: 4.0.2 + timed-out@4.0.1: {} + timeout-abort-controller@3.0.0: dependencies: retimer: 3.0.0 - timers-ext@0.1.8: + timers-ext@0.1.7: dependencies: - es5-ext: 0.10.64 + es5-ext: 0.10.62 next-tick: 1.1.0 tiny-glob@0.2.9: @@ -25663,11 +28521,19 @@ snapshots: tiny-invariant@1.3.3: {} - tinybench@2.8.0: {} + tinybench@2.6.0: {} + + tinyexec@0.3.0: {} + + tinypool@0.8.3: {} - tinypool@0.8.4: {} + tinyrainbow@1.2.0: {} - tinyspy@2.2.1: {} + tinyspy@2.2.0: {} + + tinyspy@3.0.2: {} + + titleize@3.0.0: {} tmp@0.0.33: dependencies: @@ -25681,13 +28547,16 @@ snapshots: dependencies: is-number: 7.0.0 - tocbot@4.28.2: {} - toidentifier@1.0.1: {} totalist@3.0.1: {} - tough-cookie@4.1.4: + tough-cookie@2.5.0: + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + + tough-cookie@4.1.3: dependencies: psl: 1.9.0 punycode: 2.3.1 @@ -25706,15 +28575,23 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.3.0(typescript@5.5.3): + ts-api-utils@1.2.1(typescript@5.4.3): dependencies: - typescript: 5.5.3 + typescript: 5.4.3 - ts-dedent@2.2.0: {} + ts-api-utils@1.3.0(typescript@5.4.3): + dependencies: + typescript: 5.4.3 - ts-essentials@9.4.2(typescript@5.5.3): + ts-api-utils@1.3.0(typescript@5.4.5): dependencies: - typescript: 5.5.3 + typescript: 5.4.5 + + ts-dedent@2.2.0: {} + + ts-essentials@9.4.1(typescript@5.4.3): + optionalDependencies: + typescript: 5.4.3 ts-interface-checker@0.1.13: {} @@ -25723,29 +28600,55 @@ snapshots: '@ts-morph/common': 0.20.0 code-block-writer: 12.0.0 - ts-node@10.9.2(@types/node@20.14.9)(typescript@5.5.3): + ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.14.9 - acorn: 8.12.0 - acorn-walk: 8.3.3 + '@types/node': 20.12.7 + acorn: 8.11.3 + acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.5.3 + typescript: 5.4.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - tsconfck@3.1.1(typescript@5.5.3): + ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5): dependencies: - typescript: 5.5.3 + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.12.7 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tsconfck@3.0.3(typescript@5.4.3): + optionalDependencies: + typescript: 5.4.3 + + tsconfck@3.0.3(typescript@5.4.5): + optionalDependencies: + typescript: 5.4.5 + + tsconfck@3.1.3(typescript@5.4.5): + optionalDependencies: + typescript: 5.4.5 - tsconfig-paths@3.15.0: + tsconfig-paths@3.14.2: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -25754,15 +28657,30 @@ snapshots: tslib@1.14.1: {} - tslib@2.6.3: {} + tslib@2.4.0: {} + + tslib@2.6.2: {} + + tsutils@3.21.0(typescript@5.4.3): + dependencies: + tslib: 1.14.1 + typescript: 5.4.3 - tsutils@3.21.0(typescript@5.5.3): + tsutils@3.21.0(typescript@5.4.5): dependencies: tslib: 1.14.1 - typescript: 5.5.3 + typescript: 5.4.5 + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tunnel@0.0.6: {} tween-functions@1.2.0: {} + tweetnacl@0.14.5: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -25771,14 +28689,8 @@ snapshots: type-fest@0.20.2: {} - type-fest@0.6.0: {} - type-fest@0.7.1: {} - type-fest@0.8.1: {} - - type-fest@1.4.0: {} - type-fest@2.19.0: {} type-is@1.6.18: @@ -25786,61 +28698,61 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - type@2.7.3: {} + type@1.2.0: {} + + type@2.7.2: {} - typed-array-buffer@1.0.2: + typed-array-buffer@1.0.0: dependencies: call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 + get-intrinsic: 1.2.4 + is-typed-array: 1.1.12 - typed-array-byte-length@1.0.1: + typed-array-byte-length@1.0.0: dependencies: call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 has-proto: 1.0.3 - is-typed-array: 1.1.13 + is-typed-array: 1.1.12 - typed-array-byte-offset@1.0.2: + typed-array-byte-offset@1.0.0: dependencies: - available-typed-arrays: 1.0.7 + available-typed-arrays: 1.0.5 call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 has-proto: 1.0.3 - is-typed-array: 1.1.13 + is-typed-array: 1.1.12 - typed-array-length@1.0.6: + typed-array-length@1.0.4: dependencies: call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 + is-typed-array: 1.1.12 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 typesafe-path@0.2.2: {} typescript-auto-import-cache@0.3.3: dependencies: - semver: 7.6.3 + semver: 7.6.2 - typescript@5.5.3: {} + typescript@5.4.3: {} - ufo@1.5.3: {} + typescript@5.4.5: {} - uglify-js@3.18.0: - optional: true + ufo@1.4.0: {} uint8-varint@2.0.4: dependencies: uint8arraylist: 2.4.8 - uint8arrays: 5.1.0 + uint8arrays: 5.0.3 uint8arraylist@2.4.8: dependencies: - uint8arrays: 5.1.0 + uint8arrays: 5.0.3 uint8arrays@3.1.0: dependencies: @@ -25854,9 +28766,11 @@ snapshots: dependencies: multiformats: 12.1.3 - uint8arrays@5.1.0: + uint8arrays@5.0.3: dependencies: - multiformats: 13.1.3 + multiformats: 13.1.0 + + ultron@1.1.1: {} unbox-primitive@1.0.2: dependencies: @@ -25869,16 +28783,16 @@ snapshots: undici-types@5.26.5: {} - undici@5.28.4: + undici@5.28.3: dependencies: - '@fastify/busboy': 2.1.1 + '@fastify/busboy': 2.1.0 unenv@1.9.0: dependencies: consola: 3.2.3 defu: 6.1.4 mime: 3.0.0 - node-fetch-native: 1.6.4 + node-fetch-native: 1.6.2 pathe: 1.1.2 unfetch@4.2.0: {} @@ -25894,8 +28808,6 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} - unicorn-magic@0.1.0: {} - unified@11.0.5: dependencies: '@types/unist': 3.0.2 @@ -25904,11 +28816,7 @@ snapshots: extend: 3.0.2 is-plain-obj: 4.1.0 trough: 2.2.0 - vfile: 6.0.2 - - unique-string@3.0.0: - dependencies: - crypto-random-string: 4.0.0 + vfile: 6.0.3 unist-util-find-after@5.0.0: dependencies: @@ -25964,28 +28872,28 @@ snapshots: unpipe@1.0.0: {} - unplugin@1.11.0: + unplugin@1.14.1: dependencies: - acorn: 8.12.0 - chokidar: 3.6.0 - webpack-sources: 3.2.3 + acorn: 8.12.1 webpack-virtual-modules: 0.6.2 - unstorage@1.10.2(idb-keyval@6.2.1): + unstorage@1.10.1(idb-keyval@6.2.1): dependencies: anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 - h3: 1.12.0 - idb-keyval: 6.2.1 - listhen: 1.7.2 - lru-cache: 10.3.0 + h3: 1.10.2 + ioredis: 5.3.2 + listhen: 1.6.0 + lru-cache: 10.2.0 mri: 1.2.0 - node-fetch-native: 1.6.4 - ofetch: 1.3.4 - ufo: 1.5.3 + node-fetch-native: 1.6.2 + ofetch: 1.3.3 + ufo: 1.4.0 + optionalDependencies: + idb-keyval: 6.2.1 transitivePeerDependencies: - - uWebSockets.js + - supports-color untildify@4.0.0: {} @@ -25995,11 +28903,25 @@ snapshots: consola: 3.2.3 pathe: 1.1.2 - update-browserslist-db@1.0.16(browserslist@4.23.1): + update-browserslist-db@1.0.13(browserslist@4.23.0): + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + + update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: - browserslist: 4.23.1 + browserslist: 4.23.3 escalade: 3.1.2 - picocolors: 1.0.1 + picocolors: 1.1.0 + + upper-case-first@2.0.2: + dependencies: + tslib: 2.6.2 + + upper-case@2.0.2: + dependencies: + tslib: 2.6.2 uqr@0.1.2: {} @@ -26012,30 +28934,19 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - '@types/react': 18.3.3 - react: 18.3.1 - tslib: 2.6.3 - - use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - '@types/react': 18.3.3 - detect-node-es: 1.1.0 - react: 18.3.1 - tslib: 2.6.3 + url-set-query@1.0.0: {} - use-sync-external-store@1.2.0(react@18.3.1): + use-sync-external-store@1.2.0(react@18.2.0): dependencies: - react: 18.3.1 + react: 18.2.0 utf-8-validate@5.0.10: dependencies: - node-gyp-build: 4.8.1 + node-gyp-build: 4.8.0 - utf-8-validate@6.0.4: + utf-8-validate@6.0.3: dependencies: - node-gyp-build: 4.8.1 + node-gyp-build: 4.8.0 utf8@3.0.0: {} @@ -26046,11 +28957,13 @@ snapshots: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 + is-typed-array: 1.1.12 + which-typed-array: 1.1.13 utils-merge@1.0.1: {} + uuid@3.4.0: {} + uuid@8.3.2: {} uuid@9.0.1: {} @@ -26059,21 +28972,32 @@ snapshots: v8-compile-cache@2.4.0: {} - validate-npm-package-license@3.0.4: + v8-to-istanbul@9.2.0: dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 - valtio@1.11.2(react@18.3.1): + valtio@1.11.2(@types/react@18.3.5)(react@18.2.0): dependencies: proxy-compare: 2.5.1 - react: 18.3.1 - use-sync-external-store: 1.2.0(react@18.3.1) + use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.5 + react: 18.2.0 + + varint@5.0.2: {} varint@6.0.0: {} vary@1.1.2: {} + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + vfile-location@5.0.2: dependencies: '@types/unist': 3.0.2 @@ -26090,51 +29014,156 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vfile@6.0.2: + vfile@6.0.3: dependencies: '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - viem@1.21.4(typescript@5.5.3): + viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 0.9.8(typescript@5.4.3)(zod@3.22.4) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.5.3) - isows: 1.0.3(ws@8.13.0) - typescript: 5.5.3 - ws: 8.13.0 + abitype: 0.9.8(typescript@5.4.3)(zod@3.23.8) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 0.9.8(typescript@5.4.3)(zod@3.23.8) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.4.0 + abitype: 1.0.5(typescript@5.4.3)(zod@3.23.8) + isows: 1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + webauthn-p256: 0.0.5 + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.4.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.16.5(typescript@5.5.3)(zod@3.23.8): + viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 '@scure/bip32': 1.4.0 - '@scure/bip39': 1.3.0 - abitype: 1.0.5(typescript@5.5.3)(zod@3.23.8) - isows: 1.0.4(ws@8.17.1) - typescript: 5.5.3 - ws: 8.17.1 + '@scure/bip39': 1.4.0 + abitype: 1.0.5(typescript@5.4.5)(zod@3.23.8) + isows: 1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + webauthn-p256: 0.0.5 + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.4.3)(zod@3.22.4) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.4.3)(zod@3.23.8) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + optionalDependencies: + typescript: 5.4.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - vite-node@1.6.0(@types/node@20.14.9): + vite-node@1.5.0(@types/node@20.12.7)(terser@5.27.2): + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite-node@1.6.0(@types/node@20.12.7)(terser@5.27.2): dependencies: cac: 6.7.14 - debug: 4.3.5 + debug: 4.3.4 pathe: 1.1.2 - picocolors: 1.0.1 - vite: 5.3.2(@types/node@20.14.9) + picocolors: 1.0.0 + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) transitivePeerDependencies: - '@types/node' - less @@ -26145,99 +29174,212 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@4.5.3): + vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)): + dependencies: + debug: 4.3.4 + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@5.4.3) + optionalDependencies: + vite: 4.5.3(@types/node@20.12.7)(terser@5.27.2) + transitivePeerDependencies: + - supports-color + - typescript + + vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)): dependencies: - debug: 4.3.5 + debug: 4.3.4 globrex: 0.1.2 - tsconfck: 3.1.1(typescript@5.5.3) - vite: 4.5.3 + tsconfck: 3.0.3(typescript@5.4.3) + optionalDependencies: + vite: 5.1.3(@types/node@20.12.7)(terser@5.27.2) transitivePeerDependencies: - supports-color - typescript - vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@5.3.2): + vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)): dependencies: - debug: 4.3.5 + debug: 4.3.4 globrex: 0.1.2 - tsconfck: 3.1.1(typescript@5.5.3) - vite: 5.3.2(@types/node@20.14.9) + tsconfck: 3.0.3(typescript@5.4.3) + optionalDependencies: + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) transitivePeerDependencies: - supports-color - typescript - vite@4.5.3: + vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)): + dependencies: + debug: 4.3.4 + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@5.4.5) + optionalDependencies: + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + transitivePeerDependencies: + - supports-color + - typescript + + vite@4.5.3(@types/node@20.12.7)(terser@5.27.2): dependencies: esbuild: 0.18.20 - postcss: 8.4.39 + postcss: 8.4.38 rollup: 3.29.4 optionalDependencies: + '@types/node': 20.12.7 fsevents: 2.3.3 + terser: 5.27.2 - vite@5.3.2(@types/node@20.14.9): + vite@5.1.3(@types/node@20.12.7)(terser@5.27.2): dependencies: - '@types/node': 20.14.9 - esbuild: 0.21.5 - postcss: 8.4.39 - rollup: 4.18.0 + esbuild: 0.19.12 + postcss: 8.4.38 + rollup: 4.12.0 optionalDependencies: + '@types/node': 20.12.7 fsevents: 2.3.3 + terser: 5.27.2 - vite@5.4.0: + vite@5.2.11(@types/node@20.12.7)(terser@5.27.2): dependencies: - esbuild: 0.21.5 - postcss: 8.4.41 - rollup: 4.18.0 + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.17.2 optionalDependencies: + '@types/node': 20.12.7 fsevents: 2.3.3 + terser: 5.27.2 - vitefu@0.2.5(vite@4.5.3): + vite@5.4.5(@types/node@20.12.7)(terser@5.27.2): dependencies: - vite: 4.5.3 + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.21.3 + optionalDependencies: + '@types/node': 20.12.7 + fsevents: 2.3.3 + terser: 5.27.2 + + vitefu@0.2.5(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)): + optionalDependencies: + vite: 4.5.3(@types/node@20.12.7)(terser@5.27.2) - vitefu@0.2.5(vite@5.3.2): + vitefu@0.2.5(vite@5.1.3(@types/node@20.12.7)(terser@5.27.2)): + optionalDependencies: + vite: 5.1.3(@types/node@20.12.7)(terser@5.27.2) + + vitefu@0.2.5(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)): + optionalDependencies: + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + + vitefu@1.0.2(vite@5.4.5(@types/node@20.12.7)(terser@5.27.2)): + optionalDependencies: + vite: 5.4.5(@types/node@20.12.7)(terser@5.27.2) + + vitest-fetch-mock@0.2.2(encoding@0.1.13)(vitest@1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2)): dependencies: - vite: 5.3.2(@types/node@20.14.9) + cross-fetch: 3.1.8(encoding@0.1.13) + vitest: 1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2) + transitivePeerDependencies: + - encoding - vitefu@0.2.5(vite@5.4.0): + vitest-mock-extended@1.3.1(typescript@5.4.3)(vitest@1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2)): dependencies: - vite: 5.4.0 + ts-essentials: 9.4.1(typescript@5.4.3) + typescript: 5.4.3 + vitest: 1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2) - vitest-fetch-mock@0.2.2(vitest@1.6.0): + vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2): dependencies: - cross-fetch: 3.1.8 - vitest: 1.6.0(jsdom@24.1.0) + '@vitest/expect': 1.5.0 + '@vitest/runner': 1.5.0 + '@vitest/snapshot': 1.5.0 + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.9 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.3 + vite: 5.1.3(@types/node@20.12.7)(terser@5.27.2) + vite-node: 1.5.0(@types/node@20.12.7)(terser@5.27.2) + why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 20.12.7 + jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - - encoding + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser - vitest-mock-extended@1.3.1(typescript@5.5.3)(vitest@1.6.0): + vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2): dependencies: - ts-essentials: 9.4.2(typescript@5.5.3) - typescript: 5.5.3 - vitest: 1.6.0(jsdom@24.1.0) + '@vitest/expect': 1.5.0 + '@vitest/runner': 1.5.0 + '@vitest/snapshot': 1.5.0 + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.9 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.3 + vite: 5.1.3(@types/node@20.12.7)(terser@5.27.2) + vite-node: 1.5.0(@types/node@20.12.7)(terser@5.27.2) + why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 20.12.7 + jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser - vitest@1.6.0(@types/node@20.14.9): + vitest@1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.27.2): dependencies: - '@types/node': 20.14.9 '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 - acorn-walk: 8.3.3 + acorn-walk: 8.3.2 chai: 4.4.1 - debug: 4.3.5 + debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.10 pathe: 1.1.2 - picocolors: 1.0.1 + picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.8.0 - tinypool: 0.8.4 - vite: 5.3.2(@types/node@20.14.9) - vite-node: 1.6.0(@types/node@20.14.9) + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.3 + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + vite-node: 1.6.0(@types/node@20.12.7)(terser@5.27.2) why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 20.12.7 + jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - less - lightningcss @@ -26247,29 +29389,31 @@ snapshots: - supports-color - terser - vitest@1.6.0(jsdom@24.1.0): + vitest@1.6.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 - acorn-walk: 8.3.3 + acorn-walk: 8.3.2 chai: 4.4.1 - debug: 4.3.5 + debug: 4.3.4 execa: 8.0.1 - jsdom: 24.1.0 local-pkg: 0.5.0 magic-string: 0.30.10 pathe: 1.1.2 - picocolors: 1.0.1 + picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.8.0 - tinypool: 0.8.4 - vite: 5.3.2(@types/node@20.14.9) - vite-node: 1.6.0(@types/node@20.14.9) + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.3 + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + vite-node: 1.6.0(@types/node@20.12.7)(terser@5.27.2) why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 20.12.7 + jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) transitivePeerDependencies: - less - lightningcss @@ -26283,65 +29427,100 @@ snapshots: void-elements@3.1.0: {} - volar-service-css@0.0.59(@volar/language-service@2.4.0-alpha.18): + volar-service-css@0.0.61(@volar/language-service@2.4.5): dependencies: - '@volar/language-service': 2.4.0-alpha.18 - vscode-css-languageservice: 6.3.0 + vscode-css-languageservice: 6.3.1 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 + optionalDependencies: + '@volar/language-service': 2.4.5 - volar-service-emmet@0.0.59(@volar/language-service@2.4.0-alpha.18): + volar-service-emmet@0.0.61(@volar/language-service@2.4.5): dependencies: '@emmetio/css-parser': 0.4.0 '@emmetio/html-matcher': 1.3.0 - '@volar/language-service': 2.4.0-alpha.18 '@vscode/emmet-helper': 2.9.3 vscode-uri: 3.0.8 + optionalDependencies: + '@volar/language-service': 2.4.5 - volar-service-html@0.0.59(@volar/language-service@2.4.0-alpha.18): + volar-service-html@0.0.61(@volar/language-service@2.4.5): dependencies: - '@volar/language-service': 2.4.0-alpha.18 - vscode-html-languageservice: 5.3.0 + vscode-html-languageservice: 5.3.1 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 + optionalDependencies: + '@volar/language-service': 2.4.5 - volar-service-prettier@0.0.59(@volar/language-service@2.4.0-alpha.18)(prettier@3.3.2): + volar-service-prettier@0.0.61(@volar/language-service@2.4.5)(prettier@3.2.5): dependencies: - '@volar/language-service': 2.4.0-alpha.18 - prettier: 3.3.2 vscode-uri: 3.0.8 + optionalDependencies: + '@volar/language-service': 2.4.5 + prettier: 3.2.5 - volar-service-typescript-twoslash-queries@0.0.59(@volar/language-service@2.4.0-alpha.18): + volar-service-typescript-twoslash-queries@0.0.61(@volar/language-service@2.4.5): dependencies: - '@volar/language-service': 2.4.0-alpha.18 vscode-uri: 3.0.8 + optionalDependencies: + '@volar/language-service': 2.4.5 - volar-service-typescript@0.0.59(@volar/language-service@2.4.0-alpha.18): + volar-service-typescript@0.0.61(@volar/language-service@2.4.5): dependencies: - '@volar/language-service': 2.4.0-alpha.18 path-browserify: 1.0.1 semver: 7.6.2 typescript-auto-import-cache: 0.3.3 vscode-languageserver-textdocument: 1.0.11 vscode-nls: 5.2.0 vscode-uri: 3.0.8 + optionalDependencies: + '@volar/language-service': 2.4.5 + + volar-service-yaml@0.0.61(@volar/language-service@2.4.5): + dependencies: + vscode-uri: 3.0.8 + yaml-language-server: 1.15.0 + optionalDependencies: + '@volar/language-service': 2.4.5 + + vscode-css-languageservice@6.3.1: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 - vscode-css-languageservice@6.3.0: + vscode-html-languageservice@5.2.0: dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - vscode-html-languageservice@5.3.0: + vscode-html-languageservice@5.3.1: dependencies: '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 + + vscode-json-languageservice@4.1.8: + dependencies: + jsonc-parser: 3.2.0 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 + vscode-nls: 5.2.0 vscode-uri: 3.0.8 + vscode-jsonrpc@6.0.0: {} + vscode-jsonrpc@8.2.0: {} + vscode-languageserver-protocol@3.16.0: + dependencies: + vscode-jsonrpc: 6.0.0 + vscode-languageserver-types: 3.16.0 + vscode-languageserver-protocol@3.17.5: dependencies: vscode-jsonrpc: 8.2.0 @@ -26349,8 +29528,16 @@ snapshots: vscode-languageserver-textdocument@1.0.11: {} + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.16.0: {} + vscode-languageserver-types@3.17.5: {} + vscode-languageserver@7.0.0: + dependencies: + vscode-languageserver-protocol: 3.16.0 + vscode-languageserver@9.0.1: dependencies: vscode-languageserver-protocol: 3.17.5 @@ -26369,43 +29556,249 @@ snapshots: dependencies: makeerror: 1.0.12 - watchpack@2.4.1: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - wcwidth@1.0.1: dependencies: defaults: 1.0.4 web-namespaces@2.0.1: {} + web3-bzz@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@types/node': 12.20.55 + got: 12.1.0 + swarm-js: 0.1.42(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + web3-core-helpers@1.10.4: + dependencies: + web3-eth-iban: 1.10.4 + web3-utils: 1.10.4 + + web3-core-method@1.10.4: + dependencies: + '@ethersproject/transactions': 5.7.0 + web3-core-helpers: 1.10.4 + web3-core-promievent: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-utils: 1.10.4 + + web3-core-promievent@1.10.4: + dependencies: + eventemitter3: 4.0.4 + + web3-core-requestmanager@1.10.4(encoding@0.1.13): + dependencies: + util: 0.12.5 + web3-core-helpers: 1.10.4 + web3-providers-http: 1.10.4(encoding@0.1.13) + web3-providers-ipc: 1.10.4 + web3-providers-ws: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-core-subscriptions@1.10.4: + dependencies: + eventemitter3: 4.0.4 + web3-core-helpers: 1.10.4 + + web3-core@1.10.4(encoding@0.1.13): + dependencies: + '@types/bn.js': 5.1.5 + '@types/node': 12.20.55 + bignumber.js: 9.1.2 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-core-requestmanager: 1.10.4(encoding@0.1.13) + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + web3-eth-abi@1.10.4: dependencies: '@ethersproject/abi': 5.7.0 web3-utils: 1.10.4 + web3-eth-accounts@1.10.4(encoding@0.1.13): + dependencies: + '@ethereumjs/common': 2.6.5 + '@ethereumjs/tx': 3.5.2 + '@ethereumjs/util': 8.1.0 + eth-lib: 0.2.8 + scrypt-js: 3.0.1 + uuid: 9.0.1 + web3-core: 1.10.4(encoding@0.1.13) + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-eth-contract@1.10.4(encoding@0.1.13): + dependencies: + '@types/bn.js': 5.1.5 + web3-core: 1.10.4(encoding@0.1.13) + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-core-promievent: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-eth-abi: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-eth-ens@1.10.4(encoding@0.1.13): + dependencies: + content-hash: 2.5.2 + eth-ens-namehash: 2.0.8 + web3-core: 1.10.4(encoding@0.1.13) + web3-core-helpers: 1.10.4 + web3-core-promievent: 1.10.4 + web3-eth-abi: 1.10.4 + web3-eth-contract: 1.10.4(encoding@0.1.13) + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-eth-iban@1.10.4: + dependencies: + bn.js: 5.2.1 + web3-utils: 1.10.4 + + web3-eth-personal@1.10.4(encoding@0.1.13): + dependencies: + '@types/node': 12.20.55 + web3-core: 1.10.4(encoding@0.1.13) + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-net: 1.10.4(encoding@0.1.13) + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-eth@1.10.4(encoding@0.1.13): + dependencies: + web3-core: 1.10.4(encoding@0.1.13) + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-eth-abi: 1.10.4 + web3-eth-accounts: 1.10.4(encoding@0.1.13) + web3-eth-contract: 1.10.4(encoding@0.1.13) + web3-eth-ens: 1.10.4(encoding@0.1.13) + web3-eth-iban: 1.10.4 + web3-eth-personal: 1.10.4(encoding@0.1.13) + web3-net: 1.10.4(encoding@0.1.13) + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-net@1.10.4(encoding@0.1.13): + dependencies: + web3-core: 1.10.4(encoding@0.1.13) + web3-core-method: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-providers-http@1.10.4(encoding@0.1.13): + dependencies: + abortcontroller-polyfill: 1.7.5 + cross-fetch: 4.0.0(encoding@0.1.13) + es6-promise: 4.2.8 + web3-core-helpers: 1.10.4 + transitivePeerDependencies: + - encoding + + web3-providers-ipc@1.10.4: + dependencies: + oboe: 2.1.5 + web3-core-helpers: 1.10.4 + + web3-providers-ws@1.10.4: + dependencies: + eventemitter3: 4.0.4 + web3-core-helpers: 1.10.4 + websocket: 1.0.35 + transitivePeerDependencies: + - supports-color + + web3-shh@1.10.4(encoding@0.1.13): + dependencies: + web3-core: 1.10.4(encoding@0.1.13) + web3-core-method: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-net: 1.10.4(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + web3-utils@1.10.4: dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 - ethereum-bloom-filters: 1.1.0 - ethereum-cryptography: 2.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.3 ethjs-unit: 0.1.6 number-to-bn: 1.7.0 randombytes: 2.1.0 utf8: 3.0.0 + web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10): + dependencies: + web3-bzz: 1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-core: 1.10.4(encoding@0.1.13) + web3-eth: 1.10.4(encoding@0.1.13) + web3-eth-personal: 1.10.4(encoding@0.1.13) + web3-net: 1.10.4(encoding@0.1.13) + web3-shh: 1.10.4(encoding@0.1.13) + web3-utils: 1.10.4 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + webauthn-p256@0.0.5: + dependencies: + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + + webextension-polyfill-ts@0.25.0: + dependencies: + webextension-polyfill: 0.7.0 + webextension-polyfill@0.10.0: {} + webextension-polyfill@0.7.0: {} + webidl-conversions@3.0.1: {} webidl-conversions@7.0.0: {} - webpack-sources@3.2.3: {} - webpack-virtual-modules@0.6.2: {} + websocket@1.0.35: + dependencies: + bufferutil: 4.0.8 + debug: 2.6.9 + es5-ext: 0.10.64 + typedarray-to-buffer: 3.1.5 + utf-8-validate: 5.0.10 + yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -26436,22 +29829,17 @@ snapshots: which-pm-runs@1.1.0: {} - which-pm@2.0.0: - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - which-pm@3.0.0: dependencies: load-yaml-file: 0.2.0 - which-typed-array@1.1.15: + which-typed-array@1.1.13: dependencies: - available-typed-arrays: 1.0.7 + available-typed-arrays: 1.0.5 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.2 + has-tostringtag: 1.0.0 which@1.3.1: dependencies: @@ -26474,9 +29862,14 @@ snapshots: dependencies: string-width: 5.1.2 - word-wrap@1.2.5: {} - - wordwrap@1.0.0: {} + winston@2.4.7: + dependencies: + async: 2.6.4 + colors: 1.0.3 + cycle: 1.0.3 + eyes: 0.1.8 + isstream: 0.1.2 + stack-trace: 0.0.10 wrap-ansi@6.2.0: dependencies: @@ -26504,39 +29897,139 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@6.2.3: + ws@3.3.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + async-limiter: 1.0.1 + safe-buffer: 5.1.2 + ultron: 1.1.1 + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@6.2.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: async-limiter: 1.0.1 + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@8.11.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.3 + + ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.3 + + ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 - ws@7.4.6: {} + ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.3 + + ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 - ws@7.5.10: {} + xhr-request-promise@0.1.3: + dependencies: + xhr-request: 1.1.0 - ws@8.13.0: {} + xhr-request@1.1.0: + dependencies: + buffer-to-arraybuffer: 0.0.5 + object-assign: 4.1.1 + query-string: 5.1.1 + simple-get: 2.8.2 + timed-out: 4.0.1 + url-set-query: 1.0.0 + xhr: 2.6.0 - ws@8.17.1: {} + xhr@2.6.0: + dependencies: + global: 4.4.0 + is-function: 1.0.2 + parse-headers: 2.0.5 + xtend: 4.0.2 xml-name-validator@5.0.0: {} + xml2js@0.6.2: + dependencies: + sax: 1.3.0 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + xmlchars@2.2.0: {} xmlhttprequest-ssl@2.0.0: {} xtend@4.0.2: {} + xxhash-wasm@1.0.2: {} + y18n@4.0.3: {} y18n@5.0.8: {} + yaeti@0.0.6: {} + yallist@2.1.2: {} yallist@3.1.1: {} yallist@4.0.0: {} + yaml-language-server@1.15.0: + dependencies: + ajv: 8.12.0 + lodash: 4.17.21 + request-light: 0.5.8 + vscode-json-languageservice: 4.1.8 + vscode-languageserver: 7.0.0 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 + vscode-nls: 5.2.0 + vscode-uri: 3.0.8 + yaml: 2.2.2 + optionalDependencies: + prettier: 2.8.7 + yaml@1.10.2: {} - yaml@2.4.5: {} + yaml@2.2.2: {} + + yaml@2.3.4: {} + + yaml@2.5.1: {} yargs-parser@18.1.3: dependencies: @@ -26573,19 +30066,28 @@ snapshots: yocto-queue@0.1.0: {} + yocto-queue@1.0.0: {} + yocto-queue@1.1.1: {} - zod-to-json-schema@3.23.2(zod@3.23.8): + zod-to-json-schema@3.23.3(zod@3.23.8): + dependencies: + zod: 3.23.8 + + zod-to-ts@1.2.0(typescript@5.4.5)(zod@3.23.8): dependencies: + typescript: 5.4.5 zod: 3.23.8 zod@3.22.4: {} zod@3.23.8: {} - zustand@4.4.1(react@18.3.1): + zustand@4.4.1(@types/react@18.3.5)(react@18.2.0): dependencies: - react: 18.3.1 - use-sync-external-store: 1.2.0(react@18.3.1) + use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.5 + react: 18.2.0 zwitch@2.0.4: {} From 8954764d96c256408c1cfd77deb1621da288a33c Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Fri, 27 Sep 2024 11:32:18 +0800 Subject: [PATCH 019/205] feat(taiko-client): update contract bingdings (#18182) --- packages/taiko-client/bindings/.githead | 2 +- .../taiko-client/bindings/gen_sgx_verifier.go | 52 ++++++++----------- .../taiko-client/bindings/gen_taiko_l1.go | 51 ++++-------------- 3 files changed, 33 insertions(+), 72 deletions(-) diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead index d028d466fde..c43bce274c9 100644 --- a/packages/taiko-client/bindings/.githead +++ b/packages/taiko-client/bindings/.githead @@ -1 +1 @@ -ea0ca9040cc3d1d9fec50777d40b3cf69803c115 +b93d056479adfc4a1f557578d8b66eda48b104a9 diff --git a/packages/taiko-client/bindings/gen_sgx_verifier.go b/packages/taiko-client/bindings/gen_sgx_verifier.go index a214a9be4fa..a782f3a5269 100644 --- a/packages/taiko-client/bindings/gen_sgx_verifier.go +++ b/packages/taiko-client/bindings/gen_sgx_verifier.go @@ -88,7 +88,7 @@ type V3StructQEAuthData struct { // SgxVerifierMetaData contains all meta data concerning the SgxVerifier contract. var SgxVerifierMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addInstances\",\"inputs\":[{\"name\":\"_instances\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addressRegistered\",\"inputs\":[{\"name\":\"instanceAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"alreadyAttested\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deleteInstances\",\"inputs\":[{\"name\":\"_ids\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"instances\",\"inputs\":[{\"name\":\"instanceId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validSince\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerInstance\",\"inputs\":[{\"name\":\"_attestation\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.ParsedV3QuoteStruct\",\"components\":[{\"name\":\"header\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.Header\",\"components\":[{\"name\":\"version\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"attestationKeyType\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"teeType\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"qeSvn\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"pceSvn\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"qeVendorId\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"userData\",\"type\":\"bytes20\",\"internalType\":\"bytes20\"}]},{\"name\":\"localEnclaveReport\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.EnclaveReport\",\"components\":[{\"name\":\"cpuSvn\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"miscSelect\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"reserved1\",\"type\":\"bytes28\",\"internalType\":\"bytes28\"},{\"name\":\"attributes\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"mrEnclave\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mrSigner\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved3\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"isvProdId\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"isvSvn\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"reserved4\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reportData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"v3AuthData\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.ECDSAQuoteV3AuthData\",\"components\":[{\"name\":\"ecdsa256BitSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"ecdsaAttestationKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"pckSignedQeReport\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.EnclaveReport\",\"components\":[{\"name\":\"cpuSvn\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"miscSelect\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"reserved1\",\"type\":\"bytes28\",\"internalType\":\"bytes28\"},{\"name\":\"attributes\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"mrEnclave\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mrSigner\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved3\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"isvProdId\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"isvSvn\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"reserved4\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reportData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"qeReportSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"qeAuthData\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.QEAuthData\",\"components\":[{\"name\":\"parsedDataSize\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"certification\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.CertificationData\",\"components\":[{\"name\":\"certType\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"certDataSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"decodedCertDataArray\",\"type\":\"bytes[3]\",\"internalType\":\"bytes[3]\"}]}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBatchProof\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIVerifier.ContextV2[]\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InstanceAdded\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"instance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"replaced\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"validSince\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InstanceDeleted\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"instance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addInstances\",\"inputs\":[{\"name\":\"_instances\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addressRegistered\",\"inputs\":[{\"name\":\"instanceAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"alreadyAttested\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deleteInstances\",\"inputs\":[{\"name\":\"_ids\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"instances\",\"inputs\":[{\"name\":\"instanceId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validSince\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerInstance\",\"inputs\":[{\"name\":\"_attestation\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.ParsedV3QuoteStruct\",\"components\":[{\"name\":\"header\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.Header\",\"components\":[{\"name\":\"version\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"attestationKeyType\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"teeType\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"qeSvn\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"pceSvn\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"qeVendorId\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"userData\",\"type\":\"bytes20\",\"internalType\":\"bytes20\"}]},{\"name\":\"localEnclaveReport\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.EnclaveReport\",\"components\":[{\"name\":\"cpuSvn\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"miscSelect\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"reserved1\",\"type\":\"bytes28\",\"internalType\":\"bytes28\"},{\"name\":\"attributes\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"mrEnclave\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mrSigner\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved3\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"isvProdId\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"isvSvn\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"reserved4\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reportData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"v3AuthData\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.ECDSAQuoteV3AuthData\",\"components\":[{\"name\":\"ecdsa256BitSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"ecdsaAttestationKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"pckSignedQeReport\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.EnclaveReport\",\"components\":[{\"name\":\"cpuSvn\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"miscSelect\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"reserved1\",\"type\":\"bytes28\",\"internalType\":\"bytes28\"},{\"name\":\"attributes\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"mrEnclave\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mrSigner\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved3\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"isvProdId\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"isvSvn\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"reserved4\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reportData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"qeReportSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"qeAuthData\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.QEAuthData\",\"components\":[{\"name\":\"parsedDataSize\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"certification\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.CertificationData\",\"components\":[{\"name\":\"certType\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"certDataSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"decodedCertDataArray\",\"type\":\"bytes[3]\",\"internalType\":\"bytes[3]\"}]}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBatchProof\",\"inputs\":[{\"name\":\"_ctxs\",\"type\":\"tuple[]\",\"internalType\":\"structIVerifier.ContextV2[]\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InstanceAdded\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"instance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"replaced\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"validSince\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InstanceDeleted\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"instance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // SgxVerifierABI is the input ABI used to generate the binding from. @@ -716,35 +716,6 @@ func (_SgxVerifier *SgxVerifierCallerSession) Resolve0(_name [32]byte, _allowZer return _SgxVerifier.Contract.Resolve0(&_SgxVerifier.CallOpts, _name, _allowZeroAddress) } -// VerifyBatchProof is a free data retrieval call binding the contract method 0x7103b6da. -// -// Solidity: function verifyBatchProof((bytes32,bytes32,address,uint64,bool,bool,address,(bytes32,bytes32,bytes32,bytes32))[] , (uint16,bytes) ) view returns() -func (_SgxVerifier *SgxVerifierCaller) VerifyBatchProof(opts *bind.CallOpts, arg0 []IVerifierContextV2, arg1 TaikoDataTierProof) error { - var out []interface{} - err := _SgxVerifier.contract.Call(opts, &out, "verifyBatchProof", arg0, arg1) - - if err != nil { - return err - } - - return err - -} - -// VerifyBatchProof is a free data retrieval call binding the contract method 0x7103b6da. -// -// Solidity: function verifyBatchProof((bytes32,bytes32,address,uint64,bool,bool,address,(bytes32,bytes32,bytes32,bytes32))[] , (uint16,bytes) ) view returns() -func (_SgxVerifier *SgxVerifierSession) VerifyBatchProof(arg0 []IVerifierContextV2, arg1 TaikoDataTierProof) error { - return _SgxVerifier.Contract.VerifyBatchProof(&_SgxVerifier.CallOpts, arg0, arg1) -} - -// VerifyBatchProof is a free data retrieval call binding the contract method 0x7103b6da. -// -// Solidity: function verifyBatchProof((bytes32,bytes32,address,uint64,bool,bool,address,(bytes32,bytes32,bytes32,bytes32))[] , (uint16,bytes) ) view returns() -func (_SgxVerifier *SgxVerifierCallerSession) VerifyBatchProof(arg0 []IVerifierContextV2, arg1 TaikoDataTierProof) error { - return _SgxVerifier.Contract.VerifyBatchProof(&_SgxVerifier.CallOpts, arg0, arg1) -} - // AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. // // Solidity: function acceptOwnership() returns() @@ -976,6 +947,27 @@ func (_SgxVerifier *SgxVerifierTransactorSession) UpgradeToAndCall(newImplementa return _SgxVerifier.Contract.UpgradeToAndCall(&_SgxVerifier.TransactOpts, newImplementation, data) } +// VerifyBatchProof is a paid mutator transaction binding the contract method 0x7103b6da. +// +// Solidity: function verifyBatchProof((bytes32,bytes32,address,uint64,bool,bool,address,(bytes32,bytes32,bytes32,bytes32))[] _ctxs, (uint16,bytes) _proof) returns() +func (_SgxVerifier *SgxVerifierTransactor) VerifyBatchProof(opts *bind.TransactOpts, _ctxs []IVerifierContextV2, _proof TaikoDataTierProof) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "verifyBatchProof", _ctxs, _proof) +} + +// VerifyBatchProof is a paid mutator transaction binding the contract method 0x7103b6da. +// +// Solidity: function verifyBatchProof((bytes32,bytes32,address,uint64,bool,bool,address,(bytes32,bytes32,bytes32,bytes32))[] _ctxs, (uint16,bytes) _proof) returns() +func (_SgxVerifier *SgxVerifierSession) VerifyBatchProof(_ctxs []IVerifierContextV2, _proof TaikoDataTierProof) (*types.Transaction, error) { + return _SgxVerifier.Contract.VerifyBatchProof(&_SgxVerifier.TransactOpts, _ctxs, _proof) +} + +// VerifyBatchProof is a paid mutator transaction binding the contract method 0x7103b6da. +// +// Solidity: function verifyBatchProof((bytes32,bytes32,address,uint64,bool,bool,address,(bytes32,bytes32,bytes32,bytes32))[] _ctxs, (uint16,bytes) _proof) returns() +func (_SgxVerifier *SgxVerifierTransactorSession) VerifyBatchProof(_ctxs []IVerifierContextV2, _proof TaikoDataTierProof) (*types.Transaction, error) { + return _SgxVerifier.Contract.VerifyBatchProof(&_SgxVerifier.TransactOpts, _ctxs, _proof) +} + // VerifyProof is a paid mutator transaction binding the contract method 0x21e89968. // // Solidity: function verifyProof((bytes32,bytes32,address,uint64,bool,bool,address) _ctx, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns() diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go index 45d2ae602af..f44e22c01e7 100644 --- a/packages/taiko-client/bindings/gen_taiko_l1.go +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -169,7 +169,7 @@ type TaikoDataTransitionState struct { // TaikoL1ClientMetaData contains all meta data concerning the TaikoL1Client contract. var TaikoL1ClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_tids\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoL1ClientABI is the input ABI used to generate the binding from. @@ -677,43 +677,12 @@ func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransition0(_blockId uint64 return _TaikoL1Client.Contract.GetTransition0(&_TaikoL1Client.CallOpts, _blockId, _parentHash) } -// GetTransitions is a free data retrieval call binding the contract method 0xaf2ba709. -// -// Solidity: function getTransitions(uint64[] _blockIds, uint32[] _tids) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) -func (_TaikoL1Client *TaikoL1ClientCaller) GetTransitions(opts *bind.CallOpts, _blockIds []uint64, _tids []uint32) ([]TaikoDataTransitionState, error) { - var out []interface{} - err := _TaikoL1Client.contract.Call(opts, &out, "getTransitions", _blockIds, _tids) - - if err != nil { - return *new([]TaikoDataTransitionState), err - } - - out0 := *abi.ConvertType(out[0], new([]TaikoDataTransitionState)).(*[]TaikoDataTransitionState) - - return out0, err - -} - -// GetTransitions is a free data retrieval call binding the contract method 0xaf2ba709. -// -// Solidity: function getTransitions(uint64[] _blockIds, uint32[] _tids) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) -func (_TaikoL1Client *TaikoL1ClientSession) GetTransitions(_blockIds []uint64, _tids []uint32) ([]TaikoDataTransitionState, error) { - return _TaikoL1Client.Contract.GetTransitions(&_TaikoL1Client.CallOpts, _blockIds, _tids) -} - -// GetTransitions is a free data retrieval call binding the contract method 0xaf2ba709. -// -// Solidity: function getTransitions(uint64[] _blockIds, uint32[] _tids) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) -func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransitions(_blockIds []uint64, _tids []uint32) ([]TaikoDataTransitionState, error) { - return _TaikoL1Client.Contract.GetTransitions(&_TaikoL1Client.CallOpts, _blockIds, _tids) -} - -// GetTransitions0 is a free data retrieval call binding the contract method 0xb89c61bc. +// GetTransitions is a free data retrieval call binding the contract method 0xb89c61bc. // // Solidity: function getTransitions(uint64[] _blockIds, bytes32[] _parentHashes) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) -func (_TaikoL1Client *TaikoL1ClientCaller) GetTransitions0(opts *bind.CallOpts, _blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { +func (_TaikoL1Client *TaikoL1ClientCaller) GetTransitions(opts *bind.CallOpts, _blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { var out []interface{} - err := _TaikoL1Client.contract.Call(opts, &out, "getTransitions0", _blockIds, _parentHashes) + err := _TaikoL1Client.contract.Call(opts, &out, "getTransitions", _blockIds, _parentHashes) if err != nil { return *new([]TaikoDataTransitionState), err @@ -725,18 +694,18 @@ func (_TaikoL1Client *TaikoL1ClientCaller) GetTransitions0(opts *bind.CallOpts, } -// GetTransitions0 is a free data retrieval call binding the contract method 0xb89c61bc. +// GetTransitions is a free data retrieval call binding the contract method 0xb89c61bc. // // Solidity: function getTransitions(uint64[] _blockIds, bytes32[] _parentHashes) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) -func (_TaikoL1Client *TaikoL1ClientSession) GetTransitions0(_blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { - return _TaikoL1Client.Contract.GetTransitions0(&_TaikoL1Client.CallOpts, _blockIds, _parentHashes) +func (_TaikoL1Client *TaikoL1ClientSession) GetTransitions(_blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { + return _TaikoL1Client.Contract.GetTransitions(&_TaikoL1Client.CallOpts, _blockIds, _parentHashes) } -// GetTransitions0 is a free data retrieval call binding the contract method 0xb89c61bc. +// GetTransitions is a free data retrieval call binding the contract method 0xb89c61bc. // // Solidity: function getTransitions(uint64[] _blockIds, bytes32[] _parentHashes) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)[]) -func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransitions0(_blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { - return _TaikoL1Client.Contract.GetTransitions0(&_TaikoL1Client.CallOpts, _blockIds, _parentHashes) +func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransitions(_blockIds []uint64, _parentHashes [][32]byte) ([]TaikoDataTransitionState, error) { + return _TaikoL1Client.Contract.GetTransitions(&_TaikoL1Client.CallOpts, _blockIds, _parentHashes) } // GetVerifiedBlockProver is a free data retrieval call binding the contract method 0x6074b8c1. From 2e20c28e1ac482d3f6bb8ac5e182a43675853166 Mon Sep 17 00:00:00 2001 From: Andrew Scot Date: Fri, 27 Sep 2024 14:43:58 +1000 Subject: [PATCH 020/205] chore(docs-site): fix broken diagram and delete self-direction link (#18180) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> Co-authored-by: David --- .../docs-site/src/content/docs/core-concepts/taiko-nodes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md b/packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md index 08dee01f305..84a8d11589a 100644 --- a/packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md +++ b/packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md @@ -89,7 +89,7 @@ If the proposed block has a **valid** or **invalid** `txList`, the `prover`: ## Taiko Node API -Using a Taiko node should feel the same as using any other L1 node, because we essentially re-use the L1 client and make a few backwards-compatible modifications. You can first read about the architecture of Taiko nodes [here](/core-concepts/taiko-nodes). +Using a Taiko node should feel the same as using any other L1 node, because we essentially re-use the L1 client and make a few backwards-compatible modifications. ### Differences from a Geth client From b02ea92af01b37670c2545dbd4e332ab4803ae03 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Fri, 27 Sep 2024 17:15:37 -0700 Subject: [PATCH 021/205] docs(docs-site): add warning to proposer page and update banner (#18186) --- packages/docs-site/src/content/config.ts | 2 +- .../content/docs/guides/node-operators/enable-a-proposer.mdx | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/docs-site/src/content/config.ts b/packages/docs-site/src/content/config.ts index 1c054be6242..9129eb8d987 100644 --- a/packages/docs-site/src/content/config.ts +++ b/packages/docs-site/src/content/config.ts @@ -9,7 +9,7 @@ export const collections = { .string() .max(160, { message: "Must be 160 characters or less." }).optional(), banner: z.object({ content: z.string() }).default({ - content: 'All Hekla Node Runners: Upcoming Ontake fork Sep 20th, 2:00AM UTC, upgrade needed. Click here for more info', + content: 'All Hekla Node Runners: Imminent Ontake fork Sep 30th, upgrade needed. Please update your provers to raiko 1.2.0! Click here for more info', }), }), }), diff --git a/packages/docs-site/src/content/docs/guides/node-operators/enable-a-proposer.mdx b/packages/docs-site/src/content/docs/guides/node-operators/enable-a-proposer.mdx index 10a8684e68a..08352468df2 100644 --- a/packages/docs-site/src/content/docs/guides/node-operators/enable-a-proposer.mdx +++ b/packages/docs-site/src/content/docs/guides/node-operators/enable-a-proposer.mdx @@ -5,6 +5,10 @@ description: This guide will you help you enable your Taiko node as a proposer. import { Aside, Card, CardGrid, Steps} from '@astrojs/starlight/components'; + + ## Prerequisites - You are already running a Taiko node [with Docker](/guides/node-operators/run-a-taiko-node-with-docker) or [from source](/guides/node-operators/build-a-taiko-node-from-source). From 656e757d629131cb03af894269ef447c39e9741e Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Sat, 28 Sep 2024 10:08:38 +0800 Subject: [PATCH 022/205] fix(taiko-client): fix revert case when propose blob blocks (#18185) --- packages/taiko-client/proposer/transaction_builder/blob.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/taiko-client/proposer/transaction_builder/blob.go b/packages/taiko-client/proposer/transaction_builder/blob.go index b5270f3ac3c..66ac14a1fd6 100644 --- a/packages/taiko-client/proposer/transaction_builder/blob.go +++ b/packages/taiko-client/proposer/transaction_builder/blob.go @@ -188,14 +188,14 @@ func (b *BlobTransactionBuilder) BuildOntake( encodedParamsArray = append(encodedParamsArray, encodedParams) } - + txListArray := make([][]byte, len(encodedParamsArray)) if b.proverSetAddress != rpc.ZeroAddress { - data, err = encoding.ProverSetABI.Pack("proposeBlocksV2", encodedParamsArray, []byte{}) + data, err = encoding.ProverSetABI.Pack("proposeBlocksV2", encodedParamsArray, txListArray) if err != nil { return nil, err } } else { - data, err = encoding.TaikoL1ABI.Pack("proposeBlocksV2", encodedParamsArray, []byte{}) + data, err = encoding.TaikoL1ABI.Pack("proposeBlocksV2", encodedParamsArray, txListArray) if err != nil { return nil, err } From 02a71dd26e0650b39754fbac7100e6e9b5d0ce38 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Fri, 27 Sep 2024 19:47:05 -0700 Subject: [PATCH 023/205] chore(main): release taiko-client 0.37.0 (#18093) --- .release-please-manifest.json | 2 +- packages/taiko-client/CHANGELOG.md | 42 ++++++++++++++++++++++++++++++ packages/taiko-client/package.json | 2 +- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ac778b65828..e35d837b7d8 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -9,7 +9,7 @@ "packages/relayer": "0.12.0", "packages/snaefell-ui": "1.1.0", "packages/supplementary-contracts": "1.0.0", - "packages/taiko-client": "0.36.0", + "packages/taiko-client": "0.37.0", "packages/taikoon-ui": "1.3.0", "packages/ui-lib": "1.0.0" } diff --git a/packages/taiko-client/CHANGELOG.md b/packages/taiko-client/CHANGELOG.md index af9f8fc6e11..226ffba0c87 100644 --- a/packages/taiko-client/CHANGELOG.md +++ b/packages/taiko-client/CHANGELOG.md @@ -1,5 +1,47 @@ # Changelog +## [0.37.0](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.36.0...taiko-client-v0.37.0) (2024-09-28) + + +### Features + +* **taiko-client:** allow `--l1.beacon` to be optional when a blob server is given ([#18094](https://github.com/taikoxyz/taiko-mono/issues/18094)) ([f4d47a3](https://github.com/taikoxyz/taiko-mono/commit/f4d47a3f988462605f04106b14394bb400fc9669)) +* **taiko-client:** improve some logs in zk producer ([#18117](https://github.com/taikoxyz/taiko-mono/issues/18117)) ([109595e](https://github.com/taikoxyz/taiko-mono/commit/109595e7b285709833a782ee0959fd1a815ef706)) +* **taiko-client:** support `TaikoL1.proposeBlocksV2` ([#18116](https://github.com/taikoxyz/taiko-mono/issues/18116)) ([d0c0fed](https://github.com/taikoxyz/taiko-mono/commit/d0c0fed57c8b8ba139b65d0215df1976358e7635)) +* **taiko-client:** update contract bingdings ([#18182](https://github.com/taikoxyz/taiko-mono/issues/18182)) ([8954764](https://github.com/taikoxyz/taiko-mono/commit/8954764d96c256408c1cfd77deb1621da288a33c)) +* **taiko-client:** update prover balance check to include bond balance ([#18092](https://github.com/taikoxyz/taiko-mono/issues/18092)) ([5d5ca74](https://github.com/taikoxyz/taiko-mono/commit/5d5ca74970f88493ea75b14a13fe852f840f019a)) + + +### Bug Fixes + +* **taiko-client:** dont check l1heightInAnchor vs l1Height when detecting reorg ([#18110](https://github.com/taikoxyz/taiko-mono/issues/18110)) ([7ed9b6f](https://github.com/taikoxyz/taiko-mono/commit/7ed9b6f647fd1611e036ce12e4fd96696ef231ea)) +* **taiko-client:** fix blob server API URL when fetching blob data ([#18109](https://github.com/taikoxyz/taiko-mono/issues/18109)) ([7230dfd](https://github.com/taikoxyz/taiko-mono/commit/7230dfd1150edc7c08be6f97a46c1184a0b2d289)) +* **taiko-client:** fix process in handling empty proof ([#18128](https://github.com/taikoxyz/taiko-mono/issues/18128)) ([d6d90d8](https://github.com/taikoxyz/taiko-mono/commit/d6d90d887be8955f844c52c4fb100fa46d66fa47)) +* **taiko-client:** fix revert case when propose blob blocks ([#18185](https://github.com/taikoxyz/taiko-mono/issues/18185)) ([656e757](https://github.com/taikoxyz/taiko-mono/commit/656e757d629131cb03af894269ef447c39e9741e)) +* **taiko-client:** improve prover balance check based on 18092 ([#18129](https://github.com/taikoxyz/taiko-mono/issues/18129)) ([b6cd50b](https://github.com/taikoxyz/taiko-mono/commit/b6cd50b61577d1eaa7aa29bd3e728271bcd4996f)) +* **taiko-client:** record `lastProposedAt` after ontake fork ([#18166](https://github.com/taikoxyz/taiko-mono/issues/18166)) ([ea0ca90](https://github.com/taikoxyz/taiko-mono/commit/ea0ca9040cc3d1d9fec50777d40b3cf69803c115)) +* **taiko-client:** revert path changes about SocialScan endpoint ([#18119](https://github.com/taikoxyz/taiko-mono/issues/18119)) ([38fa03a](https://github.com/taikoxyz/taiko-mono/commit/38fa03ab78d9cf4e70df8c623a74a4d69cf85682)) + + +### Chores + +* **protocol:** remove reliance on taiko contracts and update golangci-lint ([#18151](https://github.com/taikoxyz/taiko-mono/issues/18151)) ([92f571a](https://github.com/taikoxyz/taiko-mono/commit/92f571a15daa4ad300b4665bbace9248c439fd11)) +* **taiko-client:** revert building changes ([#18174](https://github.com/taikoxyz/taiko-mono/issues/18174)) ([485b2ee](https://github.com/taikoxyz/taiko-mono/commit/485b2ee9a4bf4e16b9d0ab7b704eba0b0a46996c)) +* **taiko-client:** try cross-compile taiko-client to speed up docker building ([#18171](https://github.com/taikoxyz/taiko-mono/issues/18171)) ([9dbad24](https://github.com/taikoxyz/taiko-mono/commit/9dbad24cefcd260e2b452c9e8a46fcbe5f327cb4)) + + +### Tests + +* **taiko-client:** disable docker pull in hive test ([#18101](https://github.com/taikoxyz/taiko-mono/issues/18101)) ([95c9da2](https://github.com/taikoxyz/taiko-mono/commit/95c9da29fdd432de156f331802b79703a2311898)) +* **taiko-client:** introduce `TestProposeTxListOntake` ([#18167](https://github.com/taikoxyz/taiko-mono/issues/18167)) ([5023226](https://github.com/taikoxyz/taiko-mono/commit/5023226a7aa2e7355e835f9447b17eb85c60032a)) +* **taiko-client:** introduce blob-server and blob-l1-beacon hive tests ([#18121](https://github.com/taikoxyz/taiko-mono/issues/18121)) ([c544fe8](https://github.com/taikoxyz/taiko-mono/commit/c544fe8c33e26bfae951fb15c423aec2b749d092)) +* **taiko-client:** upgrade full sync and snap sync hive tests ([#18010](https://github.com/taikoxyz/taiko-mono/issues/18010)) ([1d18c17](https://github.com/taikoxyz/taiko-mono/commit/1d18c170566aed645e2e03b024e7fe2f2a01756d)) + + +### Workflow + +* **protocol:** avoid installing `netcat` in action ([#18159](https://github.com/taikoxyz/taiko-mono/issues/18159)) ([7e27d1d](https://github.com/taikoxyz/taiko-mono/commit/7e27d1de388755b167d864df37133bfedafa2462)) + ## [0.36.0](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.35.0...taiko-client-v0.36.0) (2024-09-12) diff --git a/packages/taiko-client/package.json b/packages/taiko-client/package.json index e25875cd697..d2c11412a32 100644 --- a/packages/taiko-client/package.json +++ b/packages/taiko-client/package.json @@ -1,5 +1,5 @@ { "name": "taiko-client", - "version": "0.36.0", + "version": "0.37.0", "private": true } From 773ae1b11f309ee8c4e0b1c0d22b9bfa41beae0d Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Sun, 29 Sep 2024 07:40:36 +0800 Subject: [PATCH 024/205] feat(protocol): allow owner to update recipient in TokenUnlock (#18184) Co-authored-by: David --- .../contracts/layer1/team/tokenunlock/TokenUnlock.sol | 7 ++++++- .../protocol/script/layer1/tokenunlock/exercise1.data.json | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol b/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol index 8b1250d49ac..a951d647c1c 100644 --- a/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol +++ b/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol @@ -66,6 +66,11 @@ contract TokenUnlock is EssentialContract { _; } + modifier onlyRecipientOrOwner() { + if (msg.sender != recipient && msg.sender != owner()) revert PERMISSION_DENIED(); + _; + } + /// @notice Initializes the contract. /// @param _owner The contract owner address. /// @param _rollupAddressManager The rollup address manager. @@ -151,7 +156,7 @@ contract TokenUnlock is EssentialContract { IERC20(resolve(LibStrings.B_TAIKO_TOKEN, false)).safeTransfer(recipient, amount); } - function changeRecipient(address _newRecipient) external onlyRecipient { + function changeRecipient(address _newRecipient) external onlyRecipientOrOwner { if (_newRecipient == address(0) || _newRecipient == recipient) { revert INVALID_PARAM(); } diff --git a/packages/protocol/script/layer1/tokenunlock/exercise1.data.json b/packages/protocol/script/layer1/tokenunlock/exercise1.data.json index c47271254f7..3bf88371ae4 100644 --- a/packages/protocol/script/layer1/tokenunlock/exercise1.data.json +++ b/packages/protocol/script/layer1/tokenunlock/exercise1.data.json @@ -501,7 +501,7 @@ }, { "proxy": "0x2Da30e14dE6a5fcE16a5Ea72199De76cebDC876C", - "recipient": "0x9c0c06ddbb72f70820d7e55b6b77db175d400fba", + "recipient": "0xf7a0cd60e3b6ab4523a5f54e9a410258895b138d", "vestAmount": 4013867 }, { From 8c5d00f5e074cd28a240add30cafd85f4667833d Mon Sep 17 00:00:00 2001 From: zuuluuz <55690197+cpucorecore@users.noreply.github.com> Date: Mon, 30 Sep 2024 11:57:52 +0800 Subject: [PATCH 025/205] chore(taiko-client): bump `go.mod` (#18169) Co-authored-by: David --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ffd9afedb33..b764d26eb03 100644 --- a/go.mod +++ b/go.mod @@ -268,7 +268,7 @@ require ( github.com/skeema/knownhosts v1.2.2 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.10.0 // indirect - github.com/supranational/blst v0.3.11 // indirect + github.com/supranational/blst v0.3.13 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect diff --git a/go.sum b/go.sum index 3d85672de4c..e8cb234f0c8 100644 --- a/go.sum +++ b/go.sum @@ -1168,8 +1168,8 @@ github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= -github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= +github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/swaggo/swag v1.16.3 h1:PnCYjPCah8FK4I26l2F/KQ4yz3sILcVUN3cTlBFA9Pg= github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= From 60c38d8d179f2c02a0ed87f97bd34dc708b38df4 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 30 Sep 2024 12:09:24 +0800 Subject: [PATCH 026/205] feat(protocol): check-in `HeklaTaikoToken` (#18189) Co-authored-by: Daniel Wang --- .../layer1/hekla/HeklaTaikoToken.sol | 153 ++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 packages/protocol/contracts/layer1/hekla/HeklaTaikoToken.sol diff --git a/packages/protocol/contracts/layer1/hekla/HeklaTaikoToken.sol b/packages/protocol/contracts/layer1/hekla/HeklaTaikoToken.sol new file mode 100644 index 00000000000..0b175f2d493 --- /dev/null +++ b/packages/protocol/contracts/layer1/hekla/HeklaTaikoToken.sol @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; +import "../../shared/common/EssentialContract.sol"; + +/// @title HeklaTaikoToken +/// @notice Taiko token for Taiko Hekla testnet. +/// @dev Labeled in AddressResolver as "taiko_token". +/// @dev Due to historical reasons, the Taiko Token on Hekla has a different storage layout compared +/// to the mainnet token contract. Therefore, we need to maintain this file. +/// @custom:security-contact security@taiko.xyz +contract HeklaTaikoToken is EssentialContract, ERC20SnapshotUpgradeable, ERC20VotesUpgradeable { + uint256[50] private __gap; + + error TKO_INVALID_ADDR(); + error TT_INVALID_PARAM(); + + /// @notice Initializes the contract. + /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. + /// @param _name The name of the token. + /// @param _symbol The symbol of the token. + /// @param _recipient The address to receive initial token minting. + /// @param _addressManager The AddressManager address. + function init( + address _owner, + string calldata _name, + string calldata _symbol, + address _recipient, + address _addressManager + ) + public + initializer + { + __Essential_init(_owner, _addressManager); + __ERC20_init(_name, _symbol); + __ERC20Snapshot_init(); + __ERC20Votes_init(); + __ERC20Permit_init(_name); + + // Mint 1 billion tokens + _mint(_recipient, 1_000_000_000 ether); + } + + /// @notice Burns tokens from the specified address. + /// @param _from The address to burn tokens from. + /// @param _amount The amount of tokens to burn. + function burn(address _from, uint256 _amount) public onlyOwner { + return _burn(_from, _amount); + } + + /// @notice Creates a new token snapshot. + function snapshot() public onlyFromOwnerOrNamed("snapshooter") returns (uint256) { + return _snapshot(); + } + + /// @notice Transfers tokens to a specified address. + /// @param _to The address to transfer tokens to. + /// @param _amount The amount of tokens to transfer. + /// @return A boolean indicating whether the transfer was successful or not. + function transfer(address _to, uint256 _amount) public override returns (bool) { + if (_to == address(this)) revert TKO_INVALID_ADDR(); + return super.transfer(_to, _amount); + } + + /// @notice Transfers tokens from one address to another. + /// @param _from The address to transfer tokens from. + /// @param _to The address to transfer tokens to. + /// @param _amount The amount of tokens to transfer. + /// @return A boolean indicating whether the transfer was successful or not. + function transferFrom( + address _from, + address _to, + uint256 _amount + ) + public + override + returns (bool) + { + if (_to == address(this)) revert TKO_INVALID_ADDR(); + return super.transferFrom(_from, _to, _amount); + } + + function name() public pure override returns (string memory) { + return "Taiko Token"; + } + + function symbol() public pure override returns (string memory) { + return "TAIKO"; + } + + function _beforeTokenTransfer( + address _from, + address _to, + uint256 _amount + ) + internal + override(ERC20Upgradeable, ERC20SnapshotUpgradeable) + { + return super._beforeTokenTransfer(_from, _to, _amount); + } + + function _afterTokenTransfer( + address _from, + address _to, + uint256 _amount + ) + internal + override(ERC20Upgradeable, ERC20VotesUpgradeable) + { + return super._afterTokenTransfer(_from, _to, _amount); + } + + function _mint( + address _to, + uint256 _amount + ) + internal + override(ERC20Upgradeable, ERC20VotesUpgradeable) + { + return super._mint(_to, _amount); + } + + function _burn( + address _from, + uint256 _amount + ) + internal + override(ERC20Upgradeable, ERC20VotesUpgradeable) + { + return super._burn(_from, _amount); + } + + /// @notice Batch transfers tokens + /// @param recipients The list of addresses to transfer tokens to. + /// @param amounts The list of amounts for transfer. + /// @return true if the transfer is successful. + function batchTransfer( + address[] calldata recipients, + uint256[] calldata amounts + ) + external + returns (bool) + { + if (recipients.length != amounts.length) revert TT_INVALID_PARAM(); + for (uint256 i; i < recipients.length; ++i) { + _transfer(msg.sender, recipients[i], amounts[i]); + } + return true; + } +} From 8fae6e0acecdedc32d892c7921fdbfcd69fe7a21 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Sun, 29 Sep 2024 23:27:51 -0700 Subject: [PATCH 027/205] chore(main): release docs-site 1.12.1 (#18183) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 12 ++++++++++++ packages/docs-site/package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e35d837b7d8..2c45e3623fd 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.12.0", + "packages/docs-site": "1.12.1", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.0", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index 44440981f90..2bb67297683 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [1.12.1](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.12.0...docs-site-v1.12.1) (2024-09-30) + + +### Chores + +* **docs-site:** fix broken diagram and delete self-direction link ([#18180](https://github.com/taikoxyz/taiko-mono/issues/18180)) ([2e20c28](https://github.com/taikoxyz/taiko-mono/commit/2e20c28e1ac482d3f6bb8ac5e182a43675853166)) + + +### Documentation + +* **docs-site:** add warning to proposer page and update banner ([#18186](https://github.com/taikoxyz/taiko-mono/issues/18186)) ([b02ea92](https://github.com/taikoxyz/taiko-mono/commit/b02ea92af01b37670c2545dbd4e332ab4803ae03)) + ## [1.12.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.11.9...docs-site-v1.12.0) (2024-09-19) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index bdbc04bc0c8..543113ec4d8 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.12.0", + "version": "1.12.1", "scripts": { "dev": "astro dev", "start": "astro dev", From 35579dfa938562969da2395492f4472c300574dd Mon Sep 17 00:00:00 2001 From: David Date: Tue, 1 Oct 2024 01:13:31 +0800 Subject: [PATCH 028/205] feat(taiko-client): add `proposer_pool_content_fetch_time` metric (#18190) --- packages/taiko-client/internal/metrics/metrics.go | 1 + packages/taiko-client/proposer/proposer.go | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/taiko-client/internal/metrics/metrics.go b/packages/taiko-client/internal/metrics/metrics.go index 1c27e5d9419..44de2709188 100644 --- a/packages/taiko-client/internal/metrics/metrics.go +++ b/packages/taiko-client/internal/metrics/metrics.go @@ -29,6 +29,7 @@ var ( ProposerProposeEpochCounter = factory.NewCounter(prometheus.CounterOpts{Name: "proposer_epoch"}) ProposerProposedTxListsCounter = factory.NewCounter(prometheus.CounterOpts{Name: "proposer_proposed_txLists"}) ProposerProposedTxsCounter = factory.NewCounter(prometheus.CounterOpts{Name: "proposer_proposed_txs"}) + ProposerPoolContentFetchTime = factory.NewGauge(prometheus.GaugeOpts{Name: "proposer_pool_content_fetch_time"}) // Prover ProverLatestVerifiedIDGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "prover_latestVerified_id"}) diff --git a/packages/taiko-client/proposer/proposer.go b/packages/taiko-client/proposer/proposer.go index 585bf705e22..171bcdb7403 100644 --- a/packages/taiko-client/proposer/proposer.go +++ b/packages/taiko-client/proposer/proposer.go @@ -184,7 +184,10 @@ func (p *Proposer) Close(_ context.Context) { // fetchPoolContent fetches the transaction pool content from L2 execution engine. func (p *Proposer) fetchPoolContent(filterPoolContent bool) ([]types.Transactions, error) { - minTip := p.MinTip + var ( + minTip = p.MinTip + startAt = time.Now() + ) // If `--epoch.allowZeroInterval` flag is set, allow proposing zero tip transactions once when // the total epochs number is divisible by the flag value. if p.AllowZeroInterval > 0 && p.totalEpochs%p.AllowZeroInterval == 0 { @@ -206,6 +209,8 @@ func (p *Proposer) fetchPoolContent(filterPoolContent bool) ([]types.Transaction return nil, fmt.Errorf("failed to fetch transaction pool content: %w", err) } + metrics.ProposerPoolContentFetchTime.Set(time.Since(startAt).Seconds()) + txLists := []types.Transactions{} for i, txs := range preBuiltTxList { // Filter the pool content if the filterPoolContent flag is set. From d9dd4f409e1490c75486388120ca2697ef2c5f9c Mon Sep 17 00:00:00 2001 From: Karim <162329697+kimo-ice@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:24:33 +0200 Subject: [PATCH 029/205] chore(main): multi-arch docker image build (#18195) Co-authored-by: Karim --- .github/workflows/taiko-client--docker.yml | 76 ++++++++++++++++++++-- 1 file changed, 70 insertions(+), 6 deletions(-) diff --git a/.github/workflows/taiko-client--docker.yml b/.github/workflows/taiko-client--docker.yml index 4b22f12b4d8..e087418f740 100644 --- a/.github/workflows/taiko-client--docker.yml +++ b/.github/workflows/taiko-client--docker.yml @@ -1,4 +1,4 @@ -name: "Push docker image to GAR" +name: "Build and Push Multi-Arch Docker Image" on: push: @@ -8,8 +8,11 @@ on: paths: - "packages/taiko-client/**" +env: + REGISTRY_IMAGE: us-docker.pkg.dev/evmchain/images/taiko-client + jobs: - push-docker-image: + build: name: Build and push docker image strategy: matrix: @@ -23,7 +26,10 @@ jobs: steps: - name: Prepare Environment - run: sudo apt-get update && sudo apt-get install -y git + run: | + platform=${{ matrix.platform }} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + sudo apt-get update && sudo apt-get install -y git - name: Checkout uses: actions/checkout@v4 @@ -45,15 +51,15 @@ jobs: id: meta uses: docker/metadata-action@v5 with: - images: | - us-docker.pkg.dev/evmchain/images/taiko-client + images: ${{ env.REGISTRY_IMAGE }} tags: | type=ref,event=branch type=ref,event=pr type=ref,event=tag type=sha - - name: Build and push + - name: Build and push by digest + id: build uses: docker/build-push-action@v5 with: context: . @@ -62,3 +68,61 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true + + - name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" + + - name: Upload digest + uses: actions/upload-artifact@v4 + with: + name: digests-${{ env.PLATFORM_PAIR }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + merge: + runs-on: arc-runner-set + needs: + - build + steps: + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: /tmp/digests + pattern: digests-* + merge-multiple: true + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY_IMAGE }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=ref,event=tag + type=sha + + - name: Login to GAR + uses: docker/login-action@v3 + with: + registry: us-docker.pkg.dev + username: _json_key + password: ${{ secrets.GAR_JSON_KEY }} + + - name: Create manifest list and push + working-directory: /tmp/digests + run: | + docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) + + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }} From 237e3a320542eac42a4a3ea4db45d63ce38ccd75 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Wed, 2 Oct 2024 11:51:52 -0700 Subject: [PATCH 030/205] fix(repo): fix taiko-client docker workflow (#18201) Co-authored-by: Karim --- .github/workflows/taiko-client--docker.yml | 87 +++++++++++----------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/.github/workflows/taiko-client--docker.yml b/.github/workflows/taiko-client--docker.yml index e087418f740..aaeb9efe684 100644 --- a/.github/workflows/taiko-client--docker.yml +++ b/.github/workflows/taiko-client--docker.yml @@ -66,7 +66,7 @@ jobs: file: packages/taiko-client/Dockerfile platforms: ${{ matrix.platform }} push: true - tags: ${{ steps.meta.outputs.tags }} + tags: ${{ env.REGISTRY_IMAGE }} labels: ${{ steps.meta.outputs.labels }} outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true @@ -85,44 +85,47 @@ jobs: retention-days: 1 merge: - runs-on: arc-runner-set - needs: - - build - steps: - - name: Download digests - uses: actions/download-artifact@v4 - with: - path: /tmp/digests - pattern: digests-* - merge-multiple: true - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY_IMAGE }} - tags: | - type=ref,event=branch - type=ref,event=pr - type=ref,event=tag - type=sha - - - name: Login to GAR - uses: docker/login-action@v3 - with: - registry: us-docker.pkg.dev - username: _json_key - password: ${{ secrets.GAR_JSON_KEY }} - - - name: Create manifest list and push - working-directory: /tmp/digests - run: | - docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ - $(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) - - - name: Inspect image - run: | - docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }} + runs-on: arc-runner-set + needs: + - build + steps: + - name: Prepare Environment + run: sudo apt-get update && sudo apt-get install -y jq + + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: /tmp/digests + pattern: digests-* + merge-multiple: true + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY_IMAGE }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=ref,event=tag + type=sha + + - name: Login to GAR + uses: docker/login-action@v3 + with: + registry: us-docker.pkg.dev + username: _json_key + password: ${{ secrets.GAR_JSON_KEY }} + + - name: Create manifest list and push + working-directory: /tmp/digests + run: | + docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) + + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }} From 8348ca80ded9ee765afcf687d04440c9614dfe0e Mon Sep 17 00:00:00 2001 From: Bernat Canal Garceran Date: Thu, 3 Oct 2024 16:43:32 +0200 Subject: [PATCH 031/205] feat(nfts): tbz s1 claim contracts (#18192) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- .../trailblazers-airdrop/ERC20Airdrop.sol | 99 ++++++++++++ .../trailblazers-airdrop/MerkleClaimable.sol | 138 +++++++++++++++++ .../trailblazers-airdrop/hekla.json | 4 + .../trailblazers-airdrop/mainnet.json | 0 packages/nfts/package.json | 4 +- .../script/trailblazers-airdrop/Deploy.s.sol | 93 ++++++++++++ .../script/trailblazers-airdrop/Utils.s.sol | 78 ++++++++++ .../trailblazers-airdrop/ERC20Airdrop.t.sol | 141 ++++++++++++++++++ packages/nfts/test/util/MockTokens.sol | 15 ++ 9 files changed, 571 insertions(+), 1 deletion(-) create mode 100644 packages/nfts/contracts/trailblazers-airdrop/ERC20Airdrop.sol create mode 100644 packages/nfts/contracts/trailblazers-airdrop/MerkleClaimable.sol create mode 100644 packages/nfts/deployments/trailblazers-airdrop/hekla.json create mode 100644 packages/nfts/deployments/trailblazers-airdrop/mainnet.json create mode 100644 packages/nfts/script/trailblazers-airdrop/Deploy.s.sol create mode 100644 packages/nfts/script/trailblazers-airdrop/Utils.s.sol create mode 100644 packages/nfts/test/trailblazers-airdrop/ERC20Airdrop.t.sol diff --git a/packages/nfts/contracts/trailblazers-airdrop/ERC20Airdrop.sol b/packages/nfts/contracts/trailblazers-airdrop/ERC20Airdrop.sol new file mode 100644 index 00000000000..831abfad59a --- /dev/null +++ b/packages/nfts/contracts/trailblazers-airdrop/ERC20Airdrop.sol @@ -0,0 +1,99 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/governance/utils/IVotes.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; +import "@taiko/blacklist/IMinimalBlacklist.sol"; + +import "./MerkleClaimable.sol"; + +/// @title ERC20Airdrop +/// @notice Contract for managing Taiko token airdrop for eligible users. +/// @custom:security-contact security@taiko.xyz +contract ERC20Airdrop is MerkleClaimable, ReentrancyGuardUpgradeable, PausableUpgradeable { + using SafeERC20 for IERC20; + + /// @notice The address of the Taiko token contract. + IERC20 public token; + /// @notice Blackist address + IMinimalBlacklist public blacklist; + + /// @notice Event emitted when the blacklist is updated. + event BlacklistUpdated(address _blacklist); + /// @notice Errors + + error ADDRESS_BLACKLISTED(); + + uint256[48] private __gap; + + /// @notice Modifier to check if the address is not blacklisted. + /// @param _address The address to check. + modifier isNotBlacklisted(address _address) { + if (blacklist.isBlacklisted(_address)) revert ADDRESS_BLACKLISTED(); + _; + } + + /// @notice Initializes the contract. + /// @param _owner The owner of this contract. + /// @param _claimStart The start time of the claim period. + /// @param _claimEnd The end time of the claim period. + /// @param _merkleRoot The merkle root. + /// @param _token The address of the token contract. + function init( + address _owner, + uint64 _claimStart, + uint64 _claimEnd, + bytes32 _merkleRoot, + IERC20 _token, + address _blacklist + ) + external + initializer + { + __ReentrancyGuard_init(); + __Pausable_init(); + __MerkleClaimable_init(_claimStart, _claimEnd, _merkleRoot); + _transferOwnership(_owner == address(0) ? _msgSender() : _owner); + blacklist = IMinimalBlacklist(_blacklist); + token = _token; + } + + /// @notice Claims the airdrop for the user. + /// @param user The address of the user. + /// @param amount The amount of tokens to claim. + /// @param proof The merkle proof. + function claim( + address user, + uint256 amount, + bytes32[] calldata proof + ) + external + nonReentrant + isNotBlacklisted(user) + { + // Check if this can be claimed + _verifyClaim(abi.encode(user, amount), proof); + + // Transfer the tokens from contract + IERC20(token).transfer(user, amount); + } + + /// @notice Withdraw ERC20 tokens from the Vault + /// @param _token The ERC20 token address to withdraw + /// @dev Only the owner can execute this function + function withdrawERC20(IERC20 _token) external onlyOwner { + // If token address is address(0), use token + if (address(_token) == address(0)) { + _token = token; + } + // Transfer the tokens to owner + _token.transfer(owner(), _token.balanceOf(address(this))); + } + + /// @notice Internal method to authorize an upgrade + function _authorizeUpgrade(address) internal virtual override onlyOwner { } +} diff --git a/packages/nfts/contracts/trailblazers-airdrop/MerkleClaimable.sol b/packages/nfts/contracts/trailblazers-airdrop/MerkleClaimable.sol new file mode 100644 index 00000000000..3396bf998c0 --- /dev/null +++ b/packages/nfts/contracts/trailblazers-airdrop/MerkleClaimable.sol @@ -0,0 +1,138 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; + +import { UUPSUpgradeable } from + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import { Ownable2StepUpgradeable } from + "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import { MerkleProof } from "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; +import { ContextUpgradeable } from + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"; + +/// @title MerkleClaimable +/// @notice Contract for managing Taiko token airdrop for eligible users +/// @custom:security-contact security@taiko.xyz +abstract contract MerkleClaimable is + ContextUpgradeable, + UUPSUpgradeable, + Ownable2StepUpgradeable +{ + /// @notice Mapping of hashes and their claim status + mapping(bytes32 hash => bool claimed) public isClaimed; + + /// @notice Merkle root of the tree + bytes32 public merkleRoot; + + /// @notice Unix timestamp for claim start + uint64 public claimStart; + + /// @notice Unix timestamp for claim end + uint64 public claimEnd; + + uint256[47] private __gap; + + /// @notice Event emitted when a claim is made + /// @param hash Hash of the claim + event Claimed(bytes32 hash); + + /// @notice Event emitted when config is changed + /// @param claimStart Unix timestamp for claim start + /// @param claimEnd Unix timestamp for claim end + /// @param merkleRoot Merkle root of the tree + event ConfigChanged(uint64 claimStart, uint64 claimEnd, bytes32 merkleRoot); + + /// @notice Errors + error CLAIM_NOT_ONGOING(); + error CLAIMED_ALREADY(); + error INVALID_PARAMS(); + error INVALID_PROOF(); + + /// @notice Modifier to check if the claim is ongoing + modifier ongoingClaim() { + if ( + merkleRoot == 0x0 || claimStart == 0 || claimEnd == 0 || claimStart > block.timestamp + || claimEnd < block.timestamp + ) revert CLAIM_NOT_ONGOING(); + _; + } + + /// @notice Set config parameters + /// @param _claimStart Unix timestamp for claim start + /// @param _claimEnd Unix timestamp for claim end + /// @param _merkleRoot Merkle root of the tree + function setConfig( + uint64 _claimStart, + uint64 _claimEnd, + bytes32 _merkleRoot + ) + external + onlyOwner + { + _setConfig(_claimStart, _claimEnd, _merkleRoot); + } + + /// @notice Initialize the contract + /// @param _claimStart Unix timestamp for claim start + /// @param _claimEnd Unix timestamp for claim end + /// @param _merkleRoot Merkle root of the tree + function __MerkleClaimable_init( + uint64 _claimStart, + uint64 _claimEnd, + bytes32 _merkleRoot + ) + internal + onlyInitializing + { + __Context_init(); + _setConfig(_claimStart, _claimEnd, _merkleRoot); + } + + /// @notice Verify an airdrop claim + /// @param data Data to be hashed + /// @param proof Merkle proof + function _verifyClaim(bytes memory data, bytes32[] calldata proof) internal ongoingClaim { + bytes32 hash = keccak256(abi.encode("CLAIM_TAIKO_AIRDROP", data)); + + if (isClaimed[hash]) revert CLAIMED_ALREADY(); + if (!_verifyMerkleProof(proof, merkleRoot, hash)) revert INVALID_PROOF(); + + isClaimed[hash] = true; + emit Claimed(hash); + } + + /// @notice Verify a Merkle proof + /// @param _proof Merkle proof + /// @param _merkleRoot Merkle root + /// @param _value Value to verify + /// @return Whether the proof is valid + function _verifyMerkleProof( + bytes32[] calldata _proof, + bytes32 _merkleRoot, + bytes32 _value + ) + internal + pure + virtual + returns (bool) + { + return MerkleProof.verify(_proof, _merkleRoot, _value); + } + + /// @notice Set config parameters + /// @param _claimStart Unix timestamp for claim start + /// @param _claimEnd Unix timestamp for claim end + /// @param _merkleRoot Merkle root of the tree + function _setConfig(uint64 _claimStart, uint64 _claimEnd, bytes32 _merkleRoot) private { + if (_claimStart > _claimEnd) revert INVALID_PARAMS(); + + claimStart = _claimStart; + claimEnd = _claimEnd; + merkleRoot = _merkleRoot; + emit ConfigChanged(_claimStart, _claimEnd, _merkleRoot); + } + + /// @notice Internal method to authorize an upgrade + function _authorizeUpgrade(address) internal virtual override onlyOwner { } +} diff --git a/packages/nfts/deployments/trailblazers-airdrop/hekla.json b/packages/nfts/deployments/trailblazers-airdrop/hekla.json new file mode 100644 index 00000000000..b0417106a8b --- /dev/null +++ b/packages/nfts/deployments/trailblazers-airdrop/hekla.json @@ -0,0 +1,4 @@ +{ + "ERC20Airdrop": "0x42DB7bE491a8933FaADbca4891dA2632D45e5CfC", + "MerkleRoot": "0xea5b2299e76b4860965e9059388d021145269c96b816b07a808ff391cd80753e" +} diff --git a/packages/nfts/deployments/trailblazers-airdrop/mainnet.json b/packages/nfts/deployments/trailblazers-airdrop/mainnet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/nfts/package.json b/packages/nfts/package.json index f71dee93420..e0feeef6245 100644 --- a/packages/nfts/package.json +++ b/packages/nfts/package.json @@ -32,7 +32,9 @@ "kbw:deploy:mainnet": "forge clean && pnpm compile && forge script script/party-ticket/sol/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --legacy --with-gas-price 30 ", "kbw:upgradeV2:hekla": "forge clean && pnpm compile && forge script script/party-ticket/sol/UpgradeV2.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", "kbw:upgradeV2:mainnet": "forge clean && pnpm compile && forge script script/party-ticket/sol/UpgradeV2.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast", - "pfp:deploy:hekla": "forge clean && pnpm compile && forge script script/profile/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200" + "pfp:deploy:hekla": "forge clean && pnpm compile && forge script script/profile/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "pfp:deploy:mainnet": "forge clean && pnpm compile && forge script script/profile/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "tbz:airdrop:hekla": "forge clean && pnpm compile && forge script script/trailblazers-airdrop/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200" }, "devDependencies": { "@types/node": "^20.11.30", diff --git a/packages/nfts/script/trailblazers-airdrop/Deploy.s.sol b/packages/nfts/script/trailblazers-airdrop/Deploy.s.sol new file mode 100644 index 00000000000..663ef57e3df --- /dev/null +++ b/packages/nfts/script/trailblazers-airdrop/Deploy.s.sol @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { UtilsScript } from "./Utils.s.sol"; +import { Script, console } from "forge-std/src/Script.sol"; +import { Merkle } from "murky/Merkle.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { TrailblazersBadges } from "../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; +import { ERC20Airdrop } from "../../contracts/trailblazers-airdrop/ERC20Airdrop.sol"; +import { ERC20Mock } from "../../test/util/MockTokens.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; +import { MockBlacklist } from "../../test/util/Blacklist.sol"; + +contract DeployScript is Script { + UtilsScript public utils; + string public jsonLocation; + uint256 public deployerPrivateKey; + address public deployerAddress; + + // only used for production + IMinimalBlacklist blacklist = IMinimalBlacklist(0xe61E9034b5633977eC98E302b33e321e8140F105); + + ERC20Airdrop public airdrop; + uint256 constant TOTAL_AVAILABLE_FUNDS = 1000 ether; + + uint256 constant CLAIM_AMOUNT = 10 ether; + + // hekla test root + bytes32 public merkleRoot = 0xea5b2299e76b4860965e9059388d021145269c96b816b07a808ff391cd80753e; + + // rewards token + ERC20Upgradeable public erc20; + ERC20Mock public mockERC20; + // start and end times for the claim + uint64 constant CLAIM_DURATION = 1 days; + uint64 public CLAIM_START = uint64(block.timestamp); + uint64 public CLAIM_END = CLAIM_START + CLAIM_DURATION; + + function setUp() public { + utils = new UtilsScript(); + utils.setUp(); + + jsonLocation = utils.getContractJsonLocation(); + deployerPrivateKey = utils.getPrivateKey(); + deployerAddress = utils.getAddress(); + + vm.startBroadcast(deployerPrivateKey); + + if (block.chainid != 167_000) { + // not mainnet, create mock contracts + blacklist = new MockBlacklist(); + mockERC20 = new ERC20Mock(); + // mint the necessary funds + erc20 = ERC20Upgradeable(address(mockERC20)); + } + + vm.stopBroadcast(); + } + + function run() public { + string memory jsonRoot = "root"; + + vm.startBroadcast(deployerPrivateKey); + + // deploy token with empty root + address impl = address(new ERC20Airdrop()); + address proxy = address( + new ERC1967Proxy( + impl, + abi.encodeCall( + ERC20Airdrop.init, + (deployerAddress, CLAIM_START, CLAIM_END, merkleRoot, erc20, address(blacklist)) + ) + ) + ); + + airdrop = ERC20Airdrop(proxy); + + // mint the necessary funds on hekla + if (block.chainid != 167_000) { + mockERC20.mint(address(airdrop), TOTAL_AVAILABLE_FUNDS); + } + + console.log("Deployed ERC20Airdrop to:", address(airdrop)); + + vm.serializeBytes32(jsonRoot, "MerkleRoot", merkleRoot); + string memory finalJson = vm.serializeAddress(jsonRoot, "ERC20Airdrop", address(airdrop)); + vm.writeJson(finalJson, jsonLocation); + + vm.stopBroadcast(); + } +} diff --git a/packages/nfts/script/trailblazers-airdrop/Utils.s.sol b/packages/nfts/script/trailblazers-airdrop/Utils.s.sol new file mode 100644 index 00000000000..cb9b6269d5f --- /dev/null +++ b/packages/nfts/script/trailblazers-airdrop/Utils.s.sol @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { Script, console } from "forge-std/src/Script.sol"; +import "forge-std/src/StdJson.sol"; +import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; +import { MockBlacklist } from "../../test/util/Blacklist.sol"; + +contract UtilsScript is Script { + using stdJson for string; + + address public nounsTokenAddress; + + uint256 public chainId; + + string public lowercaseNetworkKey; + string public uppercaseNetworkKey; + + function setUp() public { + // load all network configs + chainId = block.chainid; + + if (chainId == 31_337) { + lowercaseNetworkKey = "localhost"; + uppercaseNetworkKey = "LOCALHOST"; + } else if (chainId == 17_000) { + lowercaseNetworkKey = "holesky"; + uppercaseNetworkKey = "HOLESKY"; + } else if (chainId == 167_001) { + lowercaseNetworkKey = "devnet"; + uppercaseNetworkKey = "DEVNET"; + } else if (chainId == 11_155_111) { + lowercaseNetworkKey = "sepolia"; + uppercaseNetworkKey = "SEPOLIA"; + } else if (chainId == 167_008) { + lowercaseNetworkKey = "katla"; + uppercaseNetworkKey = "KATLA"; + } else if (chainId == 167_000) { + lowercaseNetworkKey = "mainnet"; + uppercaseNetworkKey = "MAINNET"; + } else if (chainId == 167_009) { + lowercaseNetworkKey = "hekla"; + uppercaseNetworkKey = "HEKLA"; + } else { + revert("Unsupported chainId"); + } + } + + function getPrivateKey() public view returns (uint256) { + string memory lookupKey = string.concat(uppercaseNetworkKey, "_PRIVATE_KEY"); + return vm.envUint(lookupKey); + } + + function getAddress() public view returns (address) { + string memory lookupKey = string.concat(uppercaseNetworkKey, "_ADDRESS"); + return vm.envAddress(lookupKey); + } + + function getContractJsonLocation() public view returns (string memory) { + string memory root = vm.projectRoot(); + return + string.concat(root, "/deployments/trailblazers-airdrop/", lowercaseNetworkKey, ".json"); + } + + function getBlacklist() public view returns (IMinimalBlacklist blacklistAddress) { + if (block.chainid == 167_000) { + // mainnet blacklist address + blacklistAddress = IMinimalBlacklist(vm.envAddress("BLACKLIST_ADDRESS")); + } else { + // deploy a mock blacklist otherwise + blacklistAddress = IMinimalBlacklist(0xbdEd0D2bf404bdcBa897a74E6657f1f12e5C6fb6); + } + + return blacklistAddress; + } + + function run() public { } +} diff --git a/packages/nfts/test/trailblazers-airdrop/ERC20Airdrop.t.sol b/packages/nfts/test/trailblazers-airdrop/ERC20Airdrop.t.sol new file mode 100644 index 00000000000..e2dbaeb4d8b --- /dev/null +++ b/packages/nfts/test/trailblazers-airdrop/ERC20Airdrop.t.sol @@ -0,0 +1,141 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { Test } from "forge-std/src/Test.sol"; + +import { ERC20Airdrop } from "../../contracts/trailblazers-airdrop/ERC20Airdrop.sol"; +import { Merkle } from "murky/Merkle.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { UtilsScript } from "../../script/taikoon/sol/Utils.s.sol"; +import { MockBlacklist } from "../util/Blacklist.sol"; +import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import { ERC20Mock } from "../util/MockTokens.sol"; + +contract ERC20AirdropTest is Test { + UtilsScript public utils; + + ERC20Airdrop public airdrop; + + address public owner = vm.addr(0x5); + + address[3] public minters = [ + vm.addr(0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80), + vm.addr(0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d), + vm.addr(0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a) + ]; + + bytes32[] public leaves = [ + bytes32(0xbe00dd3c5d43551e03bf9a60316bee19ede94bf34486c39398c4f9f3b309d7a3), + bytes32(0xa097cea9c873bd65b34c8d7d543e90ac1e18e5ec72c17cd95dedd0b52f02022e) + ]; + + Merkle tree = new Merkle(); + + address mintSigner; + uint256 mintSignerPk; + + /////////////////////////////// + uint64 constant CLAIM_START = 100; + uint64 constant CLAIM_END = 200; + + ERC20Mock public erc20; + + MockBlacklist public blacklist; + + uint256 constant TOTAL_AVAILABLE_FUNDS = 1000 ether; + + uint256 constant CLAIM_AMOUNT = 1 ether; + + function setUp() public { + utils = new UtilsScript(); + utils.setUp(); + // create whitelist merkle tree + vm.startBroadcast(owner); + + // mock tree + bytes32 merkleRoot = tree.getRoot(leaves); + + // deploy supplementary contracts + erc20 = new ERC20Mock(); + + blacklist = new MockBlacklist(); + + // deploy airdrop with empty root + address impl = address(new ERC20Airdrop()); + address proxy = address( + new ERC1967Proxy( + impl, + abi.encodeCall( + ERC20Airdrop.init, + (owner, CLAIM_START, CLAIM_END, merkleRoot, erc20, address(blacklist)) + ) + ) + ); + + airdrop = ERC20Airdrop(proxy); + + // fund the airdrop contract + erc20.mint(address(airdrop), TOTAL_AVAILABLE_FUNDS); + + vm.stopBroadcast(); + } + + function test_revert_claim_beforeClaimStart() public { + vm.warp(CLAIM_START - 1); + address user = minters[0]; + + bytes32[] memory proof = tree.getProof(leaves, 0); + + vm.prank(user); + vm.expectRevert(); + airdrop.claim(user, CLAIM_AMOUNT, proof); + } + + function test_revert_claim_afterClaimEnd() public { + vm.warp(CLAIM_END + 1); + address user = minters[0]; + + bytes32[] memory proof = tree.getProof(leaves, 0); + + vm.prank(user); + vm.expectRevert(); + airdrop.claim(user, CLAIM_AMOUNT, proof); + } + + function test_claim() public { + vm.warp(CLAIM_START + 1); + address user = minters[0]; + + bytes32[] memory proof = tree.getProof(leaves, 0); + + vm.prank(user); + airdrop.claim(user, CLAIM_AMOUNT, proof); + + assertEq(erc20.balanceOf(user), CLAIM_AMOUNT); + assertEq(erc20.balanceOf(address(airdrop)), TOTAL_AVAILABLE_FUNDS - CLAIM_AMOUNT); + } + + function test_revert_claim_twice() public { + test_claim(); + address user = minters[0]; + + bytes32[] memory proof = tree.getProof(leaves, 0); + + vm.prank(user); + vm.expectRevert(); + airdrop.claim(user, CLAIM_AMOUNT, proof); + } + + function test_revert_blacklisted_mint() public { + vm.warp(CLAIM_START + 1); + + address user = minters[0]; + blacklist.add(user); + + bytes32[] memory proof = tree.getProof(leaves, 0); + + vm.prank(user); + vm.expectRevert(); + airdrop.claim(user, CLAIM_AMOUNT, proof); + } +} diff --git a/packages/nfts/test/util/MockTokens.sol b/packages/nfts/test/util/MockTokens.sol index 7f7192475d9..6143d1b37ec 100644 --- a/packages/nfts/test/util/MockTokens.sol +++ b/packages/nfts/test/util/MockTokens.sol @@ -1,10 +1,25 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; +import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +contract ERC20Mock is Initializable, ERC20Upgradeable { + function initialize(string memory name, string memory symbol) public initializer { + __ERC20_init(name, symbol); + } + + function mint(address to, uint256 amount) public { + _mint(to, amount); + } + + function burn(address from, uint256 amount) public { + _burn(from, amount); + } +} + contract ERC721Mock is Initializable, ERC721Upgradeable { function initialize(string memory name, string memory symbol) public initializer { __ERC721_init(name, symbol); From cf303b6ae2ab3588721fee2bc9d98ba2c20ecff9 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Thu, 3 Oct 2024 18:37:06 -0700 Subject: [PATCH 032/205] docs(fork-diff): update geth fork diff for upstream merge (#18206) --- packages/fork-diff/version_config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/fork-diff/version_config.json b/packages/fork-diff/version_config.json index a139e6be5af..226f60c33e6 100644 --- a/packages/fork-diff/version_config.json +++ b/packages/fork-diff/version_config.json @@ -1,3 +1,3 @@ { - "tagVersion": "v1.13.15" + "tagVersion": "v1.14.11" } From 038cd326668b3a882798ecb4e7f9e3ecadc6dc28 Mon Sep 17 00:00:00 2001 From: smtmfft <99081233+smtmfft@users.noreply.github.com> Date: Fri, 4 Oct 2024 09:57:06 +0800 Subject: [PATCH 033/205] feat(protocol): enable sp1 batch aggregation (#18199) Co-authored-by: smtmfft Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> Co-authored-by: Daniel Wang Co-authored-by: dantaik Co-authored-by: Daniel Wang --- .../layer1/verifiers/SP1Verifier.sol | 55 +++++++++++++---- .../layer1/verifiers/SP1PlonkVerifier.t.sol | 60 +++++++++++++++++++ 2 files changed, 104 insertions(+), 11 deletions(-) diff --git a/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol b/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol index 8fe4e3ec713..c9f9e2aca8b 100644 --- a/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol @@ -22,6 +22,8 @@ contract SP1Verifier is EssentialContract, IVerifier { event ProgramTrusted(bytes32 programVKey, bool trusted); error SP1_INVALID_PROGRAM_VKEY(); + error SP1_INVALID_AGGREGATION_VKEY(); + error SP1_INVALID_PARAMS(); error SP1_INVALID_PROOF(); /// @notice Initializes the contract with the provided address manager. @@ -54,9 +56,7 @@ contract SP1Verifier is EssentialContract, IVerifier { // Avoid in-memory decoding, so in-place decode with slicing. // e.g.: bytes32 programVKey = bytes32(_proof.data[0:32]); - if (!isProgramTrusted[bytes32(_proof.data[0:32])]) { - revert SP1_INVALID_PROGRAM_VKEY(); - } + require(isProgramTrusted[bytes32(_proof.data[0:32])], SP1_INVALID_PROGRAM_VKEY()); // Need to be converted from bytes32 to bytes bytes32 hashedPublicInput = LibPublicInput.hashPublicInputs( @@ -71,20 +71,53 @@ contract SP1Verifier is EssentialContract, IVerifier { ) ); - if (!success) { - revert SP1_INVALID_PROOF(); - } + require(success, SP1_INVALID_PROOF()); } /// @inheritdoc IVerifier function verifyBatchProof( - ContextV2[] calldata, /*_ctxs*/ - TaikoData.TierProof calldata /*_proof*/ + ContextV2[] calldata _ctxs, + TaikoData.TierProof calldata _proof ) external - pure - notImplemented - { } + view + { + require(_ctxs.length != 0 && _proof.data.length > 64, SP1_INVALID_PARAMS()); + // Extract the necessary data + bytes32 aggregation_program = bytes32(_proof.data[0:32]); + bytes32 block_proving_program = bytes32(_proof.data[32:64]); + + // Check if the aggregation program is trusted + require(isProgramTrusted[aggregation_program], SP1_INVALID_AGGREGATION_VKEY()); + // Check if the block proving program is trusted + require(isProgramTrusted[block_proving_program], SP1_INVALID_PROGRAM_VKEY()); + + // Collect public inputs + bytes32[] memory public_inputs = new bytes32[](_ctxs.length + 1); + // First public input is the block proving program key + public_inputs[0] = block_proving_program; + // All other inputs are the block program public inputs (a single 32 byte value) + for (uint256 i; i < _ctxs.length; ++i) { + public_inputs[i + 1] = LibPublicInput.hashPublicInputs( + _ctxs[i].tran, + address(this), + address(0), + _ctxs[i].prover, + _ctxs[i].metaHash, + taikoChainId() + ); + } + + // _proof.data[64:] is the succinct's proof position + (bool success,) = sp1RemoteVerifier().staticcall( + abi.encodeCall( + ISP1Verifier.verifyProof, + (aggregation_program, abi.encodePacked(public_inputs), _proof.data[64:]) + ) + ); + + require(success, SP1_INVALID_PROOF()); + } function taikoChainId() internal view virtual returns (uint64) { return ITaikoL1(resolve(LibStrings.B_TAIKO, false)).getConfig().chainId; diff --git a/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol b/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol index 603bb430991..90a59361860 100644 --- a/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol +++ b/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol @@ -97,4 +97,64 @@ contract SP1PlonkVerifierTest is TaikoL1TestBase { graffiti: 0x8008500000000000000000000000000000000000000000000000000000000000 }); } + + // Test `verifyBatchProof()` happy path + function test_sp1_Plonk_verifyBatchProof() public { + vm.startPrank(Emma); + + // proof generation elf vk digest which is not a bn254 hash + // but a sha256 hash from the same Sp1Verifykey. + sp1.setProgramTrusted( + bytes32(0x25a022bd2d3ceba748620b63401e94bb156f195a0dc2cf445c2bdfc20358d393), true + ); + // proof aggregation elf + sp1.setProgramTrusted( + bytes32(0x000b55d1eea2d844974b3449118e4221bdf44534897d530dd9ae54201a36ad97), true + ); + + vm.startPrank(address(L1)); + + // Context + IVerifier.ContextV2[] memory ctxs = new IVerifier.ContextV2[](2); + ctxs[0] = IVerifier.ContextV2({ + metaHash: 0x207b2833fb6d804612da24d8785b870a19c7a3f25fa4aaeb9799cd442d65b031, + blobHash: 0x01354e8725e60ad91b32ec4ab19158572a0a5b06b2d4d83f6269c9a7d068f49b, + prover: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + msgSender: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + blockId: 393_333, + isContesting: false, + blobUsed: true, + tran: TaikoData.Transition({ + parentHash: 0xce519622a374dc014c005d7857de26d952751a9067d3e23ffe14da247aa8a399, + blockHash: 0x941d557653da2214cbf3d30af8d9cadbc7b5f77b6c3e48bca548eba04eb9cd79, + stateRoot: 0x4203a2fd98d268d272acb24d91e25055a779b443ff3e732f2cee7abcf639b5e9, + graffiti: 0x8008500000000000000000000000000000000000000000000000000000000000 + }) + }); + ctxs[1] = IVerifier.ContextV2({ + metaHash: 0x946ba1a9c02fc2f01da49e31cb5be83c118193d0389987c6be616ce76426b44d, + blobHash: 0x01abac8c1fb54f87ff7b0cbf14259b9d5ee7a8de458c587dd6eda43ef8354b4f, + prover: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + msgSender: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8, + blockId: 393_334, + isContesting: false, + blobUsed: true, + tran: TaikoData.Transition({ + parentHash: 0x941d557653da2214cbf3d30af8d9cadbc7b5f77b6c3e48bca548eba04eb9cd79, + blockHash: 0xc0dad38646ab264be30995b7b7fd02db65e7115126fb52bfad94c0fc9572287c, + stateRoot: 0x222061caab95b6bd0f8dd398088030979efbe56e282cd566f7abd77838558eb9, + graffiti: 0x8008500000000000000000000000000000000000000000000000000000000000 + }) + }); + + // TierProof + bytes memory data = + hex"000b55d1eea2d844974b3449118e4221bdf44534897d530dd9ae54201a36ad9725a022bd2d3ceba748620b63401e94bb156f195a0dc2cf445c2bdfc20358d3934aca240a294f40587144c884ce9b2326d1b8e002218abeb9535dbfb27fde012f1eba3fba17ee609acf6acf73790d3063da18707342809998f3d8db3fcd5d094b29bb48d22ff04e45f4de3c6026cd67256e45ca562e786db8b36d51c1c5f2f862c993e38f0851ef22ac10ea44ae5b62899650d8a8bc76a983caef459e88c514e1cbd34aea1b6f71f91410d6365b9e635cb4c56b1f6b98eb883d7815273d49fff1c5a4addb0cca4a2f394210ff2d7fc1c33059201a663c9f38f01ef198ef345d4d3d3810b70c99d241029c4a099d3f5ab3b6f5602e04344cc55c821f97fcc163dd472b252119f2940b56f0eee79a0fd5062b20c3445c79d70c773d69abaeced5b68c25f5ae1c385a7f9e8d4c2bc24f9627fa814d8269f2cf73f704b3c46ea8dd0219d41db81e1dc0ac4f62d8d6b8715c5b1637d160c67cde18ee3c66c860830297cc875656120418336954c73523765728f31a0a0bdbf630ad9d937ddf9a1f8dbf88ca281a280e466fe7f8fe8c000826c01930b0d6af20210003b5eac307cd107dff2239340b36e4cbe03ffa0e3bf434aea3252b9b05504321916ac8110f83de55bc9635c62cb569714ad44343866aa1e60e3dd93c4789c0ae94207861bf09838f83cb32a9033d94d3a4d674fcc435cd1b86afd5260c0f6d1501737120d070b950aff9ce5e2821b54d7df5bc8fb28e4f4312f217e9bca61bde4b57cda1075f7bbaedbc259b0f6c6e92661ad9404e0bcb3f15b9839f09fa87d278c2f0f9d99e7eea9ff1f7f023b455edeac48de876a7943796ffba85f3bf1c662081e7e563255f4c268e8711123094ccd2d38b1d3f1ce2c485529b26ab6372fbc3638ffec3aeff657f21a8cf13152c305d2fb084234246dbad615832e98b8c63e8fe582a6fad6efb41642c0018100a1b2f3e2479cb09eaf1d86e530ad63d1d117430a87dcae5182540ad05fd1a17cd482143e3d18c0c82554c71b16c1a62cbad06037c0c61b9894717e681b12e42a110b132225dd8af852412f687ec229710fe17db56c28aad002d5d1313762864a7e8d79b65b9f59f3adcba9c82b891721f7c488d482d5b715f059e3d299602ea0e25424ef254362ac70781e66d35349755e76683c045f4824a6c3b38a9481ace0378d91f74a89cf1138c78f676a1a72931469f8016d9fe1246ae2ccf83422cfeb943fee210a39abcd0551f545f6929fce1722585de936142b2fe1736ccec"; + TaikoData.TierProof memory proof = TaikoData.TierProof({ tier: 0, data: data }); + + // `verifyProof()` + sp1.verifyBatchProof(ctxs, proof); + + vm.stopPrank(); + } } From 287620f20c510d5df821009f93f187cdeaf3e9d5 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Thu, 3 Oct 2024 19:19:14 -0700 Subject: [PATCH 034/205] chore(main): release fork-diff 0.6.1 (#18207) --- .release-please-manifest.json | 2 +- packages/fork-diff/CHANGELOG.md | 7 +++++++ packages/fork-diff/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2c45e3623fd..f38a50665fb 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -2,7 +2,7 @@ "packages/bridge-ui": "2.12.0", "packages/docs-site": "1.12.1", "packages/eventindexer": "0.13.0", - "packages/fork-diff": "0.6.0", + "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", "packages/guardian-prover-health-check-ui": "0.2.0", "packages/protocol": "1.9.0", diff --git a/packages/fork-diff/CHANGELOG.md b/packages/fork-diff/CHANGELOG.md index 90ea31bbcaa..8fa70caf30d 100644 --- a/packages/fork-diff/CHANGELOG.md +++ b/packages/fork-diff/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.6.1](https://github.com/taikoxyz/taiko-mono/compare/fork-diff-v0.6.0...fork-diff-v0.6.1) (2024-10-04) + + +### Documentation + +* **fork-diff:** update geth fork diff for upstream merge ([#18206](https://github.com/taikoxyz/taiko-mono/issues/18206)) ([cf303b6](https://github.com/taikoxyz/taiko-mono/commit/cf303b6ae2ab3588721fee2bc9d98ba2c20ecff9)) + ## [0.6.0](https://github.com/taikoxyz/taiko-mono/compare/fork-diff-v0.5.0...fork-diff-v0.6.0) (2024-06-06) diff --git a/packages/fork-diff/package.json b/packages/fork-diff/package.json index d7b61745406..aa9d38bca23 100644 --- a/packages/fork-diff/package.json +++ b/packages/fork-diff/package.json @@ -1,4 +1,4 @@ { "name": "@taiko/fork-diff", - "version": "0.6.0" + "version": "0.6.1" } From 8077dfbc8f3a7dca186c640cf12cacf90957f8e9 Mon Sep 17 00:00:00 2001 From: Andrew Scot Date: Sat, 5 Oct 2024 00:49:37 +1000 Subject: [PATCH 035/205] chore(docs): migrate the openzeppelin doc (#18205) --- packages/monitors/defender/mainnet/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/monitors/defender/mainnet/README.md b/packages/monitors/defender/mainnet/README.md index ab913793c2c..b0c8dcde464 100644 --- a/packages/monitors/defender/mainnet/README.md +++ b/packages/monitors/defender/mainnet/README.md @@ -208,7 +208,7 @@ You can use `sls invoke --function ` to manually run an actio > Each command has a standard output to a JSON object. -More information can be found on our documentation page [here](https://docs.openzeppelin.com/defender/serverless-plugin.html) +More information can be found on our documentation page [here](https://docs.openzeppelin.com/defender/dac) ## Caveats From 219a7e87c09c7e4ac8d545c65c77a29e6f818701 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 6 Oct 2024 11:50:47 +0800 Subject: [PATCH 036/205] chore(taiko-client): bump dependencies (#18202) Co-authored-by: maskpp Co-authored-by: Gavin Yu --- .github/workflows/eventindexer.yml | 4 +- .../guardian-prover-health-check.yml | 4 +- .github/workflows/relayer.yml | 4 +- .github/workflows/taiko-client--hive_test.yml | 2 +- .github/workflows/taiko-client--test.yml | 4 +- Dockerfile | 4 +- go.mod | 186 +-- go.sum | 1167 ++--------------- packages/taiko-client/Dockerfile | 2 +- .../driver/chain_syncer/beaconsync/syncer.go | 12 +- .../driver/chain_syncer/blob/syncer.go | 9 +- .../taiko-client/internal/metrics/metrics.go | 4 +- packages/taiko-client/pkg/jwt/jwt.go | 2 +- packages/taiko-client/pkg/rpc/beaconclient.go | 30 +- .../taiko-client/pkg/rpc/blob_datasource.go | 10 +- packages/taiko-client/pkg/rpc/methods.go | 13 + packages/taiko-client/pkg/rpc/utils.go | 26 + 17 files changed, 217 insertions(+), 1266 deletions(-) diff --git a/.github/workflows/eventindexer.yml b/.github/workflows/eventindexer.yml index 1ff534248cb..30ded6382ab 100644 --- a/.github/workflows/eventindexer.yml +++ b/.github/workflows/eventindexer.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/setup-go@v5 with: - go-version: 1.21.0 + go-version: 1.23.0 - uses: actions/checkout@v4 - name: golangci-lint uses: golangci/golangci-lint-action@v6 @@ -50,7 +50,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: ">=1.21.0" + go-version: ">=1.23.0" - name: eventindexer - Unit Tests working-directory: ./packages/eventindexer diff --git a/.github/workflows/guardian-prover-health-check.yml b/.github/workflows/guardian-prover-health-check.yml index e1497f51caa..f0278d76ee6 100644 --- a/.github/workflows/guardian-prover-health-check.yml +++ b/.github/workflows/guardian-prover-health-check.yml @@ -20,7 +20,7 @@ jobs: steps: - uses: actions/setup-go@v5 with: - go-version: 1.21.0 + go-version: 1.23.0 - uses: actions/checkout@v4 - name: golangci-lint uses: golangci/golangci-lint-action@v6 @@ -44,7 +44,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: "1.21.0" + go-version: "1.23.0" - name: guardian-prover-health-check - Unit Tests working-directory: ./packages/guardian-prover-health-check diff --git a/.github/workflows/relayer.yml b/.github/workflows/relayer.yml index 976b854ad4f..4509b06db06 100644 --- a/.github/workflows/relayer.yml +++ b/.github/workflows/relayer.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/setup-go@v5 with: - go-version: 1.21.0 + go-version: 1.23.0 - uses: actions/checkout@v4 - name: golangci-lint uses: golangci/golangci-lint-action@v6 @@ -50,7 +50,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: "1.21.0" + go-version: "1.23.0" - name: relayer - Unit Tests working-directory: ./packages/relayer diff --git a/.github/workflows/taiko-client--hive_test.yml b/.github/workflows/taiko-client--hive_test.yml index ffdc53bbc3d..7445565f852 100644 --- a/.github/workflows/taiko-client--hive_test.yml +++ b/.github/workflows/taiko-client--hive_test.yml @@ -29,7 +29,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: 1.21 + go-version: 1.23 cache: true - name: Clone taikoxyz/hive diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index 3f7aa2aa7fa..698c31c8140 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -19,7 +19,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: 1.21 + go-version: 1.23 cache: true - name: Install golangci-lint @@ -49,7 +49,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: 1.21 + go-version: 1.23 cache: true - name: Install pnpm dependencies diff --git a/Dockerfile b/Dockerfile index a1d52db69d5..e27049140ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ ARG PACKAGE=eventindexer -FROM golang:1.21.0 as builder +FROM golang:1.23.0 as builder ARG PACKAGE @@ -27,4 +27,4 @@ RUN apk add --no-cache ca-certificates COPY --from=builder /taiko-mono/packages/${PACKAGE}/bin/${PACKAGE} /usr/local/bin/ -ENTRYPOINT /usr/local/bin/${PACKAGE} \ No newline at end of file +ENTRYPOINT /usr/local/bin/${PACKAGE} diff --git a/go.mod b/go.mod index b764d26eb03..fefa09f8d77 100644 --- a/go.mod +++ b/go.mod @@ -1,18 +1,17 @@ module github.com/taikoxyz/taiko-mono -go 1.21 - +go 1.23 require ( - github.com/btcsuite/btcd/btcec/v2 v2.3.3 + github.com/btcsuite/btcd/btcec/v2 v2.3.4 github.com/buildkite/terminal-to-html/v3 v3.8.0 github.com/cenkalti/backoff v2.2.1+incompatible github.com/cenkalti/backoff/v4 v4.3.0 github.com/cyberhorsey/errors v0.0.0-20220929234051-087d6d8bb841 github.com/cyberhorsey/webutils v0.0.0-20230314183728-56890c6ddbe7 - github.com/davecgh/go-spew v1.1.1 + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 github.com/ethereum-optimism/optimism v1.7.4 - github.com/ethereum/go-ethereum v1.13.15 + github.com/ethereum/go-ethereum v1.14.11 github.com/ethereum/hive v0.0.0-20240822135954-91829ccfb2c5 github.com/go-git/go-git/v5 v5.12.0 github.com/go-resty/resty/v2 v2.7.0 @@ -28,16 +27,16 @@ require ( github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 github.com/pressly/goose/v3 v3.20.0 - github.com/prometheus/client_golang v1.19.1 - github.com/prysmaticlabs/prysm/v4 v4.2.0 + github.com/prometheus/client_golang v1.20.4 + github.com/prysmaticlabs/prysm/v5 v5.1.0 github.com/rabbitmq/amqp091-go v1.10.0 github.com/shopspring/decimal v1.4.0 github.com/stretchr/testify v1.9.0 github.com/swaggo/swag v1.16.3 github.com/testcontainers/testcontainers-go v0.30.0 - github.com/urfave/cli/v2 v2.27.2 - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 - golang.org/x/sync v0.7.0 + github.com/urfave/cli/v2 v2.27.4 + golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa + golang.org/x/sync v0.8.0 gopkg.in/go-playground/assert.v1 v1.2.1 gopkg.in/yaml.v3 v3.0.1 gorm.io/datatypes v1.2.1 @@ -47,66 +46,54 @@ require ( ) require ( - contrib.go.opencensus.io/exporter/jaeger v0.2.1 // indirect dario.cat/mergo v1.0.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect - github.com/BurntSushi/toml v1.3.2 // indirect - github.com/DataDog/zstd v1.5.5 // indirect + github.com/BurntSushi/toml v1.4.0 // indirect + github.com/DataDog/zstd v1.5.6-0.20230824185856-869dae002e5e // indirect github.com/KyleBanks/depth v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/Microsoft/hcsshim v0.11.4 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/VictoriaMetrics/fastcache v1.12.2 // indirect github.com/andybalholm/brotli v1.1.0 // indirect - github.com/aristanetworks/goarista v0.0.0-20200805130819-fd197cf57d96 // indirect github.com/aymerick/douceur v0.2.0 // indirect - github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.10.0 // indirect - github.com/btcsuite/btcd v0.24.0 // indirect + github.com/bits-and-blooms/bitset v1.13.0 // indirect + github.com/btcsuite/btcd v0.24.2 // indirect github.com/btcsuite/btcd/btcutil v1.1.5 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect - github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect - github.com/cockroachdb/errors v1.11.1 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20231018212520-f6cde3fc2fa4 // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/containerd/cgroups v1.1.0 // indirect github.com/containerd/containerd v1.7.12 // indirect github.com/containerd/log v0.1.0 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect - github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect - github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect - github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018 // indirect github.com/distribution/reference v0.5.0 // indirect github.com/docker/docker v25.0.5+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/elastic/gosigar v0.14.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 // indirect github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect github.com/ethereum/hive/hiveproxy v0.0.0-20240808014330-625b82294b46 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fjl/memsize v0.0.2 // indirect - github.com/flynn/noise v1.1.0 // indirect - github.com/francoispqt/gojay v1.2.13 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fsouza/go-dockerclient v1.11.0 // indirect - github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect - github.com/getsentry/sentry-go v0.18.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-logr/logr v1.4.1 // indirect @@ -121,79 +108,49 @@ require ( github.com/go-playground/validator/v10 v10.13.0 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/go-stack/stack v1.8.1 // indirect - github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect - github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 // indirect - github.com/google/gopacket v1.1.19 // indirect - github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 // indirect github.com/gorilla/css v1.0.0 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/gorilla/websocket v1.5.1 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect github.com/hashicorp/go-bexpr v0.1.11 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect - github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect - github.com/holiman/uint256 v1.2.4 // indirect + github.com/holiman/uint256 v1.3.1 // indirect github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/strcase v0.2.0 // indirect - github.com/ipfs/go-cid v0.4.1 // indirect - github.com/ipfs/go-log/v2 v2.5.1 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect - github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.17.9 // indirect - github.com/klauspost/cpuid/v2 v2.2.7 // indirect - github.com/koron/go-ssdp v0.0.4 // indirect + github.com/klauspost/cpuid/v2 v2.2.8 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/leodido/go-urn v1.2.3 // indirect - github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/libp2p/go-flow-metrics v0.1.0 // indirect - github.com/libp2p/go-libp2p v0.35.0 // indirect - github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect - github.com/libp2p/go-libp2p-mplex v0.9.0 // indirect - github.com/libp2p/go-libp2p-pubsub v0.11.0 // indirect - github.com/libp2p/go-mplex v0.7.0 // indirect - github.com/libp2p/go-msgio v0.3.0 // indirect - github.com/libp2p/go-nat v0.2.0 // indirect - github.com/libp2p/go-netroute v0.2.1 // indirect - github.com/libp2p/go-reuseport v0.4.0 // indirect - github.com/libp2p/go-yamux/v4 v4.0.1 // indirect github.com/lithammer/dedent v1.1.0 // indirect - github.com/logrusorgru/aurora v2.0.3+incompatible // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mfridman/interpolate v0.0.2 // indirect github.com/microcosm-cc/bluemonday v1.0.26 // indirect - github.com/miekg/dns v1.1.58 // indirect - github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect - github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/minio/sha256-simd v1.0.1 // indirect - github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/pointerstructure v1.2.1 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect @@ -205,60 +162,24 @@ require ( github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/morikuni/aec v1.0.0 // indirect github.com/morkid/gocache v1.0.0 // indirect - github.com/mr-tron/base58 v1.2.0 // indirect - github.com/multiformats/go-base32 v0.1.0 // indirect - github.com/multiformats/go-base36 v0.2.0 // indirect - github.com/multiformats/go-multiaddr v0.12.4 // indirect - github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect - github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect - github.com/multiformats/go-multibase v0.2.0 // indirect - github.com/multiformats/go-multicodec v0.9.0 // indirect - github.com/multiformats/go-multihash v0.2.3 // indirect - github.com/multiformats/go-multistream v0.5.0 // indirect - github.com/multiformats/go-varint v0.0.7 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/neko-neko/echo-logrus/v2 v2.0.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/onsi/ginkgo/v2 v2.15.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect - github.com/opencontainers/runtime-spec v1.2.0 // indirect - github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect - github.com/pion/datachannel v1.5.6 // indirect - github.com/pion/dtls/v2 v2.2.11 // indirect - github.com/pion/ice/v2 v2.3.24 // indirect - github.com/pion/interceptor v0.1.29 // indirect - github.com/pion/logging v0.2.2 // indirect - github.com/pion/mdns v0.0.12 // indirect - github.com/pion/randutil v0.1.0 // indirect - github.com/pion/rtcp v1.2.14 // indirect - github.com/pion/rtp v1.8.6 // indirect - github.com/pion/sctp v1.8.16 // indirect - github.com/pion/sdp/v3 v3.0.9 // indirect - github.com/pion/srtp/v2 v2.0.18 // indirect - github.com/pion/stun v0.6.1 // indirect - github.com/pion/transport/v2 v2.2.5 // indirect - github.com/pion/turn/v2 v2.1.6 // indirect - github.com/pion/webrtc/v3 v3.2.40 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.53.0 // indirect - github.com/prometheus/procfs v0.13.0 // indirect - github.com/prometheus/prom2json v1.3.0 // indirect - github.com/prysmaticlabs/fastssz v0.0.0-20221107182844-78142813af44 // indirect - github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 // indirect - github.com/prysmaticlabs/gohashtree v0.0.3-alpha // indirect - github.com/prysmaticlabs/prombbolt v0.0.0-20210126082820-9b7adba6db7c // indirect - github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/quic-go v0.44.0 // indirect - github.com/quic-go/webtransport-go v0.8.0 // indirect - github.com/raulk/go-watchdog v1.3.0 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/prysmaticlabs/fastssz v0.0.0-20240620202422-a981b8ef89d3 // indirect + github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e // indirect + github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/rs/cors v1.11.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/schollz/progressbar/v3 v3.3.4 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/sethvargo/go-retry v0.2.4 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect @@ -266,60 +187,47 @@ require ( github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/skeema/knownhosts v1.2.2 // indirect - github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/spf13/afero v1.10.0 // indirect github.com/supranational/blst v0.3.13 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e // indirect - github.com/tklauser/go-sysconf v0.3.12 // indirect - github.com/tklauser/numcpus v0.6.1 // indirect - github.com/trailofbits/go-mutexasserts v0.0.0-20230328101604-8cdbc5f3d279 // indirect + github.com/tklauser/go-sysconf v0.3.13 // indirect + github.com/tklauser/numcpus v0.7.0 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect - github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasthttp v1.44.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect - github.com/wealdtech/go-bytesutil v1.1.1 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect + github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect - go.etcd.io/bbolt v1.3.8 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect - go.uber.org/dig v1.17.1 // indirect - go.uber.org/fx v1.21.1 // indirect - go.uber.org/mock v0.4.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect - golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect - google.golang.org/api v0.44.0 // indirect - google.golang.org/appengine v1.6.8 // indirect + golang.org/x/crypto v0.27.0 // indirect + golang.org/x/mod v0.20.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.24.0 // indirect + golang.org/x/text v0.18.0 // indirect + golang.org/x/time v0.6.0 // indirect + golang.org/x/tools v0.24.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/grpc v1.63.2 // indirect - google.golang.org/protobuf v1.34.1 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/inconshreveable/log15.v2 v2.0.0-20200109203555-b30bc20e4fd1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect k8s.io/apimachinery v0.26.2 // indirect k8s.io/client-go v0.26.2 // indirect k8s.io/klog/v2 v2.90.1 // indirect k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 // indirect - lukechampine.com/blake3 v1.2.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect @@ -332,9 +240,9 @@ exclude ( github.com/ethereum/go-ethereum v1.14.7 ) -replace github.com/ethereum/go-ethereum v1.13.15 => github.com/taikoxyz/taiko-geth v1.5.1-0.20240808041410-882a6cd3294c +replace github.com/ethereum/go-ethereum v1.14.11 => github.com/taikoxyz/taiko-geth v1.8.1-0.20241003040603-5c84a2082747 -replace github.com/ethereum-optimism/optimism v1.7.4 => github.com/taikoxyz/optimism v0.0.0-20240627102435-4845247ff00c +replace github.com/ethereum-optimism/optimism v1.7.4 => github.com/taikoxyz/optimism v0.0.0-20241003061504-cdf8af288f39 replace github.com/uber/jaeger-client-go => github.com/uber/jaeger-client-go v2.25.0+incompatible diff --git a/go.sum b/go.sum index e8cb234f0c8..ba052d092db 100644 --- a/go.sum +++ b/go.sum @@ -1,68 +1,19 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -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.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= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -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/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= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -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= contrib.go.opencensus.io/exporter/jaeger v0.2.1 h1:yGBYzYMewVL0yO9qqJv3Z5+IRhPdU7e9o/2oKpX4YvI= contrib.go.opencensus.io/exporter/jaeger v0.2.1/go.mod h1:Y8IsLgdxqh1QxYxPC5IgXVmBaeLUeQFfBeBi9PbeZd0= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= -dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= -dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= -github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= -github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= +github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/DataDog/zstd v1.5.6-0.20230824185856-869dae002e5e h1:ZIWapoIRN1VqT8GR8jAwb1Ie9GyehWjVcGh32Y2MznE= +github.com/DataDog/zstd v1.5.6-0.20230824185856-869dae002e5e/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -70,26 +21,13 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= -github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/sarama v1.26.1/go.mod h1:NbSGBSSndYaIhRcBtY9V0U7AyH+x71bG668AuWys/yU= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= 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/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/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKSc= github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= @@ -97,50 +35,27 @@ github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -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/fsnotify v1.4.2/go.mod h1:D/rtu7LpjYM8tRJphJ0hUBYpjai8SfX+aSNsWDTq/Ks= -github.com/aristanetworks/glog v0.0.0-20191112221043-67e8567f59f3/go.mod h1:KASm+qXFKs/xjSoWn30NrWBBvdTTQq+UjkhjEJHfSFA= -github.com/aristanetworks/goarista v0.0.0-20200805130819-fd197cf57d96 h1:XJH0YfVFKbq782tlNThzN/Ud5qm/cx6LXOA/P6RkTxc= -github.com/aristanetworks/goarista v0.0.0-20200805130819-fd197cf57d96/go.mod h1:QZe5Yh80Hp1b6JxQdpfSEEe8X7hTyTEZSosSrFf/oJE= -github.com/aristanetworks/splunk-hec-go v0.3.3/go.mod h1:1VHO9r17b0K7WmOlLb9nTk/2YanvOEnLMUgsFrxBROc= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -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.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/bazelbuild/rules_go v0.23.2 h1:Wxu7JjqnF78cKZbsBsARLSXx/jlGaSLCnUV3mTlyHvM= github.com/bazelbuild/rules_go v0.23.2/go.mod h1:MC23Dc/wkXEyk3Wpq6lCqz0ZAYOZDw2DR5y3N1q2i7M= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= -github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -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/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= -github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= +github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= -github.com/btcsuite/btcd v0.24.0 h1:gL3uHE/IaFj6fcZSu03SvqPMSx7s/dPzfpG/atRwWdo= -github.com/btcsuite/btcd v0.24.0/go.mod h1:K4IDc1593s8jKXIF7yS7yCTSxrknB9z0STzc2j6XgE4= +github.com/btcsuite/btcd v0.24.2 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY= +github.com/btcsuite/btcd v0.24.2/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg= github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/btcec/v2 v2.3.3 h1:6+iXlDKE8RMtKsvK0gshlXIuPbyWM/h84Ensb7o3sC0= -github.com/btcsuite/btcd/btcec/v2 v2.3.3/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= github.com/btcsuite/btcd/btcutil v1.1.5 h1:+wER79R5670vs/ZusMTF1yTcRYE5GUsFbdjdisflzM8= @@ -158,11 +73,9 @@ 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/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/buildkite/terminal-to-html/v3 v3.8.0 h1:S7ImMS8W+2yS/9D4ugrXzB95C4AuNaKcaw/eR/95bFU= github.com/buildkite/terminal-to-html/v3 v3.8.0/go.mod h1:j3XxsnYElte/Bo7Pft+U5eQWWbcx3j51uQ8fo43VrjM= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -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= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -170,9 +83,6 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v1.1.1 h1:nCb6ZLdB7NRaqsm91JtQTAme2SKJzXVsdPIPkyJr1MU= github.com/cespare/cp v1.1.1/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -180,58 +90,41 @@ github.com/chris-ramon/douceur v0.2.0/go.mod h1:wDW5xjJdeoMm1mRt4sD4c/LbF/mWdEpR github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= -github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= 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-20231018212520-f6cde3fc2fa4 h1:PuHFhOUMnD62r80dN+Ik5qco2drekgsUSVdcHsvllec= -github.com/cockroachdb/pebble v0.0.0-20231018212520-f6cde3fc2fa4/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= -github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= -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.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= -github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -245,10 +138,9 @@ github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= 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/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= -github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= @@ -258,65 +150,37 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeC github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018 h1:cNcG4c2n5xanQzp2hMyxDxPYVQmZ91y4WN6fJFlndLo= -github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018/go.mod h1:MIonLggsKgZLUSt414ExgwNtlOL5MuEoAJP514mwGe8= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/docker v25.0.5+incompatible h1:UmQydMduGkrD5nQde1mecF/YnSbTOaPeFIeP5C4W+DE= github.com/docker/docker v25.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-resiliency v1.2.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 v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= -github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= -github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emicklei/go-restful/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ= github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 h1:RWHKLhCrQThMfch+QJ1Z8veEq5ZO3DfIhZ7xgRP9WTc= github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3/go.mod h1:QziizLAiF0KqyLdNJYD7O5cpDlaFMNZzlxYNcWsJUxs= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A= +github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/ethereum/hive/hiveproxy v0.0.0-20240808014330-625b82294b46 h1:paQKR+EGmEwr9viJoSgC0gOW4YPBRvrD5tPKn6CNRD8= github.com/ethereum/hive/hiveproxy v0.0.0-20240808014330-625b82294b46/go.mod h1:H5dh/7x2Mf5SR7cKLXDZLWRMtolNhvb3uKR1Gy3aF60= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= -github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= -github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= -github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= -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.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= 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/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= @@ -324,18 +188,12 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fsouza/go-dockerclient v1.11.0 h1:4ZAk6W7rPAtPXm7198EFqA5S68rwnNQORxlOA5OurCA= github.com/fsouza/go-dockerclient v1.11.0/go.mod h1:0I3TQCRseuPTzqlY4Y3ajfsg2VAdMQoazrkxJTiJg8s= -github.com/garyburd/redigo v1.6.0/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= -github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= -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-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= @@ -346,15 +204,6 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= -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= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= @@ -389,27 +238,14 @@ github.com/go-playground/validator/v10 v10.13.0 h1:cFRQdfaSMCOSfGCCLB20MHvuoHb/s github.com/go-playground/validator/v10 v10.13.0/go.mod h1:dwu7+CG8/CtBiJFZDz4e+5Upb6OLw04gtBYw0mcG/z4= github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= -github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= @@ -424,29 +260,13 @@ github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EO github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -456,120 +276,51 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -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.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 h1:k4Tw0nt6lwro3Uin8eqoET7MDA4JnT8YgbCjc/g5E3k= github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= -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/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= 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= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 h1:Ep/joEub9YwcjRY6ND3+Y/w0ncE540RtGatVhtZL0/Q= github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= -github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo= -github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.0.0/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.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= -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= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= -github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -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.11 h1:6DqdA/KBjurGby9yTY0bmkathya0lfwF2SeuubCI7dY= github.com/hashicorp/go-bexpr v0.1.11/go.mod h1:f03lAo0duBlDIUMGCuad8oLcgejw4m7U+N8T+6Kz1AE= -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= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.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.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/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= -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/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e h1:wCMygKUQhmcQAjlk2Gquzq6dLmyMv2kF+llRspoRgrk= @@ -578,23 +329,15 @@ github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6w github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= -github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs= +github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= 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.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= github.com/iancoleman/strcase v0.1.3/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -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/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= -github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= -github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= -github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 h1:L0QtFUgDarD7Fpv9jeVMgy/+Ec0mtnmYuImjTz6dtDA= @@ -607,10 +350,6 @@ github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7Bd github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= -github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= -github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= -github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= 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/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -618,60 +357,30 @@ github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkr github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= 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/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -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/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 h1:qGQQKEcAR99REcMpsXCp3lJ03zYT1PkRd3kQGPn9GVg= -github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= 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.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.10.1/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.8/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= -github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/klauspost/reedsolomon v1.9.3/go.mod h1:CwCi+NUr9pqSVktrkN+Ondf06rkhYZ/pcNv7fu+8Un4= +github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= +github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= 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.2/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/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= -github.com/koron/go-ssdp v0.0.4/go.mod h1:oDXq+E5IL5q0U8uSBcoAXzTzInwy5lEgC91HoKtbmZk= -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.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= 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/pty v1.1.3/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= @@ -692,109 +401,46 @@ github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2 github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.3 h1:6BE2vPT0lqoz3fmOesHZiaiFh7889ssCo2GMvLCfiuA= github.com/leodido/go-urn v1.2.3/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= -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/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= -github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= -github.com/libp2p/go-libp2p v0.35.0 h1:1xS1Bkr9X7GtdvV6ntLnDV9xB1kNjHK1lZ0eaO6gnhc= -github.com/libp2p/go-libp2p v0.35.0/go.mod h1:snyJQix4ET6Tj+LeI0VPjjxTtdWpeOhYt5lEY0KirkQ= -github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= -github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= -github.com/libp2p/go-libp2p-mplex v0.9.0 h1:R58pDRAmuBXkYugbSSXR9wrTX3+1pFM1xP2bLuodIq8= -github.com/libp2p/go-libp2p-mplex v0.9.0/go.mod h1:ro1i4kuwiFT+uMPbIDIFkcLs1KRbNp0QwnUXM+P64Og= -github.com/libp2p/go-libp2p-pubsub v0.11.0 h1:+JvS8Kty0OiyUiN0i8H5JbaCgjnJTRnTHe4rU88dLFc= -github.com/libp2p/go-libp2p-pubsub v0.11.0/go.mod h1:QEb+hEV9WL9wCiUAnpY29FZR6W3zK8qYlaml8R4q6gQ= -github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= -github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= -github.com/libp2p/go-mplex v0.7.0 h1:BDhFZdlk5tbr0oyFq/xv/NPGfjbnrsDam1EvutpBDbY= -github.com/libp2p/go-mplex v0.7.0/go.mod h1:rW8ThnRcYWft/Jb2jeORBmPd6xuG3dGxWN/W168L9EU= -github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= -github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM= -github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= -github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= -github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= -github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= -github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= -github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= -github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= -github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= -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/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= -github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= -github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= 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/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= -github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= github.com/mattn/go-colorable v0.0.9/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.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 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-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.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/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mfridman/interpolate v0.0.2 h1:pnuTK7MQIxxFz1Gr+rjSIx9u7qVjf5VOoM/u6BbAxPY= github.com/mfridman/interpolate v0.0.2/go.mod h1:p+7uk6oE07mpE/Ik1b8EckO0O4ZXiGAfshKBWLUM9Xg= -github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/microcosm-cc/bluemonday v1.0.4/go.mod h1:8iwZnFn2CDDNZ0r6UXhF4xawGvzaqzCRa1n3/lO3W2w= github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58= github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs= github.com/microsoft/go-mssqldb v1.7.0 h1:sgMPW0HA6Ihd37Yx0MzHyKD726C2kY/8KJsQtXHNaAs= github.com/microsoft/go-mssqldb v1.7.0/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= -github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= -github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= -github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= -github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= -github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= -github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= -github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= -github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= -github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -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.4.1/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= @@ -814,8 +460,6 @@ github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3 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= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -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/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= @@ -826,48 +470,10 @@ github.com/morkid/gocache v1.0.0 h1:hTnU78Dqp2vs9al5vJC2TmmMF+Hm3nDH1AgRBjSXE+0= github.com/morkid/gocache v1.0.0/go.mod h1:xK+hmoEMjYffIBvjn7DE8WfSd/rF5Kz/G9f20OliMJY= github.com/morkid/paginate v1.1.7 h1:qgU1qLhYxlckJ11CoUn7tQpT4k5SmWTTa1NpdSNbShg= github.com/morkid/paginate v1.1.7/go.mod h1:1VCx2ARlAVEv2Yd+YHTGRMs0Gacvi75dCrPidrmPq5g= -github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= -github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= -github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= -github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= -github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= -github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= -github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.12.4 h1:rrKqpY9h+n80EwhhC/kkcunCZZ7URIF8yN1WEUt2Hvc= -github.com/multiformats/go-multiaddr v0.12.4/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= -github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= -github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= -github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= -github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= -github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= -github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= -github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg= -github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= -github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= -github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= -github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= -github.com/multiformats/go-multistream v0.5.0 h1:5htLSLl7lvJk3xx3qT/8Zm9J4K8vEOf/QGkvOGQAyiE= -github.com/multiformats/go-multistream v0.5.0/go.mod h1:n6tMZiwiP2wUsR8DgfDWw1dydlEqV3l6N3/GBsX6ILA= -github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= -github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -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.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -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/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= -github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= -github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/neko-neko/echo-logrus/v2 v2.0.1 h1:BX2U6uv2N3UiUY75y+SntQak5S1AJIel9j+5Y6h4Nb4= github.com/neko-neko/echo-logrus/v2 v2.0.1/go.mod h1:GDYWo9CY4VXk/vn5ac5reoutYEkZEexlFI01MzHXVG0= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= @@ -875,211 +481,79 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= -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/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= 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.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= -github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= -github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/openconfig/gnmi v0.0.0-20190823184014-89b2bf29312c/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc= -github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696/go.mod h1:ym2A+zigScwkSEb/cVQB0/ZMpU3rqiH6X7WRRsxgOGw= +github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= +github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= -github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -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.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.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= -github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= -github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -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/pierrec/lz4 v2.4.1+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/pion/datachannel v1.5.6 h1:1IxKJntfSlYkpUj8LlYRSWpYiTTC02nUrOE8T3DqGeg= -github.com/pion/datachannel v1.5.6/go.mod h1:1eKT6Q85pRnr2mHiWHxJwO50SfZRtWHTsNIVb/NfGW4= -github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s= -github.com/pion/dtls/v2 v2.2.11 h1:9U/dpCYl1ySttROPWJgqWKEylUdT0fXp/xst6JwY5Ks= -github.com/pion/dtls/v2 v2.2.11/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE= -github.com/pion/ice/v2 v2.3.24 h1:RYgzhH/u5lH0XO+ABatVKCtRd+4U1GEaCXSMjNr13tI= -github.com/pion/ice/v2 v2.3.24/go.mod h1:KXJJcZK7E8WzrBEYnV4UtqEZsGeWfHxsNqhVcVvgjxw= -github.com/pion/interceptor v0.1.29 h1:39fsnlP1U8gw2JzOFWdfCU82vHvhW9o0rZnZF56wF+M= -github.com/pion/interceptor v0.1.29/go.mod h1:ri+LGNjRUc5xUNtDEPzfdkmSqISixVTBF/z/Zms/6T4= -github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= -github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= -github.com/pion/mdns v0.0.12 h1:CiMYlY+O0azojWDmxdNr7ADGrnZ+V6Ilfner+6mSVK8= -github.com/pion/mdns v0.0.12/go.mod h1:VExJjv8to/6Wqm1FXK+Ii/Z9tsVk/F5sD/N70cnYFbk= -github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA= -github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8= -github.com/pion/rtcp v1.2.12/go.mod h1:sn6qjxvnwyAkkPzPULIbVqSKI5Dv54Rv7VG0kNxh9L4= -github.com/pion/rtcp v1.2.14 h1:KCkGV3vJ+4DAJmvP0vaQShsb0xkRfWkO540Gy102KyE= -github.com/pion/rtcp v1.2.14/go.mod h1:sn6qjxvnwyAkkPzPULIbVqSKI5Dv54Rv7VG0kNxh9L4= -github.com/pion/rtp v1.8.3/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU= -github.com/pion/rtp v1.8.6 h1:MTmn/b0aWWsAzux2AmP8WGllusBVw4NPYPVFFd7jUPw= -github.com/pion/rtp v1.8.6/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU= -github.com/pion/sctp v1.8.13/go.mod h1:YKSgO/bO/6aOMP9LCie1DuD7m+GamiK2yIiPM6vH+GA= -github.com/pion/sctp v1.8.16 h1:PKrMs+o9EMLRvFfXq59WFsC+V8mN1wnKzqrv+3D/gYY= -github.com/pion/sctp v1.8.16/go.mod h1:P6PbDVA++OJMrVNg2AL3XtYHV4uD6dvfyOovCgMs0PE= -github.com/pion/sdp/v3 v3.0.9 h1:pX++dCHoHUwq43kuwf3PyJfHlwIj4hXA7Vrifiq0IJY= -github.com/pion/sdp/v3 v3.0.9/go.mod h1:B5xmvENq5IXJimIO4zfp6LAe1fD9N+kFv+V/1lOdz8M= -github.com/pion/srtp/v2 v2.0.18 h1:vKpAXfawO9RtTRKZJbG4y0v1b11NZxQnxRl85kGuUlo= -github.com/pion/srtp/v2 v2.0.18/go.mod h1:0KJQjA99A6/a0DOVTu1PhDSw0CXF2jTkqOoMg3ODqdA= -github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4= -github.com/pion/stun v0.6.1/go.mod h1:/hO7APkX4hZKu/D0f2lHzNyvdkTGtIy3NDmLR7kSz/8= -github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g= -github.com/pion/transport/v2 v2.2.2/go.mod h1:OJg3ojoBJopjEeECq2yJdXH9YVrUJ1uQ++NjXLOUorc= -github.com/pion/transport/v2 v2.2.3/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= -github.com/pion/transport/v2 v2.2.4/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= -github.com/pion/transport/v2 v2.2.5 h1:iyi25i/21gQck4hfRhomF6SktmUQjRsRW4WJdhfc3Kc= -github.com/pion/transport/v2 v2.2.5/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= -github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0= -github.com/pion/transport/v3 v3.0.2 h1:r+40RJR25S9w3jbA6/5uEPTzcdn7ncyU44RWCbHkLg4= -github.com/pion/transport/v3 v3.0.2/go.mod h1:nIToODoOlb5If2jF9y2Igfx3PFYWfuXi37m0IlWa/D0= -github.com/pion/turn/v2 v2.1.3/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= -github.com/pion/turn/v2 v2.1.6 h1:Xr2niVsiPTB0FPtt+yAWKFUkU1eotQbGgpTIld4x1Gc= -github.com/pion/turn/v2 v2.1.6/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= -github.com/pion/webrtc/v3 v3.2.40 h1:Wtfi6AZMQg+624cvCXUuSmrKWepSB7zfgYDOYqsSOVU= -github.com/pion/webrtc/v3 v3.2.40/go.mod h1:M1RAe3TNTD1tzyvqHrbVODfwdPGSXOUo/OgpoGGJqFY= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= 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/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= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/pressly/goose/v3 v3.20.0 h1:uPJdOxF/Ipj7ABVNOAMJXSxwFXZGwMGHNqjC8e61VA0= github.com/pressly/goose/v3 v3.20.0/go.mod h1:BRfF2GcG4FTG12QfdBVy3q1yveaf4ckL9vWwEcIO3lA= -github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= -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_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= 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/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/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.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.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= -github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -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= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.0.10/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= -github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= -github.com/prometheus/prom2json v1.3.0 h1:BlqrtbT9lLH3ZsOVhXPsHzFrApCTKRifB7gjJuypu6Y= -github.com/prometheus/prom2json v1.3.0/go.mod h1:rMN7m0ApCowcoDlypBHlkNbp5eJQf/+1isKykIP5ZnM= -github.com/prysmaticlabs/fastssz v0.0.0-20221107182844-78142813af44 h1:c3p3UzV4vFA7xaCDphnDWOjpxcadrQ26l5b+ypsvyxo= -github.com/prysmaticlabs/fastssz v0.0.0-20221107182844-78142813af44/go.mod h1:MA5zShstUwCQaE9faGHgCGvEWUbG87p4SAXINhmCkvg= -github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 h1:0tVE4tdWQK9ZpYygoV7+vS6QkDvQVySboMVEIxBJmXw= -github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7/go.mod h1:wmuf/mdK4VMD+jA9ThwcUKjg3a2XWM9cVfFYjDyY4j4= -github.com/prysmaticlabs/gohashtree v0.0.3-alpha h1:1EVinCWdb3Lorq7xn8DYQHf48nCcdAM3Vb18KsFlRWY= -github.com/prysmaticlabs/gohashtree v0.0.3-alpha/go.mod h1:4pWaT30XoEx1j8KNJf3TV+E3mQkaufn7mf+jRNb/Fuk= -github.com/prysmaticlabs/prombbolt v0.0.0-20210126082820-9b7adba6db7c h1:9PHRCuO/VN0s9k+RmLykho7AjDxblNYI5bYKed16NPU= -github.com/prysmaticlabs/prombbolt v0.0.0-20210126082820-9b7adba6db7c/go.mod h1:ZRws458tYHS/Zs936OQ6oCrL+Ict5O4Xpwve1UQ6C9M= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prysmaticlabs/fastssz v0.0.0-20240620202422-a981b8ef89d3 h1:0LZAwwHnsZFfXm4IK4rzFV4N5IVSKZKLmuBMA4kAlFk= +github.com/prysmaticlabs/fastssz v0.0.0-20240620202422-a981b8ef89d3/go.mod h1:h2OlIZD/M6wFvV3YMZbW16lFgh3Rsye00G44J2cwLyU= +github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e h1:ATgOe+abbzfx9kCPeXIW4fiWyDdxlwHw07j8UGhdTd4= +github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e/go.mod h1:wmuf/mdK4VMD+jA9ThwcUKjg3a2XWM9cVfFYjDyY4j4= +github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b h1:VK7thFOnhxAZ/5aolr5Os4beiubuD08WiuiHyRqgwks= +github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b/go.mod h1:HRuvtXLZ4WkaB1MItToVH2e8ZwKwZPY5/Rcby+CvvLY= github.com/prysmaticlabs/protoc-gen-go-cast v0.0.0-20230228205207-28762a7b9294 h1:q9wE0ZZRdTUAAeyFP/w0SwBEnCqlVy2+on6X2/e+eAU= github.com/prysmaticlabs/protoc-gen-go-cast v0.0.0-20230228205207-28762a7b9294/go.mod h1:ZVEbRdnMkGhp/pu35zq4SXxtvUwWK0J1MATtekZpH2Y= -github.com/prysmaticlabs/prysm/v4 v4.2.0 h1:87QoRT3Azs7c1Y6SnIq0+CNtQRbAt0sVKGj2OxRT1Rw= -github.com/prysmaticlabs/prysm/v4 v4.2.0/go.mod h1:PQrQtHJeeqTz4K3udN/EX1Gs2xhWR4j93gSj0OQZ1f4= -github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= -github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/quic-go v0.44.0 h1:So5wOr7jyO4vzL2sd8/pD9Kesciv91zSk8BoFngItQ0= -github.com/quic-go/quic-go v0.44.0/go.mod h1:z4cx/9Ny9UtGITIPzmPTXh1ULfOyWh4qGQlpnPcWmek= -github.com/quic-go/webtransport-go v0.8.0 h1:HxSrwun11U+LlmwpgM1kEqIqH90IT4N8auv/cD7QFJg= -github.com/quic-go/webtransport-go v0.8.0/go.mod h1:N99tjprW432Ut5ONql/aUhSLT0YVSlwHohQsuac9WaM= +github.com/prysmaticlabs/prysm/v5 v5.1.0 h1:TY9A6tm0v7bI1z9YH+xkDh7XH7qm4ZK8sTeyckxbj4A= +github.com/prysmaticlabs/prysm/v5 v5.1.0/go.mod h1:SWb5kE/FhtQrLS2yt+IDj+leB7IhXrcOv6lhDnU1nBY= github.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw= github.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o= -github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= -github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= 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/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/schollz/progressbar/v3 v3.3.4 h1:nMinx+JaEm/zJz4cEyClQeAw5rsYSB5th3xv+5lV6Vg= -github.com/schollz/progressbar/v3 v3.3.4/go.mod h1:Rp5lZwpgtYmlvmGo1FyDwXMqagyRBQYSDwzlP9QDu84= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= @@ -1094,59 +568,17 @@ github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= -github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= -github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= -github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= -github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= -github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= -github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= -github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= -github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= -github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= -github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= -github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= -github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= -github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= -github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= -github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= -github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= -github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= -github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -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.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= -github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 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/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= -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.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -1164,7 +596,6 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -1177,34 +608,26 @@ github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDd github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/taikoxyz/hive v0.0.0-20240827015317-405b241dd082 h1:ymZR+Y88LOnA8i3KeuJXK7hff2n7bpMIhONPJwpcA5w= github.com/taikoxyz/hive v0.0.0-20240827015317-405b241dd082/go.mod h1:RHnIu3EFehrWX3JhFAMQSXD5uz7l0xaNroTzXrap7EQ= -github.com/taikoxyz/optimism v0.0.0-20240627102435-4845247ff00c h1:Hfhh/icxShwpLdX7RqYzZN1EU40MGWhvSXc2V+ZzTxw= -github.com/taikoxyz/optimism v0.0.0-20240627102435-4845247ff00c/go.mod h1:jKn73pLX8eDIG0Y3XeuUSetepecM8OvRflyPHbi05B4= -github.com/taikoxyz/taiko-geth v1.5.1-0.20240808041410-882a6cd3294c h1:XQDnwQfisAlFAGKqabDcLdg9B+pRwS3nxS+03yP1g9o= -github.com/taikoxyz/taiko-geth v1.5.1-0.20240808041410-882a6cd3294c/go.mod h1:nqByouVW0a0qx5KKgvYgoXba+pYEHznAAQp6LhZilgM= -github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161/go.mod h1:wM7WEvslTq+iOEAMDLSzhVuOt5BRZ05WirO+b09GHQU= -github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b/go.mod h1:5XA7W9S6mni3h5uvOC75dA3m9CCCaS83lltmc0ukdi4= +github.com/taikoxyz/optimism v0.0.0-20241003061504-cdf8af288f39 h1:JssMxaDmORjQ9RPZNulVJhAD8zSPd6LZFq5wsr6Nwz8= +github.com/taikoxyz/optimism v0.0.0-20241003061504-cdf8af288f39/go.mod h1:ym7scR7ZHvEmwx1DLGVDzFlAdR+uhP1+Z4XCiFuSD5s= +github.com/taikoxyz/taiko-geth v1.8.1-0.20241003040603-5c84a2082747 h1:QRB8VHGmlRgm7ze/4Fzuce08Ypbq5Mr5q/piTfsck1A= +github.com/taikoxyz/taiko-geth v1.8.1-0.20241003040603-5c84a2082747/go.mod h1:+l/fr42Mma+xBnhefL/+z11/hcmJ2egl+ScIVPjhc7E= github.com/testcontainers/testcontainers-go v0.30.0 h1:jmn/XS22q4YRrcMwWg0pAwlClzs/abopbsBzrepyc4E= github.com/testcontainers/testcontainers-go v0.30.0/go.mod h1:K+kHNGiM5zjklKjgTtcrEetF3uhWbMUyqAQoyoh8Pf0= github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e h1:cR8/SYRgyQCt5cNCMniB/ZScMkhI9nk8U5C7SbISXjo= github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e/go.mod h1:Tu4lItkATkonrYuvtVjG0/rhy15qrNGNTjPdaphtZ/8= -github.com/tjfoc/gmsm v1.3.0/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= -github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= -github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4= +github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/trailofbits/go-mutexasserts v0.0.0-20230328101604-8cdbc5f3d279 h1:+LynomhWB+14Plp/bOONEAZCtvCZk4leRbTvNzNVkL0= -github.com/trailofbits/go-mutexasserts v0.0.0-20230328101604-8cdbc5f3d279/go.mod h1:GA3+Mq3kt3tYAfM0WZCu7ofy+GW9PuGysHfhr+6JX7s= +github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4= +github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -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/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= -github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= +github.com/urfave/cli/v2 v2.27.4 h1:o1owoI+02Eb+K107p27wEX9Bb8eqIoZCfLXloLUSWJ8= +github.com/urfave/cli/v2 v2.27.4/go.mod h1:m4QzxcD2qpra4z7WhzEGn74WZLViBnMpb1ToCAKdGRQ= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.22.0/go.mod h1:0mw2RjXGOzxf4NL2jni3gUQ7LfjjUSiG5sskOUUSEpU= @@ -1217,42 +640,15 @@ github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQ github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= -github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= -github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= -github.com/wealdtech/go-bytesutil v1.1.1 h1:ocEg3Ke2GkZ4vQw5lp46rmO+pfqCCTgq35gqOy8JKVc= -github.com/wealdtech/go-bytesutil v1.1.1/go.mod h1:jENeMqeTEU8FNZyDFRVc7KqBdRKSnJ9CCh26TcuNb9s= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= -github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= -github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= -github.com/xtaci/kcp-go v5.4.20+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45a+AZwO7eyRCmEIbtvE= -github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= 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/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= -go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= @@ -1271,156 +667,55 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/dig v1.17.1 h1:Tga8Lz8PcYNsWsyHMZ1Vm0OQOUaJNDyvPImgbAu9YSc= -go.uber.org/dig v1.17.1/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= -go.uber.org/fx v1.21.1 h1:RqBh3cYdzZS0uqwVeEjOX2p73dddLpym315myy/Bpb0= -go.uber.org/fx v1.21.1/go.mod h1:HT2M7d7RHo+ebKGh9NRcrsrHHfpZ60nW3QRubMRfv48= -go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= -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/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= -golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190130090550-b01c7a725664/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/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-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= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -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-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= -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-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -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/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/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.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.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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-20180826012351-8a410e7b638d/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-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181106065722-10aee1819953/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= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -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-20190313220215-9f648a60d977/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= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -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-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= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -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-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-20201110031124-69a78807bb2b/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-20210226101413-39120d07d75e/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1432,128 +727,51 @@ golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= -golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/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-20190316082340-a2f829d7f35f/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= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-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-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-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= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-20200905004654-be1d3432aa8f/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= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/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-20210420072515-93ed5bcd2bfe/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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/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-20211216021012-1d35b9e2eb4e/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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1566,243 +784,70 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= -golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= -golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -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.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/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-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= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -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-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= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200221224223-e1da425f72fd/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= 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.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= 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/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= -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= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= google.golang.org/api v0.44.0 h1:URs6qR1lAxDsqWITsQXI4ZkGiYJ5dHtRNiCpfs2OeKA= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -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/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= 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-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= -google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -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-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= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -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-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= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200218151345-dad8c97a84f5/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/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-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1813,55 +858,39 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= 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/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-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 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/inconshreveable/log15.v2 v2.0.0-20200109203555-b30bc20e4fd1 h1:iiHuQZCNgYPmFQxd3BBN/Nc5+dAwzZuq5y40s20oQw0= gopkg.in/inconshreveable/log15.v2 v2.0.0-20200109203555-b30bc20e4fd1/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= -gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= -gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= -gopkg.in/jcmturner/gokrb5.v7 v7.5.0/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= -gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/redis.v4 v4.2.4/go.mod h1:8KREHdypkCEojGKQcjMqAODMICIVwZAONWq8RowTITA= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/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= gorm.io/datatypes v1.2.1 h1:r+g0bk4LPCW2v4+Ls7aeNgGme7JYdNDQ2VtvlNUfBh0= @@ -1884,15 +913,8 @@ 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.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= -grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= 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= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -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= k8s.io/api v0.26.2 h1:dM3cinp3PGB6asOySalOZxEG4CZ0IAdJsrYZXE/ovGQ= k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= k8s.io/apimachinery v0.26.2 h1:da1u3D5wfR5u2RpLhE/ZtZS2P7QvDgLZTi9wrNZl/tQ= @@ -1905,8 +927,6 @@ k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+O k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 h1:kmDqav+P+/5e1i9tFfHq1qcF3sOrDp+YEkVDAHu7Jwk= k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= -lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4= modernc.org/libc v1.41.0 h1:g9YAc6BkKlgORsUWj+JwqoB1wU3o4DE3bM3yvA3k+Gk= @@ -1921,18 +941,11 @@ modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -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 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= -sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/packages/taiko-client/Dockerfile b/packages/taiko-client/Dockerfile index 45004845b22..a697627cfe5 100644 --- a/packages/taiko-client/Dockerfile +++ b/packages/taiko-client/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21-alpine as builder +FROM golang:1.23-alpine as builder RUN apk update && apk add --no-cache --update gcc musl-dev linux-headers git make build-base diff --git a/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go b/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go index 3290cd7f00e..cc2c65a5150 100644 --- a/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go +++ b/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go @@ -5,13 +5,12 @@ import ( "fmt" "math/big" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" - "github.com/ethereum/go-ethereum/beacon/engine" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/eth/downloader" "github.com/ethereum/go-ethereum/log" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" @@ -72,10 +71,15 @@ func (s *Syncer) TriggerBeaconSync(blockID uint64) error { return fmt.Errorf("unexpected NewPayload response status: %s", status.Status) } + lastVerifiedBlockHash, err := s.rpc.GetLastVerifiedBlockHash(s.ctx) + if err != nil { + return fmt.Errorf("failed to fetch the last verified block hash: %w", err) + } + fcRes, err := s.rpc.L2Engine.ForkchoiceUpdate(s.ctx, &engine.ForkchoiceStateV1{ HeadBlockHash: headPayload.BlockHash, - SafeBlockHash: headPayload.BlockHash, - FinalizedBlockHash: headPayload.BlockHash, + SafeBlockHash: lastVerifiedBlockHash, + FinalizedBlockHash: lastVerifiedBlockHash, }, nil) if err != nil { return err diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer.go b/packages/taiko-client/driver/chain_syncer/blob/syncer.go index 47f2d997a15..c850bb52ad7 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer.go @@ -409,10 +409,15 @@ func (s *Syncer) insertNewHead( return nil, fmt.Errorf("failed to create execution payloads: %w", err) } + lastVerifiedBlockHash, err := s.rpc.GetLastVerifiedBlockHash(ctx) + if err != nil { + return nil, fmt.Errorf("failed to fetch the last verified block hash: %w", err) + } + fc := &engine.ForkchoiceStateV1{ HeadBlockHash: payload.BlockHash, - SafeBlockHash: payload.BlockHash, - FinalizedBlockHash: payload.BlockHash, + SafeBlockHash: lastVerifiedBlockHash, + FinalizedBlockHash: lastVerifiedBlockHash, } // Update the fork choice diff --git a/packages/taiko-client/internal/metrics/metrics.go b/packages/taiko-client/internal/metrics/metrics.go index 44de2709188..6ac55f11865 100644 --- a/packages/taiko-client/internal/metrics/metrics.go +++ b/packages/taiko-client/internal/metrics/metrics.go @@ -4,13 +4,13 @@ import ( "context" opMetrics "github.com/ethereum-optimism/optimism/op-service/metrics" - "github.com/ethereum-optimism/optimism/op-service/opio" txmgrMetrics "github.com/ethereum-optimism/optimism/op-service/txmgr/metrics" "github.com/ethereum/go-ethereum/log" "github.com/prometheus/client_golang/prometheus" "github.com/urfave/cli/v2" "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" ) // Metrics @@ -92,7 +92,7 @@ func Serve(ctx context.Context, c *cli.Context) error { } }() - opio.BlockOnInterruptsContext(ctx) + rpc.BlockOnInterruptsContext(ctx) return nil } diff --git a/packages/taiko-client/pkg/jwt/jwt.go b/packages/taiko-client/pkg/jwt/jwt.go index 33ba0dacc66..0b0c9521dc0 100644 --- a/packages/taiko-client/pkg/jwt/jwt.go +++ b/packages/taiko-client/pkg/jwt/jwt.go @@ -6,7 +6,7 @@ import ( "fmt" "strings" - "github.com/prysmaticlabs/prysm/v4/io/file" + "github.com/prysmaticlabs/prysm/v5/io/file" ) // Taken from: https://github.com/prysmaticlabs/prysm/blob/v2.1.4/cmd/beacon-chain/execution/options.go#L43 diff --git a/packages/taiko-client/pkg/rpc/beaconclient.go b/packages/taiko-client/pkg/rpc/beaconclient.go index 29a6d78c6f1..e907acf4608 100644 --- a/packages/taiko-client/pkg/rpc/beaconclient.go +++ b/packages/taiko-client/pkg/rpc/beaconclient.go @@ -9,18 +9,15 @@ import ( "time" "github.com/ethereum/go-ethereum/log" - "github.com/pkg/errors" - "github.com/prysmaticlabs/prysm/v4/api/client" - "github.com/prysmaticlabs/prysm/v4/api/client/beacon" - "github.com/prysmaticlabs/prysm/v4/beacon-chain/rpc/eth/blob" - "github.com/prysmaticlabs/prysm/v4/beacon-chain/rpc/eth/config" + "github.com/prysmaticlabs/prysm/v5/api/client" + "github.com/prysmaticlabs/prysm/v5/api/client/beacon" + "github.com/prysmaticlabs/prysm/v5/api/server/structs" ) var ( // Request urls. sidecarsRequestURL = "/eth/v1/beacon/blob_sidecars/%d" genesisRequestURL = "/eth/v1/beacon/genesis" - getConfigSpecPath = "/eth/v1/config/spec" ) type ConfigSpec struct { @@ -70,7 +67,7 @@ func NewBeaconClient(endpoint string, timeout time.Duration) (*BeaconClient, err log.Info("L1 genesis time", "time", genesisTime) // Get the seconds per slot. - spec, err := getConfigSpec(ctx, cli) + spec, err := cli.GetConfigSpec(ctx) if err != nil { return nil, err } @@ -86,7 +83,7 @@ func NewBeaconClient(endpoint string, timeout time.Duration) (*BeaconClient, err } // GetBlobs returns the sidecars for a given slot. -func (c *BeaconClient) GetBlobs(ctx context.Context, time uint64) ([]*blob.Sidecar, error) { +func (c *BeaconClient) GetBlobs(ctx context.Context, time uint64) ([]*structs.Sidecar, error) { ctxWithTimeout, cancel := CtxWithTimeoutOrDefault(ctx, c.timeout) defer cancel() @@ -94,13 +91,12 @@ func (c *BeaconClient) GetBlobs(ctx context.Context, time uint64) ([]*blob.Sidec if err != nil { return nil, err } - resBytes, err := c.Get(ctxWithTimeout, c.BaseURL().Path+fmt.Sprintf(sidecarsRequestURL, slot)) if err != nil { return nil, err } - var sidecars *blob.SidecarsResponse + var sidecars *structs.SidecarsResponse if err = json.Unmarshal(resBytes, &sidecars); err != nil { return nil, err } @@ -115,17 +111,3 @@ func (c *BeaconClient) timeToSlot(timestamp uint64) (uint64, error) { } return (timestamp - c.genesisTime) / c.secondsPerSlot, nil } - -// getConfigSpec retrieve the current configs of the network used by the beacon node. -func getConfigSpec(ctx context.Context, c *beacon.Client) (*config.GetSpecResponse, error) { - body, err := c.Get(ctx, c.BaseURL().Path+getConfigSpecPath) - if err != nil { - return nil, errors.Wrap(err, "error requesting configSpecPath") - } - fsr := &config.GetSpecResponse{} - err = json.Unmarshal(body, fsr) - if err != nil { - return nil, err - } - return fsr, nil -} diff --git a/packages/taiko-client/pkg/rpc/blob_datasource.go b/packages/taiko-client/pkg/rpc/blob_datasource.go index c02d1606bb1..37904158540 100644 --- a/packages/taiko-client/pkg/rpc/blob_datasource.go +++ b/packages/taiko-client/pkg/rpc/blob_datasource.go @@ -10,7 +10,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/log" "github.com/go-resty/resty/v2" - "github.com/prysmaticlabs/prysm/v4/beacon-chain/rpc/eth/blob" + "github.com/prysmaticlabs/prysm/v5/api/server/structs" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg" ) @@ -77,9 +77,9 @@ func (ds *BlobDataSource) GetBlobs( ctx context.Context, timestamp uint64, blobHash common.Hash, -) ([]*blob.Sidecar, error) { +) ([]*structs.Sidecar, error) { var ( - sidecars []*blob.Sidecar + sidecars []*structs.Sidecar err error ) if ds.client.L1Beacon == nil { @@ -99,9 +99,9 @@ func (ds *BlobDataSource) GetBlobs( if err != nil { return nil, err } - sidecars = make([]*blob.Sidecar, len(blobs.Data)) + sidecars = make([]*structs.Sidecar, len(blobs.Data)) for index, value := range blobs.Data { - sidecars[index] = &blob.Sidecar{ + sidecars[index] = &structs.Sidecar{ KzgCommitment: value.KzgCommitment, Blob: value.Blob, } diff --git a/packages/taiko-client/pkg/rpc/methods.go b/packages/taiko-client/pkg/rpc/methods.go index d89b1457a7c..7a747c419e6 100644 --- a/packages/taiko-client/pkg/rpc/methods.go +++ b/packages/taiko-client/pkg/rpc/methods.go @@ -510,6 +510,19 @@ func (c *Client) GetProtocolStateVariables(opts *bind.CallOpts) (*struct { return GetProtocolStateVariables(c.TaikoL1, opts) } +// GetLastVerifiedBlockHash gets the last verified block hash from TaikoL1 contract. +func (c *Client) GetLastVerifiedBlockHash(ctx context.Context) (common.Hash, error) { + ctxWithTimeout, cancel := context.WithTimeout(ctx, defaultTimeout) + defer cancel() + + b, err := c.TaikoL1.GetLastVerifiedBlock(&bind.CallOpts{Context: ctxWithTimeout}) + if err != nil { + return common.Hash{}, err + } + + return b.BlockHash, nil +} + // GetL2BlockInfo fetches the L2 block information from the protocol. func (c *Client) GetL2BlockInfo(ctx context.Context, blockID *big.Int) (bindings.TaikoDataBlockV2, error) { ctxWithTimeout, cancel := CtxWithTimeoutOrDefault(ctx, defaultTimeout) diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go index a7c998b8aa2..191f2ed0da8 100644 --- a/packages/taiko-client/pkg/rpc/utils.go +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -3,7 +3,10 @@ package rpc import ( "context" "math/big" + "os" + "os/signal" "strings" + "syscall" "time" "github.com/ethereum/go-ethereum/accounts/abi/bind" @@ -21,6 +24,13 @@ var ( ZeroAddress common.Address BlobBytes = params.BlobTxBytesPerFieldElement * params.BlobTxFieldElementsPerBlob BlockMaxTxListBytes uint64 = (params.BlobTxBytesPerFieldElement - 1) * params.BlobTxFieldElementsPerBlob + // DefaultInterruptSignals is a set of default interrupt signals. + DefaultInterruptSignals = []os.Signal{ + os.Interrupt, + os.Kill, + syscall.SIGTERM, + syscall.SIGQUIT, + } ) // GetProtocolStateVariables gets the protocol states from TaikoL1 contract. @@ -251,3 +261,19 @@ func CtxWithTimeoutOrDefault(ctx context.Context, defaultTimeout time.Duration) return ctx, func() {} } + +// BlockOnInterruptsContext blocks until a SIGTERM is received. +// Passing in signals will override the default signals. +// The function will stop blocking if the context is closed. +func BlockOnInterruptsContext(ctx context.Context, signals ...os.Signal) { + if len(signals) == 0 { + signals = DefaultInterruptSignals + } + interruptChannel := make(chan os.Signal, 1) + signal.Notify(interruptChannel, signals...) + select { + case <-interruptChannel: + case <-ctx.Done(): + signal.Stop(interruptChannel) + } +} From 7874dd3ff8a6053da8c09377b52c83e7a506f45f Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 8 Oct 2024 21:10:50 +0800 Subject: [PATCH 037/205] chore(protocol): fix lint issue in SP1Verifier (#18213) --- packages/protocol/.solhint.json | 1 + .../contracts/layer1/verifiers/SP1Verifier.sol | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/protocol/.solhint.json b/packages/protocol/.solhint.json index ee0c7f96812..add6256b711 100644 --- a/packages/protocol/.solhint.json +++ b/packages/protocol/.solhint.json @@ -13,6 +13,7 @@ "no-global-import": "off", "no-inline-assembly": "off", "not-rely-on-time": "off", + "gas-custom-errors": "off", "one-contract-per-file": "off" } } diff --git a/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol b/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol index c9f9e2aca8b..185f4a9523e 100644 --- a/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol @@ -84,21 +84,21 @@ contract SP1Verifier is EssentialContract, IVerifier { { require(_ctxs.length != 0 && _proof.data.length > 64, SP1_INVALID_PARAMS()); // Extract the necessary data - bytes32 aggregation_program = bytes32(_proof.data[0:32]); - bytes32 block_proving_program = bytes32(_proof.data[32:64]); + bytes32 aggregationProgram = bytes32(_proof.data[0:32]); + bytes32 blockProvingProgram = bytes32(_proof.data[32:64]); // Check if the aggregation program is trusted - require(isProgramTrusted[aggregation_program], SP1_INVALID_AGGREGATION_VKEY()); + require(isProgramTrusted[aggregationProgram], SP1_INVALID_AGGREGATION_VKEY()); // Check if the block proving program is trusted - require(isProgramTrusted[block_proving_program], SP1_INVALID_PROGRAM_VKEY()); + require(isProgramTrusted[blockProvingProgram], SP1_INVALID_PROGRAM_VKEY()); // Collect public inputs - bytes32[] memory public_inputs = new bytes32[](_ctxs.length + 1); + bytes32[] memory publicInputs = new bytes32[](_ctxs.length + 1); // First public input is the block proving program key - public_inputs[0] = block_proving_program; + publicInputs[0] = blockProvingProgram; // All other inputs are the block program public inputs (a single 32 byte value) for (uint256 i; i < _ctxs.length; ++i) { - public_inputs[i + 1] = LibPublicInput.hashPublicInputs( + publicInputs[i + 1] = LibPublicInput.hashPublicInputs( _ctxs[i].tran, address(this), address(0), @@ -112,7 +112,7 @@ contract SP1Verifier is EssentialContract, IVerifier { (bool success,) = sp1RemoteVerifier().staticcall( abi.encodeCall( ISP1Verifier.verifyProof, - (aggregation_program, abi.encodePacked(public_inputs), _proof.data[64:]) + (aggregationProgram, abi.encodePacked(publicInputs), _proof.data[64:]) ) ); From 30ed0e79c1b1aca14ebf67034640f27a2c3322f1 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 8 Oct 2024 21:11:07 +0800 Subject: [PATCH 038/205] fix(supplementary-contracts): fix pragma in IMinimalBlackList (#18210) --- .../contracts/blacklist/IMinimalBlacklist.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/supplementary-contracts/contracts/blacklist/IMinimalBlacklist.sol b/packages/supplementary-contracts/contracts/blacklist/IMinimalBlacklist.sol index cd70fd7879a..25f1c089aef 100644 --- a/packages/supplementary-contracts/contracts/blacklist/IMinimalBlacklist.sol +++ b/packages/supplementary-contracts/contracts/blacklist/IMinimalBlacklist.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.24; +pragma solidity ^0.8.24; /// @title Minimal Blacklist Interface interface IMinimalBlacklist { From e349d2237a1830edab305b2f0eaaeb0eaf3c623f Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 9 Oct 2024 00:29:52 +0800 Subject: [PATCH 039/205] chore(protocol): add functions to ITaikoL1 for Nethermind Preconf (#18217) --- .../contracts/layer1/based/ITaikoL1.sol | 17 +++++++++++++++++ .../protocol/contracts/layer1/based/TaikoL1.sol | 9 ++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/ITaikoL1.sol b/packages/protocol/contracts/layer1/based/ITaikoL1.sol index 1c97592fb46..1d6517ec013 100644 --- a/packages/protocol/contracts/layer1/based/ITaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/ITaikoL1.sol @@ -69,6 +69,23 @@ interface ITaikoL1 { /// @param _pause True if paused. function pauseProving(bool _pause) external; + /// @notice Gets the details of a block. + /// @param _blockId Index of the block. + /// @return blk_ The block. + function getBlockV2(uint64 _blockId) external view returns (TaikoData.BlockV2 memory blk_); + + /// @notice Gets the state transition for a specific block. + /// @param _blockId Index of the block. + /// @param _tid The transition id. + /// @return The state transition data of the block. + function getTransition( + uint64 _blockId, + uint32 _tid + ) + external + view + returns (TaikoData.TransitionState memory); + /// @notice Deposits Taiko token to be used as bonds. /// @param _amount The amount of Taiko token to deposit. function depositBond(uint256 _amount) external; diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index 521a3710541..a12e8b19e6a 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -190,9 +190,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { blk_ = LibData.blockV2toV1(blk); } - /// @notice Gets the details of a block. - /// @param _blockId Index of the block. - /// @return blk_ The block. + /// @inheritdoc ITaikoL1 function getBlockV2(uint64 _blockId) external view returns (TaikoData.BlockV2 memory blk_) { (blk_,) = LibUtils.getBlock(state, getConfig(), _blockId); } @@ -229,10 +227,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { return LibUtils.getTransitions(state, getConfig(), _blockIds, _parentHashes); } - /// @notice Gets the state transition for a specific block. - /// @param _blockId Index of the block. - /// @param _tid The transition id. - /// @return The state transition data of the block. + /// @inheritdoc ITaikoL1 function getTransition( uint64 _blockId, uint32 _tid From d624e29ce1c0ae9ef6704d96516d632600213e13 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Wed, 9 Oct 2024 10:55:34 +0800 Subject: [PATCH 040/205] test(taiko-client): remove an unnecessary test (#18218) --- .../pkg/rpc/blob_datasource_test.go | 30 ------------------- 1 file changed, 30 deletions(-) delete mode 100644 packages/taiko-client/pkg/rpc/blob_datasource_test.go diff --git a/packages/taiko-client/pkg/rpc/blob_datasource_test.go b/packages/taiko-client/pkg/rpc/blob_datasource_test.go deleted file mode 100644 index 439b5ee8c9b..00000000000 --- a/packages/taiko-client/pkg/rpc/blob_datasource_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package rpc - -import ( - "context" - "net/url" - "testing" - - "github.com/ethereum/go-ethereum/common" - "github.com/stretchr/testify/require" -) - -func TestGetBlobsFromBlobScan(t *testing.T) { - blobScanEndpoint, err := url.Parse("https://api.holesky.blobscan.com") - require.Nil(t, err) - require.NotNil(t, blobScanEndpoint) - ds := NewBlobDataSource( - context.Background(), - &Client{}, - blobScanEndpoint, - nil, - ) - sidecars, err := ds.GetBlobs( - context.Background(), - 0, - common.HexToHash("0x0145185449c57dee4e6c921b702e5d572fbeb026f96c220a6a17b79d157d921b"), - ) - require.Nil(t, err) - require.NotNil(t, sidecars) - require.NotNil(t, sidecars[0].Blob) -} From f3ed20bca65cfb87a182f6876795983a4b3cd792 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Tue, 8 Oct 2024 20:09:20 -0700 Subject: [PATCH 041/205] chore(main): release taiko-client 0.38.0 (#18191) --- .release-please-manifest.json | 2 +- packages/taiko-client/CHANGELOG.md | 17 +++++++++++++++++ packages/taiko-client/package.json | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index f38a50665fb..6c1613ada2a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -9,7 +9,7 @@ "packages/relayer": "0.12.0", "packages/snaefell-ui": "1.1.0", "packages/supplementary-contracts": "1.0.0", - "packages/taiko-client": "0.37.0", + "packages/taiko-client": "0.38.0", "packages/taikoon-ui": "1.3.0", "packages/ui-lib": "1.0.0" } diff --git a/packages/taiko-client/CHANGELOG.md b/packages/taiko-client/CHANGELOG.md index 226ffba0c87..43d81ace672 100644 --- a/packages/taiko-client/CHANGELOG.md +++ b/packages/taiko-client/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [0.38.0](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.37.0...taiko-client-v0.38.0) (2024-10-09) + + +### Features + +* **taiko-client:** add `proposer_pool_content_fetch_time` metric ([#18190](https://github.com/taikoxyz/taiko-mono/issues/18190)) ([35579df](https://github.com/taikoxyz/taiko-mono/commit/35579dfa938562969da2395492f4472c300574dd)) + + +### Chores + +* **taiko-client:** bump dependencies ([#18202](https://github.com/taikoxyz/taiko-mono/issues/18202)) ([219a7e8](https://github.com/taikoxyz/taiko-mono/commit/219a7e87c09c7e4ac8d545c65c77a29e6f818701)) + + +### Tests + +* **taiko-client:** remove an unnecessary test ([#18218](https://github.com/taikoxyz/taiko-mono/issues/18218)) ([d624e29](https://github.com/taikoxyz/taiko-mono/commit/d624e29ce1c0ae9ef6704d96516d632600213e13)) + ## [0.37.0](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.36.0...taiko-client-v0.37.0) (2024-09-28) diff --git a/packages/taiko-client/package.json b/packages/taiko-client/package.json index d2c11412a32..8a029b201d3 100644 --- a/packages/taiko-client/package.json +++ b/packages/taiko-client/package.json @@ -1,5 +1,5 @@ { "name": "taiko-client", - "version": "0.37.0", + "version": "0.38.0", "private": true } From fb5b8c679a602555bd424ef8dfde6a8947fe471a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:41:30 +0800 Subject: [PATCH 042/205] chore(deps): bump github.com/go-resty/resty/v2 from 2.7.0 to 2.15.3 (#18188) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 3 ++- go.sum | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index fefa09f8d77..ddf465f7b9c 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,7 @@ module github.com/taikoxyz/taiko-mono go 1.23 + require ( github.com/btcsuite/btcd/btcec/v2 v2.3.4 github.com/buildkite/terminal-to-html/v3 v3.8.0 @@ -14,7 +15,7 @@ require ( github.com/ethereum/go-ethereum v1.14.11 github.com/ethereum/hive v0.0.0-20240822135954-91829ccfb2c5 github.com/go-git/go-git/v5 v5.12.0 - github.com/go-resty/resty/v2 v2.7.0 + github.com/go-resty/resty/v2 v2.15.3 github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 github.com/google/uuid v1.6.0 github.com/joho/godotenv v1.5.1 diff --git a/go.sum b/go.sum index ba052d092db..e5d6ef89d26 100644 --- a/go.sum +++ b/go.sum @@ -236,8 +236,8 @@ github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91 github.com/go-playground/validator/v10 v10.4.0/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-playground/validator/v10 v10.13.0 h1:cFRQdfaSMCOSfGCCLB20MHvuoHb/s5G8L5pu2ppK5AQ= github.com/go-playground/validator/v10 v10.13.0/go.mod h1:dwu7+CG8/CtBiJFZDz4e+5Upb6OLw04gtBYw0mcG/z4= -github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= -github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= +github.com/go-resty/resty/v2 v2.15.3 h1:bqff+hcqAflpiF591hhJzNdkRsFhlB96CYfBwSFvql8= +github.com/go-resty/resty/v2 v2.15.3/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= @@ -718,7 +718,6 @@ golang.org/x/net v0.0.0-20210226101413-39120d07d75e/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= From 2828d014e8fe5b8cca9edef0068ba81505f0d0b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:42:18 +0800 Subject: [PATCH 043/205] build(deps): bump github.com/docker/docker from 25.0.5+incompatible to 25.0.6+incompatible in the go_modules group (#18026) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ddf465f7b9c..4c5ee52f395 100644 --- a/go.mod +++ b/go.mod @@ -83,7 +83,7 @@ require ( github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/distribution/reference v0.5.0 // indirect - github.com/docker/docker v25.0.5+incompatible // indirect + github.com/docker/docker v25.0.6+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect diff --git a/go.sum b/go.sum index e5d6ef89d26..9ddee77dab9 100644 --- a/go.sum +++ b/go.sum @@ -153,8 +153,8 @@ github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0 github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v25.0.5+incompatible h1:UmQydMduGkrD5nQde1mecF/YnSbTOaPeFIeP5C4W+DE= -github.com/docker/docker v25.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg= +github.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= From 9b2ba6a2a2fae24d1fb34e23b29b3146e96f575e Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 9 Oct 2024 15:13:40 +0800 Subject: [PATCH 044/205] chore(protocol): shorten imports in solidity files (#18221) --- .../AutomataDcapV3Attestation.sol | 29 +++++----- .../interfaces/IAttestation.sol | 2 +- .../lib/PEMCertChainLib.sol | 10 ++-- .../lib/QuoteV3Auth/V3Parser.sol | 8 +-- .../contracts/layer1/based/LibBonds.sol | 4 +- .../contracts/layer1/based/LibProposing.sol | 4 +- .../contracts/layer1/based/LibUtils.sol | 6 +-- .../contracts/layer1/based/LibVerifying.sol | 2 +- .../contracts/layer1/based/TaikoData.sol | 2 +- .../contracts/layer1/based/TaikoL1.sol | 2 +- .../layer1/hekla/HeklaTaikoToken.sol | 2 +- .../mainnet/addrcache/RollupAddressCache.sol | 4 +- .../mainnet/addrcache/SharedAddressCache.sol | 4 +- .../mainnet/multirollup/MainnetBridge.sol | 2 +- .../multirollup/MainnetERC1155Vault.sol | 2 +- .../mainnet/multirollup/MainnetERC20Vault.sol | 2 +- .../multirollup/MainnetERC721Vault.sol | 2 +- .../MainnetSharedAddressManager.sol | 4 +- .../multirollup/MainnetSignalService.sol | 2 +- .../mainnet/rollup/MainnetGuardianProver.sol | 2 +- .../mainnet/rollup/MainnetProverSet.sol | 2 +- .../rollup/MainnetRollupAddressManager.sol | 4 +- .../layer1/mainnet/rollup/MainnetTaikoL1.sol | 2 +- .../mainnet/rollup/MainnetTierRouter.sol | 2 +- .../rollup/verifiers/MainnetRisc0Verifier.sol | 6 +-- .../rollup/verifiers/MainnetSP1Verifier.sol | 6 +-- .../rollup/verifiers/MainnetSgxVerifier.sol | 6 +-- .../verifiers/MainnetTeeAnyVerifier.sol | 6 +-- .../verifiers/MainnetZkAndTeeVerifier.sol | 6 +-- .../rollup/verifiers/MainnetZkAnyVerifier.sol | 6 +-- .../layer1/provers/GuardianProver.sol | 4 +- .../contracts/layer1/provers/ProverSet.sol | 6 +-- .../layer1/team/airdrop/MerkleClaimable.sol | 2 +- .../layer1/team/tokenunlock/TokenUnlock.sol | 6 +-- .../layer1/tiers/TierProviderBase.sol | 2 +- .../contracts/layer1/token/TaikoToken.sol | 2 +- .../layer1/verifiers/Risc0Verifier.sol | 4 +- .../layer1/verifiers/SP1Verifier.sol | 4 +- .../layer1/verifiers/SgxVerifier.sol | 4 +- .../verifiers/compose/ComposeVerifier.sol | 4 +- .../verifiers/compose/TeeAnyVerifier.sol | 2 +- .../verifiers/compose/ZkAndTeeVerifier.sol | 2 +- .../verifiers/compose/ZkAnyVerifier.sol | 2 +- .../contracts/layer2/based/Lib1559Math.sol | 2 +- .../contracts/layer2/based/TaikoL2.sol | 10 ++-- .../layer2/token/BridgedTaikoToken.sol | 4 +- packages/protocol/foundry.toml | 3 ++ .../layer1/AddSGXVerifierInstances.s.sol | 4 +- .../script/layer1/DeployERC20Airdrop.s.sol | 4 +- .../script/layer1/DeployLabsProverPool.s.sol | 4 +- .../script/layer1/DeployProtocolOnL1.s.sol | 54 +++++++++---------- .../script/layer1/DeployProverSet.s.sol | 4 +- .../script/layer1/DeployQuotaManager.s.sol | 4 +- .../script/layer1/DeployRisc0Verifier.s.sol | 4 +- .../script/layer1/DeploySP1Verifier.s.sol | 4 +- .../script/layer1/DeployTaikoToken.s.sol | 4 +- .../layer1/SendMessageToDelegateOwner.s.sol | 6 +-- .../script/layer1/SetDcapParams.s.sol | 2 +- .../script/layer1/UpgradeHeklaOntakeL1.s.sol | 12 ++--- .../script/layer1/UpgradeHeklaOntakeL2.s.sol | 12 ++--- .../script/layer1/tokenunlock/Deploy.s.sol | 4 +- .../script/layer1/tokenunlock/Vest.s.sol | 2 +- .../script/layer2/DeployDelegateOwner.s.sol | 4 +- .../script/layer2/PostGenesisConfig.s.sol | 6 +-- .../script/layer2/PostGenesisQuery.s.sol | 6 +-- .../shared/AuthorizeTaikoForMultihop.s.sol | 4 +- .../protocol/script/shared/SetAddress.s.sol | 2 +- .../script/shared/SetRemoteBridgeSuites.s.sol | 2 +- .../test/genesis/GenerateGenesis.g.sol | 14 ++--- packages/protocol/test/layer1/TaikoL1Test.sol | 16 +++--- .../common/AttestationBase.t.sol | 15 +++--- .../utils/DcapTestUtils.t.sol | 9 ++-- .../utils/V3QuoteParseUtils.t.sol | 11 ++-- .../test/layer1/based/GuardianProver1.t.sol | 4 +- .../test/layer1/based/GuardianProver2.t.sol | 2 +- .../test/layer1/based/TestTierProvider.sol | 8 +-- .../layer1/team/tokenunlock/TokenUnlock.t.sol | 4 +- .../verifiers/compose/ComposeVerifeir.t.sol | 4 +- .../layer2/TaikoL2EIP1559Configurable.sol | 2 +- packages/protocol/test/layer2/TaikoL2Test.sol | 2 +- .../protocol/test/shared/DeployCapability.sol | 2 +- .../protocol/test/shared/HelperContracts.sol | 4 +- packages/protocol/test/shared/TaikoTest.sol | 12 ++--- .../test/shared/common/LibAddress.t.sol | 2 +- .../test/shared/common/LibTrieProof.t.sol | 2 +- 85 files changed, 227 insertions(+), 238 deletions(-) diff --git a/packages/protocol/contracts/layer1/automata-attestation/AutomataDcapV3Attestation.sol b/packages/protocol/contracts/layer1/automata-attestation/AutomataDcapV3Attestation.sol index aec2b13ccc3..4b019c4723c 100644 --- a/packages/protocol/contracts/layer1/automata-attestation/AutomataDcapV3Attestation.sol +++ b/packages/protocol/contracts/layer1/automata-attestation/AutomataDcapV3Attestation.sol @@ -1,23 +1,18 @@ //SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { V3Struct } from "./lib/QuoteV3Auth/V3Struct.sol"; -import { V3Parser } from "./lib/QuoteV3Auth/V3Parser.sol"; -import { IPEMCertChainLib } from "./lib/interfaces/IPEMCertChainLib.sol"; -import { PEMCertChainLib } from "./lib/PEMCertChainLib.sol"; -import { TCBInfoStruct } from "./lib/TCBInfoStruct.sol"; -import { EnclaveIdStruct } from "./lib/EnclaveIdStruct.sol"; -import { IAttestation } from "./interfaces/IAttestation.sol"; - -// Internal Libraries -import { Base64 } from "solady/src/utils/Base64.sol"; -import { LibString } from "solady/src/utils/LibString.sol"; -import { BytesUtils } from "./utils/BytesUtils.sol"; - -// External Libraries -import { ISigVerifyLib } from "./interfaces/ISigVerifyLib.sol"; - -import { EssentialContract } from "../../shared/common/EssentialContract.sol"; +import "solady/src/utils/Base64.sol"; +import "solady/src/utils/LibString.sol"; +import "src/shared/common/EssentialContract.sol"; +import "./lib/QuoteV3Auth/V3Struct.sol"; +import "./lib/QuoteV3Auth/V3Parser.sol"; +import "./lib/interfaces/IPEMCertChainLib.sol"; +import "./lib/PEMCertChainLib.sol"; +import "./lib/TCBInfoStruct.sol"; +import "./lib/EnclaveIdStruct.sol"; +import "./interfaces/IAttestation.sol"; +import "./utils/BytesUtils.sol"; +import "./interfaces/ISigVerifyLib.sol"; /// @title AutomataDcapV3Attestation /// @custom:security-contact security@taiko.xyz diff --git a/packages/protocol/contracts/layer1/automata-attestation/interfaces/IAttestation.sol b/packages/protocol/contracts/layer1/automata-attestation/interfaces/IAttestation.sol index e5a960a4af8..8059b9216b3 100644 --- a/packages/protocol/contracts/layer1/automata-attestation/interfaces/IAttestation.sol +++ b/packages/protocol/contracts/layer1/automata-attestation/interfaces/IAttestation.sol @@ -1,7 +1,7 @@ //SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { V3Struct } from "../lib/QuoteV3Auth/V3Struct.sol"; +import "../lib/QuoteV3Auth/V3Struct.sol"; /// @title IAttestation /// @custom:security-contact security@taiko.xyz diff --git a/packages/protocol/contracts/layer1/automata-attestation/lib/PEMCertChainLib.sol b/packages/protocol/contracts/layer1/automata-attestation/lib/PEMCertChainLib.sol index 0fcc99f0a39..768861942e0 100644 --- a/packages/protocol/contracts/layer1/automata-attestation/lib/PEMCertChainLib.sol +++ b/packages/protocol/contracts/layer1/automata-attestation/lib/PEMCertChainLib.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { LibString } from "solady/src/utils/LibString.sol"; -import { Asn1Decode, NodePtr } from "../utils/Asn1Decode.sol"; -import { BytesUtils } from "../utils/BytesUtils.sol"; -import { X509DateUtils } from "../utils/X509DateUtils.sol"; -import { IPEMCertChainLib } from "./interfaces/IPEMCertChainLib.sol"; +import "solady/src/utils/LibString.sol"; +import "../utils/Asn1Decode.sol"; +import "../utils/BytesUtils.sol"; +import "../utils/X509DateUtils.sol"; +import "./interfaces/IPEMCertChainLib.sol"; /// @title PEMCertChainLib /// @custom:security-contact security@taiko.xyz diff --git a/packages/protocol/contracts/layer1/automata-attestation/lib/QuoteV3Auth/V3Parser.sol b/packages/protocol/contracts/layer1/automata-attestation/lib/QuoteV3Auth/V3Parser.sol index 59e95ef1f40..773c07d551c 100644 --- a/packages/protocol/contracts/layer1/automata-attestation/lib/QuoteV3Auth/V3Parser.sol +++ b/packages/protocol/contracts/layer1/automata-attestation/lib/QuoteV3Auth/V3Parser.sol @@ -1,10 +1,10 @@ //SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { Base64 } from "solady/src/utils/Base64.sol"; -import { BytesUtils } from "../../utils/BytesUtils.sol"; -import { IPEMCertChainLib, PEMCertChainLib } from "../../lib/PEMCertChainLib.sol"; -import { V3Struct } from "./V3Struct.sol"; +import "solady/src/utils/Base64.sol"; +import "../../utils/BytesUtils.sol"; +import "../../lib/PEMCertChainLib.sol"; +import "./V3Struct.sol"; /// @title V3Parser /// @custom:security-contact security@taiko.xyz diff --git a/packages/protocol/contracts/layer1/based/LibBonds.sol b/packages/protocol/contracts/layer1/based/LibBonds.sol index e80da12b8e9..f8b321ce442 100644 --- a/packages/protocol/contracts/layer1/based/LibBonds.sol +++ b/packages/protocol/contracts/layer1/based/LibBonds.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "../../shared/common/IAddressResolver.sol"; -import "../../shared/common/LibStrings.sol"; +import "src/shared/common/IAddressResolver.sol"; +import "src/shared/common/LibStrings.sol"; import "./TaikoData.sol"; /// @title LibBonds diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index dab7077aba4..b564ac34261 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../shared/common/LibAddress.sol"; -import "../../shared/common/LibNetwork.sol"; +import "src/shared/common/LibAddress.sol"; +import "src/shared/common/LibNetwork.sol"; import "./LibBonds.sol"; import "./LibData.sol"; import "./LibUtils.sol"; diff --git a/packages/protocol/contracts/layer1/based/LibUtils.sol b/packages/protocol/contracts/layer1/based/LibUtils.sol index 81f917f4caa..6f132186381 100644 --- a/packages/protocol/contracts/layer1/based/LibUtils.sol +++ b/packages/protocol/contracts/layer1/based/LibUtils.sol @@ -3,9 +3,9 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "../../shared/common/IAddressResolver.sol"; -import "../../shared/common/LibStrings.sol"; -import "../../shared/common/LibMath.sol"; +import "src/shared/common/IAddressResolver.sol"; +import "src/shared/common/LibStrings.sol"; +import "src/shared/common/LibMath.sol"; import "../tiers/ITierProvider.sol"; import "../tiers/ITierRouter.sol"; import "./TaikoData.sol"; diff --git a/packages/protocol/contracts/layer1/based/LibVerifying.sol b/packages/protocol/contracts/layer1/based/LibVerifying.sol index 0c744c249d1..0957acb859f 100644 --- a/packages/protocol/contracts/layer1/based/LibVerifying.sol +++ b/packages/protocol/contracts/layer1/based/LibVerifying.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../shared/signal/ISignalService.sol"; +import "src/shared/signal/ISignalService.sol"; import "./LibBonds.sol"; import "./LibUtils.sol"; diff --git a/packages/protocol/contracts/layer1/based/TaikoData.sol b/packages/protocol/contracts/layer1/based/TaikoData.sol index 895a8d841cf..e0ed8918ed0 100644 --- a/packages/protocol/contracts/layer1/based/TaikoData.sol +++ b/packages/protocol/contracts/layer1/based/TaikoData.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../shared/data/LibSharedData.sol"; +import "src/shared/data/LibSharedData.sol"; /// @title TaikoData /// @notice This library defines various data structures used in the Taiko diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index a12e8b19e6a..225a698ca6c 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../shared/common/EssentialContract.sol"; +import "src/shared/common/EssentialContract.sol"; import "./LibData.sol"; import "./LibProposing.sol"; import "./LibProving.sol"; diff --git a/packages/protocol/contracts/layer1/hekla/HeklaTaikoToken.sol b/packages/protocol/contracts/layer1/hekla/HeklaTaikoToken.sol index 0b175f2d493..b7eb6590bb7 100644 --- a/packages/protocol/contracts/layer1/hekla/HeklaTaikoToken.sol +++ b/packages/protocol/contracts/layer1/hekla/HeklaTaikoToken.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; -import "../../shared/common/EssentialContract.sol"; +import "src/shared/common/EssentialContract.sol"; /// @title HeklaTaikoToken /// @notice Taiko token for Taiko Hekla testnet. diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol index ad0a567f6e6..4936556e01f 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/common/LibStrings.sol"; -import "../../../shared/common/LibNetwork.sol"; +import "src/shared/common/LibStrings.sol"; +import "src/shared/common/LibNetwork.sol"; import "./AddressCache.sol"; /// @title RollupAddressCache diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/SharedAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/SharedAddressCache.sol index 57dd9f6e4b8..ee2e6b68676 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/SharedAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/SharedAddressCache.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/common/LibStrings.sol"; -import "../../../shared/common/LibNetwork.sol"; +import "src/shared/common/LibStrings.sol"; +import "src/shared/common/LibNetwork.sol"; import "./AddressCache.sol"; /// @title SharedAddressCache diff --git a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetBridge.sol b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetBridge.sol index f737e2903c8..bc7877c5660 100644 --- a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetBridge.sol +++ b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetBridge.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/bridge/Bridge.sol"; +import "src/shared/bridge/Bridge.sol"; import "../addrcache/SharedAddressCache.sol"; import "../reentrylock/LibFasterReentryLock.sol"; diff --git a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC1155Vault.sol b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC1155Vault.sol index 2fe0eec1e7b..e44b1efb69c 100644 --- a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC1155Vault.sol +++ b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC1155Vault.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/tokenvault/ERC1155Vault.sol"; +import "src/shared/tokenvault/ERC1155Vault.sol"; import "../addrcache/SharedAddressCache.sol"; import "../reentrylock/LibFasterReentryLock.sol"; diff --git a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC20Vault.sol b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC20Vault.sol index e9688517710..605b40932b5 100644 --- a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC20Vault.sol +++ b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC20Vault.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/tokenvault/ERC20Vault.sol"; +import "src/shared/tokenvault/ERC20Vault.sol"; import "../addrcache/SharedAddressCache.sol"; import "../reentrylock/LibFasterReentryLock.sol"; diff --git a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC721Vault.sol b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC721Vault.sol index 416bc813194..f4ab9bec3a3 100644 --- a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC721Vault.sol +++ b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetERC721Vault.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/tokenvault/ERC721Vault.sol"; +import "src/shared/tokenvault/ERC721Vault.sol"; import "../addrcache/SharedAddressCache.sol"; import "../reentrylock/LibFasterReentryLock.sol"; diff --git a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetSharedAddressManager.sol b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetSharedAddressManager.sol index a0d26ff9d83..9a2c3cfa3f8 100644 --- a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetSharedAddressManager.sol +++ b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetSharedAddressManager.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/common/AddressManager.sol"; -import "../../../shared/common/LibStrings.sol"; +import "src/shared/common/AddressManager.sol"; +import "src/shared/common/LibStrings.sol"; import "../addrcache/SharedAddressCache.sol"; import "../reentrylock/LibFasterReentryLock.sol"; diff --git a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetSignalService.sol b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetSignalService.sol index 2d10595702b..b5958753f14 100644 --- a/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetSignalService.sol +++ b/packages/protocol/contracts/layer1/mainnet/multirollup/MainnetSignalService.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/signal/SignalService.sol"; +import "src/shared/signal/SignalService.sol"; import "../addrcache/SharedAddressCache.sol"; import "../reentrylock/LibFasterReentryLock.sol"; diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetGuardianProver.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetGuardianProver.sol index 0fa50684a8c..baf50487d03 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetGuardianProver.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetGuardianProver.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../layer1/provers/GuardianProver.sol"; +import "src/layer1/provers/GuardianProver.sol"; import "../addrcache/RollupAddressCache.sol"; import "../reentrylock/LibFasterReentryLock.sol"; /// @title MainnetGuardianProver diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetProverSet.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetProverSet.sol index b6c06184c02..27c0de89bf2 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetProverSet.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetProverSet.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../provers/ProverSet.sol"; +import "src/layer1/provers/ProverSet.sol"; import "../addrcache/RollupAddressCache.sol"; import "../reentrylock/LibFasterReentryLock.sol"; diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetRollupAddressManager.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetRollupAddressManager.sol index 1a09738d144..74728ba20a5 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetRollupAddressManager.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetRollupAddressManager.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/common/AddressManager.sol"; -import "../../../shared/common/LibStrings.sol"; +import "src/shared/common/AddressManager.sol"; +import "src/shared/common/LibStrings.sol"; import "../addrcache/RollupAddressCache.sol"; import "../reentrylock/LibFasterReentryLock.sol"; diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTaikoL1.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTaikoL1.sol index b321592fffc..1ca0b14089a 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTaikoL1.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTaikoL1.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../based/TaikoL1.sol"; +import "src/layer1/based/TaikoL1.sol"; import "../addrcache/RollupAddressCache.sol"; import "../reentrylock/LibFasterReentryLock.sol"; diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol index f5ec759520b..2c9a8966106 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../tiers/ITierRouter.sol"; +import "src/layer1/tiers/ITierRouter.sol"; /// @title MainnetTierRouter /// @dev Labeled in AddressResolver as "tier_router" diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetRisc0Verifier.sol b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetRisc0Verifier.sol index 480e6912140..538831547d3 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetRisc0Verifier.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetRisc0Verifier.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../verifiers/Risc0Verifier.sol"; -import "../../addrcache/RollupAddressCache.sol"; -import "../../reentrylock/LibFasterReentryLock.sol"; +import "src/layer1/verifiers/Risc0Verifier.sol"; +import "src/layer1/mainnet/addrcache/RollupAddressCache.sol"; +import "src/layer1/mainnet/reentrylock/LibFasterReentryLock.sol"; /// @title MainnetRisc0Verifier /// @dev This contract shall be deployed to replace its parent contract on Ethereum for Taiko diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetSP1Verifier.sol b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetSP1Verifier.sol index e9cc9230a1b..2954d8dc3b7 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetSP1Verifier.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetSP1Verifier.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../verifiers/SP1Verifier.sol"; -import "../../addrcache/RollupAddressCache.sol"; -import "../../reentrylock/LibFasterReentryLock.sol"; +import "src/layer1/verifiers/SP1Verifier.sol"; +import "src/layer1/mainnet/addrcache/RollupAddressCache.sol"; +import "src/layer1/mainnet/reentrylock/LibFasterReentryLock.sol"; /// @title MainnetSP1Verifier /// @dev This contract shall be deployed to replace its parent contract on Ethereum for Taiko diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetSgxVerifier.sol b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetSgxVerifier.sol index c4583e58c96..4d57e8a596e 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetSgxVerifier.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetSgxVerifier.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../verifiers/SgxVerifier.sol"; -import "../../addrcache/RollupAddressCache.sol"; -import "../../reentrylock/LibFasterReentryLock.sol"; +import "src/layer1/verifiers/SgxVerifier.sol"; +import "src/layer1/mainnet/addrcache/RollupAddressCache.sol"; +import "src/layer1/mainnet/reentrylock/LibFasterReentryLock.sol"; /// @title MainnetSgxVerifier /// @dev This contract shall be deployed to replace its parent contract on Ethereum for Taiko diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol index 28599c0a5d3..48e69932402 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../verifiers/compose/TeeAnyVerifier.sol"; -import "../../addrcache/RollupAddressCache.sol"; -import "../../reentrylock/LibFasterReentryLock.sol"; +import "src/layer1/verifiers/compose/TeeAnyVerifier.sol"; +import "src/layer1/mainnet/addrcache/RollupAddressCache.sol"; +import "src/layer1/mainnet/reentrylock/LibFasterReentryLock.sol"; /// @title MainnetTeeAnyVerifier /// @dev This contract shall be deployed to replace its parent contract on Ethereum for Taiko diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol index 67e58d8af1e..609789ba250 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../verifiers/compose/ZkAndTeeVerifier.sol"; -import "../../addrcache/RollupAddressCache.sol"; -import "../../reentrylock/LibFasterReentryLock.sol"; +import "src/layer1/verifiers/compose/ZkAndTeeVerifier.sol"; +import "src/layer1/mainnet/addrcache/RollupAddressCache.sol"; +import "src/layer1/mainnet/reentrylock/LibFasterReentryLock.sol"; /// @title MainnetZkAndTeeVerifier /// @dev This contract shall be deployed to replace its parent contract on Ethereum for Taiko diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol index 8ac59cd0378..bbb107268d8 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../verifiers/compose/ZkAnyVerifier.sol"; -import "../../addrcache/RollupAddressCache.sol"; -import "../../reentrylock/LibFasterReentryLock.sol"; +import "src/layer1/verifiers/compose/ZkAnyVerifier.sol"; +import "src/layer1/mainnet/addrcache/RollupAddressCache.sol"; +import "src/layer1/mainnet/reentrylock/LibFasterReentryLock.sol"; /// @title MainnetZkAnyVerifier /// @dev This contract shall be deployed to replace its parent contract on Ethereum for Taiko diff --git a/packages/protocol/contracts/layer1/provers/GuardianProver.sol b/packages/protocol/contracts/layer1/provers/GuardianProver.sol index aa21dd9b294..53bd8960709 100644 --- a/packages/protocol/contracts/layer1/provers/GuardianProver.sol +++ b/packages/protocol/contracts/layer1/provers/GuardianProver.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "../../shared/common/EssentialContract.sol"; -import "../../shared/common/LibStrings.sol"; +import "src/shared/common/EssentialContract.sol"; +import "src/shared/common/LibStrings.sol"; import "../verifiers/IVerifier.sol"; import "../based/ITaikoL1.sol"; diff --git a/packages/protocol/contracts/layer1/provers/ProverSet.sol b/packages/protocol/contracts/layer1/provers/ProverSet.sol index dd6e4ea06c1..c0b4d66dec9 100644 --- a/packages/protocol/contracts/layer1/provers/ProverSet.sol +++ b/packages/protocol/contracts/layer1/provers/ProverSet.sol @@ -5,9 +5,9 @@ import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpg import "@openzeppelin/contracts/interfaces/IERC1271.sol"; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "../../shared/common/EssentialContract.sol"; -import "../../shared/common/LibStrings.sol"; -import "../../shared/common/LibAddress.sol"; +import "src/shared/common/EssentialContract.sol"; +import "src/shared/common/LibStrings.sol"; +import "src/shared/common/LibAddress.sol"; import "../based/ITaikoL1.sol"; interface IHasRecipient { diff --git a/packages/protocol/contracts/layer1/team/airdrop/MerkleClaimable.sol b/packages/protocol/contracts/layer1/team/airdrop/MerkleClaimable.sol index f3c945446aa..38eba9238f2 100644 --- a/packages/protocol/contracts/layer1/team/airdrop/MerkleClaimable.sol +++ b/packages/protocol/contracts/layer1/team/airdrop/MerkleClaimable.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; -import "../../../shared/common/EssentialContract.sol"; +import "src/shared/common/EssentialContract.sol"; /// @title MerkleClaimable /// @notice Contract for managing Taiko token airdrop for eligible users diff --git a/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol b/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol index a951d647c1c..7dce22a5b95 100644 --- a/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol +++ b/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol @@ -6,9 +6,9 @@ import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import "../../../shared/common/EssentialContract.sol"; -import "../../../shared/common/LibStrings.sol"; -import "../../../shared/common/LibMath.sol"; +import "src/shared/common/EssentialContract.sol"; +import "src/shared/common/LibStrings.sol"; +import "src/shared/common/LibMath.sol"; import "../../provers/ProverSet.sol"; /// @title TokenUnlock diff --git a/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol b/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol index c6d4f6baa32..9f781db3d49 100644 --- a/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol +++ b/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../shared/common/LibStrings.sol"; +import "src/shared/common/LibStrings.sol"; import "./ITierProvider.sol"; import "./LibTiers.sol"; diff --git a/packages/protocol/contracts/layer1/token/TaikoToken.sol b/packages/protocol/contracts/layer1/token/TaikoToken.sol index 3804f7714d5..94a126138f2 100644 --- a/packages/protocol/contracts/layer1/token/TaikoToken.sol +++ b/packages/protocol/contracts/layer1/token/TaikoToken.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../shared/token/TaikoTokenBase.sol"; +import "src/shared/token/TaikoTokenBase.sol"; /// @title TaikoToken /// @notice The TaikoToken (TKO), in the protocol is used for prover collateral diff --git a/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol b/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol index b157b6afc6e..68a93df3ecd 100644 --- a/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol @@ -2,8 +2,8 @@ pragma solidity ^0.8.24; import "@risc0/contracts/IRiscZeroVerifier.sol"; -import "../../shared/common/EssentialContract.sol"; -import "../../shared/common/LibStrings.sol"; +import "src/shared/common/EssentialContract.sol"; +import "src/shared/common/LibStrings.sol"; import "../based/ITaikoL1.sol"; import "./LibPublicInput.sol"; import "./IVerifier.sol"; diff --git a/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol b/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol index 185f4a9523e..cd3e62af336 100644 --- a/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/SP1Verifier.sol @@ -2,8 +2,8 @@ pragma solidity ^0.8.24; import "@sp1-contracts/src/ISP1Verifier.sol"; -import "../../shared/common/EssentialContract.sol"; -import "../../shared/common/LibStrings.sol"; +import "src/shared/common/EssentialContract.sol"; +import "src/shared/common/LibStrings.sol"; import "../based/ITaikoL1.sol"; import "./LibPublicInput.sol"; import "./IVerifier.sol"; diff --git a/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol b/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol index d903abf9757..4583f79cc99 100644 --- a/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol @@ -2,8 +2,8 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import "../../shared/common/EssentialContract.sol"; -import "../../shared/common/LibStrings.sol"; +import "src/shared/common/EssentialContract.sol"; +import "src/shared/common/LibStrings.sol"; import "../automata-attestation/interfaces/IAttestation.sol"; import "../automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; import "../based/ITaikoL1.sol"; diff --git a/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol b/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol index d9d59786a50..71fe03d6acc 100644 --- a/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/common/EssentialContract.sol"; -import "../../../shared/common/LibStrings.sol"; +import "src/shared/common/EssentialContract.sol"; +import "src/shared/common/LibStrings.sol"; import "../IVerifier.sol"; /// @title ComposeVerifier diff --git a/packages/protocol/contracts/layer1/verifiers/compose/TeeAnyVerifier.sol b/packages/protocol/contracts/layer1/verifiers/compose/TeeAnyVerifier.sol index 97eaac7e29a..5b22fa94c2e 100644 --- a/packages/protocol/contracts/layer1/verifiers/compose/TeeAnyVerifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/compose/TeeAnyVerifier.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/common/LibStrings.sol"; +import "src/shared/common/LibStrings.sol"; import "./ComposeVerifier.sol"; /// @title TeeAnyVerifier diff --git a/packages/protocol/contracts/layer1/verifiers/compose/ZkAndTeeVerifier.sol b/packages/protocol/contracts/layer1/verifiers/compose/ZkAndTeeVerifier.sol index 51a22785e3c..58293f60c06 100644 --- a/packages/protocol/contracts/layer1/verifiers/compose/ZkAndTeeVerifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/compose/ZkAndTeeVerifier.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/common/LibStrings.sol"; +import "src/shared/common/LibStrings.sol"; import "./ComposeVerifier.sol"; /// @title ZkAndTeeVerifier diff --git a/packages/protocol/contracts/layer1/verifiers/compose/ZkAnyVerifier.sol b/packages/protocol/contracts/layer1/verifiers/compose/ZkAnyVerifier.sol index 261e4d2c2e0..2dd0e5f6a04 100644 --- a/packages/protocol/contracts/layer1/verifiers/compose/ZkAnyVerifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/compose/ZkAnyVerifier.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/common/LibStrings.sol"; +import "src/shared/common/LibStrings.sol"; import "./ComposeVerifier.sol"; /// @title ZkAnyVerifier diff --git a/packages/protocol/contracts/layer2/based/Lib1559Math.sol b/packages/protocol/contracts/layer2/based/Lib1559Math.sol index c0e0116b1e2..44f91ff2484 100644 --- a/packages/protocol/contracts/layer2/based/Lib1559Math.sol +++ b/packages/protocol/contracts/layer2/based/Lib1559Math.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.24; import "@solady/src/utils/FixedPointMathLib.sol"; -import "../../shared/common/LibMath.sol"; +import "src/shared/common/LibMath.sol"; /// @title Lib1559Math /// @notice Implements e^(x) based bonding curve for EIP-1559 diff --git a/packages/protocol/contracts/layer2/based/TaikoL2.sol b/packages/protocol/contracts/layer2/based/TaikoL2.sol index 8740b50a1b5..ff7ba2c657d 100644 --- a/packages/protocol/contracts/layer2/based/TaikoL2.sol +++ b/packages/protocol/contracts/layer2/based/TaikoL2.sol @@ -4,11 +4,11 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "../../shared/data/LibSharedData.sol"; -import "../../shared/common/EssentialContract.sol"; -import "../../shared/common/LibStrings.sol"; -import "../../shared/common/LibAddress.sol"; -import "../../shared/signal/ISignalService.sol"; +import "src/shared/data/LibSharedData.sol"; +import "src/shared/common/EssentialContract.sol"; +import "src/shared/common/LibStrings.sol"; +import "src/shared/common/LibAddress.sol"; +import "src/shared/signal/ISignalService.sol"; import "./Lib1559Math.sol"; import "./LibL2Config.sol"; import "./IBlockHash.sol"; diff --git a/packages/protocol/contracts/layer2/token/BridgedTaikoToken.sol b/packages/protocol/contracts/layer2/token/BridgedTaikoToken.sol index e900bbdb151..0fa1d8a7d23 100644 --- a/packages/protocol/contracts/layer2/token/BridgedTaikoToken.sol +++ b/packages/protocol/contracts/layer2/token/BridgedTaikoToken.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../shared/tokenvault/IBridgedERC20.sol"; -import "../../shared/token/TaikoTokenBase.sol"; +import "src/shared/tokenvault/IBridgedERC20.sol"; +import "src/shared/token/TaikoTokenBase.sol"; /// @title BridgedTaikoToken /// @notice The TaikoToken on L2 to support checkpoints and voting. For testnets, we do not need to diff --git a/packages/protocol/foundry.toml b/packages/protocol/foundry.toml index 144650ef190..7012fe4b58d 100644 --- a/packages/protocol/foundry.toml +++ b/packages/protocol/foundry.toml @@ -19,6 +19,9 @@ remappings = [ "forge-std/=node_modules/forge-std/", "ds-test/=node_modules/ds-test/src/", "@p256-verifier/contracts/=node_modules/p256-verifier/src/", + "src/=contracts/", + "test/=test/", + "script/=script/" ] # Do not change the block_gas_limit value, TaikoL2.t.sol depends on it. diff --git a/packages/protocol/script/layer1/AddSGXVerifierInstances.s.sol b/packages/protocol/script/layer1/AddSGXVerifierInstances.s.sol index 92800f94f64..13179a4cbd8 100644 --- a/packages/protocol/script/layer1/AddSGXVerifierInstances.s.sol +++ b/packages/protocol/script/layer1/AddSGXVerifierInstances.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/layer1/verifiers/SgxVerifier.sol"; +import "test/shared/DeployCapability.sol"; +import "src/layer1/verifiers/SgxVerifier.sol"; contract AddSGXVerifierInstances is DeployCapability { uint256 public privateKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/script/layer1/DeployERC20Airdrop.s.sol b/packages/protocol/script/layer1/DeployERC20Airdrop.s.sol index 939fdfffa38..c726ca9b0dd 100644 --- a/packages/protocol/script/layer1/DeployERC20Airdrop.s.sol +++ b/packages/protocol/script/layer1/DeployERC20Airdrop.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/layer1/team/airdrop/ERC20Airdrop.sol"; +import "test/shared/DeployCapability.sol"; +import "src/layer1/team/airdrop/ERC20Airdrop.sol"; // @KorbinianK , @2manslkh // As written also in the tests the workflow shall be the following (checklist): diff --git a/packages/protocol/script/layer1/DeployLabsProverPool.s.sol b/packages/protocol/script/layer1/DeployLabsProverPool.s.sol index 887bd135b43..a109d51c68d 100644 --- a/packages/protocol/script/layer1/DeployLabsProverPool.s.sol +++ b/packages/protocol/script/layer1/DeployLabsProverPool.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/layer1/provers/ProverSet.sol"; +import "test/shared/DeployCapability.sol"; +import "src/layer1/provers/ProverSet.sol"; contract DeployLabsProverPool is DeployCapability { address public addressManager = 0x579f40D0BE111b823962043702cabe6Aaa290780; diff --git a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol index bc67bd99689..c50953405e8 100644 --- a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol +++ b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol @@ -11,33 +11,33 @@ import { SP1Verifier as SP1Verifier200rc } from "@sp1-contracts/src/v2.0.0/SP1Ve // - https://github.com/rdubois-crypto/FreshCryptoLib import "@p256-verifier/contracts/P256Verifier.sol"; -import "../../contracts/shared/common/LibStrings.sol"; -import "../../contracts/shared/tokenvault/BridgedERC1155.sol"; -import "../../contracts/shared/tokenvault/BridgedERC20.sol"; -import "../../contracts/shared/tokenvault/BridgedERC721.sol"; -import "../../contracts/layer1/automata-attestation/AutomataDcapV3Attestation.sol"; -import "../../contracts/layer1/automata-attestation/lib/PEMCertChainLib.sol"; -import "../../contracts/layer1/automata-attestation/utils/SigVerifyLib.sol"; -import "../../contracts/layer1/devnet/DevnetTaikoL1.sol"; -import "../../contracts/layer1/devnet/DevnetTierProvider.sol"; -import "../../contracts/layer1/mainnet/rollup/MainnetGuardianProver.sol"; -import "../../contracts/layer1/mainnet/rollup/MainnetTaikoL1.sol"; -import "../../contracts/layer1/mainnet/rollup/verifiers/MainnetSgxVerifier.sol"; -import "../../contracts/layer1/mainnet/multirollup/MainnetBridge.sol"; -import "../../contracts/layer1/mainnet/multirollup/MainnetERC1155Vault.sol"; -import "../../contracts/layer1/mainnet/multirollup/MainnetERC20Vault.sol"; -import "../../contracts/layer1/mainnet/multirollup/MainnetERC721Vault.sol"; -import "../../contracts/layer1/mainnet/multirollup/MainnetSignalService.sol"; -import "../../contracts/layer1/provers/GuardianProver.sol"; -import "../../contracts/layer1/provers/ProverSet.sol"; -import "../../contracts/layer1/tiers/TierProviderV2.sol"; -import "../../contracts/layer1/token/TaikoToken.sol"; -import "../../contracts/layer1/verifiers/Risc0Verifier.sol"; -import "../../contracts/layer1/verifiers/SP1Verifier.sol"; -import "../../test/layer1/based/TestTierProvider.sol"; -import "../../test/shared/token/FreeMintERC20.sol"; -import "../../test/shared/token/MayFailFreeMintERC20.sol"; -import "../../test/shared/DeployCapability.sol"; +import "src/shared/common/LibStrings.sol"; +import "src/shared/tokenvault/BridgedERC1155.sol"; +import "src/shared/tokenvault/BridgedERC20.sol"; +import "src/shared/tokenvault/BridgedERC721.sol"; +import "src/layer1/automata-attestation/AutomataDcapV3Attestation.sol"; +import "src/layer1/automata-attestation/lib/PEMCertChainLib.sol"; +import "src/layer1/automata-attestation/utils/SigVerifyLib.sol"; +import "src/layer1/devnet/DevnetTaikoL1.sol"; +import "src/layer1/devnet/DevnetTierProvider.sol"; +import "src/layer1/mainnet/rollup/MainnetGuardianProver.sol"; +import "src/layer1/mainnet/rollup/MainnetTaikoL1.sol"; +import "src/layer1/mainnet/rollup/verifiers/MainnetSgxVerifier.sol"; +import "src/layer1/mainnet/multirollup/MainnetBridge.sol"; +import "src/layer1/mainnet/multirollup/MainnetERC1155Vault.sol"; +import "src/layer1/mainnet/multirollup/MainnetERC20Vault.sol"; +import "src/layer1/mainnet/multirollup/MainnetERC721Vault.sol"; +import "src/layer1/mainnet/multirollup/MainnetSignalService.sol"; +import "src/layer1/provers/GuardianProver.sol"; +import "src/layer1/provers/ProverSet.sol"; +import "src/layer1/tiers/TierProviderV2.sol"; +import "src/layer1/token/TaikoToken.sol"; +import "src/layer1/verifiers/Risc0Verifier.sol"; +import "src/layer1/verifiers/SP1Verifier.sol"; +import "test/layer1/based/TestTierProvider.sol"; +import "test/shared/token/FreeMintERC20.sol"; +import "test/shared/token/MayFailFreeMintERC20.sol"; +import "test/shared/DeployCapability.sol"; /// @title DeployProtocolOnL1 /// @notice This script deploys the core Taiko protocol smart contract on L1, diff --git a/packages/protocol/script/layer1/DeployProverSet.s.sol b/packages/protocol/script/layer1/DeployProverSet.s.sol index eb874c2ba70..924b1d5e590 100644 --- a/packages/protocol/script/layer1/DeployProverSet.s.sol +++ b/packages/protocol/script/layer1/DeployProverSet.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../contracts/layer1/provers/ProverSet.sol"; -import "../../test/shared/DeployCapability.sol"; +import "src/layer1/provers/ProverSet.sol"; +import "test/shared/DeployCapability.sol"; contract DeployProverSet is DeployCapability { modifier broadcast() { diff --git a/packages/protocol/script/layer1/DeployQuotaManager.s.sol b/packages/protocol/script/layer1/DeployQuotaManager.s.sol index d3d2f8122ae..77d7d1fefcc 100644 --- a/packages/protocol/script/layer1/DeployQuotaManager.s.sol +++ b/packages/protocol/script/layer1/DeployQuotaManager.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/shared/bridge/QuotaManager.sol"; +import "test/shared/DeployCapability.sol"; +import "src/shared/bridge/QuotaManager.sol"; contract DeployQuotaManager is DeployCapability { uint256 public privateKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/script/layer1/DeployRisc0Verifier.s.sol b/packages/protocol/script/layer1/DeployRisc0Verifier.s.sol index 76dc325a720..353a5557f33 100644 --- a/packages/protocol/script/layer1/DeployRisc0Verifier.s.sol +++ b/packages/protocol/script/layer1/DeployRisc0Verifier.s.sol @@ -2,8 +2,8 @@ pragma solidity ^0.8.24; import "@risc0/contracts/groth16/RiscZeroGroth16Verifier.sol"; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/layer1/verifiers/Risc0Verifier.sol"; +import "test/shared/DeployCapability.sol"; +import "src/layer1/verifiers/Risc0Verifier.sol"; contract DeployRisc0Verifier is DeployCapability { uint256 public deployerPrivKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/script/layer1/DeploySP1Verifier.s.sol b/packages/protocol/script/layer1/DeploySP1Verifier.s.sol index 9e56421e6f9..bc504254a34 100644 --- a/packages/protocol/script/layer1/DeploySP1Verifier.s.sol +++ b/packages/protocol/script/layer1/DeploySP1Verifier.s.sol @@ -2,8 +2,8 @@ pragma solidity ^0.8.24; import { SP1Verifier as SP1Verifier200rc } from "@sp1-contracts/src/v2.0.0/SP1VerifierPlonk.sol"; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/layer1/verifiers/SP1Verifier.sol"; +import "test/shared/DeployCapability.sol"; +import "src/layer1/verifiers/SP1Verifier.sol"; contract DeploySP1Verifier is DeployCapability { uint256 public deployerPrivKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/script/layer1/DeployTaikoToken.s.sol b/packages/protocol/script/layer1/DeployTaikoToken.s.sol index fafcebd8cc9..9684aea4870 100644 --- a/packages/protocol/script/layer1/DeployTaikoToken.s.sol +++ b/packages/protocol/script/layer1/DeployTaikoToken.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/layer1/token/TaikoToken.sol"; +import "test/shared/DeployCapability.sol"; +import "src/layer1/token/TaikoToken.sol"; contract DeployTaikoToken is DeployCapability { uint256 public privateKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol b/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol index f202a1bd864..c5989001fee 100644 --- a/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol +++ b/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol @@ -2,9 +2,9 @@ pragma solidity ^0.8.24; import "forge-std/src/Script.sol"; -import "../../contracts/shared/bridge/IBridge.sol"; -import "../../contracts/layer2/DelegateOwner.sol"; -import "../../test/shared/thirdparty/Multicall3.sol"; +import "src/shared/bridge/IBridge.sol"; +import "src/layer2/DelegateOwner.sol"; +import "test/shared/thirdparty/Multicall3.sol"; contract SendMessageToDelegateOwner is Script { address public delegateOwner = 0x5995941Df88F30Ac140515AA39832db963E2f863; diff --git a/packages/protocol/script/layer1/SetDcapParams.s.sol b/packages/protocol/script/layer1/SetDcapParams.s.sol index 411c322e522..9a38c703ce0 100644 --- a/packages/protocol/script/layer1/SetDcapParams.s.sol +++ b/packages/protocol/script/layer1/SetDcapParams.s.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.24; import "forge-std/src/Script.sol"; import "forge-std/src/console2.sol"; -import "../../test/layer1/automata-attestation/common/AttestationBase.t.sol"; +import "test/layer1/automata-attestation/common/AttestationBase.t.sol"; contract SetDcapParams is Script, AttestationBase { uint256 public ownerPrivateKey = vm.envUint("PRIVATE_KEY"); // Owner of the attestation contract diff --git a/packages/protocol/script/layer1/UpgradeHeklaOntakeL1.s.sol b/packages/protocol/script/layer1/UpgradeHeklaOntakeL1.s.sol index 657c2a48c42..4dc0498eeda 100644 --- a/packages/protocol/script/layer1/UpgradeHeklaOntakeL1.s.sol +++ b/packages/protocol/script/layer1/UpgradeHeklaOntakeL1.s.sol @@ -2,12 +2,12 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol"; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/layer1/hekla/HeklaTaikoL1.sol"; -import "../../contracts/shared/bridge/Bridge.sol"; -import "../../contracts/shared/common/AddressManager.sol"; -import "../../contracts/layer1/provers/ProverSet.sol"; -import "../../contracts/layer1/provers/GuardianProver.sol"; +import "test/shared/DeployCapability.sol"; +import "src/layer1/hekla/HeklaTaikoL1.sol"; +import "src/shared/bridge/Bridge.sol"; +import "src/shared/common/AddressManager.sol"; +import "src/layer1/provers/ProverSet.sol"; +import "src/layer1/provers/GuardianProver.sol"; contract UpgradeHeklaOntakeL1 is DeployCapability { uint256 public privateKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/script/layer1/UpgradeHeklaOntakeL2.s.sol b/packages/protocol/script/layer1/UpgradeHeklaOntakeL2.s.sol index 030bf7d8216..0c665b0fb9f 100644 --- a/packages/protocol/script/layer1/UpgradeHeklaOntakeL2.s.sol +++ b/packages/protocol/script/layer1/UpgradeHeklaOntakeL2.s.sol @@ -2,12 +2,12 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol"; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/layer2/hekla/HeklaTaikoL2.sol"; -import "../../contracts/shared/bridge/Bridge.sol"; -import "../../contracts/shared/common/AddressManager.sol"; -import "../../test/shared/thirdparty/Multicall3.sol"; -import "../../contracts/layer2/DelegateOwner.sol"; +import "test/shared/DeployCapability.sol"; +import "src/layer2/hekla/HeklaTaikoL2.sol"; +import "src/shared/bridge/Bridge.sol"; +import "src/shared/common/AddressManager.sol"; +import "test/shared/thirdparty/Multicall3.sol"; +import "src/layer2/DelegateOwner.sol"; contract UpgradeHeklaOntakeL2 is DeployCapability { address public delegateOwner = 0x95F6077C7786a58FA070D98043b16DF2B1593D2b; diff --git a/packages/protocol/script/layer1/tokenunlock/Deploy.s.sol b/packages/protocol/script/layer1/tokenunlock/Deploy.s.sol index 2b13bec09dc..c94fc0fe490 100644 --- a/packages/protocol/script/layer1/tokenunlock/Deploy.s.sol +++ b/packages/protocol/script/layer1/tokenunlock/Deploy.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../test/shared/DeployCapability.sol"; -import "../../../contracts/layer1/team/tokenunlock/TokenUnlock.sol"; +import "src/layer1/team/tokenunlock/TokenUnlock.sol"; +import "test/shared/DeployCapability.sol"; contract DeployTokenUnlock is DeployCapability { using stdJson for string; diff --git a/packages/protocol/script/layer1/tokenunlock/Vest.s.sol b/packages/protocol/script/layer1/tokenunlock/Vest.s.sol index 9b7a7285a01..1f421602d33 100644 --- a/packages/protocol/script/layer1/tokenunlock/Vest.s.sol +++ b/packages/protocol/script/layer1/tokenunlock/Vest.s.sol @@ -5,7 +5,7 @@ import "forge-std/src/Script.sol"; import "forge-std/src/console2.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "../../../contracts/layer1/team/tokenunlock/TokenUnlock.sol"; +import "src/layer1/team/tokenunlock/TokenUnlock.sol"; contract VestTokenUnlock is Script { using stdJson for string; diff --git a/packages/protocol/script/layer2/DeployDelegateOwner.s.sol b/packages/protocol/script/layer2/DeployDelegateOwner.s.sol index ad07e0970b4..79da323364c 100644 --- a/packages/protocol/script/layer2/DeployDelegateOwner.s.sol +++ b/packages/protocol/script/layer2/DeployDelegateOwner.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/layer2/DelegateOwner.sol"; +import "test/shared/DeployCapability.sol"; +import "src/layer2/DelegateOwner.sol"; // forge script --rpc-url https://rpc.mainnet.taiko.xyz script/DeployDelegateOwner.s.sol contract DeployDelegateOwner is DeployCapability { diff --git a/packages/protocol/script/layer2/PostGenesisConfig.s.sol b/packages/protocol/script/layer2/PostGenesisConfig.s.sol index 1c59866f9fd..28254de3ef7 100644 --- a/packages/protocol/script/layer2/PostGenesisConfig.s.sol +++ b/packages/protocol/script/layer2/PostGenesisConfig.s.sol @@ -4,9 +4,9 @@ pragma solidity ^0.8.24; import "forge-std/src/Script.sol"; import "forge-std/src/console2.sol"; -import "../../contracts/shared/tokenvault/ERC20Vault.sol"; -import "../../contracts/shared/bridge/Bridge.sol"; -import "../../contracts/shared/common/AddressManager.sol"; +import "src/shared/tokenvault/ERC20Vault.sol"; +import "src/shared/bridge/Bridge.sol"; +import "src/shared/common/AddressManager.sol"; interface USDCProxy { function configureMinter(address minter, uint256 minterAllowedAmount) external; diff --git a/packages/protocol/script/layer2/PostGenesisQuery.s.sol b/packages/protocol/script/layer2/PostGenesisQuery.s.sol index 7c8882f9edc..906e0961dff 100644 --- a/packages/protocol/script/layer2/PostGenesisQuery.s.sol +++ b/packages/protocol/script/layer2/PostGenesisQuery.s.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/shared/common/AddressManager.sol"; -import "../../contracts/shared/bridge/Bridge.sol"; +import "test/shared/DeployCapability.sol"; +import "src/shared/common/AddressManager.sol"; +import "src/shared/bridge/Bridge.sol"; // Run with: // forge script --rpc-url https://rpc.mainnet.taiko.xyz script/PostGenesisQuery.s.sol diff --git a/packages/protocol/script/shared/AuthorizeTaikoForMultihop.s.sol b/packages/protocol/script/shared/AuthorizeTaikoForMultihop.s.sol index db7b01f4274..ffb76b79516 100644 --- a/packages/protocol/script/shared/AuthorizeTaikoForMultihop.s.sol +++ b/packages/protocol/script/shared/AuthorizeTaikoForMultihop.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../test/shared/DeployCapability.sol"; -import "../../contracts/shared/signal/SignalService.sol"; +import "test/shared/DeployCapability.sol"; +import "src/shared/signal/SignalService.sol"; contract AuthorizeTaikoForMultihop is DeployCapability { uint256 public privateKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/script/shared/SetAddress.s.sol b/packages/protocol/script/shared/SetAddress.s.sol index 422b061f49f..701fc32d9aa 100644 --- a/packages/protocol/script/shared/SetAddress.s.sol +++ b/packages/protocol/script/shared/SetAddress.s.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.24; import "forge-std/src/Script.sol"; import "forge-std/src/console2.sol"; -import "../../contracts/shared/common/AddressManager.sol"; +import "src/shared/common/AddressManager.sol"; contract SetAddress is Script { uint256 public adminPrivateKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/script/shared/SetRemoteBridgeSuites.s.sol b/packages/protocol/script/shared/SetRemoteBridgeSuites.s.sol index 5240e503602..91734516a9d 100644 --- a/packages/protocol/script/shared/SetRemoteBridgeSuites.s.sol +++ b/packages/protocol/script/shared/SetRemoteBridgeSuites.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../test/shared/DeployCapability.sol"; +import "test/shared/DeployCapability.sol"; contract SetRemoteBridgeSuites is DeployCapability { uint256 public privateKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/test/genesis/GenerateGenesis.g.sol b/packages/protocol/test/genesis/GenerateGenesis.g.sol index 4140409b79d..78da0cd79fc 100644 --- a/packages/protocol/test/genesis/GenerateGenesis.g.sol +++ b/packages/protocol/test/genesis/GenerateGenesis.g.sol @@ -4,13 +4,13 @@ pragma solidity ^0.8.24; import "forge-std/src/console2.sol"; import "forge-std/src/StdJson.sol"; import "forge-std/src/Test.sol"; -import "../../contracts/shared/common/AddressManager.sol"; -import "../../contracts/shared/bridge/Bridge.sol"; -import "../../contracts/shared/tokenvault/ERC1155Vault.sol"; -import "../../contracts/shared/tokenvault/ERC20Vault.sol"; -import "../../contracts/shared/tokenvault/ERC721Vault.sol"; -import "../../contracts/shared/signal/SignalService.sol"; -import "../../contracts/layer2/based/TaikoL2.sol"; +import "src/shared/common/AddressManager.sol"; +import "src/shared/bridge/Bridge.sol"; +import "src/shared/tokenvault/ERC1155Vault.sol"; +import "src/shared/tokenvault/ERC20Vault.sol"; +import "src/shared/tokenvault/ERC721Vault.sol"; +import "src/shared/signal/SignalService.sol"; +import "src/layer2/based/TaikoL2.sol"; import "../shared/token/RegularERC20.sol"; contract TestGenerateGenesis is Test, AddressResolver { diff --git a/packages/protocol/test/layer1/TaikoL1Test.sol b/packages/protocol/test/layer1/TaikoL1Test.sol index d83f508cf0e..5f660fee478 100644 --- a/packages/protocol/test/layer1/TaikoL1Test.sol +++ b/packages/protocol/test/layer1/TaikoL1Test.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../contracts/layer1/based/TaikoL1.sol"; -import "../../contracts/layer1/token/TaikoToken.sol"; -import "../../contracts/layer1/verifiers/SgxVerifier.sol"; -import "../../contracts/layer1/verifiers/SP1Verifier.sol"; -import "../../contracts/layer1/verifiers/Risc0Verifier.sol"; -import "../../contracts/layer1/provers/GuardianProver.sol"; -import "../../contracts/layer1/team/airdrop/ERC20Airdrop.sol"; -import "../../contracts/shared/bridge/QuotaManager.sol"; +import "src/layer1/based/TaikoL1.sol"; +import "src/layer1/token/TaikoToken.sol"; +import "src/layer1/verifiers/SgxVerifier.sol"; +import "src/layer1/verifiers/SP1Verifier.sol"; +import "src/layer1/verifiers/Risc0Verifier.sol"; +import "src/layer1/provers/GuardianProver.sol"; +import "src/layer1/team/airdrop/ERC20Airdrop.sol"; +import "src/shared/bridge/QuotaManager.sol"; import "../layer1/based/TestTierProvider.sol"; import "../shared/TaikoTest.sol"; diff --git a/packages/protocol/test/layer1/automata-attestation/common/AttestationBase.t.sol b/packages/protocol/test/layer1/automata-attestation/common/AttestationBase.t.sol index f517f7bb06a..cd641b3c919 100644 --- a/packages/protocol/test/layer1/automata-attestation/common/AttestationBase.t.sol +++ b/packages/protocol/test/layer1/automata-attestation/common/AttestationBase.t.sol @@ -9,16 +9,13 @@ import "@optimism/packages/contracts-bedrock/src/libraries/Bytes.sol"; import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import { P256Verifier } from "@p256-verifier/contracts/P256Verifier.sol"; -import "../../../../contracts/layer1/verifiers/SgxVerifier.sol"; +import "src/layer1/verifiers/SgxVerifier.sol"; import { AutomataDcapV3Attestation } from - "../../../../contracts/layer1/automata-attestation/AutomataDcapV3Attestation.sol"; -import { SigVerifyLib } from - "../../../../contracts/layer1/automata-attestation/utils/SigVerifyLib.sol"; -import { PEMCertChainLib } from - "../../../../contracts/layer1/automata-attestation/lib/PEMCertChainLib.sol"; -import { V3Struct } from - "../../../../contracts/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; -import { BytesUtils } from "../../../../contracts/layer1/automata-attestation/utils/BytesUtils.sol"; + "src/layer1/automata-attestation/AutomataDcapV3Attestation.sol"; +import { SigVerifyLib } from "src/layer1/automata-attestation/utils/SigVerifyLib.sol"; +import { PEMCertChainLib } from "src/layer1/automata-attestation/lib/PEMCertChainLib.sol"; +import { V3Struct } from "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; +import { BytesUtils } from "src/layer1/automata-attestation/utils/BytesUtils.sol"; import { Base64 } from "solady/src/utils/Base64.sol"; import "../utils/DcapTestUtils.t.sol"; import "../utils/V3QuoteParseUtils.t.sol"; diff --git a/packages/protocol/test/layer1/automata-attestation/utils/DcapTestUtils.t.sol b/packages/protocol/test/layer1/automata-attestation/utils/DcapTestUtils.t.sol index 7ffcf221617..c4afdd57283 100644 --- a/packages/protocol/test/layer1/automata-attestation/utils/DcapTestUtils.t.sol +++ b/packages/protocol/test/layer1/automata-attestation/utils/DcapTestUtils.t.sol @@ -1,12 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { TCBInfoStruct } from - "../../../../contracts/layer1/automata-attestation/lib/TCBInfoStruct.sol"; -import { EnclaveIdStruct } from - "../../../../contracts/layer1/automata-attestation/lib/EnclaveIdStruct.sol"; -import { V3Struct } from - "../../../../contracts/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; +import { TCBInfoStruct } from "src/layer1/automata-attestation/lib/TCBInfoStruct.sol"; +import { EnclaveIdStruct } from "src/layer1/automata-attestation/lib/EnclaveIdStruct.sol"; +import { V3Struct } from "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; import { JSONParserLib } from "solady/src/utils/JSONParserLib.sol"; import { LibString } from "solady/src/utils/LibString.sol"; diff --git a/packages/protocol/test/layer1/automata-attestation/utils/V3QuoteParseUtils.t.sol b/packages/protocol/test/layer1/automata-attestation/utils/V3QuoteParseUtils.t.sol index f27862eef7b..ed09df809c6 100644 --- a/packages/protocol/test/layer1/automata-attestation/utils/V3QuoteParseUtils.t.sol +++ b/packages/protocol/test/layer1/automata-attestation/utils/V3QuoteParseUtils.t.sol @@ -1,14 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { V3Struct } from - "../../../../contracts/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; -import { V3Parser } from - "../../../../contracts/layer1/automata-attestation/lib/QuoteV3Auth/V3Parser.sol"; +import { V3Struct } from "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; +import { V3Parser } from "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Parser.sol"; import { IPEMCertChainLib } from - "../../../../contracts/layer1/automata-attestation/lib/interfaces/IPEMCertChainLib.sol"; -import { PEMCertChainLib } from - "../../../../contracts/layer1/automata-attestation/lib/PEMCertChainLib.sol"; + "src/layer1/automata-attestation/lib/interfaces/IPEMCertChainLib.sol"; +import { PEMCertChainLib } from "src/layer1/automata-attestation/lib/PEMCertChainLib.sol"; import { Base64 } from "solady/src/utils/Base64.sol"; import { JSONParserLib } from "solady/src/utils/JSONParserLib.sol"; import { LibString } from "solady/src/utils/LibString.sol"; diff --git a/packages/protocol/test/layer1/based/GuardianProver1.t.sol b/packages/protocol/test/layer1/based/GuardianProver1.t.sol index 3f8a7705e22..0400cafd3eb 100644 --- a/packages/protocol/test/layer1/based/GuardianProver1.t.sol +++ b/packages/protocol/test/layer1/based/GuardianProver1.t.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../contracts/layer1/provers/GuardianProver.sol"; -import "../../shared/TaikoTest.sol"; +import "src/layer1/provers/GuardianProver.sol"; +import "test/shared/TaikoTest.sol"; contract DummyGuardianProver is GuardianProver { uint256 public operationId; diff --git a/packages/protocol/test/layer1/based/GuardianProver2.t.sol b/packages/protocol/test/layer1/based/GuardianProver2.t.sol index 3fe8ee23cd3..2cc6df5a115 100644 --- a/packages/protocol/test/layer1/based/GuardianProver2.t.sol +++ b/packages/protocol/test/layer1/based/GuardianProver2.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../contracts/layer1/provers/GuardianProver.sol"; +import "src/layer1/provers/GuardianProver.sol"; import "./TaikoL1TestBase.sol"; /// @author Kirk Baird diff --git a/packages/protocol/test/layer1/based/TestTierProvider.sol b/packages/protocol/test/layer1/based/TestTierProvider.sol index 4832486357e..09beb43d033 100644 --- a/packages/protocol/test/layer1/based/TestTierProvider.sol +++ b/packages/protocol/test/layer1/based/TestTierProvider.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../contracts/shared/common/LibStrings.sol"; -import "../../../contracts/layer1/tiers/ITierProvider.sol"; -import "../../../contracts/layer1/tiers/LibTiers.sol"; -import "../../../contracts/layer1/tiers/ITierRouter.sol"; +import "src/shared/common/LibStrings.sol"; +import "src/layer1/tiers/ITierProvider.sol"; +import "src/layer1/tiers/LibTiers.sol"; +import "src/layer1/tiers/ITierRouter.sol"; /// @title TestTierProvider /// @dev Labeled in AddressResolver as "tier_router" diff --git a/packages/protocol/test/layer1/team/tokenunlock/TokenUnlock.t.sol b/packages/protocol/test/layer1/team/tokenunlock/TokenUnlock.t.sol index d0d22b9a1e0..be96bb0a957 100644 --- a/packages/protocol/test/layer1/team/tokenunlock/TokenUnlock.t.sol +++ b/packages/protocol/test/layer1/team/tokenunlock/TokenUnlock.t.sol @@ -2,8 +2,8 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol"; -import "../../../shared/TaikoTest.sol"; -import "../../../../contracts/layer1/team/tokenunlock/TokenUnlock.sol"; +import "src/layer1/team/tokenunlock/TokenUnlock.sol"; +import "test/shared/TaikoTest.sol"; contract MyERC20 is ERC20, ERC20Votes { constructor(address owner) ERC20("Taiko Token", "TKO") ERC20Permit("Taiko Token") { diff --git a/packages/protocol/test/layer1/verifiers/compose/ComposeVerifeir.t.sol b/packages/protocol/test/layer1/verifiers/compose/ComposeVerifeir.t.sol index d6e6ff554ba..6a738475495 100644 --- a/packages/protocol/test/layer1/verifiers/compose/ComposeVerifeir.t.sol +++ b/packages/protocol/test/layer1/verifiers/compose/ComposeVerifeir.t.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../shared/TaikoTest.sol"; -import "../../../../contracts/layer1/verifiers/compose/ComposeVerifier.sol"; +import "src/layer1/verifiers/compose/ComposeVerifier.sol"; +import "test/shared/TaikoTest.sol"; contract ComposeVerifierForTest is ComposeVerifier { uint256 private threshold; diff --git a/packages/protocol/test/layer2/TaikoL2EIP1559Configurable.sol b/packages/protocol/test/layer2/TaikoL2EIP1559Configurable.sol index 85c3c8450cd..3e6ce9fb20a 100644 --- a/packages/protocol/test/layer2/TaikoL2EIP1559Configurable.sol +++ b/packages/protocol/test/layer2/TaikoL2EIP1559Configurable.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../contracts/layer2/based/TaikoL2.sol"; +import "src/layer2/based/TaikoL2.sol"; /// @title TaikoL2EIP1559Configurable /// @notice TaikoL2 with a setter to change EIP-1559 configurations and states. diff --git a/packages/protocol/test/layer2/TaikoL2Test.sol b/packages/protocol/test/layer2/TaikoL2Test.sol index ad9eeb0e61a..21602e5f721 100644 --- a/packages/protocol/test/layer2/TaikoL2Test.sol +++ b/packages/protocol/test/layer2/TaikoL2Test.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../contracts/layer2/DelegateOwner.sol"; +import "src/layer2/DelegateOwner.sol"; import "../layer2/TaikoL2EIP1559Configurable.sol"; import "../layer2/LibL2Signer.sol"; import "../shared/TaikoTest.sol"; diff --git a/packages/protocol/test/shared/DeployCapability.sol b/packages/protocol/test/shared/DeployCapability.sol index aa54d9e0774..fd2a8681bcd 100644 --- a/packages/protocol/test/shared/DeployCapability.sol +++ b/packages/protocol/test/shared/DeployCapability.sol @@ -8,7 +8,7 @@ import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "forge-std/src/console2.sol"; import "forge-std/src/Script.sol"; -import "../../contracts/shared/common/AddressManager.sol"; +import "src/shared/common/AddressManager.sol"; /// @title DeployCapability abstract contract DeployCapability is Script { diff --git a/packages/protocol/test/shared/HelperContracts.sol b/packages/protocol/test/shared/HelperContracts.sol index 15b4444dffb..769b7a5fed0 100644 --- a/packages/protocol/test/shared/HelperContracts.sol +++ b/packages/protocol/test/shared/HelperContracts.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../contracts/shared/bridge/Bridge.sol"; -import "../../contracts/shared/signal/SignalService.sol"; +import "src/shared/bridge/Bridge.sol"; +import "src/shared/signal/SignalService.sol"; contract BadReceiver { receive() external payable { diff --git a/packages/protocol/test/shared/TaikoTest.sol b/packages/protocol/test/shared/TaikoTest.sol index ce24659cd01..a71bb75ae8f 100644 --- a/packages/protocol/test/shared/TaikoTest.sol +++ b/packages/protocol/test/shared/TaikoTest.sol @@ -6,12 +6,12 @@ import "forge-std/src/Test.sol"; import "@openzeppelin/contracts/utils/math/SafeCast.sol"; import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; -import "../../contracts/shared/tokenvault/BridgedERC20V2.sol"; -import "../../contracts/shared/tokenvault/BridgedERC721.sol"; -import "../../contracts/shared/tokenvault/BridgedERC1155.sol"; -import "../../contracts/shared/tokenvault/ERC20Vault.sol"; -import "../../contracts/shared/tokenvault/ERC721Vault.sol"; -import "../../contracts/shared/tokenvault/ERC1155Vault.sol"; +import "src/shared/tokenvault/BridgedERC20V2.sol"; +import "src/shared/tokenvault/BridgedERC721.sol"; +import "src/shared/tokenvault/BridgedERC1155.sol"; +import "src/shared/tokenvault/ERC20Vault.sol"; +import "src/shared/tokenvault/ERC721Vault.sol"; +import "src/shared/tokenvault/ERC1155Vault.sol"; import "./token/FreeMintERC20.sol"; import "./token/RegularERC20.sol"; import "./token/MayFailFreeMintERC20.sol"; diff --git a/packages/protocol/test/shared/common/LibAddress.t.sol b/packages/protocol/test/shared/common/LibAddress.t.sol index ce6b29a5eac..b575c56e171 100644 --- a/packages/protocol/test/shared/common/LibAddress.t.sol +++ b/packages/protocol/test/shared/common/LibAddress.t.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.24; import "../TaikoTest.sol"; -import "../../../contracts/shared/common/LibAddress.sol"; +import "src/shared/common/LibAddress.sol"; contract CalldataReceiver { // Returns success diff --git a/packages/protocol/test/shared/common/LibTrieProof.t.sol b/packages/protocol/test/shared/common/LibTrieProof.t.sol index 42f2820d86f..08f5d59c309 100644 --- a/packages/protocol/test/shared/common/LibTrieProof.t.sol +++ b/packages/protocol/test/shared/common/LibTrieProof.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "../../../contracts/shared/common/LibTrieProof.sol"; +import "src/shared/common/LibTrieProof.sol"; import "../TaikoTest.sol"; contract TestLibTrieProof is TaikoTest { From 7129702e5da9ff7023d4567412ae9c4fe6489602 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 9 Oct 2024 16:26:54 +0800 Subject: [PATCH 045/205] chore(repo): remove Merge Gatekeeper (#18219) --- .github/workflows/repo--merge-gatekeeper.yml | 21 -------------------- 1 file changed, 21 deletions(-) delete mode 100644 .github/workflows/repo--merge-gatekeeper.yml diff --git a/.github/workflows/repo--merge-gatekeeper.yml b/.github/workflows/repo--merge-gatekeeper.yml deleted file mode 100644 index 08db85e59a6..00000000000 --- a/.github/workflows/repo--merge-gatekeeper.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Merge Gatekeeper - -on: - pull_request: - branches: - - main - merge_group: # Trigger in merge queue to pass the required status check - -jobs: - merge-gatekeeper: - if: github.event_name == 'pull_request' - runs-on: [arc-runner-set] - permissions: - checks: read - statuses: read - steps: - - name: Run Merge Gatekeeper - uses: upsidr/merge-gatekeeper@v1 - with: - timeout: 1200 - token: ${{ secrets.GITHUB_TOKEN }} From 543385a499dde1ccf1ef889679d3f20c86b6f873 Mon Sep 17 00:00:00 2001 From: Bernat Canal Garceran Date: Thu, 10 Oct 2024 17:32:35 +0200 Subject: [PATCH 046/205] feat(nfts): tbz s1 claim production deployments (#18224) Co-authored-by: Korbinian --- .../trailblazers-airdrop/ERC20Airdrop.sol | 10 +++++++++- .../trailblazers-airdrop/MerkleClaimable.sol | 9 +++++++++ .../deployments/trailblazers-airdrop/hekla.json | 4 ++-- .../deployments/trailblazers-airdrop/mainnet.json | 4 ++++ packages/nfts/package.json | 3 ++- .../nfts/script/trailblazers-airdrop/Deploy.s.sol | 14 +++++++------- .../test/trailblazers-airdrop/ERC20Airdrop.t.sol | 12 +++++++++++- 7 files changed, 44 insertions(+), 12 deletions(-) diff --git a/packages/nfts/contracts/trailblazers-airdrop/ERC20Airdrop.sol b/packages/nfts/contracts/trailblazers-airdrop/ERC20Airdrop.sol index 831abfad59a..0f25d27945e 100644 --- a/packages/nfts/contracts/trailblazers-airdrop/ERC20Airdrop.sol +++ b/packages/nfts/contracts/trailblazers-airdrop/ERC20Airdrop.sol @@ -24,8 +24,8 @@ contract ERC20Airdrop is MerkleClaimable, ReentrancyGuardUpgradeable, PausableUp /// @notice Event emitted when the blacklist is updated. event BlacklistUpdated(address _blacklist); - /// @notice Errors + /// @notice Errors error ADDRESS_BLACKLISTED(); uint256[48] private __gap; @@ -94,6 +94,14 @@ contract ERC20Airdrop is MerkleClaimable, ReentrancyGuardUpgradeable, PausableUp _token.transfer(owner(), _token.balanceOf(address(this))); } + /// @notice Update blacklist contract + /// @param _blacklist The new blacklist contract address + /// @dev Only the owner can execute this function + function updateBlacklist(address _blacklist) external onlyOwner { + blacklist = IMinimalBlacklist(_blacklist); + emit BlacklistUpdated(_blacklist); + } + /// @notice Internal method to authorize an upgrade function _authorizeUpgrade(address) internal virtual override onlyOwner { } } diff --git a/packages/nfts/contracts/trailblazers-airdrop/MerkleClaimable.sol b/packages/nfts/contracts/trailblazers-airdrop/MerkleClaimable.sol index 3396bf998c0..149bb99493e 100644 --- a/packages/nfts/contracts/trailblazers-airdrop/MerkleClaimable.sol +++ b/packages/nfts/contracts/trailblazers-airdrop/MerkleClaimable.sol @@ -133,6 +133,15 @@ abstract contract MerkleClaimable is emit ConfigChanged(_claimStart, _claimEnd, _merkleRoot); } + /// @notice Check if a claim has been made + /// @param user Address of the user + /// @param amount Amount of tokens claimed + /// @return Whether the claim has been made + function hasClaimed(address user, uint256 amount) external view returns (bool) { + bytes32 hash = keccak256(abi.encode("CLAIM_TAIKO_AIRDROP", (abi.encode(user, amount)))); + return isClaimed[hash]; + } + /// @notice Internal method to authorize an upgrade function _authorizeUpgrade(address) internal virtual override onlyOwner { } } diff --git a/packages/nfts/deployments/trailblazers-airdrop/hekla.json b/packages/nfts/deployments/trailblazers-airdrop/hekla.json index b0417106a8b..5c8dd9aabf2 100644 --- a/packages/nfts/deployments/trailblazers-airdrop/hekla.json +++ b/packages/nfts/deployments/trailblazers-airdrop/hekla.json @@ -1,4 +1,4 @@ { - "ERC20Airdrop": "0x42DB7bE491a8933FaADbca4891dA2632D45e5CfC", - "MerkleRoot": "0xea5b2299e76b4860965e9059388d021145269c96b816b07a808ff391cd80753e" + "ERC20Airdrop": "0xdeC2662Dff4eAB8b94B5257D637204d18D95cb74", + "MerkleRoot": "0xbe8ec647626f95185f551887b3eee43ea9e8965c7baf558a9f8cb22b020597f0" } diff --git a/packages/nfts/deployments/trailblazers-airdrop/mainnet.json b/packages/nfts/deployments/trailblazers-airdrop/mainnet.json index e69de29bb2d..289f920f46b 100644 --- a/packages/nfts/deployments/trailblazers-airdrop/mainnet.json +++ b/packages/nfts/deployments/trailblazers-airdrop/mainnet.json @@ -0,0 +1,4 @@ +{ + "ERC20Airdrop": "0x290265ACd21816EE414E64eEC77dd490d8dd9f51", + "MerkleRoot": "0xc7f7e6bb3d1bb31b0ef5e2e34383c12ec9ef8a301ffde9771bd9de7554c70b1d" +} diff --git a/packages/nfts/package.json b/packages/nfts/package.json index e0feeef6245..20e26b85176 100644 --- a/packages/nfts/package.json +++ b/packages/nfts/package.json @@ -34,7 +34,8 @@ "kbw:upgradeV2:mainnet": "forge clean && pnpm compile && forge script script/party-ticket/sol/UpgradeV2.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast", "pfp:deploy:hekla": "forge clean && pnpm compile && forge script script/profile/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", "pfp:deploy:mainnet": "forge clean && pnpm compile && forge script script/profile/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 200", - "tbz:airdrop:hekla": "forge clean && pnpm compile && forge script script/trailblazers-airdrop/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200" + "tbz:airdrop:hekla": "forge clean && pnpm compile && forge script script/trailblazers-airdrop/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "tbz:airdrop:mainnet": "forge clean && pnpm compile && forge script script/trailblazers-airdrop/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100" }, "devDependencies": { "@types/node": "^20.11.30", diff --git a/packages/nfts/script/trailblazers-airdrop/Deploy.s.sol b/packages/nfts/script/trailblazers-airdrop/Deploy.s.sol index 663ef57e3df..f291a8c3deb 100644 --- a/packages/nfts/script/trailblazers-airdrop/Deploy.s.sol +++ b/packages/nfts/script/trailblazers-airdrop/Deploy.s.sol @@ -19,22 +19,21 @@ contract DeployScript is Script { address public deployerAddress; // only used for production - IMinimalBlacklist blacklist = IMinimalBlacklist(0xe61E9034b5633977eC98E302b33e321e8140F105); + IMinimalBlacklist blacklist = IMinimalBlacklist(0xfA5EA6f9A13532cd64e805996a941F101CCaAc9a); ERC20Airdrop public airdrop; uint256 constant TOTAL_AVAILABLE_FUNDS = 1000 ether; - uint256 constant CLAIM_AMOUNT = 10 ether; - // hekla test root - bytes32 public merkleRoot = 0xea5b2299e76b4860965e9059388d021145269c96b816b07a808ff391cd80753e; + bytes32 public merkleRoot = 0xbe8ec647626f95185f551887b3eee43ea9e8965c7baf558a9f8cb22b020597f0; // rewards token - ERC20Upgradeable public erc20; + ERC20Upgradeable public erc20 = ERC20Upgradeable(0xA9d23408b9bA935c230493c40C73824Df71A0975); ERC20Mock public mockERC20; // start and end times for the claim - uint64 constant CLAIM_DURATION = 1 days; - uint64 public CLAIM_START = uint64(block.timestamp); + uint64 constant CLAIM_DURATION = 30 days; + // uint64 public CLAIM_START = uint64(block.timestamp); + uint64 public CLAIM_START = 1_728_683_700; // 2024-06-10 23:55:00 UTC uint64 public CLAIM_END = CLAIM_START + CLAIM_DURATION; function setUp() public { @@ -81,6 +80,7 @@ contract DeployScript is Script { if (block.chainid != 167_000) { mockERC20.mint(address(airdrop), TOTAL_AVAILABLE_FUNDS); } + console.log("ERC20 Token:", address(erc20)); console.log("Deployed ERC20Airdrop to:", address(airdrop)); diff --git a/packages/nfts/test/trailblazers-airdrop/ERC20Airdrop.t.sol b/packages/nfts/test/trailblazers-airdrop/ERC20Airdrop.t.sol index e2dbaeb4d8b..e255f3074a4 100644 --- a/packages/nfts/test/trailblazers-airdrop/ERC20Airdrop.t.sol +++ b/packages/nfts/test/trailblazers-airdrop/ERC20Airdrop.t.sol @@ -75,7 +75,8 @@ contract ERC20AirdropTest is Test { airdrop = ERC20Airdrop(proxy); // fund the airdrop contract - erc20.mint(address(airdrop), TOTAL_AVAILABLE_FUNDS); + erc20.mint(owner, TOTAL_AVAILABLE_FUNDS); + erc20.transfer(address(airdrop), TOTAL_AVAILABLE_FUNDS); vm.stopBroadcast(); } @@ -138,4 +139,13 @@ contract ERC20AirdropTest is Test { vm.expectRevert(); airdrop.claim(user, CLAIM_AMOUNT, proof); } + + function test_transferOwnership() public { + assertEq(airdrop.owner(), owner); + vm.prank(owner); + airdrop.transferOwnership(minters[0]); + vm.prank(minters[0]); + airdrop.acceptOwnership(); + assertEq(airdrop.owner(), minters[0]); + } } From 61781424f83d70b1ff516ab26e118188986ddd29 Mon Sep 17 00:00:00 2001 From: bearni95 Date: Fri, 11 Oct 2024 01:06:43 +0200 Subject: [PATCH 047/205] tbz updated blacklist --- .../deployments/blacklist/hekla.json | 3 + .../deployments/blacklist/mainnet.json | 3 + packages/supplementary-contracts/package.json | 4 +- .../script/blacklist/Deploy.data.json | 155 +++++++++++++++++- .../script/blacklist/Deploy.sol | 72 ++++++-- 5 files changed, 222 insertions(+), 15 deletions(-) create mode 100644 packages/supplementary-contracts/deployments/blacklist/hekla.json create mode 100644 packages/supplementary-contracts/deployments/blacklist/mainnet.json diff --git a/packages/supplementary-contracts/deployments/blacklist/hekla.json b/packages/supplementary-contracts/deployments/blacklist/hekla.json new file mode 100644 index 00000000000..84a53c5c7c2 --- /dev/null +++ b/packages/supplementary-contracts/deployments/blacklist/hekla.json @@ -0,0 +1,3 @@ +{ + "Blacklist": "0xD10a2c799F61A89B8f6D8C695c48A4F38684ab30" +} diff --git a/packages/supplementary-contracts/deployments/blacklist/mainnet.json b/packages/supplementary-contracts/deployments/blacklist/mainnet.json new file mode 100644 index 00000000000..bcadc7ecfea --- /dev/null +++ b/packages/supplementary-contracts/deployments/blacklist/mainnet.json @@ -0,0 +1,3 @@ +{ + "Blacklist": "0x5e3052424E51a62c4FDFf4F1dD42300F59c9C57A" +} diff --git a/packages/supplementary-contracts/package.json b/packages/supplementary-contracts/package.json index db4335fa5e0..ba6c6f93d6e 100644 --- a/packages/supplementary-contracts/package.json +++ b/packages/supplementary-contracts/package.json @@ -9,7 +9,9 @@ "layout": "./deployments/gen-layouts.sh", "fmt:sol": "forge fmt", "lint:sol": "forge fmt && pnpm solhint 'contracts/**/*.sol'", - "test": "forge test -vvv --match-path test/*.t.sol" + "test": "forge test -vvv --match-path test/*.t.sol", + "deploy:blacklist:hekla": "forge script script/blacklist/Deploy.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "deploy:blacklist:mainnet": "forge script script/blacklist/Deploy.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100" }, "devDependencies": { "@types/node": "^20.11.30", diff --git a/packages/supplementary-contracts/script/blacklist/Deploy.data.json b/packages/supplementary-contracts/script/blacklist/Deploy.data.json index 415c666f0a7..f0f0137813c 100644 --- a/packages/supplementary-contracts/script/blacklist/Deploy.data.json +++ b/packages/supplementary-contracts/script/blacklist/Deploy.data.json @@ -1,6 +1,6 @@ { - "admin": "0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be", - "updater": "0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be", + "admin": "0x7d70236E2517f5B95247AF1d806A9E3C328a7860", + "updater": "0x7d70236E2517f5B95247AF1d806A9E3C328a7860", "blacklist": [ "0x098B716B8Aaf21512996dC57EB0615e2383E2f96", "0xa0e1c89Ef1a489c9C7dE96311eD5Ce5D32c20E4B", @@ -155,6 +155,155 @@ "0x175d44451403Edf28469dF03A9280c1197ADb92c", "0x21B8d56BDA776bbE68655A16895afd96F5534feD", "0xE950DC316b836e4EeFb8308bf32Bf7C72a1358FF", - "0x19F8f2B0915Daa12a3f5C9CF01dF9E24D53794F7" + "0x19F8f2B0915Daa12a3f5C9CF01dF9E24D53794F7", + "0xB9C144ee9Db3850BB5c1598f9b1B03CD68812e30", + "0x683279542eD04d7C60DC56E4EA230fe621eDD4Ca", + "0x29E866A8471DA4f89b4AFF3FD41c801d8027058b", + "0xa2C13a6913D1DF18ff4f5de2bc342023Cd683C38", + "0x5c913285DD9421EDc9d8f1000A35D9bbDF0DCb62", + "0x4ee49B318B785BC358f947BfdCec46dFA12b1Ac1", + "0x6d9999D1aC0027F1E3Dc1e3F154e3366726743b7", + "0x4342F35851fa88873496A49F55ECF79671042bF9", + "0xb226eFF9Be0F679CfB703626C911113513B63bd4", + "0x93ff385916cfcDDA8EB0858276B0074e061E98F4", + "0x29aC5D7972C8B672bF2Ae60eFbc1bEFf48F1F038", + "0xA241038Cb362BDAbd55fDa08233de6f75c764C63", + "0x3d96638B127463e136dAaD12d9bfEAeaFA5437De", + "0x60E9c48A50828c4DC4e36D28fc7EF1b25124e002", + "0xB4c9105B0bF3785C30676D13D210D698Dde84F11", + "0xa4426fA0F0e53Cd06dc41d4fEcF4Bf8783dC5a27", + "0x509BBc835912dF27Fb19837b604b92664A5B8FF1", + "0x08103076D7b1219c7135D89fC0a1c90D26FB307F", + "0x2Cfd96Fb65a990F1b5193992a47e0b6D918Df0Dc", + "0xB33e272E9B62409a53dA0171Eaf88eFef8eE4692", + "0x64FF010064656dF2FC55a3b7D99420Bc4A07c56A", + "0xcDc7306b3c9E0F2947a7B62A137eF90806901f37", + "0xAF5c672f943cd547B7938158A46D08b584c492E8", + "0xAd5e1B0Ed51b625519f81D43117b479DE7e9AbDC", + "0xF8f5811d342DdC2a6320C205856977CfE3289f29", + "0xdd8BD6CEDE3D9eD2D453216df394C5bC8b05046a", + "0x72a2B878e6A909192b0aD91AF976494Ba5143855", + "0xBa5613D19214eD93844AabD24F1102040aceae4f", + "0xaf00a8b4e83A005921D0f878d20006DE0cDA044C", + "0x1a903fe2f732F96bAa7292A05f4121766dD7e07a", + "0xB84F419FD6DC9C30cCAA6ecbF5d194Af065A33ff", + "0xb787c56Bd3c21FB6C18Ceb9a3E49637ab7cD4Dd9", + "0xE2189aa87c1Ad7654bE7Ee258f348d6484F68165", + "0xbdaD5D2d23c0d5D6B17E402a79658f787328ee08", + "0xA189b646c8983253De9eE06C815c51171F265f81", + "0x660888f021BB7da1004869C6a51059Ed97d9e7c0", + "0x1dCFB0dB0D1A774Da525F1200E2c549Bf8A9DC70", + "0x4BA67EC73A7aBF9E015eeFC1979053CE0E56B369", + "0xF46dC57a0d8B614a0e8571217316d24B840ED9BC", + "0x3099cE94b9dDB6715B1169F61Aa0e16ad818Ce89", + "0x24317cAB3C632E0B1eD0d21De1E0a009359B1296", + "0xb692c229A8622Ad1dB19b18065E69B2b6116b9ef", + "0xC478e784b91b19665470CeAaCfa39Ba17D0f6183", + "0xEF8F0d7684D4405B5c51AEF023675946D5992b29", + "0xE9F41a0090fcc7eaf626037003AAD44B17098E7C", + "0x57B7F15C80461E83Ee56daE6a813A57f41E9b61d", + "0x05431cD62F011Cb44Ec803Fe4AC96FAC651CA494", + "0xcaFd650401708ca4f65a22340D07f78E18f8C332", + "0xbB7Cc747f5279Fde28b0878C928D92Eb6c90deBd", + "0x0f883a80a11Ba4057c265ad3a4C0c4e3869ac4c3", + "0xab2ECcf82a5b66396419da7a6e9fbF6630Bb7521", + "0xEc1C61c1c5cfEaA49141C24fB88815052D2fa6B1", + "0x7282aB49b58C7c493F49F2d5D1a723BdEd47C420", + "0x688c0a468ad7BE8Dc2e1cB92cc1b9b6fdca84d5A", + "0x5065d72003878656670f8C67498924704108C00C", + "0x8B59C939bE050814e56D69A68B7c8E485f79f9c3", + "0x38c104275141eaaE188dE0017eFf125FEb87F218", + "0xEe74356635A216A1fC89D4921495124c1533b0C8", + "0x394702830B44476C919389Cb7bA3726a1A885F3A", + "0xBA7770994a63d874127bC6eF8a0c78CCd5174E13", + "0x4edb34De5A54B42cDb88D7E535EC767AcdCa9Ce1", + "0x9c6F685403491272E6CF6258c32ccaA8E9A1ed21", + "0xdd7B2F2b821Ff20ee52A8787b3D9614b91A2b8B1", + "0xE86d78381c4cd7B4a67278e1194cA7bABc363Af9", + "0x873415F6633A0C42b8717bC898354638F52b13f3", + "0xB439b0844D0D9aF237FF37dc2379f07B6CD06171", + "0x796e3F689D8d475Dc82ce801440B184A76e68175", + "0xCe5CDb2Da5A7F30163126388Dd22a1e8084a9ad1", + "0x85204a5E932b69455822033F33E378DFF4Bb8960", + "0x588137e7c1Fce64a78e092611609B259bb524DaE", + "0x6De556d0d262BCC52fc5594abCcBc3b78524Ae17", + "0x52539Ea869f7162BC18f9c3C2dB595f2Cd69f63b", + "0xA706009f64b8eeDE2005546d18d2cbB87DDd95dF", + "0xD1799f7B0Bb7F48b0e997358eEEac349bA776c49", + "0x8fe67f559f6D6dED602E954d45897ebEE5F7FFec", + "0x464E1e588Bb3f49D039Ab8C4D5E33bB47fF8915C", + "0x9905d5753a005cd3e13D71bD030f0B6654703B81", + "0x4d7bF7e16fA37867b4Efcf7c05BD3d889ACB6ac9", + "0x026649F79905E4c5Fa26DafFbD905B3522d37e10", + "0x160EE9Bc0a0Fa051C6fEE189e9107669ed07DB0a", + "0x84a6b0C091c57313E3350B1C9d59472517f60D41", + "0x6d9807d18374F33213DE86917937544A7095e39e", + "0x9c9a2d9826b7c7e95D686e5714Fb0eF948EbC6B8", + "0x6aca843DD19AE4bfA43b6C53fC2e0c3a0bF6a002", + "0x381a0241a2A6e0217376A44C113707D5F9993e1b", + "0xC12B1050553c11993ed3A6aaB6818de7EC4DE4E2", + "0xc3F6b750Ab8b42D0455Cc90cac0E7B1F6bb6953a", + "0x07C35EF7A4AC953F5B8bBC79E6D497d114c38e6E", + "0x0395c16F061E8D2d79DFadF957fFcb97F2D765D3", + "0x6FFE37F348CCB189aC63BfB69ba6B4Aa0beDC3FB", + "0x7C22a14E676657Ebd573B7BE96AcFb21f09171dc", + "0xEC5568Bb595a311D2060506437D0f16Da8B8562D", + "0xea3D4D7f3484a683c39494D0b2A62C83cD52E8d4", + "0xDbd300Eba0F755Bb06DA769A4E1A84E4330068AF", + "0xE7eeb97861761e0AEE35F3e5dE42e1501C283495", + "0x0DC74caBcfB00ab5Fdeef60088685A71fef97003", + "0x45d993393f7B3Fe781935e1155118C7f830d4415", + "0x96BCa503a3ae8bEb794DaD2602202BB5ECD4AAE6", + "0x3Ad16031c0b29A2a6B7A3FBB5996649e39f4127b", + "0x8Cc38ceC2535DE89f2D573F6a50E74a717B45829", + "0x9fE7EDeDcd7DCF206cBe7F00bD23A6e70b398d74", + "0xa58b94936C196d5263b54232EB7D6C2B99A745b4", + "0xd8C860D789Ec1c6aE9631B680E6555F25Bc28331", + "0x6AEF558e7ebE574D692c2acd4C47232fd54e62b6", + "0xea99b1e741779a99646B7F9D57aF0F8264d94020", + "0x924eC99107E0F6fF59Ab33460ae6be9E8A6f5017", + "0x9a80ba749a649B2604d796e01D8A64Cc7B58ff78", + "0x904F40730023CC632c9dF65606dA0809D00D3B9a", + "0x9ECEc759D9F899Db97C6decDe38731f0A9DB449d", + "0xD6AFE7BA2E3c42C6A2729b861F33B54F8b2E6f2F", + "0xDE367Ba53E9EDC9381Ce00cDBba3DB01497E7974", + "0x37C4334EB5d24DCcCCfEBCC54680C433313EB040", + "0x87cCe15D359633EB901889E1B7CBa95c21053C19", + "0xE0B61B1EE0aa4Cb23d8667fda8F720F9f707c4B1", + "0x697F9Ab686b2834ACd86750B8A9Fd9f26b1f640e", + "0x6873a48E3A67E240D62E6Ec510900C0b9480cF8C", + "0x855980B2B60d8E3b60CFCf92413e3E3aF04AA101", + "0x435f6Fef6f7c1CadcD77CCB4ef1AD66C27FcFe79", + "0x735026cA2D9a0Cd24Da088eD3E1853EDe083Fc97", + "0x41ad8DD494057E87cE16dAeb20A06649E8ca2B50", + "0x87dFedBFD4FBBFDb8153fec55c82A983c299e5ad", + "0xEaA132575a13F88B715738562C7c1A545EC24300", + "0x3D3Aa68b54df9666CB6670A93aBE7A80CA01fbc3", + "0x7135603DAF6E50a76c3603582bdC2f33Fc558494", + "0x321186Ed48B0112Cc7Ed232e621d932c6EB84c61", + "0xc1B906579E383bE6Cb1B1Cc737DBA2e63CCEFa04", + "0x9471e8B1903Ef7f65f4002cFCE147b2646b6BB0f", + "0xc3fd682bdfb5ABab39Eb2c92E3411978e0b57E3f", + "0x477992B48247c889d50c9B0A87B2b2E34cbCA623", + "0x049dD5F736B851419cde65BB94DcE74d48324269", + "0xD9E6718b1C294CCe6EBC67eb6eBdbc02c343E489", + "0x830a02416Fc210C6F50A5afe65384F6c88132BE7", + "0x1b39f5ee1Fb4958F2E4049f69B53F78b75Bf1888", + "0x1742289017b61C48A5B4340666711AEd2Db72B4E", + "0x523c2937b6A1A0df143032033d6824dce499ddBF", + "0xB0a5eA798249fb30E9E1c81d475B051279962BB2", + "0xd2c7EeDBE8D68b045388A79b65915253dB582385", + "0xc1b44b014cD87d88BB04e176ba9324e086e9cd73", + "0x9D9854f6C9588bF5A56158a47090E0DFAC89d596", + "0x40eF5243c64BFa49301adF18b09A79A190CFa266", + "0xCF3c579061fB243aeFab480055B49e9038e6E488", + "0x0117Ce17Bc661d9bc331A328DC57C05d99B087D3", + "0xB2de33b99A59877d0780D4315690a600f47B5996", + "0xd50c9d01223F0EC1184A82eBEA3730Bdbc82238e", + "0x1F4a6756Da7592fc0f9a031D127d016ACc0BfcB2", + "0x63c9E4f81716dEBc57dB9Fbc60600106a44B9964", + "0xB7Cd2CEF367bf5536d7fdF6c491CE158D2651d97", + "0x1aa4a66Ef0cfA99cA9D39FdAD2B05489744C972a", + "0x3150BdCdA1b41E0F2A550955839F6b2C723aD0B7" ] } diff --git a/packages/supplementary-contracts/script/blacklist/Deploy.sol b/packages/supplementary-contracts/script/blacklist/Deploy.sol index f3ce0ced2c0..67ee1c65a2a 100644 --- a/packages/supplementary-contracts/script/blacklist/Deploy.sol +++ b/packages/supplementary-contracts/script/blacklist/Deploy.sol @@ -9,25 +9,75 @@ import "../../contracts/blacklist/Blacklist.sol"; contract DeployBlacklist is Script { using stdJson for string; - function setUp() public { } + uint256 public chainId; + + string public lowercaseNetworkKey; + string public uppercaseNetworkKey; + string public jsonLocation; + + uint256 public deployerPrivateKey; + address public deployerAddress; + + function getPrivateKey() public view returns (uint256) { + string memory lookupKey = string.concat(uppercaseNetworkKey, "_PRIVATE_KEY"); + return vm.envUint(lookupKey); + } + + function getContractJsonLocation() public view returns (string memory) { + string memory root = vm.projectRoot(); + return string.concat(root, "/deployments/blacklist/", lowercaseNetworkKey, ".json"); + } + + function setUp() public { + // load all network configs + chainId = block.chainid; + + if (chainId == 31_337) { + lowercaseNetworkKey = "localhost"; + uppercaseNetworkKey = "LOCALHOST"; + } else if (chainId == 17_000) { + lowercaseNetworkKey = "holesky"; + uppercaseNetworkKey = "HOLESKY"; + } else if (chainId == 167_001) { + lowercaseNetworkKey = "devnet"; + uppercaseNetworkKey = "DEVNET"; + } else if (chainId == 11_155_111) { + lowercaseNetworkKey = "sepolia"; + uppercaseNetworkKey = "SEPOLIA"; + } else if (chainId == 167_008) { + lowercaseNetworkKey = "katla"; + uppercaseNetworkKey = "KATLA"; + } else if (chainId == 167_000) { + lowercaseNetworkKey = "mainnet"; + uppercaseNetworkKey = "MAINNET"; + } else if (chainId == 167_009) { + lowercaseNetworkKey = "hekla"; + uppercaseNetworkKey = "HEKLA"; + } else { + revert("Unsupported chainId"); + } + + deployerPrivateKey = getPrivateKey(); + deployerAddress = vm.addr(deployerPrivateKey); + jsonLocation = getContractJsonLocation(); + } function run() external { string memory path = "/script/blacklist/Deploy.data.json"; string memory json = vm.readFile(string.concat(vm.projectRoot(), path)); - // get admin address - bytes memory rawPortion = json.parseRaw(".admin"); - address admin = abi.decode(rawPortion, (address)); - // get updater address - rawPortion = json.parseRaw(".updater"); - address updater = abi.decode(rawPortion, (address)); // get initial blacklist - rawPortion = json.parseRaw(".blacklist"); + bytes memory rawPortion = json.parseRaw(".blacklist"); address[] memory blacklist = abi.decode(rawPortion, (address[])); - vm.startBroadcast(); + vm.startBroadcast(deployerPrivateKey); + + Blacklist target = new Blacklist(deployerAddress, deployerAddress, blacklist); + console2.log("Blacklist deployed to ", address(target)); + + string memory finalJson = vm.serializeAddress("", "Blacklist", address(target)); + vm.writeJson(finalJson, jsonLocation); - Blacklist target = new Blacklist(admin, updater, blacklist); - console2.log("Deployed!\n", address(target)); + vm.stopBroadcast(); } } From 3a9d6c166b7c6666eb2515893b6a3fbd00f4b1ea Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 11 Oct 2024 10:16:43 +0800 Subject: [PATCH 048/205] fix(protocol): fix proposeBlock()'s block id check (#18227) --- packages/protocol/contracts/layer1/based/TaikoL1.sol | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index 225a698ca6c..c9bf899783e 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -77,8 +77,10 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { returns (TaikoData.BlockMetadata memory meta_, TaikoData.EthDeposit[] memory deposits_) { TaikoData.Config memory config = getConfig(); - (meta_,) = LibProposing.proposeBlock(state, config, this, _params, _txList); - if (meta_.id >= config.ontakeForkHeight) revert L1_FORK_ERROR(); + + TaikoData.BlockMetadataV2 memory metaV2; + (meta_, metaV2) = LibProposing.proposeBlock(state, config, this, _params, _txList); + if (metaV2.id >= config.ontakeForkHeight) revert L1_FORK_ERROR(); deposits_ = new TaikoData.EthDeposit[](0); } From c7f74b7e0f6cd4579a30b5880ff119b8ddb86a4c Mon Sep 17 00:00:00 2001 From: Bernat Canal Garceran Date: Fri, 11 Oct 2024 16:28:01 +0200 Subject: [PATCH 049/205] feat(nfts): tbz v3 mainnet upgrade (#18230) --- packages/nfts/package.json | 4 +- .../sol/{UpgradeV3.sol => UpgradeV3.s.sol} | 4 +- .../deployments/blacklist/hekla.json | 3 + .../deployments/blacklist/mainnet.json | 3 + packages/supplementary-contracts/package.json | 4 +- .../script/blacklist/Deploy.data.json | 155 +++++++++++++++++- .../script/blacklist/Deploy.sol | 72 ++++++-- 7 files changed, 227 insertions(+), 18 deletions(-) rename packages/nfts/script/trailblazers-badges/sol/{UpgradeV3.sol => UpgradeV3.s.sol} (94%) create mode 100644 packages/supplementary-contracts/deployments/blacklist/hekla.json create mode 100644 packages/supplementary-contracts/deployments/blacklist/mainnet.json diff --git a/packages/nfts/package.json b/packages/nfts/package.json index 20e26b85176..6f7be4c873c 100644 --- a/packages/nfts/package.json +++ b/packages/nfts/package.json @@ -35,7 +35,9 @@ "pfp:deploy:hekla": "forge clean && pnpm compile && forge script script/profile/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", "pfp:deploy:mainnet": "forge clean && pnpm compile && forge script script/profile/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 200", "tbz:airdrop:hekla": "forge clean && pnpm compile && forge script script/trailblazers-airdrop/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", - "tbz:airdrop:mainnet": "forge clean && pnpm compile && forge script script/trailblazers-airdrop/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100" + "tbz:airdrop:mainnet": "forge clean && pnpm compile && forge script script/trailblazers-airdrop/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100", + "tbz:upgradeV3:hekla": "forge clean && pnpm compile && forge script script/trailblazers-badges/sol/UpgradeV3.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "tbz:upgradeV3:mainnet": "forge clean && pnpm compile && forge script script/trailblazers-badges/sol/UpgradeV3.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100" }, "devDependencies": { "@types/node": "^20.11.30", diff --git a/packages/nfts/script/trailblazers-badges/sol/UpgradeV3.sol b/packages/nfts/script/trailblazers-badges/sol/UpgradeV3.s.sol similarity index 94% rename from packages/nfts/script/trailblazers-badges/sol/UpgradeV3.sol rename to packages/nfts/script/trailblazers-badges/sol/UpgradeV3.s.sol index d51919abf5f..e212f866987 100644 --- a/packages/nfts/script/trailblazers-badges/sol/UpgradeV3.sol +++ b/packages/nfts/script/trailblazers-badges/sol/UpgradeV3.s.sol @@ -10,7 +10,7 @@ import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; import { TrailblazersBadgesV3 } from "../../../contracts/trailblazers-badges/TrailblazersBadgesV3.sol"; -contract UpgradeV2 is Script { +contract UpgradeV3 is Script { UtilsScript public utils; string public jsonLocation; uint256 public deployerPrivateKey; @@ -37,7 +37,7 @@ contract UpgradeV2 is Script { address(new TrailblazersBadgesV3()), abi.encodeCall(TrailblazersBadgesV3.version, ()) ); - tokenV3 = TrailblazersBadgesV3(tokenV3); + tokenV3 = TrailblazersBadgesV3(address(tokenV2)); console.log("Upgraded TrailblazersBadgesV3 to:", address(tokenV3)); } diff --git a/packages/supplementary-contracts/deployments/blacklist/hekla.json b/packages/supplementary-contracts/deployments/blacklist/hekla.json new file mode 100644 index 00000000000..84a53c5c7c2 --- /dev/null +++ b/packages/supplementary-contracts/deployments/blacklist/hekla.json @@ -0,0 +1,3 @@ +{ + "Blacklist": "0xD10a2c799F61A89B8f6D8C695c48A4F38684ab30" +} diff --git a/packages/supplementary-contracts/deployments/blacklist/mainnet.json b/packages/supplementary-contracts/deployments/blacklist/mainnet.json new file mode 100644 index 00000000000..bcadc7ecfea --- /dev/null +++ b/packages/supplementary-contracts/deployments/blacklist/mainnet.json @@ -0,0 +1,3 @@ +{ + "Blacklist": "0x5e3052424E51a62c4FDFf4F1dD42300F59c9C57A" +} diff --git a/packages/supplementary-contracts/package.json b/packages/supplementary-contracts/package.json index db4335fa5e0..ba6c6f93d6e 100644 --- a/packages/supplementary-contracts/package.json +++ b/packages/supplementary-contracts/package.json @@ -9,7 +9,9 @@ "layout": "./deployments/gen-layouts.sh", "fmt:sol": "forge fmt", "lint:sol": "forge fmt && pnpm solhint 'contracts/**/*.sol'", - "test": "forge test -vvv --match-path test/*.t.sol" + "test": "forge test -vvv --match-path test/*.t.sol", + "deploy:blacklist:hekla": "forge script script/blacklist/Deploy.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "deploy:blacklist:mainnet": "forge script script/blacklist/Deploy.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100" }, "devDependencies": { "@types/node": "^20.11.30", diff --git a/packages/supplementary-contracts/script/blacklist/Deploy.data.json b/packages/supplementary-contracts/script/blacklist/Deploy.data.json index 415c666f0a7..f0f0137813c 100644 --- a/packages/supplementary-contracts/script/blacklist/Deploy.data.json +++ b/packages/supplementary-contracts/script/blacklist/Deploy.data.json @@ -1,6 +1,6 @@ { - "admin": "0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be", - "updater": "0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be", + "admin": "0x7d70236E2517f5B95247AF1d806A9E3C328a7860", + "updater": "0x7d70236E2517f5B95247AF1d806A9E3C328a7860", "blacklist": [ "0x098B716B8Aaf21512996dC57EB0615e2383E2f96", "0xa0e1c89Ef1a489c9C7dE96311eD5Ce5D32c20E4B", @@ -155,6 +155,155 @@ "0x175d44451403Edf28469dF03A9280c1197ADb92c", "0x21B8d56BDA776bbE68655A16895afd96F5534feD", "0xE950DC316b836e4EeFb8308bf32Bf7C72a1358FF", - "0x19F8f2B0915Daa12a3f5C9CF01dF9E24D53794F7" + "0x19F8f2B0915Daa12a3f5C9CF01dF9E24D53794F7", + "0xB9C144ee9Db3850BB5c1598f9b1B03CD68812e30", + "0x683279542eD04d7C60DC56E4EA230fe621eDD4Ca", + "0x29E866A8471DA4f89b4AFF3FD41c801d8027058b", + "0xa2C13a6913D1DF18ff4f5de2bc342023Cd683C38", + "0x5c913285DD9421EDc9d8f1000A35D9bbDF0DCb62", + "0x4ee49B318B785BC358f947BfdCec46dFA12b1Ac1", + "0x6d9999D1aC0027F1E3Dc1e3F154e3366726743b7", + "0x4342F35851fa88873496A49F55ECF79671042bF9", + "0xb226eFF9Be0F679CfB703626C911113513B63bd4", + "0x93ff385916cfcDDA8EB0858276B0074e061E98F4", + "0x29aC5D7972C8B672bF2Ae60eFbc1bEFf48F1F038", + "0xA241038Cb362BDAbd55fDa08233de6f75c764C63", + "0x3d96638B127463e136dAaD12d9bfEAeaFA5437De", + "0x60E9c48A50828c4DC4e36D28fc7EF1b25124e002", + "0xB4c9105B0bF3785C30676D13D210D698Dde84F11", + "0xa4426fA0F0e53Cd06dc41d4fEcF4Bf8783dC5a27", + "0x509BBc835912dF27Fb19837b604b92664A5B8FF1", + "0x08103076D7b1219c7135D89fC0a1c90D26FB307F", + "0x2Cfd96Fb65a990F1b5193992a47e0b6D918Df0Dc", + "0xB33e272E9B62409a53dA0171Eaf88eFef8eE4692", + "0x64FF010064656dF2FC55a3b7D99420Bc4A07c56A", + "0xcDc7306b3c9E0F2947a7B62A137eF90806901f37", + "0xAF5c672f943cd547B7938158A46D08b584c492E8", + "0xAd5e1B0Ed51b625519f81D43117b479DE7e9AbDC", + "0xF8f5811d342DdC2a6320C205856977CfE3289f29", + "0xdd8BD6CEDE3D9eD2D453216df394C5bC8b05046a", + "0x72a2B878e6A909192b0aD91AF976494Ba5143855", + "0xBa5613D19214eD93844AabD24F1102040aceae4f", + "0xaf00a8b4e83A005921D0f878d20006DE0cDA044C", + "0x1a903fe2f732F96bAa7292A05f4121766dD7e07a", + "0xB84F419FD6DC9C30cCAA6ecbF5d194Af065A33ff", + "0xb787c56Bd3c21FB6C18Ceb9a3E49637ab7cD4Dd9", + "0xE2189aa87c1Ad7654bE7Ee258f348d6484F68165", + "0xbdaD5D2d23c0d5D6B17E402a79658f787328ee08", + "0xA189b646c8983253De9eE06C815c51171F265f81", + "0x660888f021BB7da1004869C6a51059Ed97d9e7c0", + "0x1dCFB0dB0D1A774Da525F1200E2c549Bf8A9DC70", + "0x4BA67EC73A7aBF9E015eeFC1979053CE0E56B369", + "0xF46dC57a0d8B614a0e8571217316d24B840ED9BC", + "0x3099cE94b9dDB6715B1169F61Aa0e16ad818Ce89", + "0x24317cAB3C632E0B1eD0d21De1E0a009359B1296", + "0xb692c229A8622Ad1dB19b18065E69B2b6116b9ef", + "0xC478e784b91b19665470CeAaCfa39Ba17D0f6183", + "0xEF8F0d7684D4405B5c51AEF023675946D5992b29", + "0xE9F41a0090fcc7eaf626037003AAD44B17098E7C", + "0x57B7F15C80461E83Ee56daE6a813A57f41E9b61d", + "0x05431cD62F011Cb44Ec803Fe4AC96FAC651CA494", + "0xcaFd650401708ca4f65a22340D07f78E18f8C332", + "0xbB7Cc747f5279Fde28b0878C928D92Eb6c90deBd", + "0x0f883a80a11Ba4057c265ad3a4C0c4e3869ac4c3", + "0xab2ECcf82a5b66396419da7a6e9fbF6630Bb7521", + "0xEc1C61c1c5cfEaA49141C24fB88815052D2fa6B1", + "0x7282aB49b58C7c493F49F2d5D1a723BdEd47C420", + "0x688c0a468ad7BE8Dc2e1cB92cc1b9b6fdca84d5A", + "0x5065d72003878656670f8C67498924704108C00C", + "0x8B59C939bE050814e56D69A68B7c8E485f79f9c3", + "0x38c104275141eaaE188dE0017eFf125FEb87F218", + "0xEe74356635A216A1fC89D4921495124c1533b0C8", + "0x394702830B44476C919389Cb7bA3726a1A885F3A", + "0xBA7770994a63d874127bC6eF8a0c78CCd5174E13", + "0x4edb34De5A54B42cDb88D7E535EC767AcdCa9Ce1", + "0x9c6F685403491272E6CF6258c32ccaA8E9A1ed21", + "0xdd7B2F2b821Ff20ee52A8787b3D9614b91A2b8B1", + "0xE86d78381c4cd7B4a67278e1194cA7bABc363Af9", + "0x873415F6633A0C42b8717bC898354638F52b13f3", + "0xB439b0844D0D9aF237FF37dc2379f07B6CD06171", + "0x796e3F689D8d475Dc82ce801440B184A76e68175", + "0xCe5CDb2Da5A7F30163126388Dd22a1e8084a9ad1", + "0x85204a5E932b69455822033F33E378DFF4Bb8960", + "0x588137e7c1Fce64a78e092611609B259bb524DaE", + "0x6De556d0d262BCC52fc5594abCcBc3b78524Ae17", + "0x52539Ea869f7162BC18f9c3C2dB595f2Cd69f63b", + "0xA706009f64b8eeDE2005546d18d2cbB87DDd95dF", + "0xD1799f7B0Bb7F48b0e997358eEEac349bA776c49", + "0x8fe67f559f6D6dED602E954d45897ebEE5F7FFec", + "0x464E1e588Bb3f49D039Ab8C4D5E33bB47fF8915C", + "0x9905d5753a005cd3e13D71bD030f0B6654703B81", + "0x4d7bF7e16fA37867b4Efcf7c05BD3d889ACB6ac9", + "0x026649F79905E4c5Fa26DafFbD905B3522d37e10", + "0x160EE9Bc0a0Fa051C6fEE189e9107669ed07DB0a", + "0x84a6b0C091c57313E3350B1C9d59472517f60D41", + "0x6d9807d18374F33213DE86917937544A7095e39e", + "0x9c9a2d9826b7c7e95D686e5714Fb0eF948EbC6B8", + "0x6aca843DD19AE4bfA43b6C53fC2e0c3a0bF6a002", + "0x381a0241a2A6e0217376A44C113707D5F9993e1b", + "0xC12B1050553c11993ed3A6aaB6818de7EC4DE4E2", + "0xc3F6b750Ab8b42D0455Cc90cac0E7B1F6bb6953a", + "0x07C35EF7A4AC953F5B8bBC79E6D497d114c38e6E", + "0x0395c16F061E8D2d79DFadF957fFcb97F2D765D3", + "0x6FFE37F348CCB189aC63BfB69ba6B4Aa0beDC3FB", + "0x7C22a14E676657Ebd573B7BE96AcFb21f09171dc", + "0xEC5568Bb595a311D2060506437D0f16Da8B8562D", + "0xea3D4D7f3484a683c39494D0b2A62C83cD52E8d4", + "0xDbd300Eba0F755Bb06DA769A4E1A84E4330068AF", + "0xE7eeb97861761e0AEE35F3e5dE42e1501C283495", + "0x0DC74caBcfB00ab5Fdeef60088685A71fef97003", + "0x45d993393f7B3Fe781935e1155118C7f830d4415", + "0x96BCa503a3ae8bEb794DaD2602202BB5ECD4AAE6", + "0x3Ad16031c0b29A2a6B7A3FBB5996649e39f4127b", + "0x8Cc38ceC2535DE89f2D573F6a50E74a717B45829", + "0x9fE7EDeDcd7DCF206cBe7F00bD23A6e70b398d74", + "0xa58b94936C196d5263b54232EB7D6C2B99A745b4", + "0xd8C860D789Ec1c6aE9631B680E6555F25Bc28331", + "0x6AEF558e7ebE574D692c2acd4C47232fd54e62b6", + "0xea99b1e741779a99646B7F9D57aF0F8264d94020", + "0x924eC99107E0F6fF59Ab33460ae6be9E8A6f5017", + "0x9a80ba749a649B2604d796e01D8A64Cc7B58ff78", + "0x904F40730023CC632c9dF65606dA0809D00D3B9a", + "0x9ECEc759D9F899Db97C6decDe38731f0A9DB449d", + "0xD6AFE7BA2E3c42C6A2729b861F33B54F8b2E6f2F", + "0xDE367Ba53E9EDC9381Ce00cDBba3DB01497E7974", + "0x37C4334EB5d24DCcCCfEBCC54680C433313EB040", + "0x87cCe15D359633EB901889E1B7CBa95c21053C19", + "0xE0B61B1EE0aa4Cb23d8667fda8F720F9f707c4B1", + "0x697F9Ab686b2834ACd86750B8A9Fd9f26b1f640e", + "0x6873a48E3A67E240D62E6Ec510900C0b9480cF8C", + "0x855980B2B60d8E3b60CFCf92413e3E3aF04AA101", + "0x435f6Fef6f7c1CadcD77CCB4ef1AD66C27FcFe79", + "0x735026cA2D9a0Cd24Da088eD3E1853EDe083Fc97", + "0x41ad8DD494057E87cE16dAeb20A06649E8ca2B50", + "0x87dFedBFD4FBBFDb8153fec55c82A983c299e5ad", + "0xEaA132575a13F88B715738562C7c1A545EC24300", + "0x3D3Aa68b54df9666CB6670A93aBE7A80CA01fbc3", + "0x7135603DAF6E50a76c3603582bdC2f33Fc558494", + "0x321186Ed48B0112Cc7Ed232e621d932c6EB84c61", + "0xc1B906579E383bE6Cb1B1Cc737DBA2e63CCEFa04", + "0x9471e8B1903Ef7f65f4002cFCE147b2646b6BB0f", + "0xc3fd682bdfb5ABab39Eb2c92E3411978e0b57E3f", + "0x477992B48247c889d50c9B0A87B2b2E34cbCA623", + "0x049dD5F736B851419cde65BB94DcE74d48324269", + "0xD9E6718b1C294CCe6EBC67eb6eBdbc02c343E489", + "0x830a02416Fc210C6F50A5afe65384F6c88132BE7", + "0x1b39f5ee1Fb4958F2E4049f69B53F78b75Bf1888", + "0x1742289017b61C48A5B4340666711AEd2Db72B4E", + "0x523c2937b6A1A0df143032033d6824dce499ddBF", + "0xB0a5eA798249fb30E9E1c81d475B051279962BB2", + "0xd2c7EeDBE8D68b045388A79b65915253dB582385", + "0xc1b44b014cD87d88BB04e176ba9324e086e9cd73", + "0x9D9854f6C9588bF5A56158a47090E0DFAC89d596", + "0x40eF5243c64BFa49301adF18b09A79A190CFa266", + "0xCF3c579061fB243aeFab480055B49e9038e6E488", + "0x0117Ce17Bc661d9bc331A328DC57C05d99B087D3", + "0xB2de33b99A59877d0780D4315690a600f47B5996", + "0xd50c9d01223F0EC1184A82eBEA3730Bdbc82238e", + "0x1F4a6756Da7592fc0f9a031D127d016ACc0BfcB2", + "0x63c9E4f81716dEBc57dB9Fbc60600106a44B9964", + "0xB7Cd2CEF367bf5536d7fdF6c491CE158D2651d97", + "0x1aa4a66Ef0cfA99cA9D39FdAD2B05489744C972a", + "0x3150BdCdA1b41E0F2A550955839F6b2C723aD0B7" ] } diff --git a/packages/supplementary-contracts/script/blacklist/Deploy.sol b/packages/supplementary-contracts/script/blacklist/Deploy.sol index f3ce0ced2c0..67ee1c65a2a 100644 --- a/packages/supplementary-contracts/script/blacklist/Deploy.sol +++ b/packages/supplementary-contracts/script/blacklist/Deploy.sol @@ -9,25 +9,75 @@ import "../../contracts/blacklist/Blacklist.sol"; contract DeployBlacklist is Script { using stdJson for string; - function setUp() public { } + uint256 public chainId; + + string public lowercaseNetworkKey; + string public uppercaseNetworkKey; + string public jsonLocation; + + uint256 public deployerPrivateKey; + address public deployerAddress; + + function getPrivateKey() public view returns (uint256) { + string memory lookupKey = string.concat(uppercaseNetworkKey, "_PRIVATE_KEY"); + return vm.envUint(lookupKey); + } + + function getContractJsonLocation() public view returns (string memory) { + string memory root = vm.projectRoot(); + return string.concat(root, "/deployments/blacklist/", lowercaseNetworkKey, ".json"); + } + + function setUp() public { + // load all network configs + chainId = block.chainid; + + if (chainId == 31_337) { + lowercaseNetworkKey = "localhost"; + uppercaseNetworkKey = "LOCALHOST"; + } else if (chainId == 17_000) { + lowercaseNetworkKey = "holesky"; + uppercaseNetworkKey = "HOLESKY"; + } else if (chainId == 167_001) { + lowercaseNetworkKey = "devnet"; + uppercaseNetworkKey = "DEVNET"; + } else if (chainId == 11_155_111) { + lowercaseNetworkKey = "sepolia"; + uppercaseNetworkKey = "SEPOLIA"; + } else if (chainId == 167_008) { + lowercaseNetworkKey = "katla"; + uppercaseNetworkKey = "KATLA"; + } else if (chainId == 167_000) { + lowercaseNetworkKey = "mainnet"; + uppercaseNetworkKey = "MAINNET"; + } else if (chainId == 167_009) { + lowercaseNetworkKey = "hekla"; + uppercaseNetworkKey = "HEKLA"; + } else { + revert("Unsupported chainId"); + } + + deployerPrivateKey = getPrivateKey(); + deployerAddress = vm.addr(deployerPrivateKey); + jsonLocation = getContractJsonLocation(); + } function run() external { string memory path = "/script/blacklist/Deploy.data.json"; string memory json = vm.readFile(string.concat(vm.projectRoot(), path)); - // get admin address - bytes memory rawPortion = json.parseRaw(".admin"); - address admin = abi.decode(rawPortion, (address)); - // get updater address - rawPortion = json.parseRaw(".updater"); - address updater = abi.decode(rawPortion, (address)); // get initial blacklist - rawPortion = json.parseRaw(".blacklist"); + bytes memory rawPortion = json.parseRaw(".blacklist"); address[] memory blacklist = abi.decode(rawPortion, (address[])); - vm.startBroadcast(); + vm.startBroadcast(deployerPrivateKey); + + Blacklist target = new Blacklist(deployerAddress, deployerAddress, blacklist); + console2.log("Blacklist deployed to ", address(target)); + + string memory finalJson = vm.serializeAddress("", "Blacklist", address(target)); + vm.writeJson(finalJson, jsonLocation); - Blacklist target = new Blacklist(admin, updater, blacklist); - console2.log("Deployed!\n", address(target)); + vm.stopBroadcast(); } } From ea55bc24ea7184655804b88cc3c424b69fc87103 Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Sun, 13 Oct 2024 17:48:32 +0900 Subject: [PATCH 050/205] fix(docs-site): fix edit link (#18243) --- packages/docs-site/astro.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs-site/astro.config.ts b/packages/docs-site/astro.config.ts index 7a6d4cfbbd0..479104944e6 100644 --- a/packages/docs-site/astro.config.ts +++ b/packages/docs-site/astro.config.ts @@ -42,7 +42,7 @@ export default defineConfig({ title: "Docs", editLink: { baseUrl: - "https://github.com/taikoxyz/taiko-mono/tree/main/packages/docs-site", + "https://github.com/taikoxyz/taiko-mono/edit/main/packages/docs-site", }, customCss: ["./src/styles/custom.css"], logo: { From e85627365d423fd8353b5bff92e80978774e9c50 Mon Sep 17 00:00:00 2001 From: maskpp Date: Sun, 13 Oct 2024 17:38:26 +0800 Subject: [PATCH 051/205] test(taiko-client): introduce `taiko-reth` as another L2 node in testing (#18223) Co-authored-by: David --- .github/workflows/taiko-client--test.yml | 8 +++- packages/taiko-client/Makefile | 3 +- .../driver/chain_syncer/blob/syncer_test.go | 8 ++++ packages/taiko-client/driver/driver_test.go | 4 ++ .../internal/docker/docker_env.sh | 12 +++--- .../internal/docker/nodes/docker-compose.yml | 42 ++++++++++++++++++- .../taiko-client/internal/docker/start.sh | 9 +++- packages/taiko-client/internal/docker/stop.sh | 9 +++- .../taiko-client/proposer/proposer_test.go | 4 ++ 9 files changed, 87 insertions(+), 12 deletions(-) diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index 698c31c8140..21f2824e1c4 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -35,6 +35,10 @@ jobs: runs-on: [ubuntu-latest] timeout-minutes: 15 + strategy: + matrix: + execution_node: [l2_geth, l2_reth] + steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.11.0 @@ -55,8 +59,10 @@ jobs: - name: Install pnpm dependencies uses: ./.github/actions/install-pnpm-dependencies - - name: Test + - name: Run Tests on ${{ matrix.execution_node }} execution engine working-directory: packages/taiko-client + env: + L2_NODE: ${{ matrix.execution_node }} run: make test - name: Codecov.io diff --git a/packages/taiko-client/Makefile b/packages/taiko-client/Makefile index 8454ee49e41..3bfdd7396e6 100644 --- a/packages/taiko-client/Makefile +++ b/packages/taiko-client/Makefile @@ -18,8 +18,9 @@ lint: && goimports -local "github.com/taikoxyz/taiko-mono/packages/taiko-client" -w ./ \ && golangci-lint run -test: lint +test: @PACKAGE=${PACKAGE} \ + L2_NODE=$${L2_NODE:-l2_geth} \ RUN_TESTS=true \ ./integration_test/entrypoint.sh diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go index 22b27b665a2..7c9c6546249 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go @@ -111,6 +111,10 @@ func (s *BlobSyncerTestSuite) TestInsertNewHead() { } func (s *BlobSyncerTestSuite) TestTreasuryIncomeAllAnchors() { + // TODO: Temporarily skip this test case when using l2_reth node. + if os.Getenv("L2_NODE") == "l2_reth" { + s.T().Skip() + } treasury := common.HexToAddress(os.Getenv("TREASURY")) s.NotZero(treasury.Big().Uint64()) @@ -133,6 +137,10 @@ func (s *BlobSyncerTestSuite) TestTreasuryIncomeAllAnchors() { } func (s *BlobSyncerTestSuite) TestTreasuryIncome() { + // TODO: Temporarily skip this test case when using l2_reth node. + if os.Getenv("L2_NODE") == "l2_reth" { + s.T().Skip() + } treasury := common.HexToAddress(os.Getenv("TREASURY")) s.NotZero(treasury.Big().Uint64()) diff --git a/packages/taiko-client/driver/driver_test.go b/packages/taiko-client/driver/driver_test.go index cbae3bf9525..b0a97cc4818 100644 --- a/packages/taiko-client/driver/driver_test.go +++ b/packages/taiko-client/driver/driver_test.go @@ -98,6 +98,10 @@ func (s *DriverTestSuite) TestProcessL1Blocks() { } func (s *DriverTestSuite) TestCheckL1ReorgToHigherFork() { + // TODO: Temporarily skip this test case when use l2_reth node. + if os.Getenv("L2_NODE") == "l2_reth" { + s.T().Skip() + } var ( testnetL1SnapshotID = s.SetL1Snapshot() ) diff --git a/packages/taiko-client/internal/docker/docker_env.sh b/packages/taiko-client/internal/docker/docker_env.sh index cb3ad4358c9..b5ae4ffdd4c 100755 --- a/packages/taiko-client/internal/docker/docker_env.sh +++ b/packages/taiko-client/internal/docker/docker_env.sh @@ -9,7 +9,7 @@ until cast chain-id --rpc-url "$L1_PROBE_URL" 2> /dev/null; do done # check until L2 chain is ready -L2_PROBE_URL=ws://localhost:$(docker port l2_node | grep "0.0.0.0" | awk -F ':' 'NR==2 {print $2}') +L2_PROBE_URL=ws://localhost:$(docker port $L2_NODE | grep "0.0.0.0" | awk -F ':' 'NR==2 {print $2}') until cast chain-id --rpc-url "$L2_PROBE_URL" 2> /dev/null; do sleep 1 done @@ -18,13 +18,13 @@ L1_NODE_PORT=$(docker port l1_node | grep '0.0.0.0' | awk -F ':' '{print $2}') export L1_HTTP=http://localhost:$L1_NODE_PORT export L1_WS=ws://localhost:$L1_NODE_PORT -export L2_HTTP=http://localhost:$(docker port l2_node | grep "0.0.0.0" | awk -F ':' 'NR==1 {print $2}') -export L2_WS=ws://localhost:$(docker port l2_node | grep "0.0.0.0" | awk -F ':' 'NR==2 {print $2}') -export L2_AUTH=http://localhost:$(docker port l2_node | grep "0.0.0.0" | awk -F ':' 'NR==3 {print $2}') +export L2_HTTP=http://localhost:$(docker port $L2_NODE | grep "0.0.0.0" | awk -F ':' 'NR==1 {print $2}') +export L2_WS=ws://localhost:$(docker port $L2_NODE | grep "0.0.0.0" | awk -F ':' 'NR==2 {print $2}') +export L2_AUTH=http://localhost:$(docker port $L2_NODE | grep "0.0.0.0" | awk -F ':' 'NR==3 {print $2}') export JWT_SECRET=$DIR/nodes/jwt.hex -echo -e "L1_NODE PORTS: \n$(docker port l1_node)" -echo -e "L2_NODE PORTS: \n$(docker port l2_node)" +echo -e "L1_NODE PORTS: \n\t$(docker port l1_node)" +echo -e "L2_NODE PORTS: \n\t$(docker port $L2_NODE)" echo "L1_HTTP: $L1_HTTP" echo "L1_WS: $L1_WS" diff --git a/packages/taiko-client/internal/docker/nodes/docker-compose.yml b/packages/taiko-client/internal/docker/nodes/docker-compose.yml index 4880101823c..1c81f01f92c 100644 --- a/packages/taiko-client/internal/docker/nodes/docker-compose.yml +++ b/packages/taiko-client/internal/docker/nodes/docker-compose.yml @@ -16,8 +16,8 @@ services: - --hardfork - cancun - l2_execution_engine: - container_name: l2_node + l2_geth: + container_name: l2_geth image: us-docker.pkg.dev/evmchain/images/taiko-geth:taiko restart: unless-stopped pull_policy: always @@ -67,3 +67,41 @@ services: - --ws.api - admin,debug,eth,net,web3,txpool,miner,taiko - --taiko + + l2_reth: + container_name: l2_reth + image: us-docker.pkg.dev/evmchain/images/taiko-reth:v1.0.0 + restart: unless-stopped + pull_policy: always + volumes: + - .:/host + ports: + - "8545" + - "8546" + - "8551" + command: + - node + - --datadir + - /data/taiko-geth + - --chain + - "167001" + - --http + - --http.addr + - "0.0.0.0" + - --http.corsdomain + - "*" + - --ws + - --ws.addr + - "0.0.0.0" + - --ws.origins + - "*" + - --authrpc.addr + - "0.0.0.0" + - --authrpc.port + - "8551" + - --authrpc.jwtsecret + - /host/jwt.hex + - --http.api + - admin,debug,eth,net,web3,txpool,taiko + - --ws.api + - admin,debug,eth,net,web3,txpool,taiko diff --git a/packages/taiko-client/internal/docker/start.sh b/packages/taiko-client/internal/docker/start.sh index cde4a56a28c..c8710765a9d 100755 --- a/packages/taiko-client/internal/docker/start.sh +++ b/packages/taiko-client/internal/docker/start.sh @@ -2,7 +2,14 @@ source scripts/common.sh -DOCKER_SERVICE_LIST=("l1_node" "l2_execution_engine") +if [ "$L2_NODE" == "l2_reth" ];then + DOCKER_SERVICE_LIST=("l1_node" "l2_reth") + elif [ "$L2_NODE" == "l2_geth" ];then + DOCKER_SERVICE_LIST=("l1_node" "l2_geth") + else + echo "unsupported L2_NODE: $L2_NODE" + exit 1 +fi # start docker compose service list echo "start docker compose service: ${DOCKER_SERVICE_LIST[*]}" diff --git a/packages/taiko-client/internal/docker/stop.sh b/packages/taiko-client/internal/docker/stop.sh index 0a69ade3282..38e36534a96 100755 --- a/packages/taiko-client/internal/docker/stop.sh +++ b/packages/taiko-client/internal/docker/stop.sh @@ -2,7 +2,14 @@ source scripts/common.sh -DOCKER_SERVICE_LIST=("l1_node" "l2_execution_engine") +if [ "$L2_NODE" == "l2_reth" ];then + DOCKER_SERVICE_LIST=("l1_node" "l2_reth") + elif [ "$L2_NODE" == "l2_geth" ];then + DOCKER_SERVICE_LIST=("l1_node" "l2_geth") + else + echo "unsupported L2_NODE: $L2_NODE" + exit 1 +fi echo "stop docker compose service: ${DOCKER_SERVICE_LIST[*]}" diff --git a/packages/taiko-client/proposer/proposer_test.go b/packages/taiko-client/proposer/proposer_test.go index 360e6217268..f3a968a3759 100644 --- a/packages/taiko-client/proposer/proposer_test.go +++ b/packages/taiko-client/proposer/proposer_test.go @@ -171,6 +171,10 @@ func (s *ProposerTestSuite) TestProposeTxLists() { } func (s *ProposerTestSuite) TestProposeOpNoEmptyBlock() { + // TODO: Temporarily skip this test case when using l2_reth node. + if os.Getenv("L2_NODE") == "l2_reth" { + s.T().Skip() + } defer s.Nil(s.s.ProcessL1Blocks(context.Background())) p := s.p From 75508828d3755e1a831380cdd2ab321e67fa22fc Mon Sep 17 00:00:00 2001 From: David Date: Mon, 14 Oct 2024 23:25:31 +0800 Subject: [PATCH 052/205] feat(protocol): update mainnet `ontakeForkHeight` config (#18252) Co-authored-by: Gavin Yu Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- .../contracts/layer1/mainnet/rollup/MainnetTaikoL1.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTaikoL1.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTaikoL1.sol index 1ca0b14089a..8c43054d500 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTaikoL1.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTaikoL1.sol @@ -35,8 +35,8 @@ contract MainnetTaikoL1 is TaikoL1, RollupAddressCache { minGasExcess: 1_340_000_000, // correspond to 0.008847185 gwei basefee maxGasIssuancePerBlock: 600_000_000 // two minutes: 5_000_000 * 120 }), - ontakeForkHeight: 576_000 // = 7200 * 80 - }); + ontakeForkHeight: 538_304 + }); } function _getAddress(uint64 _chainId, bytes32 _name) internal view override returns (address) { From 2ddc03b970a80b0c2309bb832d585730d681f8e6 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 14 Oct 2024 10:30:51 -0700 Subject: [PATCH 053/205] chore(main): release docs-site 1.12.2 (#18246) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 7 +++++++ packages/docs-site/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 6c1613ada2a..f51a5f0d587 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.12.1", + "packages/docs-site": "1.12.2", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index 2bb67297683..56c0c1af552 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.12.2](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.12.1...docs-site-v1.12.2) (2024-10-14) + + +### Bug Fixes + +* **docs-site:** fix edit link ([#18243](https://github.com/taikoxyz/taiko-mono/issues/18243)) ([ea55bc2](https://github.com/taikoxyz/taiko-mono/commit/ea55bc24ea7184655804b88cc3c424b69fc87103)) + ## [1.12.1](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.12.0...docs-site-v1.12.1) (2024-09-30) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index 543113ec4d8..a38ee2c64e8 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.12.1", + "version": "1.12.2", "scripts": { "dev": "astro dev", "start": "astro dev", From 21c62355575adae6d99e1a117f357c6429d79b4c Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Wed, 16 Oct 2024 09:47:13 +0800 Subject: [PATCH 054/205] feat(taiko-client): update `OntakeForkHeight` in mainnet (#18253) --- packages/taiko-client/bindings/encoding/protocol_config.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/taiko-client/bindings/encoding/protocol_config.go b/packages/taiko-client/bindings/encoding/protocol_config.go index 21f7f9d4403..27d0c4684ba 100644 --- a/packages/taiko-client/bindings/encoding/protocol_config.go +++ b/packages/taiko-client/bindings/encoding/protocol_config.go @@ -55,8 +55,7 @@ var ( LivenessBond: livenessBond, StateRootSyncInternal: 16, MaxAnchorHeightOffset: 64, - // TODO: update this value when mainnet fork height is decided - OntakeForkHeight: 9_000_000, + OntakeForkHeight: 538_304, BaseFeeConfig: bindings.LibSharedDataBaseFeeConfig{ AdjustmentQuotient: 8, GasIssuancePerSecond: 5_000_000, From bf3caf7d986d7b03cf3bd0aa69ea97602bff80aa Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 16 Oct 2024 13:28:50 +0800 Subject: [PATCH 055/205] feat(protocol): rename B_BLOCK_PROPOSER to B_PRECONF_REGISTRY (#18255) --- packages/protocol/contracts/layer1/based/LibProposing.sol | 6 +++--- .../layer1/mainnet/addrcache/RollupAddressCache.sol | 2 +- packages/protocol/contracts/shared/common/LibStrings.sol | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index b564ac34261..3552bbae332 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -150,9 +150,9 @@ library LibProposing { revert L1_TOO_MANY_BLOCKS(); } - address permittedProposer = _resolver.resolve(LibStrings.B_BLOCK_PROPOSER, true); - if (permittedProposer != address(0)) { - if (permittedProposer != msg.sender) revert L1_INVALID_PROPOSER(); + address preconfRegistry = _resolver.resolve(LibStrings.B_PRECONF_REGISTRY, true); + if (preconfRegistry != address(0)) { + if (preconfRegistry != msg.sender) revert L1_INVALID_PROPOSER(); local.allowCustomProposer = true; } diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol index 4936556e01f..22a3542a2f0 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol @@ -48,7 +48,7 @@ contract RollupAddressCache is AddressCache { if (_name == LibStrings.B_AUTOMATA_DCAP_ATTESTATION) { return (true, 0x8d7C954960a36a7596d7eA4945dDf891967ca8A3); } - if (_name == LibStrings.B_BLOCK_PROPOSER) { + if (_name == LibStrings.B_PRECONF_REGISTRY) { return (true, address(0)); } if (_name == LibStrings.B_CHAIN_WATCHDOG) { diff --git a/packages/protocol/contracts/shared/common/LibStrings.sol b/packages/protocol/contracts/shared/common/LibStrings.sol index 2d889bd22b9..db4c00a20ae 100644 --- a/packages/protocol/contracts/shared/common/LibStrings.sol +++ b/packages/protocol/contracts/shared/common/LibStrings.sol @@ -5,7 +5,6 @@ pragma solidity ^0.8.24; /// @custom:security-contact security@taiko.xyz library LibStrings { bytes32 internal constant B_AUTOMATA_DCAP_ATTESTATION = bytes32("automata_dcap_attestation"); - bytes32 internal constant B_BLOCK_PROPOSER = bytes32("block_proposer"); bytes32 internal constant B_BRIDGE = bytes32("bridge"); bytes32 internal constant B_BRIDGE_WATCHDOG = bytes32("bridge_watchdog"); bytes32 internal constant B_BRIDGED_ERC1155 = bytes32("bridged_erc1155"); @@ -15,6 +14,7 @@ library LibStrings { bytes32 internal constant B_ERC1155_VAULT = bytes32("erc1155_vault"); bytes32 internal constant B_ERC20_VAULT = bytes32("erc20_vault"); bytes32 internal constant B_ERC721_VAULT = bytes32("erc721_vault"); + bytes32 internal constant B_PRECONF_REGISTRY = bytes32("preconf_registry"); bytes32 internal constant B_PROVER_ASSIGNMENT = bytes32("PROVER_ASSIGNMENT"); bytes32 internal constant B_PROVER_SET = bytes32("prover_set"); bytes32 internal constant B_QUOTA_MANAGER = bytes32("quota_manager"); From 233806e4838aa12e8de436a37979ff3e614119f2 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:03:37 +0800 Subject: [PATCH 056/205] fix(protocol): fix an issue in same transition check (#18254) Co-authored-by: dantaik --- .../protocol/contracts/layer1/based/LibProving.sol | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibProving.sol b/packages/protocol/contracts/layer1/based/LibProving.sol index 0c96335ec8d..3ead8de2ed5 100644 --- a/packages/protocol/contracts/layer1/based/LibProving.sol +++ b/packages/protocol/contracts/layer1/based/LibProving.sol @@ -34,6 +34,7 @@ library LibProving { bool sameTransition; bool postFork; uint64 proposedAt; + bool isSyncBlock; } /// @notice Emitted when a transition is proved. @@ -261,7 +262,9 @@ library LibProving { local.proposedAt = local.postFork ? local.meta.proposedAt : blk.proposedAt; - if (LibUtils.shouldSyncStateRoot(_config.stateRootSyncInternal, local.blockId)) { + local.isSyncBlock = + LibUtils.shouldSyncStateRoot(_config.stateRootSyncInternal, local.blockId); + if (local.isSyncBlock) { local.stateRoot = ctx_.tran.stateRoot; } @@ -367,8 +370,9 @@ library LibProving { local.isTopTier = local.tier.contestBond == 0; - local.sameTransition = - ctx_.tran.blockHash == ts.blockHash && local.stateRoot == ts.stateRoot; + local.sameTransition = local.isSyncBlock + ? ctx_.tran.blockHash == ts.blockHash && local.stateRoot == ts.stateRoot + : ctx_.tran.blockHash == ts.blockHash; if (local.proof.tier > ts.tier) { // Handles the case when an incoming tier is higher than the current transition's tier. From fbb1c824e35adb452176d988f32cf06d0c72b9bf Mon Sep 17 00:00:00 2001 From: David Date: Thu, 17 Oct 2024 10:57:26 +0800 Subject: [PATCH 057/205] docs(protocol): update Hekla deployments (#18257) --- packages/protocol/deployments/hekla-contract-logs.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/protocol/deployments/hekla-contract-logs.md b/packages/protocol/deployments/hekla-contract-logs.md index 18a3f4e41e8..181f4d6560f 100644 --- a/packages/protocol/deployments/hekla-contract-logs.md +++ b/packages/protocol/deployments/hekla-contract-logs.md @@ -111,7 +111,7 @@ ### taikoL1 - proxy: `0x79C9109b764609df928d16fC4a91e9081F7e87DB` -- impl: `0xb179D4038DD6084c548EEf674DAC262F51264e5e.` +- impl: `0xDC76feE152224F280E5c181835AE9cf6Ad208901.` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `4903bec` @@ -126,6 +126,7 @@ - upgraded on Jul 15, 2024 at commit `45281b8` - upgraded on Aug 15, 2024 at `protocol-v1.8.0` with [#17919](https://github.com/taikoxyz/taiko-mono/pull/17919) - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 16, 2024 at commit `233806e` ### assignmentHook From b12b32e92b5803f15047a6da2b73135f12b9406d Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Thu, 17 Oct 2024 10:57:42 +0800 Subject: [PATCH 058/205] docs(taiko-client): update readme how to do integration test (#18256) --- packages/taiko-client/integration_test/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/taiko-client/integration_test/README.md b/packages/taiko-client/integration_test/README.md index 056dbacf88d..2e3d99cb137 100644 --- a/packages/taiko-client/integration_test/README.md +++ b/packages/taiko-client/integration_test/README.md @@ -1,4 +1,8 @@ # How to debug test cases? +- set up config +``` +export L2_NODE=l2_geth +``` - start docker compose From eeeb4afeff8572115c2cf82db149cee7a723f30c Mon Sep 17 00:00:00 2001 From: David Date: Thu, 17 Oct 2024 12:55:02 +0800 Subject: [PATCH 059/205] docs(protocol): update mainnet deployment (#18258) --- packages/protocol/deployments/mainnet-contract-logs-L1.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/protocol/deployments/mainnet-contract-logs-L1.md b/packages/protocol/deployments/mainnet-contract-logs-L1.md index 68f25ddce32..e7564a63ac7 100644 --- a/packages/protocol/deployments/mainnet-contract-logs-L1.md +++ b/packages/protocol/deployments/mainnet-contract-logs-L1.md @@ -209,7 +209,7 @@ - ens: `based.taiko.eth` - proxy: `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a` -- impl: `0xBA1d90BCfA74163bFE09e8eF609b346507D83231` +- impl: `0xf0E6d34937701622cA887a75c150cC23d4FFDf2F` - owner: `admin.taiko.eth` - logs: - deployed on May 1, 2024 @commit`56dddf2b6` @@ -226,6 +226,7 @@ - Upgrade to `0x5fc54737ECC1de49D58AE1195d4A296257F1E31b` @commit`04d8c87` @tx`0x13f54109cb7f7507ad03562b06ea8d8b472043186e44252302583bc64acfb20b` - Upgrade to `0xcEe590fACd976B9BDE87BC1B7620B284c5edD2C3` @commit`2dd30ab` @tx`0xc1f91c375713f601b99cf6d2cdb80c129e036a7c9ec5f75871c4d13216dbbb5c` - Upgrade to `0xBA1d90BCfA74163bFE09e8eF609b346507D83231` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` + - Upgrade to `0xf0E6d34937701622cA887a75c150cC23d4FFDf2F` @commit`b4f8547` @tx`0x8778064404816273804d74c97b051f3865bc03062cfa4b0e9567f4556ad31981` #### tier_provider From 1a460932a704d3660269336540812f33d7e8cbc4 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Sat, 19 Oct 2024 17:25:52 -0700 Subject: [PATCH 060/205] chore(docs-site): remove banner (#18267) --- packages/docs-site/src/content/config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/docs-site/src/content/config.ts b/packages/docs-site/src/content/config.ts index 9129eb8d987..96cdce61ff5 100644 --- a/packages/docs-site/src/content/config.ts +++ b/packages/docs-site/src/content/config.ts @@ -8,9 +8,9 @@ export const collections = { description: z .string() .max(160, { message: "Must be 160 characters or less." }).optional(), - banner: z.object({ content: z.string() }).default({ - content: 'All Hekla Node Runners: Imminent Ontake fork Sep 30th, upgrade needed. Please update your provers to raiko 1.2.0! Click here for more info', - }), + // banner: z.object({ content: z.string() }).default({ + // content: '', + // }), }), }), }), From 94d0dfbc82100fdad0c6c0139094a0c601816eb6 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Sat, 19 Oct 2024 23:26:35 -0700 Subject: [PATCH 061/205] chore(main): release docs-site 1.12.3 (#18268) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 7 +++++++ packages/docs-site/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index f51a5f0d587..d6cbd6c9d3f 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.12.2", + "packages/docs-site": "1.12.3", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index 56c0c1af552..630b150b21e 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.12.3](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.12.2...docs-site-v1.12.3) (2024-10-20) + + +### Chores + +* **docs-site:** remove banner ([#18267](https://github.com/taikoxyz/taiko-mono/issues/18267)) ([1a46093](https://github.com/taikoxyz/taiko-mono/commit/1a460932a704d3660269336540812f33d7e8cbc4)) + ## [1.12.2](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.12.1...docs-site-v1.12.2) (2024-10-14) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index a38ee2c64e8..d30eb437e56 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.12.2", + "version": "1.12.3", "scripts": { "dev": "astro dev", "start": "astro dev", From 684a909e83705c59b2b7a0a991424b7a8e9e03ad Mon Sep 17 00:00:00 2001 From: smtmfft <99081233+smtmfft@users.noreply.github.com> Date: Mon, 21 Oct 2024 13:05:42 +0800 Subject: [PATCH 062/205] feat(protocol): update ric0 & sp1 verification contract (#18269) Co-authored-by: Gavin Yu Co-authored-by: YoGhurt111 --- packages/protocol/package.json | 4 +- .../script/layer1/DeployProtocolOnL1.s.sol | 6 +- .../script/layer1/DeploySP1Verifier.s.sol | 6 +- .../script/layer1/UpdateRisc0Verifier.s.sol | 21 +++ .../script/layer1/UpdateSP1Verifier.s.sol | 23 +++ .../script/layer1/config_dcap_sgx_verifier.sh | 5 + .../verifiers/RiscZeroGroth16Verifier.t.sol | 12 +- .../layer1/verifiers/SP1PlonkVerifier.t.sol | 21 ++- pnpm-lock.yaml | 135 ++++++++++-------- 9 files changed, 149 insertions(+), 84 deletions(-) create mode 100644 packages/protocol/script/layer1/UpdateRisc0Verifier.s.sol create mode 100644 packages/protocol/script/layer1/UpdateSP1Verifier.s.sol diff --git a/packages/protocol/package.json b/packages/protocol/package.json index a066d9a0ad6..dfd54350a7c 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -48,8 +48,8 @@ "merkletreejs": "^0.4.0", "optimism": "github:ethereum-optimism/optimism#v1.8.0", "p256-verifier": "github:taikoxyz/p256-verifier#v0.1.0", - "risc0-ethereum": "github:risc0/risc0-ethereum#v1.0.0", + "risc0-ethereum": "github:risc0/risc0-ethereum#v1.1.2", "solady": "github:Vectorized/solady#v0.0.231", - "sp1-contracts": "github:succinctlabs/sp1-contracts#v2.0.0" + "sp1-contracts": "github:succinctlabs/sp1-contracts#v3.0.0-rc3" } } diff --git a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol index c50953405e8..8e0f49b0ad1 100644 --- a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol +++ b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/utils/Strings.sol"; import "@risc0/contracts/groth16/RiscZeroGroth16Verifier.sol"; -import { SP1Verifier as SP1Verifier200rc } from "@sp1-contracts/src/v2.0.0/SP1VerifierPlonk.sol"; +import { SP1Verifier as SuccinctVerifier } from "@sp1-contracts/src/v3.0.0-rc3/SP1VerifierPlonk.sol"; // Actually this one is deployed already on mainnet, but we are now deploying our own (non via-ir) // version. For mainnet, it is easier to go with one of: @@ -416,8 +416,8 @@ contract DeployProtocolOnL1 is DeployCapability { }); // Deploy sp1 plonk verifier - SP1Verifier200rc sp1Verifier200rc = new SP1Verifier200rc(); - register(rollupAddressManager, "sp1_remote_verifier", address(sp1Verifier200rc)); + SuccinctVerifier succinctVerifier = new SuccinctVerifier(); + register(rollupAddressManager, "sp1_remote_verifier", address(succinctVerifier)); deployProxy({ name: "tier_zkvm_sp1", diff --git a/packages/protocol/script/layer1/DeploySP1Verifier.s.sol b/packages/protocol/script/layer1/DeploySP1Verifier.s.sol index bc504254a34..a77280321ce 100644 --- a/packages/protocol/script/layer1/DeploySP1Verifier.s.sol +++ b/packages/protocol/script/layer1/DeploySP1Verifier.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { SP1Verifier as SP1Verifier200rc } from "@sp1-contracts/src/v2.0.0/SP1VerifierPlonk.sol"; +import { SP1Verifier as SuccinctVerifier } from "@sp1-contracts/src/v3.0.0-rc3/SP1VerifierPlonk.sol"; import "test/shared/DeployCapability.sol"; import "src/layer1/verifiers/SP1Verifier.sol"; @@ -16,8 +16,8 @@ contract DeploySP1Verifier is DeployCapability { vm.startBroadcast(deployerPrivKey); // Deploy sp1 plonk verifier - SP1Verifier200rc sp1Verifier200rc = new SP1Verifier200rc(); - register(rollupAddressManager, "sp1_remote_verifier", address(sp1Verifier200rc)); + SuccinctVerifier succinctVerifier = new SuccinctVerifier(); + register(rollupAddressManager, "sp1_remote_verifier", address(succinctVerifier)); deployProxy({ name: "tier_zkvm_sp1", diff --git a/packages/protocol/script/layer1/UpdateRisc0Verifier.s.sol b/packages/protocol/script/layer1/UpdateRisc0Verifier.s.sol new file mode 100644 index 00000000000..f63398eb35a --- /dev/null +++ b/packages/protocol/script/layer1/UpdateRisc0Verifier.s.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.24; + +import "@risc0/contracts/groth16/RiscZeroGroth16Verifier.sol"; +import "test/shared/DeployCapability.sol"; + +contract UpdateRisc0Verifier is DeployCapability { + uint256 public deployerPrivKey = vm.envUint("PRIVATE_KEY"); + address public rollupAddressManager = vm.envAddress("ROLLUP_ADDRESS_MANAGER"); + + function run() external { + require(deployerPrivKey != 0, "invalid deployer priv key"); + require(rollupAddressManager != address(0), "invalid rollup address manager address"); + + vm.startBroadcast(deployerPrivKey); + RiscZeroGroth16Verifier verifier = + new RiscZeroGroth16Verifier(ControlID.CONTROL_ROOT, ControlID.BN254_CONTROL_ID); + register(rollupAddressManager, "risc0_groth16_verifier", address(verifier)); + vm.stopBroadcast(); + } +} diff --git a/packages/protocol/script/layer1/UpdateSP1Verifier.s.sol b/packages/protocol/script/layer1/UpdateSP1Verifier.s.sol new file mode 100644 index 00000000000..3e5fd060e0f --- /dev/null +++ b/packages/protocol/script/layer1/UpdateSP1Verifier.s.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "@sp1-contracts/src/v3.0.0-rc3/SP1VerifierPlonk.sol"; +import "test/shared/DeployCapability.sol"; + +contract UpdateSP1Verifier is DeployCapability { + uint256 public deployerPrivKey = vm.envUint("PRIVATE_KEY"); + address public rollupAddressManager = vm.envAddress("ROLLUP_ADDRESS_MANAGER"); + + function run() external { + require(deployerPrivKey != 0, "invalid deployer priv key"); + require(rollupAddressManager != address(0), "invalid rollup address manager address"); + + vm.startBroadcast(deployerPrivKey); + + // Deploy sp1 plonk verifier + SP1Verifier sp1Verifier = new SP1Verifier(); + register(rollupAddressManager, "sp1_remote_verifier", address(sp1Verifier)); + + vm.stopBroadcast(); + } +} diff --git a/packages/protocol/script/layer1/config_dcap_sgx_verifier.sh b/packages/protocol/script/layer1/config_dcap_sgx_verifier.sh index 9327476178d..ae55b2683a5 100755 --- a/packages/protocol/script/layer1/config_dcap_sgx_verifier.sh +++ b/packages/protocol/script/layer1/config_dcap_sgx_verifier.sh @@ -29,6 +29,11 @@ if [ $# -eq 0 ]; then exit 1 fi +# dev addresses of the verifier/attester/pemCertChain. +# export SGX_VERIFIER_ADDRESS=0xebB0DA61818F639f460F67940EB269b36d1F104E +# export ATTESTATION_ADDRESS=0xCFd1a900c9C0aB14443460b8F011d8076db636c2 +# export PEM_CERTCHAIN_ADDRESS=0xaa22e95F5Bf27E07c02e6cc41A700597832FA30d + # Hekla addresses of the verifier/attester/pemCertChain. export SGX_VERIFIER_ADDRESS=0x532EFBf6D62720D0B2a2Bb9d11066E8588cAE6D9 export ATTESTATION_ADDRESS=0xC6cD3878Fc56F2b2BaB0769C580fc230A95e1398 diff --git a/packages/protocol/test/layer1/verifiers/RiscZeroGroth16Verifier.t.sol b/packages/protocol/test/layer1/verifiers/RiscZeroGroth16Verifier.t.sol index 05ba5dab8e2..fabebf4101a 100644 --- a/packages/protocol/test/layer1/verifiers/RiscZeroGroth16Verifier.t.sol +++ b/packages/protocol/test/layer1/verifiers/RiscZeroGroth16Verifier.t.sol @@ -31,7 +31,7 @@ contract RiscZeroGroth16VerifierTest is TaikoL1TestBase { ); rv.setImageIdTrusted( - bytes32(0x4f6beb0c538971a81491c22de3995c82e6fd7938d5090366d7b618d5f6df504d), true + bytes32(0x7669d1059d0dfa9537c2b3581569b8bc244495e6c406d07dea628bc8cf480392), true ); } @@ -44,9 +44,9 @@ contract RiscZeroGroth16VerifierTest is TaikoL1TestBase { vm.startPrank(Emma); bytes memory seal = - hex"310fe59815ffa3b596af0bdccd0aaa064495d5db94fe367414d3a9212c8ce17383717e531ced511d89956c7c8aa0cc8531dac8660093581c5ae19c48a39fc14fd98dc1050684083592dab0fd9a2482c47ab4833c4f9b9a6770a7ce439a4f0e94bc035809138a7566873e34d202708ce4858665202417e645aeb299d4f7633fead7c667562b9104bdc79a0c379145ca2431598beec20b75a722915ff0a872771652583f9206e75bd317e73b1af7705f70aa52c30bc33ea6792b9e080177502fe074b87beb1add2ebe112c7bd17667a418fd9ef6d8e89e606c5efff14b5df24f7aa40c5c4f2bcaaa6f206d2d1e15356c533c5210258a6f1b1d1d22cb63cff0323863d7fe3b"; + hex"50bd1769220929ac1ac3f9d3a8a4e7f4bcec136f8ea44be5a7248785d83b13879b409b762480f0ca5f38b164091e2def50b35829e453d1418492c01cc1b924e851580fe208d3808a925ce28724f0a862b944074f5277c4bd4b3153c1a1ff87056740628008fcc8d7edef53215db823e4773334e6f5fe08fed84c7ebd005fe4f42b80891724044cadde535253739049d99abc1a91a4a987ad93b0fcedbdb2440c9c2d662101509acb5f869bdb2e15d2609aa1a6c6c1a5a83e04fb2f77d25163b5675351be2204a497f20d43277d211adcc66b730b5d8d7635bb4a456cbf9029904ef2493a0346cd8e1aa2c270a160bc28bca77336bf18fe91b9dc8790a15f1618188dafa9"; bytes32 imageId = - bytes32(0x4f6beb0c538971a81491c22de3995c82e6fd7938d5090366d7b618d5f6df504d); + bytes32(0x7669d1059d0dfa9537c2b3581569b8bc244495e6c406d07dea628bc8cf480392); bytes32 journalDigest = bytes32(0xa82287ae36a69b51f8013851b3814ff1243da5dfa071f6fd9b46b85445895553); @@ -101,8 +101,8 @@ contract RiscZeroGroth16VerifierTest is TaikoL1TestBase { function test_risc0_verifyBatchProof() public { vm.startPrank(Emma); - bytes32 aggProofImageId = 0x83e7411adcc296e0a021ff032a868434aa2a519b9d11ad44d11d443832280b44; - bytes32 blkProofImageId = 0x28879b90699846864c97f8f32e1b12aabd8ce13135302345d6ad242fa81ab40d; + bytes32 aggProofImageId = 0x8e192ebe6872b47645367692838b2d697c467f5e4543d605b0ef7d10365fb11a; + bytes32 blkProofImageId = 0x7669d1059d0dfa9537c2b3581569b8bc244495e6c406d07dea628bc8cf480392; // proof generation elf rv.setImageIdTrusted(aggProofImageId, true); @@ -145,7 +145,7 @@ contract RiscZeroGroth16VerifierTest is TaikoL1TestBase { }); bytes memory seal = - hex"310fe59810425afc4ed2bae56dfd76e9045f6cd41da30ae8f07a239e86fdb157bf37b0f51b937cb8deccab0d201623d530d0800c208f66dad3f6a38bc1df34408994dec1179209a5f94411e015b20e723512150cfb7e295debeb7ef4f8186cddcf19ba6527ee0d2a0fb8825568682a2fe48e2f73fe9fa052379824751c3bd3f1353f44fe1857e07f5b4801846637b68eafb93aba0c8de8fdfffc76af62a513966f92d9750a977bce0568eb7438fa3497848bfce3e5fd815d9c24b4600e12d0d405d1fd76301ccf27547bddd49a2fa12d1a414f49c2030d0cdf29a87684964a171eefb7e82a5f86acbaacd8cd24d6c3bab06a568f4869087e825ee79237770f23315f3c5c"; + hex"50bd176901a68e3f05b0e651b6e5ff18e5463be794699597908b42b9ac3195a464c2b67320fb89c8199909a5ef1ff32366d1047009f4758294090f4ce613129f64a9ff58109cf0f6cb0f22e194dab522a2938631b138f4afeb075117a05d1ad75093515e15de11d9b231b79be5d42b0c7921ba22d62a6594258745f3e5c2e10508741fd813581ea8fab28ee1d07cb1f2e84500e2993cff3ca2e37284cfb5cfec5fe301d92f4246b2dbffc17d2ef5d889f50b8f28c51d1bacd6b0c55399e574969bb0a77207ceda541460cfec3e0c315889d62c0c91c5cf0cecd515ada96712735e5cf0ea1664af11012004ba7cb6adea3751911c8afe5eb5979b1adf43da6f9c18837f3d"; // TierProof TaikoData.TierProof memory proof = TaikoData.TierProof({ tier: 100, diff --git a/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol b/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol index 90a59361860..0ac7dd6c365 100644 --- a/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol +++ b/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { SP1Verifier as SP1PlonkVerifier } from "@sp1-contracts/src/v2.0.0/SP1VerifierPlonk.sol"; +import { SP1Verifier as SuccinctVerifier } from "@sp1-contracts/src/v3.0.0-rc3/SP1VerifierPlonk.sol"; import "../based/TaikoL1TestBase.sol"; -contract SP1PlonkVerifierTest is TaikoL1TestBase { +contract SuccinctVerifierTest is TaikoL1TestBase { function deployTaikoL1() internal override returns (TaikoL1) { return TaikoL1(payable(deployProxy({ name: "taiko", impl: address(new TaikoL1()), data: "" }))); @@ -15,8 +15,8 @@ contract SP1PlonkVerifierTest is TaikoL1TestBase { // Call the TaikoL1TestBase setUp() super.setUp(); - SP1PlonkVerifier verifier = new SP1PlonkVerifier(); - console2.log("Deployed SP1PlonkVerifier to", address(verifier)); + SuccinctVerifier verifier = new SuccinctVerifier(); + console2.log("Deployed SuccinctVerifier to", address(verifier)); registerAddress("sp1_remote_verifier", address(verifier)); // Deploy Taiko's SP1 proof verifier @@ -29,7 +29,7 @@ contract SP1PlonkVerifierTest is TaikoL1TestBase { ); sp1.setProgramTrusted( - bytes32(0x00851c6ce0153ea4f7a6b8f9923ae1ad15d47476925777f4375d1a4b13137231), true + bytes32(0x00b6e596137c781eb0d53073d86d8a7ab56cffc5b5f04b5297ef2e62ac0c56bf), true ); } @@ -42,9 +42,8 @@ contract SP1PlonkVerifierTest is TaikoL1TestBase { vm.startPrank(Emma); bytes memory sp1Proof = - hex"4aca240a1f6e9f5f6927e5468a58a7ca24addf975aacc9293e89729bbb84f814725c911c2488230b0922c072f3261a6480dca80af7d3f1ac54aaef2d1929f06a89f92cb71fd0f2015f1bf32ae904e221d342e1efcbd2b1f2275acda3e2dc1e779297937903643bcbbe5a4f7261d091c264d47810e1a5ca2e1ba20b7b1b069567d3ba895d0e088f70848009522bb67c39c108eb1b29272902fbb5d18bb74b5c4085569879188b5c8f0730da420f6da4e656b66eb9a7ce01da7aff3efe9033e02df0549dc214195b64ca178b9e50b2b35c8449eeeef60a6a0056d9c6a525d5684a544088322a14f46d15740fe42ba83c8c6c57548c415610a545d6b2c7b4146a76a2c957ea2a1975915e864e420c006176e00e6ed26810e80d5c6cec4143daa50b61ec0cb207661ad396db21744b713c0454d78752e5e6eee2e9f5273f30322461fa32b2932d7c8a467de8fac07d8363238245369f3bd196e443ff90aec1754537019eaa4928ab7b0a34d973a5c15123d2820923153f47c0b742ebf1e8d952626a77aa957804446347f03aee26e4bddadba1a3b0f275b7271ff1cbcca1ca0756e22113165f2d0472fc2ac3fa2b4593b472c3333cef81bde5fddb31fed8a52fb450de3b74cd0ab415777a733c22d1aab02d794dac192ca2d3088a7b379dba8896c842bf599d15ab8792e980773a131bfdaa0ab4ff7dfae9c98fb5d6774a8007c3927ffd99ce1acd527de2273f9c1163019cfca98e9bea7a56ff0ca0e8cac93c2096860f6aff14ec69181f6554bca186646d1002a8c2ac0fbdde5d4440242360bb9344399a6429bebc7f97f56090217c091b0e655579d598e3979a1acc8a516cfee2dd43c3341c81a4163221e6a4980fdfb2af09d30c9fa18ad3fb9d10bf4d35fe48663dc597277c25927396fb8d8501b3829f8eccc672515d2a249dec90057d3fe53ca105851257092388f2823fecbf09a8ae35e4e0dcf0ec615366a4db47b7d7e1af480a431957268d2e5283a690f9168c215d481e07188c7bfd5bd227d034d74a035119410eb23b74bd2fb0711eefb7502fc61119161d207c42e88cf73640719305a753052f8665d2222b4ae696fa541c99ffcc9c38153a46675fbdf596d00104b4b0b41708da9b30c70462422bba87bdc2b011a8a302649b7249250ce71793cedfb3f5db1622a7ec48ba7ed576f9ced6b2c9c661e9bed64e6f484f1862b0cd71be2aa628"; - bytes32 vKey = bytes32(0x00851c6ce0153ea4f7a6b8f9923ae1ad15d47476925777f4375d1a4b13137231); - + hex"8fd4de722cab7cfc38b19720f0152ca6311a0a907219bf8dd0c449fe0b3e919f786053d124bd3e9bf8cfa21c98cbea4a43cf70c9c96af9a867a57277a763f5d19331cb772086bb134e1a27d16405dde7b59a654d2146a7d822fa9782e461b3cb4eb272000dc4d93a25a6be5cf1006217fb4be228102117d0a317052b4dd0434482ded2021ab08599ceadcf1cc15c9348dd32ec50d2b6c4b646e0c12472b266832b269d0926a6e6b95b473aa3fdce76052ca64818631c2bcdbe603ad8f87ed0bdd01ab9a00c2e00635547b918704c8ea4b5c7d3e1e8ddf7720f1f58178d10b254ce1090e20fcbdc1f89ccfc9ff88cc25ff96ebc683eed7f9792584446f923a7b30e0d248b133655fcdba58c2c6b8f4b79f4276211df7a78ef5ce97063fed0ebcbb005d47804fd8a75f57cc5f0524ce41601dcbbbc21f73eeac25cc28ec8b66f1e03e8a7202a878463c8ac8038639e4fd211be2b095055e8f06392e0c82c1bae65f791f0c92a6e77bec5e2b62812a9060949dbcca69f714c8b0cca0272d718c9c9b5d410cd2ebbdbb9a143dea6eeb17f39115475409169245f3b61b1c46a9ea6a3296797820c8892a15001619923a972ddbbd8c7dc16df8a698b63ff84f5b34236d464ab252495aebe4902046fb4879e5ca9be9a51b26d672718491adb533ab900b40ef3e70138310b399d6c544e35d4750d3ef44cfa8b721dcff6f5c55a5587da65c1216a26550a3e35dfa4bf583b90e99b3ac051901b689b17ac0390f6e49a334c62d6f1082cda2cafad0d059e00b61173d7ce925fbea86e03c8fe76d47d98ac2090e6051f4d0528029ff31747260bdd9692dc105bd598fb4816a45ef9e13705714fcdda1c19e82a87e5dbf0caff752ce3396a4ebe6d9399c4d422285bcfff0cdf81bddf19ffeb7b405da2dceb60e661c597226eaba2e753e81a92ad19cec6510bd82de50beeff70200e2241cf7fe9d8270c9a4779480c49995d5c99cd9ae7d5c1f9acdf1b4635b78b4a2d8975ce0f587eccce699f590594d837426c5bd59fc078f811ba2717e3816f83cb191077a3ccbb5cd09adf92ff69bcbc9fcaf0fd22bc0c573750251553c7f2cec501e12761e48a9c7377e307c5202ec5707ff6b9e41b3a3085380fc07b0fed0e3abf32aaa6922d7d9649f8a13a1083fe58ccfa9501757be0e85a2ecfd9c2bbeffce6922a421a2ccdca93c7632974a8c6618558e5a33eb4d8ed1d"; + bytes32 vKey = bytes32(0x00b6e596137c781eb0d53073d86d8a7ab56cffc5b5f04b5297ef2e62ac0c56bf); console2.logBytes(abi.encodePacked(vKey, sp1Proof)); // TierProof TaikoData.TierProof memory proof = @@ -105,11 +104,11 @@ contract SP1PlonkVerifierTest is TaikoL1TestBase { // proof generation elf vk digest which is not a bn254 hash // but a sha256 hash from the same Sp1Verifykey. sp1.setProgramTrusted( - bytes32(0x25a022bd2d3ceba748620b63401e94bb156f195a0dc2cf445c2bdfc20358d393), true + bytes32(0x5b72cb095f1e07ac1aa60e7b06d8a7ab2b67fe2d57c12d4a2fde5cc52c0c56bf), true ); // proof aggregation elf sp1.setProgramTrusted( - bytes32(0x000b55d1eea2d844974b3449118e4221bdf44534897d530dd9ae54201a36ad97), true + bytes32(0x0041b4e466ae95d8e71c376eac1f45b8999d5eb1509b39edc12bf97521097880), true ); vm.startPrank(address(L1)); @@ -149,7 +148,7 @@ contract SP1PlonkVerifierTest is TaikoL1TestBase { // TierProof bytes memory data = - hex"000b55d1eea2d844974b3449118e4221bdf44534897d530dd9ae54201a36ad9725a022bd2d3ceba748620b63401e94bb156f195a0dc2cf445c2bdfc20358d3934aca240a294f40587144c884ce9b2326d1b8e002218abeb9535dbfb27fde012f1eba3fba17ee609acf6acf73790d3063da18707342809998f3d8db3fcd5d094b29bb48d22ff04e45f4de3c6026cd67256e45ca562e786db8b36d51c1c5f2f862c993e38f0851ef22ac10ea44ae5b62899650d8a8bc76a983caef459e88c514e1cbd34aea1b6f71f91410d6365b9e635cb4c56b1f6b98eb883d7815273d49fff1c5a4addb0cca4a2f394210ff2d7fc1c33059201a663c9f38f01ef198ef345d4d3d3810b70c99d241029c4a099d3f5ab3b6f5602e04344cc55c821f97fcc163dd472b252119f2940b56f0eee79a0fd5062b20c3445c79d70c773d69abaeced5b68c25f5ae1c385a7f9e8d4c2bc24f9627fa814d8269f2cf73f704b3c46ea8dd0219d41db81e1dc0ac4f62d8d6b8715c5b1637d160c67cde18ee3c66c860830297cc875656120418336954c73523765728f31a0a0bdbf630ad9d937ddf9a1f8dbf88ca281a280e466fe7f8fe8c000826c01930b0d6af20210003b5eac307cd107dff2239340b36e4cbe03ffa0e3bf434aea3252b9b05504321916ac8110f83de55bc9635c62cb569714ad44343866aa1e60e3dd93c4789c0ae94207861bf09838f83cb32a9033d94d3a4d674fcc435cd1b86afd5260c0f6d1501737120d070b950aff9ce5e2821b54d7df5bc8fb28e4f4312f217e9bca61bde4b57cda1075f7bbaedbc259b0f6c6e92661ad9404e0bcb3f15b9839f09fa87d278c2f0f9d99e7eea9ff1f7f023b455edeac48de876a7943796ffba85f3bf1c662081e7e563255f4c268e8711123094ccd2d38b1d3f1ce2c485529b26ab6372fbc3638ffec3aeff657f21a8cf13152c305d2fb084234246dbad615832e98b8c63e8fe582a6fad6efb41642c0018100a1b2f3e2479cb09eaf1d86e530ad63d1d117430a87dcae5182540ad05fd1a17cd482143e3d18c0c82554c71b16c1a62cbad06037c0c61b9894717e681b12e42a110b132225dd8af852412f687ec229710fe17db56c28aad002d5d1313762864a7e8d79b65b9f59f3adcba9c82b891721f7c488d482d5b715f059e3d299602ea0e25424ef254362ac70781e66d35349755e76683c045f4824a6c3b38a9481ace0378d91f74a89cf1138c78f676a1a72931469f8016d9fe1246ae2ccf83422cfeb943fee210a39abcd0551f545f6929fce1722585de936142b2fe1736ccec"; + hex"0041b4e466ae95d8e71c376eac1f45b8999d5eb1509b39edc12bf975210978805b72cb095f1e07ac1aa60e7b06d8a7ab2b67fe2d57c12d4a2fde5cc52c0c56bf8fd4de721f01f0d571dab506ab0a8c4b99f357f11b4fc8b47ab97c2efa686437fc053872083c9e70147649c2fbaa5e68e77b014a024b20206b865bd3a1c28ced4d21cba41de4ac423e9fd71b6a0193f33ebb9e06805e13d95032fe8862548800823b85b3132160d62dddcc882a51c62aab4ba196f6fcf09fd0943ef8153ac99f9982f01a30052e27bb82d88f5506537c18880f36219fe17751b562ecf6e08685cdafcafe2bec9ca35246370a51e4570ee437eca2d9fd373fc26f74dc3c5658ed6fc9a5c60a2245b77dd711b1a96992551bd101a9ce764dff8704c87f95f8d4669b8bf65c25c086d160405532b0eff81477135ae6b3ef791c7539ded4f525ab0c4d0bc179029836461907f0cf3c04d681395a10c8240ced3da9d30dfabd9ef5e4adb75dda11027bad2cc8e8b4ab2648137fa9bb44e6c21ec3cff40c1e356dd9e2d0db572f2f030b9e591c91cc5210beb693fc66ce5d51ecbb23b3f24af0e0e280ea1e62a3036d2da06fdcde9a0c8db3a3773e03e1476588ff54e47543e86f7cdaf37bbaa8124b1d2544e423be363a8a07aed33b1fd242631902f91bcdcf8405e59886d9ae073a20596079eb474c33bb9d14bc8d84d9cc6033b211ddbb97039734bedaccef163c7ac8df54a7760434563ad4e90a5526e9ac1e3535707cb1cb1867aa83e6ca0ecc4fd402eda1c35213f546e3d171c9660965c08e3d5f3e4de6d0163e0a18d922d56ba61565738167c49d8b1262c48ae47d749ab7ddbd7caf8a235115649ef32817e387937415e50aecb1e4614b183d4e8813e5809100e8b36843c9e29291d21b6e3309c6f534b3e6a40443d0efee93b2fceae0e2a39e59c95dbd672dbefb1827d46c1e9794a4bea891fa3fcd8403916185369c0c94fd4e93a45f53d2fe3b3e15e8d2114f9afcb7a3863d92a3259fb315d5c0bc9ad09e887e119de3e74a49b60bb47a4d3901835087c7fd1d9686fd83f81fc1eb7d0498b1c5f9a4d299af7ded192d8fe5e012fded12f7f7238926fa8b5207220d524756c49076abaf6e8327120e7bb56699fcd13d94cb50bc01e306552db7e8af06efbb954bff76efc844da0e14952b5b8480b0522296e67a8ebc2581bf8a8c6bcb36228949b483d8ce592cd2186c2c8ea51515ae38ceaac637dc170bb9a1755cdb3d94ffdeee7d0c5f78ecb60fb12b04f1951c38a5520feffe350aeb4046a1909d478f0605933fb5edfe50d9"; TaikoData.TierProof memory proof = TaikoData.TierProof({ tier: 0, data: data }); // `verifyProof()` diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d706304da68..a2afee63b23 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,10 +24,10 @@ importers: version: 2.26.2(debug@4.3.4) '@wagmi/connectors': specifier: ^4.3.1 - version: 4.3.10(yrxxgsr3s6m7a4itnzsb2c7inm) + version: 4.3.10(vnbhrjghrun7rfuxsawo7otej4) '@wagmi/core': specifier: ^2.8.1 - version: 2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + version: 2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) '@walletconnect/ethereum-provider': specifier: ^2.12.2 version: 2.12.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) @@ -36,7 +36,7 @@ importers: version: 2.6.2(@types/react@18.3.5)(react@18.2.0) '@web3modal/wagmi': specifier: ^4.1.11 - version: 4.1.11(@types/react@18.3.5)(@wagmi/connectors@4.3.10(yrxxgsr3s6m7a4itnzsb2c7inm))(@wagmi/core@2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4)) + version: 4.1.11(@types/react@18.3.5)(@wagmi/connectors@4.3.10(vnbhrjghrun7rfuxsawo7otej4))(@wagmi/core@2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8)) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.17) @@ -63,7 +63,7 @@ importers: version: 4.0.0(svelte@4.2.17) viem: specifier: ^2.9.29 - version: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + version: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) devDependencies: '@playwright/test': specifier: ^1.43.1 @@ -97,7 +97,7 @@ importers: version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10) abitype: specifier: ^1.0.2 - version: 1.0.2(typescript@5.4.3)(zod@3.22.4) + version: 1.0.2(typescript@5.4.3)(zod@3.23.8) ajv: specifier: ^8.12.0 version: 8.12.0 @@ -437,14 +437,14 @@ importers: specifier: github:taikoxyz/p256-verifier#v0.1.0 version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da risc0-ethereum: - specifier: github:risc0/risc0-ethereum#v1.0.0 - version: risc0-ethereum#v1.0.0@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900 + specifier: github:risc0/risc0-ethereum#v1.1.2 + version: risc0-ethereum#v1.1.2@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/b8a14213d92fff07dacda993804e7edb7946ca58 solady: specifier: github:Vectorized/solady#v0.0.231 version: https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b sp1-contracts: - specifier: github:succinctlabs/sp1-contracts#v2.0.0 - version: sp1-contracts#v2.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb + specifier: github:succinctlabs/sp1-contracts#v3.0.0-rc3 + version: sp1-contracts#v3.0.0-rc3@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/a6f13bf51f02ee8ef99234ce0d77c153ed98e4be devDependencies: '@types/node': specifier: ^20.11.30 @@ -733,10 +733,10 @@ importers: version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10) '@wagmi/connectors': specifier: ^4.1.18 - version: 4.1.18(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + version: 4.1.18(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) '@wagmi/core': specifier: ^2.8.0 - version: 2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + version: 2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) '@web3modal/common': specifier: ^5.0.11 version: 5.1.8 @@ -745,7 +745,7 @@ importers: version: 4.1.11 '@web3modal/wagmi': specifier: ^4.1.1 - version: 4.1.11(xgqwdfny5esqdjztzawvofqbai) + version: 4.1.11(7bejpi3a2bqeihrssz3xbwxki4) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.13) @@ -772,7 +772,7 @@ importers: version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) viem: specifier: ^2.15.1 - version: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + version: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 @@ -10819,8 +10819,8 @@ packages: ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - risc0-ethereum#v1.0.0@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900: - resolution: {tarball: https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900} + risc0-ethereum#v1.1.2@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/b8a14213d92fff07dacda993804e7edb7946ca58: + resolution: {tarball: https://codeload.github.com/risc0/risc0-ethereum/tar.gz/b8a14213d92fff07dacda993804e7edb7946ca58} version: 0.0.0 rlp@2.2.7: @@ -11146,8 +11146,8 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - sp1-contracts#v2.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb: - resolution: {tarball: https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb} + sp1-contracts#v3.0.0-rc3@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/a6f13bf51f02ee8ef99234ce0d77c153ed98e4be: + resolution: {tarball: https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/a6f13bf51f02ee8ef99234ce0d77c153ed98e4be} version: 0.0.0 space-separated-tokens@2.0.2: @@ -13097,8 +13097,8 @@ snapshots: '@aws-crypto/sha1-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.577.0 - '@aws-sdk/client-sts': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/client-sso-oidc': 3.577.0(@aws-sdk/client-sts@3.577.0) + '@aws-sdk/client-sts': 3.577.0 '@aws-sdk/core': 3.576.0 '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) '@aws-sdk/middleware-bucket-endpoint': 3.577.0 @@ -13155,11 +13155,11 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.577.0': + '@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0)': dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/client-sts': 3.577.0 '@aws-sdk/core': 3.576.0 '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) '@aws-sdk/middleware-host-header': 3.577.0 @@ -13198,6 +13198,7 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: + - '@aws-sdk/client-sts' - aws-crt '@aws-sdk/client-sso@3.577.0': @@ -13243,11 +13244,11 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)': + '@aws-sdk/client-sts@3.577.0': dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.577.0 + '@aws-sdk/client-sso-oidc': 3.577.0(@aws-sdk/client-sts@3.577.0) '@aws-sdk/core': 3.576.0 '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0) '@aws-sdk/middleware-host-header': 3.577.0 @@ -13286,7 +13287,6 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - aws-crt '@aws-sdk/core@3.576.0': @@ -13320,7 +13320,7 @@ snapshots: '@aws-sdk/credential-provider-ini@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)(@aws-sdk/client-sts@3.577.0)': dependencies: - '@aws-sdk/client-sts': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/client-sts': 3.577.0 '@aws-sdk/credential-provider-env': 3.577.0 '@aws-sdk/credential-provider-process': 3.577.0 '@aws-sdk/credential-provider-sso': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) @@ -13377,7 +13377,7 @@ snapshots: '@aws-sdk/credential-provider-web-identity@3.577.0(@aws-sdk/client-sts@3.577.0)': dependencies: - '@aws-sdk/client-sts': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0) + '@aws-sdk/client-sts': 3.577.0 '@aws-sdk/types': 3.577.0 '@smithy/property-provider': 3.0.0 '@smithy/types': 3.0.0 @@ -13504,7 +13504,7 @@ snapshots: '@aws-sdk/token-providers@3.577.0(@aws-sdk/client-sso-oidc@3.577.0)': dependencies: - '@aws-sdk/client-sso-oidc': 3.577.0 + '@aws-sdk/client-sso-oidc': 3.577.0(@aws-sdk/client-sts@3.577.0) '@aws-sdk/types': 3.577.0 '@smithy/property-provider': 3.0.0 '@smithy/shared-ini-file-loader': 3.0.0 @@ -19102,16 +19102,16 @@ snapshots: - bufferutil - utf-8-validate - '@wagmi/connectors@4.1.18(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + '@wagmi/connectors@4.1.18(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4)': dependencies: '@coinbase/wallet-sdk': 3.9.1 '@metamask/sdk': 0.14.3(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) - '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) - '@wagmi/core': 2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@wagmi/core': 2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) '@walletconnect/ethereum-provider': 2.11.2(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) '@walletconnect/modal': 2.6.2(@types/react@18.3.5)(react@18.2.0) - viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -19138,16 +19138,16 @@ snapshots: - utf-8-validate - zod - '@wagmi/connectors@4.3.10(yrxxgsr3s6m7a4itnzsb2c7inm)': + '@wagmi/connectors@4.3.10(vnbhrjghrun7rfuxsawo7otej4)': dependencies: '@coinbase/wallet-sdk': 3.9.1 '@metamask/sdk': 0.20.3(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@wagmi/core': 2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + '@wagmi/core': 2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) '@walletconnect/ethereum-provider': 2.13.0(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10) '@walletconnect/modal': 2.6.2(@types/react@18.3.5)(react@18.2.0) - viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -19212,11 +19212,11 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4)': + '@wagmi/core@2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) - viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) zustand: 4.4.1(@types/react@18.3.5)(react@18.2.0) optionalDependencies: typescript: 5.4.3 @@ -19241,11 +19241,11 @@ snapshots: - immer - react - '@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + '@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4)': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) - viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) zustand: 4.4.1(@types/react@18.3.5)(react@18.2.0) optionalDependencies: typescript: 5.4.3 @@ -20415,34 +20415,34 @@ snapshots: lit: 3.1.0 qrcode: 1.5.3 - '@web3modal/wagmi@4.1.11(@types/react@18.3.5)(@wagmi/connectors@4.3.10(yrxxgsr3s6m7a4itnzsb2c7inm))(@wagmi/core@2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))': + '@web3modal/wagmi@4.1.11(7bejpi3a2bqeihrssz3xbwxki4)': dependencies: - '@wagmi/connectors': 4.3.10(yrxxgsr3s6m7a4itnzsb2c7inm) - '@wagmi/core': 2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + '@wagmi/connectors': 4.1.18(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + '@wagmi/core': 2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) '@web3modal/polyfills': 4.1.11 '@web3modal/scaffold': 4.1.11(@types/react@18.3.5)(react@18.2.0) '@web3modal/scaffold-react': 4.1.11(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@web3modal/scaffold-utils': 4.1.11(@types/react@18.3.5)(react@18.2.0) '@web3modal/scaffold-vue': 4.1.11(@types/react@18.3.5)(react@18.2.0) '@web3modal/siwe': 4.1.11(@types/react@18.3.5)(react@18.2.0) - viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4) optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' - '@web3modal/wagmi@4.1.11(xgqwdfny5esqdjztzawvofqbai)': + '@web3modal/wagmi@4.1.11(@types/react@18.3.5)(@wagmi/connectors@4.3.10(vnbhrjghrun7rfuxsawo7otej4))(@wagmi/core@2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))': dependencies: - '@wagmi/connectors': 4.1.18(@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)))(@types/react@18.3.5)(@wagmi/core@2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.25.2)(@babel/preset-env@7.23.9(@babel/core@7.25.2))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10))(react@18.2.0)(rollup@4.21.3)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) - '@wagmi/core': 2.8.0(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@wagmi/connectors': 4.3.10(vnbhrjghrun7rfuxsawo7otej4) + '@wagmi/core': 2.10.2(@types/react@18.3.5)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@5.0.10)(viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) '@web3modal/polyfills': 4.1.11 '@web3modal/scaffold': 4.1.11(@types/react@18.3.5)(react@18.2.0) '@web3modal/scaffold-react': 4.1.11(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@web3modal/scaffold-utils': 4.1.11(@types/react@18.3.5)(react@18.2.0) '@web3modal/scaffold-vue': 4.1.11(@types/react@18.3.5)(react@18.2.0) '@web3modal/siwe': 4.1.11(@types/react@18.3.5)(react@18.2.0) - viem: 2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8) optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -20528,15 +20528,15 @@ snapshots: typescript: 5.4.3 zod: 3.23.8 - abitype@1.0.2(typescript@5.4.3)(zod@3.22.4): + abitype@1.0.2(typescript@5.4.3)(zod@3.23.8): optionalDependencies: typescript: 5.4.3 - zod: 3.22.4 + zod: 3.23.8 - abitype@1.0.5(typescript@5.4.3)(zod@3.23.8): + abitype@1.0.5(typescript@5.4.3)(zod@3.22.4): optionalDependencies: typescript: 5.4.3 - zod: 3.23.8 + zod: 3.22.4 abitype@1.0.5(typescript@5.4.5)(zod@3.23.8): optionalDependencies: @@ -27340,7 +27340,7 @@ snapshots: hash-base: 3.1.0 inherits: 2.0.4 - risc0-ethereum#v1.0.0@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/5fbbc7cb44ab37ce438c14c087ba6c4e0a669900: {} + risc0-ethereum#v1.1.2@https://codeload.github.com/risc0/risc0-ethereum/tar.gz/b8a14213d92fff07dacda993804e7edb7946ca58: {} rlp@2.2.7: dependencies: @@ -27863,7 +27863,7 @@ snapshots: source-map@0.7.4: {} - sp1-contracts#v2.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/af1ae093ef8a8f68b022aa8f0f7ad9ffd94aa6fb: {} + sp1-contracts#v3.0.0-rc3@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/a6f13bf51f02ee8ef99234ce0d77c153ed98e4be: {} space-separated-tokens@2.0.2: {} @@ -29070,14 +29070,14 @@ snapshots: - utf-8-validate - zod - viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8): + viem@2.21.7(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 '@scure/bip32': 1.4.0 '@scure/bip39': 1.4.0 - abitype: 1.0.5(typescript@5.4.3)(zod@3.23.8) + abitype: 1.0.5(typescript@5.4.3)(zod@3.22.4) isows: 1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) webauthn-p256: 0.0.5 ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -29123,6 +29123,23 @@ snapshots: - utf-8-validate - zod + viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@5.0.10)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.4.3)(zod@3.23.8) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + viem@2.9.29(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 From be08e8b846f798bb8259bfa0ae73bd729a5aaf79 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 21 Oct 2024 22:24:56 -0700 Subject: [PATCH 063/205] chore(main): release taiko-client 0.39.0 (#18247) --- .release-please-manifest.json | 2 +- packages/taiko-client/CHANGELOG.md | 17 +++++++++++++++++ packages/taiko-client/package.json | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d6cbd6c9d3f..ee4681ce84d 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -9,7 +9,7 @@ "packages/relayer": "0.12.0", "packages/snaefell-ui": "1.1.0", "packages/supplementary-contracts": "1.0.0", - "packages/taiko-client": "0.38.0", + "packages/taiko-client": "0.39.0", "packages/taikoon-ui": "1.3.0", "packages/ui-lib": "1.0.0" } diff --git a/packages/taiko-client/CHANGELOG.md b/packages/taiko-client/CHANGELOG.md index 43d81ace672..ee0a2054587 100644 --- a/packages/taiko-client/CHANGELOG.md +++ b/packages/taiko-client/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [0.39.0](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.38.0...taiko-client-v0.39.0) (2024-10-21) + + +### Features + +* **taiko-client:** update `OntakeForkHeight` in mainnet ([#18253](https://github.com/taikoxyz/taiko-mono/issues/18253)) ([21c6235](https://github.com/taikoxyz/taiko-mono/commit/21c62355575adae6d99e1a117f357c6429d79b4c)) + + +### Documentation + +* **taiko-client:** update readme how to do integration test ([#18256](https://github.com/taikoxyz/taiko-mono/issues/18256)) ([b12b32e](https://github.com/taikoxyz/taiko-mono/commit/b12b32e92b5803f15047a6da2b73135f12b9406d)) + + +### Tests + +* **taiko-client:** introduce `taiko-reth` as another L2 node in testing ([#18223](https://github.com/taikoxyz/taiko-mono/issues/18223)) ([e856273](https://github.com/taikoxyz/taiko-mono/commit/e85627365d423fd8353b5bff92e80978774e9c50)) + ## [0.38.0](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.37.0...taiko-client-v0.38.0) (2024-10-09) diff --git a/packages/taiko-client/package.json b/packages/taiko-client/package.json index 8a029b201d3..bf3247ada7b 100644 --- a/packages/taiko-client/package.json +++ b/packages/taiko-client/package.json @@ -1,5 +1,5 @@ { "name": "taiko-client", - "version": "0.38.0", + "version": "0.39.0", "private": true } From 8512f456f033130ecb0e5493a3c36be025908228 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 22 Oct 2024 14:52:33 +0800 Subject: [PATCH 064/205] fix(taiko-client): fix `lastVerifiedBlockHash` fetch (#18277) --- .../driver/chain_syncer/beaconsync/syncer.go | 22 ++++++++++++++++--- .../driver/chain_syncer/blob/syncer.go | 21 +++++++++++++++--- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go b/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go index cc2c65a5150..b901b356c2b 100644 --- a/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go +++ b/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go @@ -5,6 +5,7 @@ import ( "fmt" "math/big" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/beacon/engine" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/eth/downloader" @@ -71,9 +72,24 @@ func (s *Syncer) TriggerBeaconSync(blockID uint64) error { return fmt.Errorf("unexpected NewPayload response status: %s", status.Status) } - lastVerifiedBlockHash, err := s.rpc.GetLastVerifiedBlockHash(s.ctx) - if err != nil { - return fmt.Errorf("failed to fetch the last verified block hash: %w", err) + var lastVerifiedBlockHash common.Hash + if lastVerifiedBlockHash, err = s.rpc.GetLastVerifiedBlockHash(s.ctx); err != nil { + log.Debug("Failed to fetch the last verified block hash", "err", err) + + stateVars, err := s.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: s.ctx}) + if err != nil { + return fmt.Errorf("failed to fetch protocol state variables: %w", err) + } + + lastVerifiedBlockHeader, err := s.rpc.L2CheckPoint.HeaderByNumber( + s.ctx, + new(big.Int).SetUint64(stateVars.B.LastVerifiedBlockId), + ) + if err != nil { + return fmt.Errorf("failed to fetch the last verified block hash: %w", err) + } + + lastVerifiedBlockHash = lastVerifiedBlockHeader.Hash() } fcRes, err := s.rpc.L2Engine.ForkchoiceUpdate(s.ctx, &engine.ForkchoiceStateV1{ diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer.go b/packages/taiko-client/driver/chain_syncer/blob/syncer.go index c850bb52ad7..53a49961a0b 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer.go @@ -409,9 +409,24 @@ func (s *Syncer) insertNewHead( return nil, fmt.Errorf("failed to create execution payloads: %w", err) } - lastVerifiedBlockHash, err := s.rpc.GetLastVerifiedBlockHash(ctx) - if err != nil { - return nil, fmt.Errorf("failed to fetch the last verified block hash: %w", err) + var lastVerifiedBlockHash common.Hash + if lastVerifiedBlockHash, err = s.rpc.GetLastVerifiedBlockHash(ctx); err != nil { + log.Debug("Failed to fetch last verified block hash", "error", err) + + stateVars, err := s.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: ctx}) + if err != nil { + return nil, fmt.Errorf("failed to fetch protocol state variables: %w", err) + } + + lastVerifiedBlockHeader, err := s.rpc.L2.HeaderByNumber( + ctx, + new(big.Int).SetUint64(stateVars.B.LastVerifiedBlockId), + ) + if err != nil { + return nil, fmt.Errorf("failed to fetch last verified block: %w", err) + } + + lastVerifiedBlockHash = lastVerifiedBlockHeader.Hash() } fc := &engine.ForkchoiceStateV1{ From 191480d06159951aa6db0c550a0cc576917a7935 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Tue, 22 Oct 2024 00:10:18 -0700 Subject: [PATCH 065/205] chore(main): release taiko-client 0.39.1 (#18278) --- .release-please-manifest.json | 2 +- packages/taiko-client/CHANGELOG.md | 7 +++++++ packages/taiko-client/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ee4681ce84d..e3251f5b4e7 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -9,7 +9,7 @@ "packages/relayer": "0.12.0", "packages/snaefell-ui": "1.1.0", "packages/supplementary-contracts": "1.0.0", - "packages/taiko-client": "0.39.0", + "packages/taiko-client": "0.39.1", "packages/taikoon-ui": "1.3.0", "packages/ui-lib": "1.0.0" } diff --git a/packages/taiko-client/CHANGELOG.md b/packages/taiko-client/CHANGELOG.md index ee0a2054587..e193e90d9ab 100644 --- a/packages/taiko-client/CHANGELOG.md +++ b/packages/taiko-client/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.39.1](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.39.0...taiko-client-v0.39.1) (2024-10-22) + + +### Bug Fixes + +* **taiko-client:** fix `lastVerifiedBlockHash` fetch ([#18277](https://github.com/taikoxyz/taiko-mono/issues/18277)) ([8512f45](https://github.com/taikoxyz/taiko-mono/commit/8512f456f033130ecb0e5493a3c36be025908228)) + ## [0.39.0](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.38.0...taiko-client-v0.39.0) (2024-10-21) diff --git a/packages/taiko-client/package.json b/packages/taiko-client/package.json index bf3247ada7b..779fa36dcbd 100644 --- a/packages/taiko-client/package.json +++ b/packages/taiko-client/package.json @@ -1,5 +1,5 @@ { "name": "taiko-client", - "version": "0.39.0", + "version": "0.39.1", "private": true } From e98a1d5cdaa14af86340081ee42ad263a41bfdb5 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Wed, 23 Oct 2024 09:21:50 +0800 Subject: [PATCH 066/205] docs(protocol): upgrade zk verifiers in Hekla (#18279) --- packages/protocol/deployments/hekla-contract-logs.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/protocol/deployments/hekla-contract-logs.md b/packages/protocol/deployments/hekla-contract-logs.md index 181f4d6560f..83b3b370260 100644 --- a/packages/protocol/deployments/hekla-contract-logs.md +++ b/packages/protocol/deployments/hekla-contract-logs.md @@ -201,9 +201,10 @@ ### risc0_groth16_verifier -- addr : 0xc2c2676E31b59085dfDA9b1B066519b20e756D9d +- addr : 0x5fd84014c62D5ea28D4533D5B1B48Ca44e571057 - logs: - deployed on August 14, 2024 at commit `cba2a1e` + - upgraded on October 22, 2024 at commit `684a909` ### tier_zkvm_risc0 @@ -215,10 +216,11 @@ ### sp1_plonk_verifier -- addr : 0x2D3EdD345fC785172c456b086e6672366c6235b7 +- addr : 0xa5287276f63b669E09cF6Dc6F44e941d77D7139e - logs: - deployed on September 02, 2024 at commit `16ac02e` - upgraded on September 15, 2024 at commit `6f26434` + - upgraded on October 22, 2024 at commit `684a909` ### tier_zkvm_sp1 From 89897f0a1e976933e807181a8137833d9f1b4c70 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Wed, 23 Oct 2024 01:48:27 -0700 Subject: [PATCH 067/205] feat(repo): skip release-please on release merge to main (#18282) --- .github/workflows/repo--release-please.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/repo--release-please.yml b/.github/workflows/repo--release-please.yml index 99559795b17..ea7c47a87c2 100644 --- a/.github/workflows/repo--release-please.yml +++ b/.github/workflows/repo--release-please.yml @@ -11,6 +11,7 @@ permissions: jobs: release-please: + if: ${{ !contains(github.event.head_commit.message, 'chore(main):') }} runs-on: [arc-runner-set] steps: - uses: googleapis/release-please-action@v4 From 5c371a181af444999f611e03774ec096ffbd1226 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:55:53 +0800 Subject: [PATCH 068/205] fix(protocol): fix issue in mainnet deployment script (#18283) --- ...tTierProvider.sol => DevnetTierRouter.sol} | 4 +-- .../script/layer1/DeployProtocolOnL1.s.sol | 25 +++++++++---------- .../script/layer1/deploy_protocol_on_l1.sh | 2 +- packages/protocol/test/layer1/TaikoL1Test.sol | 2 +- .../protocol/test/layer1/based/TaikoL1.t.sol | 4 +-- .../test/layer1/based/TaikoL1TestBase.sol | 6 ++--- .../test/layer1/based/TaikoL1TestGroup1.t.sol | 12 ++++----- .../test/layer1/based/TaikoL1TestGroup2.t.sol | 8 +++--- .../test/layer1/based/TaikoL1TestGroup3.t.sol | 8 +++--- .../test/layer1/based/TaikoL1TestGroup4.t.sol | 8 +++--- .../test/layer1/based/TaikoL1TestGroup5.t.sol | 4 +-- .../test/layer1/based/TaikoL1TestGroup6.t.sol | 4 +-- .../test/layer1/based/TaikoL1TestGroup7.t.sol | 4 +-- .../test/layer1/based/TaikoL1TestGroup9.t.sol | 4 +-- ...estTierProvider.sol => TestTierRouter.sol} | 4 +-- .../taiko-client/integration_test/l1_env.sh | 2 +- 16 files changed, 50 insertions(+), 51 deletions(-) rename packages/protocol/contracts/layer1/devnet/{DevnetTierProvider.sol => DevnetTierRouter.sol} (89%) rename packages/protocol/test/layer1/based/{TestTierProvider.sol => TestTierRouter.sol} (96%) diff --git a/packages/protocol/contracts/layer1/devnet/DevnetTierProvider.sol b/packages/protocol/contracts/layer1/devnet/DevnetTierRouter.sol similarity index 89% rename from packages/protocol/contracts/layer1/devnet/DevnetTierProvider.sol rename to packages/protocol/contracts/layer1/devnet/DevnetTierRouter.sol index 0b842926633..0f63411dbdf 100644 --- a/packages/protocol/contracts/layer1/devnet/DevnetTierProvider.sol +++ b/packages/protocol/contracts/layer1/devnet/DevnetTierRouter.sol @@ -4,9 +4,9 @@ pragma solidity ^0.8.24; import "../tiers/TierProviderBase.sol"; import "../tiers/ITierRouter.sol"; -/// @title DevnetTierProvider +/// @title DevnetTierRouter /// @custom:security-contact security@taiko.xyz -contract DevnetTierProvider is TierProviderBase, ITierRouter { +contract DevnetTierRouter is TierProviderBase, ITierRouter { /// @inheritdoc ITierRouter function getProvider(uint256) external view returns (address) { return address(this); diff --git a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol index 8e0f49b0ad1..093a937168d 100644 --- a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol +++ b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol @@ -19,9 +19,10 @@ import "src/layer1/automata-attestation/AutomataDcapV3Attestation.sol"; import "src/layer1/automata-attestation/lib/PEMCertChainLib.sol"; import "src/layer1/automata-attestation/utils/SigVerifyLib.sol"; import "src/layer1/devnet/DevnetTaikoL1.sol"; -import "src/layer1/devnet/DevnetTierProvider.sol"; +import "src/layer1/devnet/DevnetTierRouter.sol"; import "src/layer1/mainnet/rollup/MainnetGuardianProver.sol"; import "src/layer1/mainnet/rollup/MainnetTaikoL1.sol"; +import "src/layer1/mainnet/rollup/MainnetTierRouter.sol"; import "src/layer1/mainnet/rollup/verifiers/MainnetSgxVerifier.sol"; import "src/layer1/mainnet/multirollup/MainnetBridge.sol"; import "src/layer1/mainnet/multirollup/MainnetERC1155Vault.sol"; @@ -30,11 +31,10 @@ import "src/layer1/mainnet/multirollup/MainnetERC721Vault.sol"; import "src/layer1/mainnet/multirollup/MainnetSignalService.sol"; import "src/layer1/provers/GuardianProver.sol"; import "src/layer1/provers/ProverSet.sol"; -import "src/layer1/tiers/TierProviderV2.sol"; import "src/layer1/token/TaikoToken.sol"; import "src/layer1/verifiers/Risc0Verifier.sol"; import "src/layer1/verifiers/SP1Verifier.sol"; -import "test/layer1/based/TestTierProvider.sol"; +import "test/layer1/based/TestTierRouter.sol"; import "test/shared/token/FreeMintERC20.sol"; import "test/shared/token/MayFailFreeMintERC20.sol"; import "test/shared/DeployCapability.sol"; @@ -291,8 +291,7 @@ contract DeployProtocolOnL1 is DeployCapability { }); TaikoL1 taikoL1; - if (keccak256(abi.encode(vm.envString("TIER_PROVIDER"))) == keccak256(abi.encode("devnet"))) - { + if (keccak256(abi.encode(vm.envString("TIER_ROUTER"))) == keccak256(abi.encode("devnet"))) { taikoL1 = TaikoL1(address(new DevnetTaikoL1())); } else { taikoL1 = TaikoL1(address(new TaikoL1())); @@ -353,7 +352,7 @@ contract DeployProtocolOnL1 is DeployCapability { register( rollupAddressManager, "tier_router", - address(deployTierProvider(vm.envString("TIER_PROVIDER"))) + address(deployTierRouter(vm.envString("TIER_ROUTER"))) ); address[] memory guardians = vm.envAddress("GUARDIAN_PROVERS", ","); @@ -427,13 +426,13 @@ contract DeployProtocolOnL1 is DeployCapability { }); } - function deployTierProvider(string memory tierProviderName) private returns (address) { - if (keccak256(abi.encode(tierProviderName)) == keccak256(abi.encode("devnet"))) { - return address(new DevnetTierProvider()); - } else if (keccak256(abi.encode(tierProviderName)) == keccak256(abi.encode("testnet"))) { - return address(new TestTierProvider()); - } else if (keccak256(abi.encode(tierProviderName)) == keccak256(abi.encode("mainnet"))) { - return address(new TierProviderV2()); + function deployTierRouter(string memory tierRouterName) private returns (address) { + if (keccak256(abi.encode(tierRouterName)) == keccak256(abi.encode("devnet"))) { + return address(new DevnetTierRouter()); + } else if (keccak256(abi.encode(tierRouterName)) == keccak256(abi.encode("testnet"))) { + return address(new TestTierRouter()); + } else if (keccak256(abi.encode(tierRouterName)) == keccak256(abi.encode("mainnet"))) { + return address(new MainnetTierRouter()); } else { revert("invalid tier provider"); } diff --git a/packages/protocol/script/layer1/deploy_protocol_on_l1.sh b/packages/protocol/script/layer1/deploy_protocol_on_l1.sh index b225c2279a6..391fd31cca2 100755 --- a/packages/protocol/script/layer1/deploy_protocol_on_l1.sh +++ b/packages/protocol/script/layer1/deploy_protocol_on_l1.sh @@ -21,7 +21,7 @@ PAUSE_TAIKO_L1=true \ PAUSE_BRIDGE=true \ NUM_MIN_MAJORITY_GUARDIANS=7 \ NUM_MIN_MINORITY_GUARDIANS=2 \ -TIER_PROVIDER="devnet" \ +TIER_ROUTER="devnet" \ FOUNDRY_PROFILE="layer1" \ forge script ./script/layer1/DeployProtocolOnL1.s.sol:DeployProtocolOnL1 \ --fork-url http://localhost:8545 \ diff --git a/packages/protocol/test/layer1/TaikoL1Test.sol b/packages/protocol/test/layer1/TaikoL1Test.sol index 5f660fee478..e77e24220b9 100644 --- a/packages/protocol/test/layer1/TaikoL1Test.sol +++ b/packages/protocol/test/layer1/TaikoL1Test.sol @@ -9,7 +9,7 @@ import "src/layer1/verifiers/Risc0Verifier.sol"; import "src/layer1/provers/GuardianProver.sol"; import "src/layer1/team/airdrop/ERC20Airdrop.sol"; import "src/shared/bridge/QuotaManager.sol"; -import "../layer1/based/TestTierProvider.sol"; +import "../layer1/based/TestTierRouter.sol"; import "../shared/TaikoTest.sol"; abstract contract TaikoL1Test is TaikoTest { } diff --git a/packages/protocol/test/layer1/based/TaikoL1.t.sol b/packages/protocol/test/layer1/based/TaikoL1.t.sol index 39918e9d14a..ede0cffa22f 100644 --- a/packages/protocol/test/layer1/based/TaikoL1.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1.t.sol @@ -225,13 +225,13 @@ contract TaikoL1Tests is TaikoL1TestBase { } function test_getTierIds() external { - uint16[] memory tiers = cp.getTierIds(); + uint16[] memory tiers = tr.getTierIds(); assertEq(tiers[0], LibTiers.TIER_OPTIMISTIC); assertEq(tiers[1], LibTiers.TIER_SGX); assertEq(tiers[2], LibTiers.TIER_GUARDIAN); vm.expectRevert(); - cp.getTier(123); + tr.getTier(123); } function proposeButRevert(address proposer, uint24 txListSize, bytes4 revertReason) internal { diff --git a/packages/protocol/test/layer1/based/TaikoL1TestBase.sol b/packages/protocol/test/layer1/based/TaikoL1TestBase.sol index f3620aaad02..8dad90a69e0 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestBase.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestBase.sol @@ -14,7 +14,7 @@ abstract contract TaikoL1TestBase is TaikoTest { SP1Verifier public sp1; SgxVerifier public sv; GuardianProver public gp; - TestTierProvider public cp; + TestTierRouter public tr; Bridge public bridge; bytes32 public GENESIS_BLOCK_HASH = keccak256("GENESIS_BLOCK_HASH"); @@ -75,7 +75,7 @@ abstract contract TaikoL1TestBase is TaikoTest { setupGuardianProverMultisig(); - cp = new TestTierProvider(); + tr = new TestTierRouter(); bridge = Bridge( payable( @@ -91,7 +91,7 @@ abstract contract TaikoL1TestBase is TaikoTest { registerAddress("taiko", address(L1)); registerAddress("tier_sgx", address(sv)); registerAddress("tier_guardian", address(gp)); - registerAddress("tier_router", address(cp)); + registerAddress("tier_router", address(tr)); registerAddress("signal_service", address(ss)); registerL2Address("taiko", address(L2)); registerL2Address("signal_service", address(L2SS)); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup1.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup1.t.sol index 93aff49bbe5..a6725bc2296 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup1.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup1.t.sol @@ -14,7 +14,7 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -117,7 +117,7 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -212,7 +212,7 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -263,7 +263,7 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -314,7 +314,7 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { giveEthAndTko(Taylor, 10_000 ether, 1000 ether); giveEthAndTko(William, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -364,7 +364,7 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup2.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup2.t.sol index 9bb5f5cf8a7..49cee986060 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup2.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup2.t.sol @@ -17,8 +17,8 @@ contract TaikoL1TestGroup2 is TaikoL1TestGroupBase { giveEthAndTko(Taylor, 10_000 ether, 1000 ether); giveEthAndTko(William, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); - ITierProvider.Tier memory tierSgx = TestTierProvider(cp).getTier(LibTiers.TIER_SGX); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -123,8 +123,8 @@ contract TaikoL1TestGroup2 is TaikoL1TestGroupBase { giveEthAndTko(Taylor, 10_000 ether, 1000 ether); giveEthAndTko(William, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); - ITierProvider.Tier memory tierSgx = TestTierProvider(cp).getTier(LibTiers.TIER_SGX); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup3.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup3.t.sol index 000fefb99ea..832aa341988 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup3.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup3.t.sol @@ -18,8 +18,8 @@ contract TaikoL1TestGroup3 is TaikoL1TestGroupBase { giveEthAndTko(James, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); giveEthAndTko(William, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); - ITierProvider.Tier memory tierSgx = TestTierProvider(cp).getTier(LibTiers.TIER_SGX); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -131,8 +131,8 @@ contract TaikoL1TestGroup3 is TaikoL1TestGroupBase { giveEthAndTko(James, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); giveEthAndTko(William, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); - ITierProvider.Tier memory tierSgx = TestTierProvider(cp).getTier(LibTiers.TIER_SGX); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup4.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup4.t.sol index 01b503f5cd6..ce0bbdde373 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup4.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup4.t.sol @@ -16,8 +16,8 @@ contract TaikoL1TestGroup4 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); - ITierProvider.Tier memory tierSgx = TestTierProvider(cp).getTier(LibTiers.TIER_SGX); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -95,8 +95,8 @@ contract TaikoL1TestGroup4 is TaikoL1TestGroupBase { giveEthAndTko(David, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); - ITierProvider.Tier memory tierSgx = TestTierProvider(cp).getTier(LibTiers.TIER_SGX); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup5.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup5.t.sol index ac7d7fc0efe..ebbaa4eea57 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup5.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup5.t.sol @@ -135,7 +135,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(William, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -223,7 +223,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { giveEthAndTko(David, 10_000 ether, 1000 ether); giveEthAndTko(William, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup6.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup6.t.sol index 15fa6b57fb0..cb42f8ea7a2 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup6.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup6.t.sol @@ -15,8 +15,8 @@ contract TaikoL1TestGroup6 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); - ITierProvider.Tier memory tierSgx = TestTierProvider(cp).getTier(LibTiers.TIER_SGX); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup7.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup7.t.sol index d255a89328d..78c85f1a00b 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup7.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup7.t.sol @@ -13,7 +13,7 @@ contract TaikoL1TestGroup7 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -52,7 +52,7 @@ contract TaikoL1TestGroup7 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(Taylor, 10_000 ether, 1000 ether); giveEthAndTko(William, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup9.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup9.t.sol index 563512ef66b..ba98ebd1799 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup9.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup9.t.sol @@ -159,7 +159,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(William, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); @@ -249,7 +249,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); giveEthAndTko(Carol, 10_000 ether, 1000 ether); giveEthAndTko(William, 10_000 ether, 1000 ether); - ITierProvider.Tier memory tierOp = TestTierProvider(cp).getTier(LibTiers.TIER_OPTIMISTIC); + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); diff --git a/packages/protocol/test/layer1/based/TestTierProvider.sol b/packages/protocol/test/layer1/based/TestTierRouter.sol similarity index 96% rename from packages/protocol/test/layer1/based/TestTierProvider.sol rename to packages/protocol/test/layer1/based/TestTierRouter.sol index 09beb43d033..8eb53a868b8 100644 --- a/packages/protocol/test/layer1/based/TestTierProvider.sol +++ b/packages/protocol/test/layer1/based/TestTierRouter.sol @@ -6,10 +6,10 @@ import "src/layer1/tiers/ITierProvider.sol"; import "src/layer1/tiers/LibTiers.sol"; import "src/layer1/tiers/ITierRouter.sol"; -/// @title TestTierProvider +/// @title TestTierRouter /// @dev Labeled in AddressResolver as "tier_router" /// @custom:security-contact security@taiko.xyz -contract TestTierProvider is ITierProvider, ITierRouter { +contract TestTierRouter is ITierProvider, ITierRouter { uint256[50] private __gap; /// @inheritdoc ITierRouter diff --git a/packages/taiko-client/integration_test/l1_env.sh b/packages/taiko-client/integration_test/l1_env.sh index 3fd0923f49b..7bde57f70aa 100755 --- a/packages/taiko-client/integration_test/l1_env.sh +++ b/packages/taiko-client/integration_test/l1_env.sh @@ -10,7 +10,7 @@ export PROVER_SET_ADMIN=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 export TAIKO_TOKEN_PREMINT_RECIPIENT=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 export TAIKO_TOKEN_NAME="Taiko Token Test" export TAIKO_TOKEN_SYMBOL="TTKOt" -export TIER_PROVIDER="devnet" +export TIER_ROUTER="devnet" export PAUSE_TAIKO_L1="false" export PAUSE_BRIDGE="false" export TAIKO_TOKEN=0x0000000000000000000000000000000000000000 From 299b4c9ecf96644c909df70a3527ae5c2e728a07 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:55:36 +0800 Subject: [PATCH 069/205] fix(protocol): fix LibAddress.supportsInterface to handle undecodeable return data (#18286) --- .../protocol/contracts/shared/common/LibAddress.sol | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/protocol/contracts/shared/common/LibAddress.sol b/packages/protocol/contracts/shared/common/LibAddress.sol index f79bad2610b..6e14eddfff7 100644 --- a/packages/protocol/contracts/shared/common/LibAddress.sol +++ b/packages/protocol/contracts/shared/common/LibAddress.sol @@ -1,9 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "@openzeppelin/contracts/utils/Address.sol"; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; -import "@openzeppelin/contracts/interfaces/IERC1271.sol"; /// @title LibAddress /// @dev Provides utilities for address-related operations. @@ -74,10 +72,10 @@ library LibAddress { view returns (bool result_) { - if (!Address.isContract(_addr)) return false; - - try IERC165(_addr).supportsInterface(_interfaceId) returns (bool _result) { - result_ = _result; - } catch { } + (bool success, bytes memory data) = + _addr.staticcall(abi.encodeCall(IERC165.supportsInterface, (_interfaceId))); + if (success && data.length == 32) { + result_ = abi.decode(data, (bool)); + } } } From 49267abaa6d27d16fe4fb62ca0bb28d49b09d2f9 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:55:46 +0800 Subject: [PATCH 070/205] fix(protocol): fix wrong Bridged ERC20 address cache (#18287) --- .../contracts/layer1/mainnet/addrcache/SharedAddressCache.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/SharedAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/SharedAddressCache.sol index ee2e6b68676..b870f54aeeb 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/SharedAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/SharedAddressCache.sol @@ -28,7 +28,7 @@ contract SharedAddressCache is AddressCache { return (true, 0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC); } if (_name == LibStrings.B_BRIDGED_ERC20) { - return (true, 0x79BC0Aada00fcF6E7AB514Bfeb093b5Fae3653e3); + return (true, 0x65666141a541423606365123Ed280AB16a09A2e1); } if (_name == LibStrings.B_BRIDGED_ERC721) { return (true, 0xC3310905E2BC9Cfb198695B75EF3e5B69C6A1Bf7); From fd0dbbbb3df0db27873e0ba87e45a5165fb7c0f1 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Thu, 24 Oct 2024 14:52:19 +0800 Subject: [PATCH 071/205] feat(protocol): Increase the probability of sgx proof for lab proposer (#18288) --- .../layer1/hekla/HeklaTierProvider.sol | 26 ++++++++++++------- .../deployments/hekla-contract-logs.md | 3 ++- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/packages/protocol/contracts/layer1/hekla/HeklaTierProvider.sol b/packages/protocol/contracts/layer1/hekla/HeklaTierProvider.sol index 0876e367d5d..51a9e15fa57 100644 --- a/packages/protocol/contracts/layer1/hekla/HeklaTierProvider.sol +++ b/packages/protocol/contracts/layer1/hekla/HeklaTierProvider.sol @@ -27,17 +27,23 @@ contract HeklaTierProvider is TierProviderBase, ITierRouter { /// @inheritdoc ITierProvider function getMinTier(address _proposer, uint256 _rand) public pure override returns (uint16) { - if (_proposer == LAB_PROPOSER && _rand % 1000 == 0) { - // 0.1% of the total blocks will require ZKVM Risc0 proofs. - return LibTiers.TIER_ZKVM_RISC0; - } else if (_proposer == LAB_PROPOSER && _rand % 1000 == 1) { - // 0.1% of the total blocks will require ZKVM Sp1 proofs. - return LibTiers.TIER_ZKVM_SP1; - } else if (_rand % 2 == 0) { - // 50% of the total blocks will require SGX proofs. - return LibTiers.TIER_SGX; + if (_proposer == LAB_PROPOSER) { + if (_rand % 1000 == 0) { + // 0.1% of the total blocks will require ZKVM Risc0 proofs. + return LibTiers.TIER_ZKVM_RISC0; + } else if (_rand % 1000 == 1) { + // 0.1% of the total blocks will require ZKVM Sp1 proofs. + return LibTiers.TIER_ZKVM_SP1; + } else { + return LibTiers.TIER_SGX; + } } else { - return LibTiers.TIER_OPTIMISTIC; + if (_rand % 2 == 0) { + // 50% of the total blocks will require SGX proofs. + return LibTiers.TIER_SGX; + } else { + return LibTiers.TIER_OPTIMISTIC; + } } } } diff --git a/packages/protocol/deployments/hekla-contract-logs.md b/packages/protocol/deployments/hekla-contract-logs.md index 83b3b370260..34c12013728 100644 --- a/packages/protocol/deployments/hekla-contract-logs.md +++ b/packages/protocol/deployments/hekla-contract-logs.md @@ -149,13 +149,14 @@ ### tierRouter -- impl: `0xE17dBD745f0144b8b7133cbBA044B74Ff34A7aA2` +- impl: `0xACF97d3b3c15c3C009eB04a640954d48237fc3ff` - logs: - deployed on Jun 10, 2024 at commit `d5965bb` - upgraded on Jun 14, 2024 at commit `cc10b04` - upgraded on Jun 19, 2024 at commit `b7e12e3` - upgraded on Aug 15, 2024 at commit `05d49b0` - upgraded on Sep 02, 2024 at commit `9dae5c8` + - upgraded on Oct 24, 2024 at commit `78f9ac0` ### prover_set From 63ba863dcf322b2cf04d7dcaf6d8905bf28de6bc Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Thu, 24 Oct 2024 15:47:33 +0800 Subject: [PATCH 072/205] chore(protoco): remove unused delegate owner deployment (#18290) Co-authored-by: David --- .../protocol/deployments/mainnet-contract-logs-L2.md | 12 +----------- .../script/layer1/SendMessageToDelegateOwner.s.sol | 5 ++--- .../protocol/script/layer2/DeployDelegateOwner.s.sol | 2 +- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/packages/protocol/deployments/mainnet-contract-logs-L2.md b/packages/protocol/deployments/mainnet-contract-logs-L2.md index 153a3ca1873..ecfb81db0bd 100644 --- a/packages/protocol/deployments/mainnet-contract-logs-L2.md +++ b/packages/protocol/deployments/mainnet-contract-logs-L2.md @@ -41,7 +41,7 @@ - set erc1155_vault@1 to `0xaf145913EA4a56BE22E120ED9C24589659881702` @tx`0x4a16a8a7d02f696b753208bbf8e7e3501d6b70b9a764fa2b4e115add46c13cb3` - changed owner to `0xCa5b76Cc7A38b86Db11E5aE5B1fc9740c3bA3DE8` @tx`0xf68861171c602e3e75ca69e950957fcb908c7949c6df9a9ea3026c238ebb1e9c` - register `taiko_token` to `0xA9d23408b9bA935c230493c40C73824Df71A0975` @tx`0xc77434f4e37959cdc0eac125303b78dd192d8727173373cc7a6158ca7d829dad` - - register `bridged_erc20` to `0x98161D67f762A9E589E502348579FA38B1Ac47A8` @tx`` + - register `bridged_erc20` to `0x98161D67f762A9E589E502348579FA38B1Ac47A8` @tx`0xf377885a94467d520bd765a186d3c3524099fe28e936d05656d0da2509628e65` #### bridge @@ -116,16 +116,6 @@ - todo: - change owner to DelegateOwner -#### delegate_owner - -- proxy: `0x5995941Df88F30Ac140515AA39832db963E2f863` -- impl: `0x1f0511cDae2fbfD93563469dA02b82dEd320C8Bd` -- admin: `0x3c181965C5cFAE61a9010A283e5e0C1445649810` // owned by Daniel W -- remoteOwner: `0x3c181965C5cFAE61a9010A283e5e0C1445649810` // owned by Daniel W -- todo: - - test various use cases - - transfer remote owner to `admin.taiko.eth` - ## Rollup Specific #### rollup_address_manager (ram) diff --git a/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol b/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol index c5989001fee..65f6421c021 100644 --- a/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol +++ b/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol @@ -11,7 +11,7 @@ contract SendMessageToDelegateOwner is Script { address public delegateOwnerImpl = 0x1f0511cDae2fbfD93563469dA02b82dEd320C8Bd; address public multicall3 = 0xcA11bde05977b3631167028862bE2a173976CA11; address public l1Bridge = 0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC; - address public testAccount1 = 0x3c181965C5cFAE61a9010A283e5e0C1445649810; // owned by Daniel W + address public testAccount1 = vm.envAddress("TEST_ACCOUNT1"); modifier broadcast() { vm.startBroadcast(); @@ -23,8 +23,7 @@ contract SendMessageToDelegateOwner is Script { Multicall3.Call3[] memory calls = new Multicall3.Call3[](2); calls[0].target = delegateOwner; calls[0].allowFailure = false; - calls[0].callData = - abi.encodeCall(DelegateOwner.setAdmin, (0x4757D97449acA795510b9f3152C6a9019A3545c3)); + calls[0].callData = abi.encodeCall(DelegateOwner.setAdmin, (testAccount1)); calls[1].target = delegateOwner; calls[1].allowFailure = false; diff --git a/packages/protocol/script/layer2/DeployDelegateOwner.s.sol b/packages/protocol/script/layer2/DeployDelegateOwner.s.sol index 79da323364c..97b325f90ec 100644 --- a/packages/protocol/script/layer2/DeployDelegateOwner.s.sol +++ b/packages/protocol/script/layer2/DeployDelegateOwner.s.sol @@ -7,7 +7,7 @@ import "src/layer2/DelegateOwner.sol"; // forge script --rpc-url https://rpc.mainnet.taiko.xyz script/DeployDelegateOwner.s.sol contract DeployDelegateOwner is DeployCapability { address public l2Sam = 0x1670000000000000000000000000000000000006; - address public testAccount2 = 0x3c181965C5cFAE61a9010A283e5e0C1445649810; // owned by Daniel W + address public testAccount2 = vm.envAddress("TEST_ACCOUNT2"); address public l1Owner = testAccount2; address public l2Admin = testAccount2; From 6633c80fbcabb6f06ce5467501da4207bc84be84 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Thu, 24 Oct 2024 20:33:27 +0800 Subject: [PATCH 073/205] fix(taiko-client): fix path parsing in `/eth/v1/config/spec` (#18295) --- packages/taiko-client/pkg/rpc/beaconclient.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/taiko-client/pkg/rpc/beaconclient.go b/packages/taiko-client/pkg/rpc/beaconclient.go index e907acf4608..acf70c86b79 100644 --- a/packages/taiko-client/pkg/rpc/beaconclient.go +++ b/packages/taiko-client/pkg/rpc/beaconclient.go @@ -9,6 +9,7 @@ import ( "time" "github.com/ethereum/go-ethereum/log" + "github.com/pkg/errors" "github.com/prysmaticlabs/prysm/v5/api/client" "github.com/prysmaticlabs/prysm/v5/api/client/beacon" "github.com/prysmaticlabs/prysm/v5/api/server/structs" @@ -18,6 +19,7 @@ var ( // Request urls. sidecarsRequestURL = "/eth/v1/beacon/blob_sidecars/%d" genesisRequestURL = "/eth/v1/beacon/genesis" + getConfigSpecPath = "/eth/v1/config/spec" ) type ConfigSpec struct { @@ -67,7 +69,7 @@ func NewBeaconClient(endpoint string, timeout time.Duration) (*BeaconClient, err log.Info("L1 genesis time", "time", genesisTime) // Get the seconds per slot. - spec, err := cli.GetConfigSpec(ctx) + spec, err := getConfigSpec(ctx, cli) if err != nil { return nil, err } @@ -111,3 +113,17 @@ func (c *BeaconClient) timeToSlot(timestamp uint64) (uint64, error) { } return (timestamp - c.genesisTime) / c.secondsPerSlot, nil } + +// getConfigSpec retrieve the current configs of the network used by the beacon node. +func getConfigSpec(ctx context.Context, c *beacon.Client) (*structs.GetSpecResponse, error) { + body, err := c.Get(ctx, c.BaseURL().Path+getConfigSpecPath) + if err != nil { + return nil, errors.Wrap(err, "error requesting configSpecPath") + } + fsr := &structs.GetSpecResponse{} + err = json.Unmarshal(body, fsr) + if err != nil { + return nil, err + } + return fsr, nil +} From 52a936299487ee4db83e88ba740aec025561a2b9 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Thu, 24 Oct 2024 05:38:58 -0700 Subject: [PATCH 074/205] chore(main): release taiko-client 0.39.2 (#18284) --- .release-please-manifest.json | 2 +- packages/taiko-client/CHANGELOG.md | 8 ++++++++ packages/taiko-client/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e3251f5b4e7..ab114be088b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -9,7 +9,7 @@ "packages/relayer": "0.12.0", "packages/snaefell-ui": "1.1.0", "packages/supplementary-contracts": "1.0.0", - "packages/taiko-client": "0.39.1", + "packages/taiko-client": "0.39.2", "packages/taikoon-ui": "1.3.0", "packages/ui-lib": "1.0.0" } diff --git a/packages/taiko-client/CHANGELOG.md b/packages/taiko-client/CHANGELOG.md index e193e90d9ab..99eceb0e43e 100644 --- a/packages/taiko-client/CHANGELOG.md +++ b/packages/taiko-client/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.39.2](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.39.1...taiko-client-v0.39.2) (2024-10-24) + + +### Bug Fixes + +* **protocol:** fix issue in mainnet deployment script ([#18283](https://github.com/taikoxyz/taiko-mono/issues/18283)) ([5c371a1](https://github.com/taikoxyz/taiko-mono/commit/5c371a181af444999f611e03774ec096ffbd1226)) +* **taiko-client:** fix path parsing in `/eth/v1/config/spec` ([#18295](https://github.com/taikoxyz/taiko-mono/issues/18295)) ([6633c80](https://github.com/taikoxyz/taiko-mono/commit/6633c80fbcabb6f06ce5467501da4207bc84be84)) + ## [0.39.1](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.39.0...taiko-client-v0.39.1) (2024-10-22) diff --git a/packages/taiko-client/package.json b/packages/taiko-client/package.json index 779fa36dcbd..53409674e4f 100644 --- a/packages/taiko-client/package.json +++ b/packages/taiko-client/package.json @@ -1,5 +1,5 @@ { "name": "taiko-client", - "version": "0.39.1", + "version": "0.39.2", "private": true } From d572f4c412e59094ea9a4c5ff0b0667c9c04bd66 Mon Sep 17 00:00:00 2001 From: maskpp Date: Thu, 24 Oct 2024 20:56:31 +0800 Subject: [PATCH 075/205] test(taiko-client): introduce TestTxPoolContentWithMinTip test case (#18285) --- go.mod | 8 +- go.sum | 4 +- packages/eventindexer/.golangci.yml | 2 +- packages/relayer/.golangci.yml | 8 +- packages/relayer/pkg/mock/mock_tx_sender.go | 19 +++ .../internal/docker/nodes/docker-compose.yml | 2 +- .../taiko-client/internal/testutils/helper.go | 44 +++++++ .../taiko-client/proposer/proposer_test.go | 110 ++++++++++++++++++ 8 files changed, 181 insertions(+), 16 deletions(-) diff --git a/go.mod b/go.mod index 4c5ee52f395..31dcefa4c84 100644 --- a/go.mod +++ b/go.mod @@ -235,13 +235,7 @@ require ( sigs.k8s.io/yaml v1.3.0 // indirect ) -exclude ( - github.com/ethereum/go-ethereum v1.14.5 - github.com/ethereum/go-ethereum v1.14.6 - github.com/ethereum/go-ethereum v1.14.7 -) - -replace github.com/ethereum/go-ethereum v1.14.11 => github.com/taikoxyz/taiko-geth v1.8.1-0.20241003040603-5c84a2082747 +replace github.com/ethereum/go-ethereum v1.14.11 => github.com/taikoxyz/taiko-geth v1.11.1 replace github.com/ethereum-optimism/optimism v1.7.4 => github.com/taikoxyz/optimism v0.0.0-20241003061504-cdf8af288f39 diff --git a/go.sum b/go.sum index 9ddee77dab9..f7be24097ed 100644 --- a/go.sum +++ b/go.sum @@ -610,8 +610,8 @@ github.com/taikoxyz/hive v0.0.0-20240827015317-405b241dd082 h1:ymZR+Y88LOnA8i3Ke github.com/taikoxyz/hive v0.0.0-20240827015317-405b241dd082/go.mod h1:RHnIu3EFehrWX3JhFAMQSXD5uz7l0xaNroTzXrap7EQ= github.com/taikoxyz/optimism v0.0.0-20241003061504-cdf8af288f39 h1:JssMxaDmORjQ9RPZNulVJhAD8zSPd6LZFq5wsr6Nwz8= github.com/taikoxyz/optimism v0.0.0-20241003061504-cdf8af288f39/go.mod h1:ym7scR7ZHvEmwx1DLGVDzFlAdR+uhP1+Z4XCiFuSD5s= -github.com/taikoxyz/taiko-geth v1.8.1-0.20241003040603-5c84a2082747 h1:QRB8VHGmlRgm7ze/4Fzuce08Ypbq5Mr5q/piTfsck1A= -github.com/taikoxyz/taiko-geth v1.8.1-0.20241003040603-5c84a2082747/go.mod h1:+l/fr42Mma+xBnhefL/+z11/hcmJ2egl+ScIVPjhc7E= +github.com/taikoxyz/taiko-geth v1.11.1 h1:pur1WP6YJkwKhLVeN3Zf7dOwbPq6tS88gYod6QKlJc4= +github.com/taikoxyz/taiko-geth v1.11.1/go.mod h1:+l/fr42Mma+xBnhefL/+z11/hcmJ2egl+ScIVPjhc7E= github.com/testcontainers/testcontainers-go v0.30.0 h1:jmn/XS22q4YRrcMwWg0pAwlClzs/abopbsBzrepyc4E= github.com/testcontainers/testcontainers-go v0.30.0/go.mod h1:K+kHNGiM5zjklKjgTtcrEetF3uhWbMUyqAQoyoh8Pf0= github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e h1:cR8/SYRgyQCt5cNCMniB/ZScMkhI9nk8U5C7SbISXjo= diff --git a/packages/eventindexer/.golangci.yml b/packages/eventindexer/.golangci.yml index 2f3a3d4742f..f8f1767ce33 100644 --- a/packages/eventindexer/.golangci.yml +++ b/packages/eventindexer/.golangci.yml @@ -9,7 +9,7 @@ # ], output: - format: colored-line-number + formats: colored-line-number linters: enable: diff --git a/packages/relayer/.golangci.yml b/packages/relayer/.golangci.yml index 56dcebe883c..f47cd722a6f 100644 --- a/packages/relayer/.golangci.yml +++ b/packages/relayer/.golangci.yml @@ -9,7 +9,7 @@ # ], output: - format: colored-line-number + formats: colored-line-number linters: enable: @@ -34,6 +34,8 @@ linters-settings: min-complexity: 75 issues: + exclude-dirs: + - contracts/* exclude-rules: # Exclude some linters from running on tests files. - path: _test\.go @@ -42,7 +44,3 @@ issues: - path: / linters: - typecheck - -run: - skip-dirs: - - contracts/* diff --git a/packages/relayer/pkg/mock/mock_tx_sender.go b/packages/relayer/pkg/mock/mock_tx_sender.go index df88966b6ae..5dd941b5fd0 100644 --- a/packages/relayer/pkg/mock/mock_tx_sender.go +++ b/packages/relayer/pkg/mock/mock_tx_sender.go @@ -2,10 +2,12 @@ package mock import ( "context" + "math/big" "github.com/ethereum-optimism/optimism/op-service/txmgr" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/rpc" ) type TxManager struct { @@ -34,3 +36,20 @@ func (t *TxManager) Close() { func (t *TxManager) IsClosed() bool { return false } + +func (t *TxManager) SendAsync(ctx context.Context, candidate txmgr.TxCandidate, ch chan txmgr.SendResponse) { + panic("unimplemented") +} + +func (t *TxManager) SuggestGasPriceCaps(ctx context.Context) ( + tipCap *big.Int, + baseFee *big.Int, + blobBaseFee *big.Int, + err error, +) { + panic("unimplemented") +} + +func (t *TxManager) API() rpc.API { + panic("unimplemented") +} diff --git a/packages/taiko-client/internal/docker/nodes/docker-compose.yml b/packages/taiko-client/internal/docker/nodes/docker-compose.yml index 1c81f01f92c..429595fbf26 100644 --- a/packages/taiko-client/internal/docker/nodes/docker-compose.yml +++ b/packages/taiko-client/internal/docker/nodes/docker-compose.yml @@ -1,7 +1,7 @@ services: l1_node: container_name: l1_node - image: ghcr.io/foundry-rs/foundry:nightly + image: ghcr.io/foundry-rs/foundry:nightly-2044faec64f99a21f0e5f0094458a973612d0712 restart: unless-stopped platform: linux/amd64 pull_policy: always diff --git a/packages/taiko-client/internal/testutils/helper.go b/packages/taiko-client/internal/testutils/helper.go index d93e3499f15..36d7adc9331 100644 --- a/packages/taiko-client/internal/testutils/helper.go +++ b/packages/taiko-client/internal/testutils/helper.go @@ -282,6 +282,50 @@ func SignatureFromRSV(r, s string, v byte) []byte { return append(append(hexutil.MustDecode(r), hexutil.MustDecode(s)...), v) } +func AssembleTestTx( + client *rpc.EthClient, + priv *ecdsa.PrivateKey, + nonce uint64, + to *common.Address, + value *big.Int, + data []byte, +) (*types.Transaction, error) { + head, err := client.HeaderByNumber(context.Background(), nil) + if err != nil { + return nil, err + } + + auth, err := bind.NewKeyedTransactorWithChainID(priv, client.ChainID) + if err != nil { + return nil, err + } + + gasTipCap, err := client.SuggestGasTipCap(context.Background()) + if err != nil { + return nil, err + } + + tx, err := auth.Signer(auth.From, types.NewTx(&types.DynamicFeeTx{ + To: to, + Nonce: nonce, + Value: value, + GasTipCap: gasTipCap, + GasFeeCap: new(big.Int).Add( + gasTipCap, + new(big.Int).Mul(head.BaseFee, big.NewInt(2)), + ), + Gas: 2100_000, + Data: data, + })) + if err != nil { + return nil, err + } + if err = client.SendTransaction(context.Background(), tx); err != nil { + return nil, err + } + return tx, nil +} + // SendDynamicFeeTx sends a dynamic transaction, used for tests. func SendDynamicFeeTx( client *rpc.EthClient, diff --git a/packages/taiko-client/proposer/proposer_test.go b/packages/taiko-client/proposer/proposer_test.go index f3a968a3759..3f3d4e6ed3b 100644 --- a/packages/taiko-client/proposer/proposer_test.go +++ b/packages/taiko-client/proposer/proposer_test.go @@ -2,12 +2,16 @@ package proposer import ( "context" + "crypto/ecdsa" + "fmt" + "maps" "math/big" "os" "testing" "time" "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/core/types" @@ -119,6 +123,112 @@ func (s *ProposerTestSuite) SetupTest() { s.cancel = cancel } +func (s *ProposerTestSuite) TestTxPoolContentWithMinTip() { + if os.Getenv("L2_NODE") == "l2_reth" { + s.T().Skip() + } + defer s.Nil(s.s.ProcessL1Blocks(context.Background())) + + privetKeyHexList := []string{ + "0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d", // 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 + "0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a", // 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC + "0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6", // 0x90F79bf6EB2c4f870365E785982E1f101E93b906 + "0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a", // 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 + "0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba", // 0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc + } + + var ( + p = s.p + privKeys []*ecdsa.PrivateKey + l2Cli = s.RPCClient.L2 + chainID = l2Cli.ChainID + ) + + for _, sk := range privetKeyHexList { + priv, err := crypto.ToECDSA(common.FromHex(sk)) + s.Nil(err) + privKeys = append(privKeys, priv) + } + + originNonces := make(map[common.Address]uint64) + for _, priv := range privKeys { + auth, err := bind.NewKeyedTransactorWithChainID(priv, chainID) + s.Nil(err) + nonce, err := l2Cli.PendingNonceAt(context.Background(), auth.From) + s.Nil(err) + originNonces[auth.From] = nonce + for i := 0; i < 300; i++ { + _, err = testutils.AssembleTestTx(s.RPCClient.L2, priv, nonce+uint64(i), &auth.From, big.NewInt(1), nil) + s.Nil(err) + } + } + + signer := types.LatestSignerForChainID(chainID) + for _, testCase := range []struct { + blockMaxGasLimit uint32 + blockMaxTxListBytes uint64 + maxTransactionsLists uint64 + + txLengthList []int + }{ + { + p.protocolConfigs.BlockMaxGasLimit, + rpc.BlockMaxTxListBytes, + p.MaxProposedTxListsPerEpoch, + []int{1500}, + }, + { + p.protocolConfigs.BlockMaxGasLimit, + rpc.BlockMaxTxListBytes, + p.MaxProposedTxListsPerEpoch * 5, + []int{1500}, + }, + { + p.protocolConfigs.BlockMaxGasLimit / 50, + rpc.BlockMaxTxListBytes, + 200, + []int{129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 81}, + }, + } { + res, err := s.RPCClient.GetPoolContent( + context.Background(), + p.proposerAddress, + testCase.blockMaxGasLimit, + testCase.blockMaxTxListBytes, + p.LocalAddresses, + testCase.maxTransactionsLists, + 0, + p.chainConfig, + ) + s.Nil(err) + + checkNonces := maps.Clone(originNonces) + // Make sure all the nonce are in order. + for _, txList := range res { + for _, tx := range txList.TxList { + sender, err := types.Sender(signer, tx) + s.Nil(err) + s.Equalf(checkNonces[sender], tx.Nonce(), + fmt.Sprintf("%s nonce check, expect: %d, actual: %d", + sender.String(), + checkNonces[sender], + tx.Nonce(), + )) + checkNonces[sender]++ + } + } + + s.GreaterOrEqual(int(testCase.maxTransactionsLists), len(res)) + for i, txsLen := range testCase.txLengthList { + s.Equal(txsLen, res[i].TxList.Len()) + s.GreaterOrEqual(uint64(testCase.blockMaxGasLimit), res[i].EstimatedGasUsed) + s.GreaterOrEqual(testCase.blockMaxTxListBytes, res[i].BytesLength) + } + } + + s.Nil(p.ProposeOp(context.Background())) +} + func (s *ProposerTestSuite) TestProposeTxLists() { p := s.p ctx := p.ctx From 59832f1324cbf98de339552fd8d5039afe3d0e9c Mon Sep 17 00:00:00 2001 From: mariobern <110480440+mariobern@users.noreply.github.com> Date: Thu, 24 Oct 2024 21:30:46 +0700 Subject: [PATCH 076/205] feat(docs-site): add pyth to taiko docs (#18294) Co-authored-by: swarna1101 --- .../docs-site/src/content/docs/resources/developer-tools.mdx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/docs-site/src/content/docs/resources/developer-tools.mdx b/packages/docs-site/src/content/docs/resources/developer-tools.mdx index 681e736a0f0..fef29e880ef 100644 --- a/packages/docs-site/src/content/docs/resources/developer-tools.mdx +++ b/packages/docs-site/src/content/docs/resources/developer-tools.mdx @@ -38,6 +38,11 @@ import { LinkCard, CardGrid } from "@astrojs/starlight/components"; description="API3 offers over 200 first-party, OEV-enabled price feeds on Taiko Mainnet and Testnet, providing reliable and decentralized data through the API3 Market." href="https://market.api3.org/taiko" /> + ## Node Providers From ae0a9daf83ab8f323c216978724ebcb71de54cfe Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 25 Oct 2024 10:14:38 +0800 Subject: [PATCH 077/205] fix(protocol): correct the wrong router address for mainnet (#18291) Co-authored-by: David --- .../layer1/mainnet/addrcache/RollupAddressCache.sol | 4 ++-- .../layer1/mainnet/rollup/MainnetTierRouter.sol | 7 ++++--- .../protocol/deployments/mainnet-contract-logs-L1.md | 12 +++++------- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol index 22a3542a2f0..fc7cf509295 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol @@ -34,7 +34,7 @@ contract RollupAddressCache is AddressCache { return (true, 0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a); } if (_name == LibStrings.B_TIER_ROUTER) { - return (true, 0x6E997f1F22C40ba37F633B08f3b07E10Ed43155a); + return (true, 0x2cD242BfD58E6D1810323D07b065413095c7AFd0); } if (_name == LibStrings.B_TIER_SGX) { return (true, 0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81); @@ -52,7 +52,7 @@ contract RollupAddressCache is AddressCache { return (true, address(0)); } if (_name == LibStrings.B_CHAIN_WATCHDOG) { - return (true, address(0)); + return (true, 0xE3D777143Ea25A6E031d1e921F396750885f43aC); } return (false, address(0)); } diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol index 2c9a8966106..da6ca821b57 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol @@ -2,13 +2,14 @@ pragma solidity ^0.8.24; import "src/layer1/tiers/ITierRouter.sol"; +import "src/layer1/tiers/TierProviderV2.sol"; /// @title MainnetTierRouter /// @dev Labeled in AddressResolver as "tier_router" /// @custom:security-contact security@taiko.xyz -contract MainnetTierRouter is ITierRouter { +contract MainnetTierRouter is ITierRouter, TierProviderV2 { /// @inheritdoc ITierRouter - function getProvider(uint256) external pure returns (address) { - return 0x4cffe56C947E26D07C14020499776DB3e9AE3a23; // TierProviderV2 + function getProvider(uint256) external view returns (address) { + return address(this); } } diff --git a/packages/protocol/deployments/mainnet-contract-logs-L1.md b/packages/protocol/deployments/mainnet-contract-logs-L1.md index e7564a63ac7..7ccb8a2a550 100644 --- a/packages/protocol/deployments/mainnet-contract-logs-L1.md +++ b/packages/protocol/deployments/mainnet-contract-logs-L1.md @@ -122,14 +122,14 @@ - ens: `v721.based.taiko.eth` - proxy: `0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa` -- impl: `0x6e88046ff7Af8ef14ECa80e06C734bf59851896a` +- impl: `0xD961e3Ef2D7DF58cDc67BFd9055255430E5e3fEc` - owner: `admin.taiko.eth` - logs: - deployed on May 1, 2024 @commit`56dddf2b6` - upgraded from `0xEC04849E7722Fd69797a155796Db75aC8F94f692` to `0x41A7BDD153a5AfFb10Ed1AD3D6a4e5ad001495FA` @commit`b90b932` @tx`0x416560cd96dc75ccffebe889e8d1ab3e08b33f814dc4a2bf7c6f9555071d1f6f` - upgraded from `0x41A7BDD153a5AfFb10Ed1AD3D6a4e5ad001495FA` to `0x2dfef0339009Ce10786fc118C883BB97af3163eD` @commit`fa481c1` @tx`0x02ed558762eae5f0a930ba4a1047a02d4a793ea48890268c32df04e882f138ff` - upgraded from `0x2dfef0339009Ce10786fc118C883BB97af3163eD` to `0x55B5df6B53466446221180498BfD1C59e54732c4` @commit`d907359` @tx`0xdb5e926c96d112ce1389da77a927fba6c7d04a711839b9e14777530ebcf83914` - - upgraded from `0x55B5df6B53466446221180498BfD1C59e54732c4` to `0x6e88046ff7Af8ef14ECa80e06C734bf59851896a` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` + - upgraded from `0x55B5df6B53466446221180498BfD1C59e54732c4` to `0xD961e3Ef2D7DF58cDc67BFd9055255430E5e3fEc` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` #### erc1155_vault @@ -228,13 +228,11 @@ - Upgrade to `0xBA1d90BCfA74163bFE09e8eF609b346507D83231` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` - Upgrade to `0xf0E6d34937701622cA887a75c150cC23d4FFDf2F` @commit`b4f8547` @tx`0x8778064404816273804d74c97b051f3865bc03062cfa4b0e9567f4556ad31981` -#### tier_provider +#### tier_router -- impl: `0x3a1A900680BaADb889202faf12915F7E47B71ddd` +- impl: `0x2cD242BfD58E6D1810323D07b065413095c7AFd0` - logs: - - deployed on May 1, 2024 @commit`56dddf2b6` - - deployed on May 15, 2024 @commit`cd5144255` - - deployed on Jul 2, 2024 @commit`d2b00ce` + - deployed on Oct 24, 2024 @commit`7334b1d` #### tier_sgx From 9d06958e713e530fdd610c439c7b93199d0dcc69 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 25 Oct 2024 10:25:56 +0800 Subject: [PATCH 078/205] feat(protocol): make sure `init()` covers logics in `init2()`, `init3()`.. (#18292) --- packages/protocol/contracts/layer1/based/TaikoL1.sol | 2 +- packages/protocol/contracts/shared/bridge/Bridge.sol | 2 +- .../protocol/contracts/shared/common/AddressManager.sol | 7 +++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index c9bf899783e..9864fd037fc 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -49,7 +49,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { bool _toPause ) external - initializer + reinitializer(2) { __Essential_init(_owner, _rollupAddressManager); LibUtils.init(state, getConfig(), _genesisBlockHash); diff --git a/packages/protocol/contracts/shared/bridge/Bridge.sol b/packages/protocol/contracts/shared/bridge/Bridge.sol index d160c5a7436..813445ef678 100644 --- a/packages/protocol/contracts/shared/bridge/Bridge.sol +++ b/packages/protocol/contracts/shared/bridge/Bridge.sol @@ -104,7 +104,7 @@ contract Bridge is EssentialContract, IBridge { /// @notice Initializes the contract. /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. /// @param _sharedAddressManager The address of the {AddressManager} contract. - function init(address _owner, address _sharedAddressManager) external initializer { + function init(address _owner, address _sharedAddressManager) external reinitializer(2) { __Essential_init(_owner, _sharedAddressManager); } diff --git a/packages/protocol/contracts/shared/common/AddressManager.sol b/packages/protocol/contracts/shared/common/AddressManager.sol index ad064952fe2..d16e9f97c55 100644 --- a/packages/protocol/contracts/shared/common/AddressManager.sol +++ b/packages/protocol/contracts/shared/common/AddressManager.sol @@ -24,10 +24,9 @@ contract AddressManager is EssentialContract, IAddressManager { error AM_ADDRESS_ALREADY_SET(); /// @notice Initializes the contract. - /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. - function init(address _owner) external initializer { - __Essential_init(_owner); - addressManager = address(this); + /// @param _owner The owner of this contract. + function init(address _owner) external reinitializer(2) { + __Essential_init(_owner, address(this)); } function init2() external onlyOwner reinitializer(2) { From d60d8de96884527affc8abc9750c7bcbad0c8c4c Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Thu, 24 Oct 2024 22:13:22 -0700 Subject: [PATCH 079/205] chore(main): release docs-site 1.13.0 (#18297) Co-authored-by: swarna1101 --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 7 +++++++ packages/docs-site/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ab114be088b..5246ed8047a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.12.3", + "packages/docs-site": "1.13.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index 630b150b21e..063c0ca8db9 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.13.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.12.3...docs-site-v1.13.0) (2024-10-25) + + +### Features + +* **docs-site:** add pyth to taiko docs ([#18294](https://github.com/taikoxyz/taiko-mono/issues/18294)) ([59832f1](https://github.com/taikoxyz/taiko-mono/commit/59832f1324cbf98de339552fd8d5039afe3d0e9c)) + ## [1.12.3](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.12.2...docs-site-v1.12.3) (2024-10-20) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index d30eb437e56..28b91d9904c 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.12.3", + "version": "1.13.0", "scripts": { "dev": "astro dev", "start": "astro dev", From f60ce3e78bb9a2717718c3a9d7016346d5305488 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 25 Oct 2024 13:38:44 +0800 Subject: [PATCH 080/205] docs(protocol): update L1 deployment (#18299) --- packages/protocol/deployments/mainnet-contract-logs-L1.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/protocol/deployments/mainnet-contract-logs-L1.md b/packages/protocol/deployments/mainnet-contract-logs-L1.md index 7ccb8a2a550..0ddbcd8596d 100644 --- a/packages/protocol/deployments/mainnet-contract-logs-L1.md +++ b/packages/protocol/deployments/mainnet-contract-logs-L1.md @@ -326,6 +326,7 @@ - Upgraded from `0xde1b1FBe7D721af4A56651272ef91A59B7303323` to `0x5f73f0AdC7dAA6134Fe751C4a78d524f9384e0B5` @commit`3740dc0` @tx`0x46a6d47c15505a1259c64d1e09353680e525b2706dd9e095e15019dda7c1b295` - Called `configureTcbInfoJson` @commit`3740dc0` @tx`0x46a6d47c15505a1259c64d1e09353680e525b2706dd9e095e15019dda7c1b295` - Update mrenclave & mrsign on May 28, 2024 @commit`b335b70` @tx`0x6a240314c6a48f3ab58e0a3d5bf0e915668dac5eec19c694656eeb3d66c12465` + - Called `setMrEnclave` @commit`9d06958` @tx`0x0aa35e03c521f8e4b4d03662a6ecc6de5dd3e336f63e6ea00eff7b4184eae9be` ### token_unlock From 65daa3e631b471d17dbffb1001dab66efa67c499 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 25 Oct 2024 13:39:33 +0800 Subject: [PATCH 081/205] fix(protocol): fix test related to SendMessageToDelegateOwner.s.sol (#18300) --- .../protocol/script/layer1/SendMessageToDelegateOwner.s.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol b/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol index 65f6421c021..acb6ec105f8 100644 --- a/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol +++ b/packages/protocol/script/layer1/SendMessageToDelegateOwner.s.sol @@ -11,7 +11,7 @@ contract SendMessageToDelegateOwner is Script { address public delegateOwnerImpl = 0x1f0511cDae2fbfD93563469dA02b82dEd320C8Bd; address public multicall3 = 0xcA11bde05977b3631167028862bE2a173976CA11; address public l1Bridge = 0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC; - address public testAccount1 = vm.envAddress("TEST_ACCOUNT1"); + address public testAccount1 = 0x3c181965C5cFAE61a9010A283e5e0C1445649810; modifier broadcast() { vm.startBroadcast(); From 4c45d8bcdb52521ac1738ca271316d82689537b0 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 25 Oct 2024 14:04:57 +0800 Subject: [PATCH 082/205] fix(protocol): fix permission in ComposeVerifier (#18302) --- .../contracts/layer1/verifiers/compose/ComposeVerifier.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol b/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol index 71fe03d6acc..345d354cbd2 100644 --- a/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol @@ -78,7 +78,7 @@ abstract contract ComposeVerifier is EssentialContract, IVerifier { TaikoData.TierProof calldata _proof ) external - onlyFromNamed(LibStrings.B_TAIKO) + onlyAuthorizedCaller nonReentrant { (address[] memory verifiers, uint256 numSubProofs_) = getSubVerifiersAndThreshold(); From b44c2d0e2e4745ccb1d9ee118df0a4940e924c7d Mon Sep 17 00:00:00 2001 From: David Date: Fri, 25 Oct 2024 14:05:33 +0800 Subject: [PATCH 083/205] chore(eventindexer): update timeout in CI (#18301) --- .github/workflows/eventindexer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/eventindexer.yml b/.github/workflows/eventindexer.yml index 30ded6382ab..9b5f47bc2bb 100644 --- a/.github/workflows/eventindexer.yml +++ b/.github/workflows/eventindexer.yml @@ -32,7 +32,7 @@ jobs: # Optional: working directory, useful for monorepos working-directory: ./packages/eventindexer - args: --config=.golangci.yml --timeout=4m + args: --config=.golangci.yml --timeout=10m test-eventindexer: runs-on: [arc-runner-set] From b3dd4dccd261a9ebda69325661d2941001268ec2 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 25 Oct 2024 15:41:59 +0800 Subject: [PATCH 084/205] test(protocol): fix another L2 test failure (#18304) --- packages/protocol/script/layer2/DeployDelegateOwner.s.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/script/layer2/DeployDelegateOwner.s.sol b/packages/protocol/script/layer2/DeployDelegateOwner.s.sol index 97b325f90ec..935686fb00c 100644 --- a/packages/protocol/script/layer2/DeployDelegateOwner.s.sol +++ b/packages/protocol/script/layer2/DeployDelegateOwner.s.sol @@ -7,7 +7,7 @@ import "src/layer2/DelegateOwner.sol"; // forge script --rpc-url https://rpc.mainnet.taiko.xyz script/DeployDelegateOwner.s.sol contract DeployDelegateOwner is DeployCapability { address public l2Sam = 0x1670000000000000000000000000000000000006; - address public testAccount2 = vm.envAddress("TEST_ACCOUNT2"); + address public testAccount2 = 0x3c181965C5cFAE61a9010A283e5e0C1445649810; address public l1Owner = testAccount2; address public l2Admin = testAccount2; From 550dda334dfa2d53a757ce46091acaba4248371a Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Fri, 25 Oct 2024 00:54:35 -0700 Subject: [PATCH 085/205] feat(docs-site): add banner for mainnet protocol upgrade (#18306) --- packages/docs-site/src/content/config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/docs-site/src/content/config.ts b/packages/docs-site/src/content/config.ts index 96cdce61ff5..6770faff3b0 100644 --- a/packages/docs-site/src/content/config.ts +++ b/packages/docs-site/src/content/config.ts @@ -8,9 +8,9 @@ export const collections = { description: z .string() .max(160, { message: "Must be 160 characters or less." }).optional(), - // banner: z.object({ content: z.string() }).default({ - // content: '', - // }), + banner: z.object({ content: z.string() }).default({ + content: 'All Mainnet Node Runners: Protocol upgrade on Oct 31st in preparation for Ontake fork, upgrade needed. Please ensure your nodes are using the software tags listed in the announcement! Click here for more info', + }), }), }), }), From 0e905f0c8476d993566d3c4a2dae4e9890f1b5c5 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Fri, 25 Oct 2024 01:11:28 -0700 Subject: [PATCH 086/205] chore(main): release docs-site 1.14.0 (#18307) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 7 +++++++ packages/docs-site/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5246ed8047a..d5c942d4a91 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.13.0", + "packages/docs-site": "1.14.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index 063c0ca8db9..aec0022e570 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.14.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.13.0...docs-site-v1.14.0) (2024-10-25) + + +### Features + +* **docs-site:** add banner for mainnet protocol upgrade ([#18306](https://github.com/taikoxyz/taiko-mono/issues/18306)) ([550dda3](https://github.com/taikoxyz/taiko-mono/commit/550dda334dfa2d53a757ce46091acaba4248371a)) + ## [1.13.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.12.3...docs-site-v1.13.0) (2024-10-25) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index 28b91d9904c..89aa71af7ed 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.13.0", + "version": "1.14.0", "scripts": { "dev": "astro dev", "start": "astro dev", From fbad703739f09d4524f9d808c3bad31d0122ec2c Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Sat, 26 Oct 2024 12:59:58 +0800 Subject: [PATCH 087/205] refactor(protocol): simplify some protocol code based on OpenZeppelin's recommendation (#18308) --- .../contracts/layer1/based/LibProposing.sol | 79 ++++++++++--------- .../contracts/layer1/based/LibProving.sol | 2 +- .../contracts/layer1/based/LibVerifying.sol | 25 +++--- 3 files changed, 55 insertions(+), 51 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index 3552bbae332..a3437d83685 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -14,6 +14,8 @@ import "./LibVerifying.sol"; library LibProposing { using LibAddress for address; + uint256 internal constant SECONDS_PER_BLOCK = 12; + struct Local { TaikoData.SlotB b; TaikoData.BlockParamsV2 params; @@ -178,17 +180,22 @@ library LibProposing { local.params.coinbase = local.params.proposer; } - if (!local.postFork || local.params.anchorBlockId == 0) { - local.params.anchorBlockId = uint64(block.number - 1); + if (local.params.anchorBlockId == 0) { + unchecked { + local.params.anchorBlockId = + local.postFork ? uint64(block.number - 1) : uint64(block.number); + } } - if (!local.postFork || local.params.timestamp == 0) { + if (local.params.timestamp == 0) { local.params.timestamp = uint64(block.timestamp); } // Verify params against the parent block. - TaikoData.BlockV2 storage parentBlk = - _state.blocks[(local.b.numBlocks - 1) % _config.blockRingBufferSize]; + TaikoData.BlockV2 storage parentBlk; + unchecked { + parentBlk = _state.blocks[(local.b.numBlocks - 1) % _config.blockRingBufferSize]; + } if (local.postFork) { // Verify the passed in L1 state block number. @@ -208,8 +215,8 @@ library LibProposing { // The other constraint is that the timestamp needs to be larger than or equal the // one in the previous L2 block. if ( - local.params.timestamp + _config.maxAnchorHeightOffset * 12 < block.timestamp - || local.params.timestamp > block.timestamp + local.params.timestamp + _config.maxAnchorHeightOffset * SECONDS_PER_BLOCK + < block.timestamp || local.params.timestamp > block.timestamp || local.params.timestamp < parentBlk.proposedAt ) { revert L1_INVALID_TIMESTAMP(); @@ -228,35 +235,31 @@ library LibProposing { // the block data to be stored on-chain for future integrity checks. // If we choose to persist all data fields in the metadata, it will // require additional storage slots. - unchecked { - meta_ = TaikoData.BlockMetadataV2({ - anchorBlockHash: blockhash(local.params.anchorBlockId), - difficulty: keccak256(abi.encode("TAIKO_DIFFICULTY", local.b.numBlocks)), - blobHash: 0, // to be initialized below - // To make sure each L2 block can be exexucated deterministiclly by the client - // without referering to its metadata on Ethereum, we need to encode - // config.sharingPctg into the extraData. - extraData: local.postFork - ? _encodeBaseFeeConfig(_config.baseFeeConfig) - : local.extraData, - coinbase: local.params.coinbase, - id: local.b.numBlocks, - gasLimit: _config.blockMaxGasLimit, - timestamp: local.params.timestamp, - anchorBlockId: local.params.anchorBlockId, - minTier: 0, // to be initialized below - blobUsed: _txList.length == 0, - parentMetaHash: local.params.parentMetaHash, - proposer: local.params.proposer, - livenessBond: _config.livenessBond, - proposedAt: uint64(block.timestamp), - proposedIn: uint64(block.number), - blobTxListOffset: local.params.blobTxListOffset, - blobTxListLength: local.params.blobTxListLength, - blobIndex: local.params.blobIndex, - baseFeeConfig: _config.baseFeeConfig - }); - } + meta_ = TaikoData.BlockMetadataV2({ + anchorBlockHash: blockhash(local.params.anchorBlockId), + difficulty: keccak256(abi.encode("TAIKO_DIFFICULTY", local.b.numBlocks)), + blobHash: 0, // to be initialized below + // To make sure each L2 block can be exexucated deterministiclly by the client + // without referering to its metadata on Ethereum, we need to encode + // config.sharingPctg into the extraData. + extraData: local.postFork ? _encodeBaseFeeConfig(_config.baseFeeConfig) : local.extraData, + coinbase: local.params.coinbase, + id: local.b.numBlocks, + gasLimit: _config.blockMaxGasLimit, + timestamp: local.params.timestamp, + anchorBlockId: local.params.anchorBlockId, + minTier: 0, // to be initialized below + blobUsed: _txList.length == 0, + parentMetaHash: local.params.parentMetaHash, + proposer: local.params.proposer, + livenessBond: _config.livenessBond, + proposedAt: uint64(block.timestamp), + proposedIn: uint64(block.number), + blobTxListOffset: local.params.blobTxListOffset, + blobTxListLength: local.params.blobTxListLength, + blobIndex: local.params.blobIndex, + baseFeeConfig: _config.baseFeeConfig + }); // Update certain meta fields if (meta_.blobUsed) { @@ -292,8 +295,8 @@ library LibProposing { assignedProver: address(0), livenessBond: local.postFork ? 0 : meta_.livenessBond, blockId: local.b.numBlocks, - proposedAt: local.postFork ? local.params.timestamp : uint64(block.timestamp), - proposedIn: local.postFork ? local.params.anchorBlockId : uint64(block.number), + proposedAt: local.params.timestamp, + proposedIn: local.params.anchorBlockId, // For a new block, the next transition ID is always 1, not 0. nextTransitionId: 1, livenessBondReturned: false, diff --git a/packages/protocol/contracts/layer1/based/LibProving.sol b/packages/protocol/contracts/layer1/based/LibProving.sol index 3ead8de2ed5..d5f127138cb 100644 --- a/packages/protocol/contracts/layer1/based/LibProving.sol +++ b/packages/protocol/contracts/layer1/based/LibProving.sol @@ -648,7 +648,7 @@ library LibProving { /// @dev Returns the reward after applying 12.5% friction. function _rewardAfterFriction(uint256 _amount) private pure returns (uint256) { - return _amount == 0 ? 0 : (_amount * 7) >> 3; + return (_amount * 7) >> 3; } /// @dev Returns if the liveness bond shall be returned. diff --git a/packages/protocol/contracts/layer1/based/LibVerifying.sol b/packages/protocol/contracts/layer1/based/LibVerifying.sol index 0957acb859f..82cdba18bd3 100644 --- a/packages/protocol/contracts/layer1/based/LibVerifying.sol +++ b/packages/protocol/contracts/layer1/based/LibVerifying.sol @@ -98,20 +98,21 @@ library LibVerifying { if (ts.contester != address(0)) { break; - } else { - if (local.tierRouter == ITierRouter(address(0))) { - local.tierRouter = - ITierRouter(_resolver.resolve(LibStrings.B_TIER_ROUTER, false)); - } + } - uint24 cooldown = ITierProvider(local.tierRouter.getProvider(local.blockId)) - .getTier(local.tier).cooldownWindow; + if (local.tierRouter == ITierRouter(address(0))) { + local.tierRouter = + ITierRouter(_resolver.resolve(LibStrings.B_TIER_ROUTER, false)); + } - if (!LibUtils.isPostDeadline(ts.timestamp, local.b.lastUnpausedAt, cooldown)) { - // If cooldownWindow is 0, the block can theoretically - // be proved and verified within the same L1 block. - break; - } + uint24 cooldown = ITierProvider(local.tierRouter.getProvider(local.blockId)).getTier( + local.tier + ).cooldownWindow; + + if (!LibUtils.isPostDeadline(ts.timestamp, local.b.lastUnpausedAt, cooldown)) { + // If cooldownWindow is 0, the block can theoretically + // be proved and verified within the same L1 block. + break; } // Update variables From 183d5cc41c1671a533e844d13d43210354d43a96 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Sun, 27 Oct 2024 19:08:46 -0700 Subject: [PATCH 088/205] revert(repo): revert release-please change (#18313) --- .github/workflows/repo--release-please.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/repo--release-please.yml b/.github/workflows/repo--release-please.yml index ea7c47a87c2..99559795b17 100644 --- a/.github/workflows/repo--release-please.yml +++ b/.github/workflows/repo--release-please.yml @@ -11,7 +11,6 @@ permissions: jobs: release-please: - if: ${{ !contains(github.event.head_commit.message, 'chore(main):') }} runs-on: [arc-runner-set] steps: - uses: googleapis/release-please-action@v4 From 13cc0074a2295c5939cf83e23f531cb25c43bd64 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 28 Oct 2024 10:18:58 +0800 Subject: [PATCH 089/205] chore(protocol): improve the usage of `initializer` and `reinitializer` (#18319) --- .../contracts/layer1/based/TaikoL1.sol | 3 +- .../contracts/shared/bridge/Bridge.sol | 3 +- .../shared/common/AddressManager.sol | 3 +- .../shared/tokenvault/BridgedERC20V2.sol | 32 +++++++------------ .../test/shared/thirdparty/Multicall3.sol | 4 --- 5 files changed, 18 insertions(+), 27 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index 9864fd037fc..a7a33982dc6 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -49,13 +49,14 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { bool _toPause ) external - reinitializer(2) + initializer { __Essential_init(_owner, _rollupAddressManager); LibUtils.init(state, getConfig(), _genesisBlockHash); if (_toPause) _pause(); } + /// @notice This function shall be called by previously deployed contracts. function init2() external onlyOwner reinitializer(2) { // reset some previously used slots for future reuse state.slotB.__reservedB1 = 0; diff --git a/packages/protocol/contracts/shared/bridge/Bridge.sol b/packages/protocol/contracts/shared/bridge/Bridge.sol index 813445ef678..9805db23013 100644 --- a/packages/protocol/contracts/shared/bridge/Bridge.sol +++ b/packages/protocol/contracts/shared/bridge/Bridge.sol @@ -104,10 +104,11 @@ contract Bridge is EssentialContract, IBridge { /// @notice Initializes the contract. /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. /// @param _sharedAddressManager The address of the {AddressManager} contract. - function init(address _owner, address _sharedAddressManager) external reinitializer(2) { + function init(address _owner, address _sharedAddressManager) external initializer { __Essential_init(_owner, _sharedAddressManager); } + /// @notice This function shall be called by previously deployed contracts. function init2() external onlyOwner reinitializer(2) { // reset some previously used slots for future reuse __reserved1 = 0; diff --git a/packages/protocol/contracts/shared/common/AddressManager.sol b/packages/protocol/contracts/shared/common/AddressManager.sol index d16e9f97c55..0fe5dddc5c7 100644 --- a/packages/protocol/contracts/shared/common/AddressManager.sol +++ b/packages/protocol/contracts/shared/common/AddressManager.sol @@ -25,10 +25,11 @@ contract AddressManager is EssentialContract, IAddressManager { /// @notice Initializes the contract. /// @param _owner The owner of this contract. - function init(address _owner) external reinitializer(2) { + function init(address _owner) external initializer { __Essential_init(_owner, address(this)); } + /// @notice This function shall be called by previously deployed contracts. function init2() external onlyOwner reinitializer(2) { addressManager = address(this); } diff --git a/packages/protocol/contracts/shared/tokenvault/BridgedERC20V2.sol b/packages/protocol/contracts/shared/tokenvault/BridgedERC20V2.sol index cc2b58ffa76..85cdfafefc6 100644 --- a/packages/protocol/contracts/shared/tokenvault/BridgedERC20V2.sol +++ b/packages/protocol/contracts/shared/tokenvault/BridgedERC20V2.sol @@ -29,7 +29,9 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea error BTOKEN_INVALID_SIG(); /// @inheritdoc IBridgedERC20Initializable - /// @dev Calling this function will change the initialized version to 2. + /// @dev This function is called when the bridge deploys a new bridged ERC20 token, so this + /// function must also cover the logic in init2(), we use + /// `reinitializer(2)` instead of `initializer`. function init( address _owner, address _sharedAddressManager, @@ -48,31 +50,27 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea LibBridgedToken.validateInputs(_srcToken, _srcChainId); __Essential_init(_owner, _sharedAddressManager); __ERC20_init(_name, _symbol); - __EIP712_init_unchained(_name, "1"); - // Set contract properties srcToken = _srcToken; srcChainId = _srcChainId; __srcDecimals = _decimals; + + // Cover logics from `init2()` + __EIP712_init_unchained(_name, "1"); } - /// @dev This function shall be called when upgrading a deployed contract from {BridgedERC20} to - /// {BridgedERC20V2}. + /// @notice This function shall be called by previously deployed contracts. function init2() external reinitializer(2) { __EIP712_init_unchained(name(), "1"); } - /** - * @inheritdoc IERC20PermitUpgradeable - */ - // solhint-disable-next-line func-name-mixedcase + /// @inheritdoc IERC20PermitUpgradeable + // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view override returns (bytes32) { return _domainSeparatorV4(); } - /** - * @inheritdoc IERC20PermitUpgradeable - */ + /// @inheritdoc IERC20PermitUpgradeable function permit( address owner, address spender, @@ -100,9 +98,7 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea _approve(owner, spender, value); } - /** - * @inheritdoc IERC20PermitUpgradeable - */ + /// @inheritdoc IERC20PermitUpgradeable function nonces(address owner) public view virtual override returns (uint256) { return _nonces[owner].current(); } @@ -113,11 +109,7 @@ contract BridgedERC20V2 is BridgedERC20, IERC20PermitUpgradeable, EIP712Upgradea || super.supportsInterface(_interfaceId); } - /** - * @dev "Consume a nonce": return the current value and increment. - * - * _Available since v4.1._ - */ + /// @dev "Consume a nonce": return the current value and increment. function _useNonce(address owner) internal virtual returns (uint256 current) { CountersUpgradeable.Counter storage nonce = _nonces[owner]; current = nonce.current(); diff --git a/packages/protocol/test/shared/thirdparty/Multicall3.sol b/packages/protocol/test/shared/thirdparty/Multicall3.sol index 2b15bc3d116..38b96a3e872 100644 --- a/packages/protocol/test/shared/thirdparty/Multicall3.sol +++ b/packages/protocol/test/shared/thirdparty/Multicall3.sol @@ -1,7 +1,3 @@ -/** - * Submitted for verification at taikoscan.io on 2024-05-30 - */ - // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; From 0607ef718dbe34c0ffe125825b12001b36a43fc5 Mon Sep 17 00:00:00 2001 From: AlexWu Date: Mon, 28 Oct 2024 04:37:31 +0100 Subject: [PATCH 090/205] chore(docs): redirect the contribution.md path (#18316) --- packages/protocol/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/README.md b/packages/protocol/README.md index 547fa503d66..f71ac8c7eb1 100644 --- a/packages/protocol/README.md +++ b/packages/protocol/README.md @@ -136,7 +136,7 @@ This command runs the deployment script located at `script/deploy_protocol_on_l1 ## Style Guide -Refer to [CONTRIBUTING.md](https://www.notion.so/CONTRIBUTING.md) for code style guidelines. +Refer to [CONTRIBUTING.md](../../CONTRIBUTING.md) for code style guidelines. Before committing code, format and lint it using: From 75feb5b36560b786a54e97280352c0d70c3e2f06 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:12:08 +0800 Subject: [PATCH 091/205] chore(protocol): change Hekla sharingPctg to 80% & gasIssuancePerSecond to 1000000 (#18322) --- packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol | 4 ++-- packages/protocol/test/layer2/Lib1559Math.t.sol | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol b/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol index 162ca9e930c..df331237bb0 100644 --- a/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol +++ b/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol @@ -22,8 +22,8 @@ contract HeklaTaikoL1 is TaikoL1 { maxAnchorHeightOffset: 64, baseFeeConfig: LibSharedData.BaseFeeConfig({ adjustmentQuotient: 8, - sharingPctg: 75, - gasIssuancePerSecond: 5_000_000, + sharingPctg: 80, + gasIssuancePerSecond: 1_000_000, minGasExcess: 1_340_000_000, maxGasIssuancePerBlock: 600_000_000 // two minutes }), diff --git a/packages/protocol/test/layer2/Lib1559Math.t.sol b/packages/protocol/test/layer2/Lib1559Math.t.sol index dd821e0e13e..b650f231e23 100644 --- a/packages/protocol/test/layer2/Lib1559Math.t.sol +++ b/packages/protocol/test/layer2/Lib1559Math.t.sol @@ -36,7 +36,7 @@ contract TestLib1559Math is TaikoL2Test { console2.log("Mainnet minimal basefee: ", Lib1559Math.basefee(1_340_000_000, 5_000_000 * 8)); } - function test_change_of_quotient_and_gips() public { + function test_change_of_quotient_and_gasIssuancePerSecond() public { uint64 excess = 150 * 2_000_000; uint64 target = 4 * 2_000_000; uint256 unit = 10_000_000; // 0.01 gwei @@ -74,7 +74,7 @@ contract TestLib1559Math is TaikoL2Test { } } - function test_change_of_quotient_and_gips2() public { + function test_change_of_quotient_and_gasIssuancePerSecond2() public { uint64 excess = 1; uint64 target = 60_000_000 * 8; uint256 unit = 10_000_000; // 0.01 gwei From 4288fb6e0c8c76651d2db866cab55f32a9a25075 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:02:02 +0800 Subject: [PATCH 092/205] fix(protocl): check blockId in getBlock and getBlockV2 (#18327) --- packages/protocol/contracts/layer1/based/TaikoL1.sol | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index a7a33982dc6..4b0f364efba 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -189,12 +189,14 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { /// @param _blockId Index of the block. /// @return blk_ The block. function getBlock(uint64 _blockId) external view returns (TaikoData.Block memory blk_) { + require(_blockId < getConfig().ontakeForkHeight, L1_INVALID_PARAMS()); (TaikoData.BlockV2 memory blk,) = LibUtils.getBlock(state, getConfig(), _blockId); blk_ = LibData.blockV2toV1(blk); } /// @inheritdoc ITaikoL1 function getBlockV2(uint64 _blockId) external view returns (TaikoData.BlockV2 memory blk_) { + require(_blockId >= getConfig().ontakeForkHeight, L1_INVALID_PARAMS()); (blk_,) = LibUtils.getBlock(state, getConfig(), _blockId); } From 7436bae9660cfcf1d430ca111df8c75d50908eae Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:04:23 +0800 Subject: [PATCH 093/205] fix(protocol): fix a new bug in LibProposing (#18328) --- .../contracts/layer1/based/LibProposing.sol | 13 ++++++------- .../protocol/contracts/layer1/based/TaikoL1.sol | 2 -- .../test/layer1/based/TaikoL1testGroupA1.t.sol | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index a3437d83685..8ea6711dbd3 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -180,15 +180,14 @@ library LibProposing { local.params.coinbase = local.params.proposer; } - if (local.params.anchorBlockId == 0) { - unchecked { - local.params.anchorBlockId = - local.postFork ? uint64(block.number - 1) : uint64(block.number); + unchecked { + if (local.params.anchorBlockId == 0) { + local.params.anchorBlockId = uint64(block.number - 1); } - } - if (local.params.timestamp == 0) { - local.params.timestamp = uint64(block.timestamp); + if (local.params.timestamp == 0) { + local.params.timestamp = uint64(block.timestamp); + } } // Verify params against the parent block. diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index 4b0f364efba..a7a33982dc6 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -189,14 +189,12 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { /// @param _blockId Index of the block. /// @return blk_ The block. function getBlock(uint64 _blockId) external view returns (TaikoData.Block memory blk_) { - require(_blockId < getConfig().ontakeForkHeight, L1_INVALID_PARAMS()); (TaikoData.BlockV2 memory blk,) = LibUtils.getBlock(state, getConfig(), _blockId); blk_ = LibData.blockV2toV1(blk); } /// @inheritdoc ITaikoL1 function getBlockV2(uint64 _blockId) external view returns (TaikoData.BlockV2 memory blk_) { - require(_blockId >= getConfig().ontakeForkHeight, L1_INVALID_PARAMS()); (blk_,) = LibUtils.getBlock(state, getConfig(), _blockId); } diff --git a/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol b/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol index 1aa4a34452d..12c7e272bdc 100644 --- a/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol @@ -46,7 +46,7 @@ contract TaikoL1TestGroupA1 is TaikoL1TestGroupBase { assertTrue(blk.livenessBond > 0); assertEq(blk.assignedProver, address(0)); assertEq(blk.proposedAt, block.timestamp); - assertEq(blk.proposedIn, block.number); + assertEq(blk.proposedIn, block.number - 1); // Prove the block bytes32 blockHash = bytes32(uint256(10_000 + i)); From 9d18d598fe3e890a1f35e2d39916d554282ee4a0 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 29 Oct 2024 10:14:00 +0800 Subject: [PATCH 094/205] fix(protocol): revert a change to maintain taiko-geth compatibility (#18331) Co-authored-by: David --- .../protocol/contracts/layer1/based/LibProposing.sol | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index 8ea6711dbd3..9799ee9e0ea 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -180,14 +180,12 @@ library LibProposing { local.params.coinbase = local.params.proposer; } - unchecked { - if (local.params.anchorBlockId == 0) { - local.params.anchorBlockId = uint64(block.number - 1); - } + if (!local.postFork || local.params.anchorBlockId == 0) { + local.params.anchorBlockId = uint64(block.number - 1); + } - if (local.params.timestamp == 0) { - local.params.timestamp = uint64(block.timestamp); - } + if (!local.postFork || local.params.timestamp == 0) { + local.params.timestamp = uint64(block.timestamp); } // Verify params against the parent block. From 5cb43ab1e29422353de549f8386eff613291c7df Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 29 Oct 2024 10:31:18 +0800 Subject: [PATCH 095/205] fix(protocol): revert changes related to `proposedIn` and `proposedAt` to fix a bug (#18333) --- .../protocol/contracts/layer1/based/LibProposing.sol | 12 +++++++----- .../test/layer1/based/TaikoL1testGroupA1.t.sol | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index 9799ee9e0ea..857a760c1b1 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -180,11 +180,13 @@ library LibProposing { local.params.coinbase = local.params.proposer; } - if (!local.postFork || local.params.anchorBlockId == 0) { - local.params.anchorBlockId = uint64(block.number - 1); + if (local.params.anchorBlockId == 0) { + unchecked { + local.params.anchorBlockId = uint64(block.number - 1); + } } - if (!local.postFork || local.params.timestamp == 0) { + if (local.params.timestamp == 0) { local.params.timestamp = uint64(block.timestamp); } @@ -292,8 +294,8 @@ library LibProposing { assignedProver: address(0), livenessBond: local.postFork ? 0 : meta_.livenessBond, blockId: local.b.numBlocks, - proposedAt: local.params.timestamp, - proposedIn: local.params.anchorBlockId, + proposedAt: local.postFork ? local.params.timestamp : uint64(block.timestamp), + proposedIn: local.postFork ? local.params.anchorBlockId : uint64(block.number), // For a new block, the next transition ID is always 1, not 0. nextTransitionId: 1, livenessBondReturned: false, diff --git a/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol b/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol index 12c7e272bdc..1aa4a34452d 100644 --- a/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol @@ -46,7 +46,7 @@ contract TaikoL1TestGroupA1 is TaikoL1TestGroupBase { assertTrue(blk.livenessBond > 0); assertEq(blk.assignedProver, address(0)); assertEq(blk.proposedAt, block.timestamp); - assertEq(blk.proposedIn, block.number - 1); + assertEq(blk.proposedIn, block.number); // Prove the block bytes32 blockHash = bytes32(uint256(10_000 + i)); From 5d75c15fb30d7d75bb78df7035c7a0c1e41ce0b4 Mon Sep 17 00:00:00 2001 From: maskpp Date: Tue, 29 Oct 2024 10:39:34 +0800 Subject: [PATCH 096/205] test(taiko-client): trigger client tests when there are changes in the protocol/contracts (#18332) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- .github/workflows/taiko-client--test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index 21f2824e1c4..c01594fc7fa 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -4,6 +4,7 @@ on: pull_request: types: [opened, synchronize, reopened, ready_for_review] paths: + - "packages/protocol/contracts/layer1/based/**" - "packages/taiko-client/**" - "go.mod" - "go.sum" From 3d448d4a78608ea7daf1d50e877c32f8d30f1e7a Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 29 Oct 2024 12:21:29 +0800 Subject: [PATCH 097/205] chore(protocol): change Hekla gas issuance per sec to 100000 (#18335) --- packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol b/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol index df331237bb0..dedea948ec6 100644 --- a/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol +++ b/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol @@ -23,7 +23,7 @@ contract HeklaTaikoL1 is TaikoL1 { baseFeeConfig: LibSharedData.BaseFeeConfig({ adjustmentQuotient: 8, sharingPctg: 80, - gasIssuancePerSecond: 1_000_000, + gasIssuancePerSecond: 100_000, minGasExcess: 1_340_000_000, maxGasIssuancePerBlock: 600_000_000 // two minutes }), From 74e4ca4aaef07af4958a7b61c95e385022b1cf3c Mon Sep 17 00:00:00 2001 From: David Date: Tue, 29 Oct 2024 13:13:08 +0800 Subject: [PATCH 098/205] chore(taiko-client): update docker-compose config (#18330) Co-authored-by: maskpp --- .github/workflows/taiko-client--test.yml | 2 +- packages/taiko-client/internal/docker/nodes/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index c01594fc7fa..d8507834faf 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -38,7 +38,7 @@ jobs: strategy: matrix: - execution_node: [l2_geth, l2_reth] + execution_node: [l2_geth] steps: - name: Cancel Previous Runs diff --git a/packages/taiko-client/internal/docker/nodes/docker-compose.yml b/packages/taiko-client/internal/docker/nodes/docker-compose.yml index 429595fbf26..1c81f01f92c 100644 --- a/packages/taiko-client/internal/docker/nodes/docker-compose.yml +++ b/packages/taiko-client/internal/docker/nodes/docker-compose.yml @@ -1,7 +1,7 @@ services: l1_node: container_name: l1_node - image: ghcr.io/foundry-rs/foundry:nightly-2044faec64f99a21f0e5f0094458a973612d0712 + image: ghcr.io/foundry-rs/foundry:nightly restart: unless-stopped platform: linux/amd64 pull_policy: always From 44286615a0e0b0a17892fe83aad96546a6b1aca1 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 29 Oct 2024 14:13:25 +0800 Subject: [PATCH 099/205] fix(protocol): small fix to 1559 error check (#18339) --- packages/protocol/contracts/layer2/based/Lib1559Math.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/layer2/based/Lib1559Math.sol b/packages/protocol/contracts/layer2/based/Lib1559Math.sol index 44f91ff2484..99502d13dd3 100644 --- a/packages/protocol/contracts/layer2/based/Lib1559Math.sol +++ b/packages/protocol/contracts/layer2/based/Lib1559Math.sol @@ -57,7 +57,7 @@ library Lib1559Math { uint256 f = FixedPointMathLib.WAD; uint256 ratio = f * _newGasTarget / _gasTarget; - if (ratio > uint256(type(int256).max)) revert EIP1559_INVALID_PARAMS(); + if (ratio == 0 || ratio > uint256(type(int256).max)) revert EIP1559_INVALID_PARAMS(); int256 lnRatio = FixedPointMathLib.lnWad(int256(ratio)); // may be negative From ae8ac3c2e686b136de8c68853ecb91a39260a93f Mon Sep 17 00:00:00 2001 From: David Date: Tue, 29 Oct 2024 14:39:45 +0800 Subject: [PATCH 100/205] chore(protocol): revert Hekla `baseFeeConfig` updates (#18340) --- packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol b/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol index dedea948ec6..162ca9e930c 100644 --- a/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol +++ b/packages/protocol/contracts/layer1/hekla/HeklaTaikoL1.sol @@ -22,8 +22,8 @@ contract HeklaTaikoL1 is TaikoL1 { maxAnchorHeightOffset: 64, baseFeeConfig: LibSharedData.BaseFeeConfig({ adjustmentQuotient: 8, - sharingPctg: 80, - gasIssuancePerSecond: 100_000, + sharingPctg: 75, + gasIssuancePerSecond: 5_000_000, minGasExcess: 1_340_000_000, maxGasIssuancePerBlock: 600_000_000 // two minutes }), From 75d14a7afac83b4578a3c32456a28ae70373d5cb Mon Sep 17 00:00:00 2001 From: David Date: Tue, 29 Oct 2024 14:41:01 +0800 Subject: [PATCH 101/205] chore(taiko-client): add `BaseFeeConfig.SharingPctg` to mainnet protocol config (#18341) --- packages/taiko-client/bindings/encoding/protocol_config.go | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/taiko-client/bindings/encoding/protocol_config.go b/packages/taiko-client/bindings/encoding/protocol_config.go index 27d0c4684ba..ee2163db681 100644 --- a/packages/taiko-client/bindings/encoding/protocol_config.go +++ b/packages/taiko-client/bindings/encoding/protocol_config.go @@ -58,6 +58,7 @@ var ( OntakeForkHeight: 538_304, BaseFeeConfig: bindings.LibSharedDataBaseFeeConfig{ AdjustmentQuotient: 8, + SharingPctg: 75, GasIssuancePerSecond: 5_000_000, MinGasExcess: 1_340_000_000, MaxGasIssuancePerBlock: 600_000_000, From 4f698a02bb1714caf527629a637323a9964cdb11 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 29 Oct 2024 14:42:25 +0800 Subject: [PATCH 102/205] chore(taiko-client): update Go contract bindings generation script (#18324) Co-authored-by: maskpp --- packages/taiko-client/bindings/.githead | 2 +- packages/taiko-client/scripts/gen_bindings.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead index c43bce274c9..d214b1e728d 100644 --- a/packages/taiko-client/bindings/.githead +++ b/packages/taiko-client/bindings/.githead @@ -1 +1 @@ -b93d056479adfc4a1f557578d8b66eda48b104a9 +13cc0074a2295c5939cf83e23f531cb25c43bd64 diff --git a/packages/taiko-client/scripts/gen_bindings.sh b/packages/taiko-client/scripts/gen_bindings.sh index 8a527663d7a..6848dde2e5c 100755 --- a/packages/taiko-client/scripts/gen_bindings.sh +++ b/packages/taiko-client/scripts/gen_bindings.sh @@ -66,7 +66,7 @@ cat ../protocol/out/layer1/ProverSet.sol/ProverSet.json | jq .abi | ${ABIGEN_BIN} --abi - --type ProverSet --pkg bindings --out $DIR/../bindings/gen_prover_set.go -cat ../protocol/out/layer1/DevnetTierProvider.sol/DevnetTierProvider.json | +cat ../protocol/out/layer1/MainnetTierRouter.sol/MainnetTierRouter.json | jq .abi | ${ABIGEN_BIN} --abi - --type TierProvider --pkg bindings --out $DIR/../bindings/gen_tier_provider.go From 3d12cb24b16c7eede1930b928408c1462134f5a7 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Tue, 29 Oct 2024 00:25:01 -0700 Subject: [PATCH 103/205] chore(main): release protocol 1.10.0 (#18077) --- .release-please-manifest.json | 2 +- packages/protocol/CHANGELOG.md | 77 ++++++++++++++++++++++++++++++++++ packages/protocol/package.json | 2 +- 3 files changed, 79 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d5c942d4a91..8ad86e806be 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -5,7 +5,7 @@ "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", "packages/guardian-prover-health-check-ui": "0.2.0", - "packages/protocol": "1.9.0", + "packages/protocol": "1.10.0", "packages/relayer": "0.12.0", "packages/snaefell-ui": "1.1.0", "packages/supplementary-contracts": "1.0.0", diff --git a/packages/protocol/CHANGELOG.md b/packages/protocol/CHANGELOG.md index e3cd132ef6a..b53dda5f470 100644 --- a/packages/protocol/CHANGELOG.md +++ b/packages/protocol/CHANGELOG.md @@ -1,5 +1,82 @@ # Changelog +## [1.10.0](https://github.com/taikoxyz/taiko-mono/compare/protocol-v1.9.0...protocol-v1.10.0) (2024-10-29) + + +### Features + +* **protocol:** add `proposeBlocksV2` method to `ProverSet` ([#18115](https://github.com/taikoxyz/taiko-mono/issues/18115)) ([0743a99](https://github.com/taikoxyz/taiko-mono/commit/0743a99ee6ab403024bab5834178399fbeebb4e5)) +* **protocol:** add aggregated sgx verify test ([#18160](https://github.com/taikoxyz/taiko-mono/issues/18160)) ([8dda47b](https://github.com/taikoxyz/taiko-mono/commit/8dda47bf9ee47faa8a0d16dde0b4398d5e7019f8)) +* **protocol:** add Hekla Ontake hardfork upgrade scripts ([#18103](https://github.com/taikoxyz/taiko-mono/issues/18103)) ([a3436e8](https://github.com/taikoxyz/taiko-mono/commit/a3436e8cafbc96ebfa5742ada995adae39c572ce)) +* **protocol:** allow owner to update recipient in TokenUnlock ([#18184](https://github.com/taikoxyz/taiko-mono/issues/18184)) ([773ae1b](https://github.com/taikoxyz/taiko-mono/commit/773ae1b11f309ee8c4e0b1c0d22b9bfa41beae0d)) +* **protocol:** check-in `HeklaTaikoToken` ([#18189](https://github.com/taikoxyz/taiko-mono/issues/18189)) ([60c38d8](https://github.com/taikoxyz/taiko-mono/commit/60c38d8d179f2c02a0ed87f97bd34dc708b38df4)) +* **protocol:** enable sp1 batch aggregation ([#18199](https://github.com/taikoxyz/taiko-mono/issues/18199)) ([038cd32](https://github.com/taikoxyz/taiko-mono/commit/038cd326668b3a882798ecb4e7f9e3ecadc6dc28)) +* **protocol:** improve `getTransitions` ([#18181](https://github.com/taikoxyz/taiko-mono/issues/18181)) ([868d733](https://github.com/taikoxyz/taiko-mono/commit/868d733db962a76261036c3e583cb50feaec901f)) +* **protocol:** Increase the probability of sgx proof for lab proposer ([#18288](https://github.com/taikoxyz/taiko-mono/issues/18288)) ([fd0dbbb](https://github.com/taikoxyz/taiko-mono/commit/fd0dbbbb3df0db27873e0ba87e45a5165fb7c0f1)) +* **protocol:** introduce `getTransitions` in TaikoL1 ([#18154](https://github.com/taikoxyz/taiko-mono/issues/18154)) ([273bf53](https://github.com/taikoxyz/taiko-mono/commit/273bf53fad763b8504353e7cc14c8585e341f9d0)) +* **protocol:** make sure `init()` covers logics in `init2()`, `init3()`.. ([#18292](https://github.com/taikoxyz/taiko-mono/issues/18292)) ([9d06958](https://github.com/taikoxyz/taiko-mono/commit/9d06958e713e530fdd610c439c7b93199d0dcc69)) +* **protocol:** rename B_BLOCK_PROPOSER to B_PRECONF_REGISTRY ([#18255](https://github.com/taikoxyz/taiko-mono/issues/18255)) ([bf3caf7](https://github.com/taikoxyz/taiko-mono/commit/bf3caf7d986d7b03cf3bd0aa69ea97602bff80aa)) +* **protocol:** update mainnet `ontakeForkHeight` config ([#18252](https://github.com/taikoxyz/taiko-mono/issues/18252)) ([7550882](https://github.com/taikoxyz/taiko-mono/commit/75508828d3755e1a831380cdd2ab321e67fa22fc)) +* **protocol:** update ric0 & sp1 verification contract ([#18269](https://github.com/taikoxyz/taiko-mono/issues/18269)) ([684a909](https://github.com/taikoxyz/taiko-mono/commit/684a909e83705c59b2b7a0a991424b7a8e9e03ad)) +* **protocol:** update sp1 contracts ([#18097](https://github.com/taikoxyz/taiko-mono/issues/18097)) ([6f26434](https://github.com/taikoxyz/taiko-mono/commit/6f264342fe48f8d193559ac0712cc875d643b6fd)) + + +### Bug Fixes + +* **protocl:** check blockId in getBlock and getBlockV2 ([#18327](https://github.com/taikoxyz/taiko-mono/issues/18327)) ([4288fb6](https://github.com/taikoxyz/taiko-mono/commit/4288fb6e0c8c76651d2db866cab55f32a9a25075)) +* **protocol:** avoid invocation in Bridge message processing if calldata is "" and value is 0 ([#18137](https://github.com/taikoxyz/taiko-mono/issues/18137)) ([10c2972](https://github.com/taikoxyz/taiko-mono/commit/10c29727081bd8f8b94bbfc4472b162ec552ef64)) +* **protocol:** correct the wrong router address for mainnet ([#18291](https://github.com/taikoxyz/taiko-mono/issues/18291)) ([ae0a9da](https://github.com/taikoxyz/taiko-mono/commit/ae0a9daf83ab8f323c216978724ebcb71de54cfe)) +* **protocol:** fix a new bug in LibProposing ([#18328](https://github.com/taikoxyz/taiko-mono/issues/18328)) ([7436bae](https://github.com/taikoxyz/taiko-mono/commit/7436bae9660cfcf1d430ca111df8c75d50908eae)) +* **protocol:** fix an issue in same transition check ([#18254](https://github.com/taikoxyz/taiko-mono/issues/18254)) ([233806e](https://github.com/taikoxyz/taiko-mono/commit/233806e4838aa12e8de436a37979ff3e614119f2)) +* **protocol:** fix DCAP configuration script ([#18088](https://github.com/taikoxyz/taiko-mono/issues/18088)) ([e8618c5](https://github.com/taikoxyz/taiko-mono/commit/e8618c54a58993499e852ec2ffc2468d4f0274ba)) +* **protocol:** fix issue in mainnet deployment script ([#18283](https://github.com/taikoxyz/taiko-mono/issues/18283)) ([5c371a1](https://github.com/taikoxyz/taiko-mono/commit/5c371a181af444999f611e03774ec096ffbd1226)) +* **protocol:** fix LibAddress.supportsInterface to handle undecodeable return data ([#18286](https://github.com/taikoxyz/taiko-mono/issues/18286)) ([299b4c9](https://github.com/taikoxyz/taiko-mono/commit/299b4c9ecf96644c909df70a3527ae5c2e728a07)) +* **protocol:** fix permission in ComposeVerifier ([#18302](https://github.com/taikoxyz/taiko-mono/issues/18302)) ([4c45d8b](https://github.com/taikoxyz/taiko-mono/commit/4c45d8bcdb52521ac1738ca271316d82689537b0)) +* **protocol:** fix proposeBlock()'s block id check ([#18227](https://github.com/taikoxyz/taiko-mono/issues/18227)) ([3a9d6c1](https://github.com/taikoxyz/taiko-mono/commit/3a9d6c166b7c6666eb2515893b6a3fbd00f4b1ea)) +* **protocol:** fix test related to SendMessageToDelegateOwner.s.sol ([#18300](https://github.com/taikoxyz/taiko-mono/issues/18300)) ([65daa3e](https://github.com/taikoxyz/taiko-mono/commit/65daa3e631b471d17dbffb1001dab66efa67c499)) +* **protocol:** fix wrong Bridged ERC20 address cache ([#18287](https://github.com/taikoxyz/taiko-mono/issues/18287)) ([49267ab](https://github.com/taikoxyz/taiko-mono/commit/49267abaa6d27d16fe4fb62ca0bb28d49b09d2f9)) +* **protocol:** revert a change to maintain taiko-geth compatibility ([#18331](https://github.com/taikoxyz/taiko-mono/issues/18331)) ([9d18d59](https://github.com/taikoxyz/taiko-mono/commit/9d18d598fe3e890a1f35e2d39916d554282ee4a0)) +* **protocol:** revert changes related to `proposedIn` and `proposedAt` to fix a bug ([#18333](https://github.com/taikoxyz/taiko-mono/issues/18333)) ([5cb43ab](https://github.com/taikoxyz/taiko-mono/commit/5cb43ab1e29422353de549f8386eff613291c7df)) +* **protocol:** reward non-assigned prover 7/8 liveness bond ([#18132](https://github.com/taikoxyz/taiko-mono/issues/18132)) ([9f99099](https://github.com/taikoxyz/taiko-mono/commit/9f99099ac271e6e2a0973a43084e29169386f2cd)) +* **protocol:** small fix to 1559 error check ([#18339](https://github.com/taikoxyz/taiko-mono/issues/18339)) ([4428661](https://github.com/taikoxyz/taiko-mono/commit/44286615a0e0b0a17892fe83aad96546a6b1aca1)) + + +### Chores + +* **docs:** redirect the contribution.md path ([#18316](https://github.com/taikoxyz/taiko-mono/issues/18316)) ([0607ef7](https://github.com/taikoxyz/taiko-mono/commit/0607ef718dbe34c0ffe125825b12001b36a43fc5)) +* **protocol:** add functions to ITaikoL1 for Nethermind Preconf ([#18217](https://github.com/taikoxyz/taiko-mono/issues/18217)) ([e349d22](https://github.com/taikoxyz/taiko-mono/commit/e349d2237a1830edab305b2f0eaaeb0eaf3c623f)) +* **protocol:** change Hekla gas issuance per sec to 100000 ([#18335](https://github.com/taikoxyz/taiko-mono/issues/18335)) ([3d448d4](https://github.com/taikoxyz/taiko-mono/commit/3d448d4a78608ea7daf1d50e877c32f8d30f1e7a)) +* **protocol:** change Hekla sharingPctg to 80% & gasIssuancePerSecond to 1000000 ([#18322](https://github.com/taikoxyz/taiko-mono/issues/18322)) ([75feb5b](https://github.com/taikoxyz/taiko-mono/commit/75feb5b36560b786a54e97280352c0d70c3e2f06)) +* **protocol:** fix lint issue in SP1Verifier ([#18213](https://github.com/taikoxyz/taiko-mono/issues/18213)) ([7874dd3](https://github.com/taikoxyz/taiko-mono/commit/7874dd3ff8a6053da8c09377b52c83e7a506f45f)) +* **protocol:** improve the usage of `initializer` and `reinitializer` ([#18319](https://github.com/taikoxyz/taiko-mono/issues/18319)) ([13cc007](https://github.com/taikoxyz/taiko-mono/commit/13cc0074a2295c5939cf83e23f531cb25c43bd64)) +* **protocol:** revert Hekla `baseFeeConfig` updates ([#18340](https://github.com/taikoxyz/taiko-mono/issues/18340)) ([ae8ac3c](https://github.com/taikoxyz/taiko-mono/commit/ae8ac3c2e686b136de8c68853ecb91a39260a93f)) +* **protocol:** set mainnet Ontake fork height ([#18112](https://github.com/taikoxyz/taiko-mono/issues/18112)) ([8812eb2](https://github.com/taikoxyz/taiko-mono/commit/8812eb2a8de367311b8ada6bd3587bfe5efee090)) +* **protocol:** shorten imports in solidity files ([#18221](https://github.com/taikoxyz/taiko-mono/issues/18221)) ([9b2ba6a](https://github.com/taikoxyz/taiko-mono/commit/9b2ba6a2a2fae24d1fb34e23b29b3146e96f575e)) +* **protoco:** remove unused delegate owner deployment ([#18290](https://github.com/taikoxyz/taiko-mono/issues/18290)) ([63ba863](https://github.com/taikoxyz/taiko-mono/commit/63ba863dcf322b2cf04d7dcaf6d8905bf28de6bc)) + + +### Documentation + +* **protocol:** fix invalid links in docs ([#18144](https://github.com/taikoxyz/taiko-mono/issues/18144)) ([c62f3f6](https://github.com/taikoxyz/taiko-mono/commit/c62f3f6b4a21f3af44f7df908fd8aac198721d5b)) +* **protocol:** update code4rena-2024-03-taiko-final-report.md ([#18062](https://github.com/taikoxyz/taiko-mono/issues/18062)) ([fd68794](https://github.com/taikoxyz/taiko-mono/commit/fd68794a2de24b7a32d2d5a1c3f52c2156b6d61a)) +* **protocol:** update Hekla deployments ([#18152](https://github.com/taikoxyz/taiko-mono/issues/18152)) ([6c7ff61](https://github.com/taikoxyz/taiko-mono/commit/6c7ff617b913b21b8b12b035f0d653c068830de3)) +* **protocol:** update Hekla deployments ([#18257](https://github.com/taikoxyz/taiko-mono/issues/18257)) ([fbb1c82](https://github.com/taikoxyz/taiko-mono/commit/fbb1c824e35adb452176d988f32cf06d0c72b9bf)) +* **protocol:** update L1 deployment ([#18299](https://github.com/taikoxyz/taiko-mono/issues/18299)) ([f60ce3e](https://github.com/taikoxyz/taiko-mono/commit/f60ce3e78bb9a2717718c3a9d7016346d5305488)) +* **protocol:** update mainnet deployment ([#18258](https://github.com/taikoxyz/taiko-mono/issues/18258)) ([eeeb4af](https://github.com/taikoxyz/taiko-mono/commit/eeeb4afeff8572115c2cf82db149cee7a723f30c)) +* **protocol:** upgrade sp1 plonk verifier 2.0.0 ([#18098](https://github.com/taikoxyz/taiko-mono/issues/18098)) ([cfd0e9e](https://github.com/taikoxyz/taiko-mono/commit/cfd0e9e4af2e42ead309e0c571b09dd20ddfe0f9)) +* **protocol:** upgrade zk verifiers in Hekla ([#18279](https://github.com/taikoxyz/taiko-mono/issues/18279)) ([e98a1d5](https://github.com/taikoxyz/taiko-mono/commit/e98a1d5cdaa14af86340081ee42ad263a41bfdb5)) + + +### Code Refactoring + +* **protocol:** simplify some protocol code based on OpenZeppelin's recommendation ([#18308](https://github.com/taikoxyz/taiko-mono/issues/18308)) ([fbad703](https://github.com/taikoxyz/taiko-mono/commit/fbad703739f09d4524f9d808c3bad31d0122ec2c)) +* **protocol:** slightly change defender monitors ([#18086](https://github.com/taikoxyz/taiko-mono/issues/18086)) ([b93d056](https://github.com/taikoxyz/taiko-mono/commit/b93d056479adfc4a1f557578d8b66eda48b104a9)) + + +### Tests + +* **protocol:** fix another L2 test failure ([#18304](https://github.com/taikoxyz/taiko-mono/issues/18304)) ([b3dd4dc](https://github.com/taikoxyz/taiko-mono/commit/b3dd4dccd261a9ebda69325661d2941001268ec2)) + ## [1.9.0](https://github.com/taikoxyz/taiko-mono/compare/protocol-v1.8.0...protocol-v1.9.0) (2024-09-12) diff --git a/packages/protocol/package.json b/packages/protocol/package.json index dfd54350a7c..864bcdb5467 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -1,6 +1,6 @@ { "name": "@taiko/protocol", - "version": "1.9.0", + "version": "1.10.0", "private": true, "scripts": { "buildMerkle": "ts-node ./utils/airdrop/buildMerkleTree.ts ./utils/airdrop/airdrop_db/example_claimList.json", From 2c41dd10989566c1b6af691c92ab2cbde734a13a Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Tue, 29 Oct 2024 15:25:36 +0800 Subject: [PATCH 104/205] feat(protocol): upgrade script (#18334) Co-authored-by: David --- .../layer1/DeployHeklaL2Contracts.s.sol | 35 +++++++++++++++++++ .../script/layer1/UpgradeHeklaOntakeL2.s.sol | 9 ++++- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 packages/protocol/script/layer1/DeployHeklaL2Contracts.s.sol diff --git a/packages/protocol/script/layer1/DeployHeklaL2Contracts.s.sol b/packages/protocol/script/layer1/DeployHeklaL2Contracts.s.sol new file mode 100644 index 00000000000..94d2c612f35 --- /dev/null +++ b/packages/protocol/script/layer1/DeployHeklaL2Contracts.s.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "test/shared/DeployCapability.sol"; +import "src/shared/bridge/Bridge.sol"; +import "src/shared/common/AddressManager.sol"; +import "../../contracts/layer2/hekla/HeklaTaikoL2.sol"; +import "../../contracts/shared/tokenvault/BridgedERC20V2.sol"; + +contract DeployHeklaL2Contracts is DeployCapability { + uint256 public privateKey = vm.envUint("PRIVATE_KEY"); + + modifier broadcast() { + require(privateKey != 0, "invalid private key"); + vm.startBroadcast(privateKey); + _; + vm.stopBroadcast(); + } + + function run() external broadcast { + // TaikoL2 + address heklaTaikoL2 = address(new HeklaTaikoL2()); + // Bridge + address bridge = address(new Bridge()); + // Address manager + address addressManager = address(new AddressManager()); + // Bridged ERC20 V2 + address bridgedERC20V2 = address(new BridgedERC20V2()); + + console2.log("> hekla_taiko_l2@", heklaTaikoL2); + console2.log("> bridge@", bridge); + console2.log("> address_manager@", addressManager); + console2.log("> bridged_erc20_v2@", bridgedERC20V2); + } +} diff --git a/packages/protocol/script/layer1/UpgradeHeklaOntakeL2.s.sol b/packages/protocol/script/layer1/UpgradeHeklaOntakeL2.s.sol index 0c665b0fb9f..c6b7cfd815f 100644 --- a/packages/protocol/script/layer1/UpgradeHeklaOntakeL2.s.sol +++ b/packages/protocol/script/layer1/UpgradeHeklaOntakeL2.s.sol @@ -17,6 +17,7 @@ contract UpgradeHeklaOntakeL2 is DeployCapability { address public newHeklaTaikoL2 = vm.envAddress("NEW_HEKLA_TAIKO_L2"); address public newBridge = vm.envAddress("NEW_BRIDGE"); address public newAddressManager = vm.envAddress("NEW_ADDRESS_MANAGER"); + address public newBridgedERC20 = vm.envAddress("NEW_BRIDGED_ERC20"); modifier broadcast() { require(privateKey != 0, "invalid private key"); @@ -26,7 +27,7 @@ contract UpgradeHeklaOntakeL2 is DeployCapability { } function run() external broadcast { - Multicall3.Call3[] memory calls = new Multicall3.Call3[](4); + Multicall3.Call3[] memory calls = new Multicall3.Call3[](5); // TaikoL2 calls[0].target = 0x1670090000000000000000000000000000010001; calls[0].allowFailure = false; @@ -43,6 +44,12 @@ contract UpgradeHeklaOntakeL2 is DeployCapability { calls[3].target = 0x1670090000000000000000000000000000000006; calls[3].allowFailure = false; calls[3].callData = abi.encodeCall(UUPSUpgradeable.upgradeTo, (newAddressManager)); + // Register Bridged ERC20 + calls[4].target = 0x1670090000000000000000000000000000000006; + calls[4].allowFailure = false; + calls[4].callData = abi.encodeCall( + AddressManager.setAddress, (167_009, bytes32(bytes("bridged_erc20")), newBridgedERC20) + ); DelegateOwner.Call memory dcall = DelegateOwner.Call({ txId: 0, From 4805024c15ab63bf345dcc5f5868a4a16af0ba48 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Tue, 29 Oct 2024 15:46:45 +0800 Subject: [PATCH 105/205] docs(protocol): upgrade protocol version in hekla to 1.10.0 (#18343) --- .../deployments/hekla-contract-logs.md | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/packages/protocol/deployments/hekla-contract-logs.md b/packages/protocol/deployments/hekla-contract-logs.md index 34c12013728..1eaaed91392 100644 --- a/packages/protocol/deployments/hekla-contract-logs.md +++ b/packages/protocol/deployments/hekla-contract-logs.md @@ -9,13 +9,14 @@ ### shared_address_manager - proxy: `0x7D3338FD5e654CAC5B10028088624CA1D64e74f7` -- impl: `0xba8C3B09AA3FbFD2bcf62cBDaA71c2c49C1e6200` +- impl: `0xAcA2a9f774e540CF592c07bBaAC9Ebae40e7C175` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` - transferred ownership on Jul 8, 2024 - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### taiko_token @@ -40,13 +41,14 @@ ### bridge - proxy: `0xA098b76a3Dd499D3F6D58D8AcCaFC8efBFd06807` -- impl: `0xFf9a9A5CC30C59AD0383E8914efc84b33C4Ed5B2` +- impl: `0xE3d424D6D752dBcc6e19Dfd6755D518118f3d93b` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` - transferred ownership on Jul 8, 2024 - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### erc20_vault @@ -100,18 +102,19 @@ ### rollup_address_manager - proxy: `0x1F027871F286Cf4B7F898B21298E7B3e090a8403` -- impl: `0xF27440B4Bd3c9cabe858261F0BD500831ce7E1bD` +- impl: `0x97Ece9dC33e8442ED6e61aA378bf3FdC7dF17213` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `13ad99d` - upgraded on Jun 10, 2024 at commit `d5965bb` - transferred ownership on Jul 8, 2024 - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### taikoL1 - proxy: `0x79C9109b764609df928d16fC4a91e9081F7e87DB` -- impl: `0xDC76feE152224F280E5c181835AE9cf6Ad208901.` +- impl: `0x97cBaB3D9CFC4458321767B42A3760294d0A7076.` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `4903bec` @@ -127,6 +130,7 @@ - upgraded on Aug 15, 2024 at `protocol-v1.8.0` with [#17919](https://github.com/taikoxyz/taiko-mono/pull/17919) - upgraded on Sep 20, 2024 at commit `fd1c039` - upgraded on Oct 16, 2024 at commit `233806e` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### assignmentHook @@ -161,44 +165,48 @@ ### prover_set - proxy: `0xD3f681bD6B49887A48cC9C9953720903967E9DC0` -- impl: `0x2dd26aa9D68A2a629aae2f3AA588119362787300.` +- impl: `0x7840556da7E6E74C01a8334a9e6a6d3F4Ae094A0.` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - deployed on Jun 17, 2024 at commit `b7e12e3` - upgraded on Jul 11, 2024 at commit `30631a9` - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### prover_set_contester - proxy: `0x335103c4fa2F55451975082136F1478eCFeB84B9` -- impl: `0xfED83D74c35D29cb2E9cC0514D2B7DcfDA965E3a.` +- impl: `0x93Df4e369fb916ccc78e94e85017d18e367ba9B5.` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - deployed on Jun 21, 2024 at commit `099ce22` - upgraded on Jul 11, 2024 at commit `30631a9` - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### guardian_prover - proxy: `0x92F195a8702da2104aE8E3E10779176E7C35d6BC` -- impl: `0x7a5858e6A57776dc8f5E1E3a7C9631ED2c272673` +- impl: `0x426A2DA100727d8f3e89252Ba125acbd0e048aDe` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` - transferred ownership on Jul 8, 2024 - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### guardian_minority - proxy: `0x31d4d27da5c299d4b6CE19c869B8891C0002795d` -- impl: `0x31DC2Cb5986555994d4aa7d4A25aE96203deDFb8` +- impl: `0x8ACaB96A6e8bf611E21A6eA332C6509c8d0b699f` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - deployed on May 20, 2024 at commit `6e56475` - upgraded on Jun 10, 2024 at commit `d5965bb` - transferred ownership on Jul 8, 2024 - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### risc0_groth16_verifier @@ -237,12 +245,13 @@ ### bridge - proxy: `0x1670090000000000000000000000000000000001` -- impl: `0x07781C4C8a972C2a9Bd7b2a2d6EB649cD1a31f45` +- impl: `0x50216f60163ef399E22026fa1300aEa8eebA3462` - owner: `0x95F6077C7786a58FA070D98043b16DF2B1593D2b` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### erc20_vault @@ -286,39 +295,43 @@ ### shared_address_manager - proxy: `0x1670090000000000000000000000000000000006` -- impl: `0xd4ec1C9622958AFCE7f9E21f758D2edfa2df0Cf0` +- impl: `0x1063F4cF9eaAA67B5dc9750d96eC0BD885D10AeE` - owner: `0x95F6077C7786a58FA070D98043b16DF2B1593D2b` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### taikoL2 - proxy: `0x1670090000000000000000000000000000010001` -- impl: `0x8b9700D5c4212C3467e3f25989897293B06e147D` +- impl: `0x637B1e6E71007d033B5d4385179037C90665A203` - owner: `0x95F6077C7786a58FA070D98043b16DF2B1593D2b` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### rollup_address_manager - proxy: `0x1670090000000000000000000000000000010002` -- impl: `0xd4ec1C9622958AFCE7f9E21f758D2edfa2df0Cf0` +- impl: `0x1063F4cF9eaAA67B5dc9750d96eC0BD885D10AeE` - owner: `0x95F6077C7786a58FA070D98043b16DF2B1593D2b` - logs: - upgraded on May 10, 2024 at commit `4903bec` - upgraded on Jun 10, 2024 at commit `d5965bb` - upgraded on Sep 20, 2024 at commit `fd1c039` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### bridged_erc20 -- impl: `0xBF040d7C27cddFE9b4a91ebD79a4dc94e5bec677` +- impl: `0x1BAF1AB3686Ace2fD47E11Ac627F3Cc626aEc0FF` - logs: - deployed on May 10, 2024 at commit `4903bec` - deployed on Jul 25, 2024 at commit `3d89d24` + - upgraded on Oct 29, 2024 at commit `3d12cb2` ### bridged_erc721 From 24502c027445bde15f966e7a0d5503f78d9d6b56 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 30 Oct 2024 11:31:05 +0800 Subject: [PATCH 106/205] chore(protocol): do not run unit tests for protocol changes (#18347) --- .github/workflows/taiko-client--test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index d8507834faf..fb0a26b4fd1 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -4,7 +4,6 @@ on: pull_request: types: [opened, synchronize, reopened, ready_for_review] paths: - - "packages/protocol/contracts/layer1/based/**" - "packages/taiko-client/**" - "go.mod" - "go.sum" From 63455f91d202d88583d70bce69e799032523eb18 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 30 Oct 2024 14:56:43 +0800 Subject: [PATCH 107/205] feat(protocol): user smaller cooldown windows (#18345) Co-authored-by: dantaik --- packages/protocol/contract_layout_layer1.md | 6 +-- .../contracts/layer1/based/LibProving.sol | 9 ++-- .../layer1/devnet/DevnetTierRouter.sol | 2 +- .../layer1/hekla/HeklaTierProvider.sol | 49 ------------------- .../layer1/hekla/HeklaTierRouter.sol | 43 ++++++++++++++++ .../mainnet/rollup/MainnetTierRouter.sol | 28 ++++++++++- .../layer1/tiers/TierProviderBase.sol | 27 +++++----- .../contracts/layer1/tiers/TierProviderV2.sol | 21 -------- packages/protocol/script/gen-layouts.sh | 3 +- .../script/layer1/DeployProtocolOnL1.s.sol | 3 +- .../protocol/test/layer1/based/TaikoL1.t.sol | 10 ---- .../test/layer1/based/TestTierRouter.sol | 2 +- 12 files changed, 93 insertions(+), 110 deletions(-) delete mode 100644 packages/protocol/contracts/layer1/hekla/HeklaTierProvider.sol create mode 100644 packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol delete mode 100644 packages/protocol/contracts/layer1/tiers/TierProviderV2.sol diff --git a/packages/protocol/contract_layout_layer1.md b/packages/protocol/contract_layout_layer1.md index f1ff0bd4fbf..b8a329cd8ef 100644 --- a/packages/protocol/contract_layout_layer1.md +++ b/packages/protocol/contract_layout_layer1.md @@ -511,10 +511,6 @@ | state | struct TaikoData.State | 251 | 0 | 1600 | TaikoL1 | | __gap | uint256[50] | 301 | 0 | 1600 | TaikoL1 | -## TierProviderV2 -| Name | Type | Slot | Offset | Bytes | Contract | -|------|------|------|--------|-------|----------| - ## HeklaTaikoL1 | Name | Type | Slot | Offset | Bytes | Contract | |----------------|------------------------|------|--------|-------|------------------------------------------------------| @@ -534,7 +530,7 @@ | state | struct TaikoData.State | 251 | 0 | 1600 | HeklaTaikoL1 | | __gap | uint256[50] | 301 | 0 | 1600 | HeklaTaikoL1 | -## HeklaTierProvider +## HeklaTierRouter | Name | Type | Slot | Offset | Bytes | Contract | |------|------|------|--------|-------|----------| diff --git a/packages/protocol/contracts/layer1/based/LibProving.sol b/packages/protocol/contracts/layer1/based/LibProving.sol index d5f127138cb..39a50636965 100644 --- a/packages/protocol/contracts/layer1/based/LibProving.sol +++ b/packages/protocol/contracts/layer1/based/LibProving.sol @@ -314,6 +314,7 @@ library LibProving { local.tier = tierProvider.getTier(local.proof.tier); local.minTier = tierProvider.getTier(local.meta.minTier); + local.isTopTier = local.tier.contestBond == 0; } local.inProvingWindow = !LibUtils.isPostDeadline({ @@ -326,8 +327,8 @@ library LibProving { // The assigned prover is granted exclusive permission to prove only the first // transition. if ( - local.tier.contestBond != 0 && ts.contester == address(0) && local.tid == 1 - && ts.tier == 0 && local.inProvingWindow + !local.isTopTier && ts.contester == address(0) && local.tid == 1 && ts.tier == 0 + && local.inProvingWindow ) { if (msg.sender != local.assignedProver) revert L1_NOT_ASSIGNED_PROVER(); } @@ -353,7 +354,7 @@ library LibProving { prover: msg.sender, msgSender: msg.sender, blockId: local.blockId, - isContesting: local.proof.tier == ts.tier && local.tier.contestBond != 0, + isContesting: local.proof.tier == ts.tier && !local.isTopTier, blobUsed: local.meta.blobUsed, tran: ctx_.tran }); @@ -368,8 +369,6 @@ library LibProving { } } - local.isTopTier = local.tier.contestBond == 0; - local.sameTransition = local.isSyncBlock ? ctx_.tran.blockHash == ts.blockHash && local.stateRoot == ts.stateRoot : ctx_.tran.blockHash == ts.blockHash; diff --git a/packages/protocol/contracts/layer1/devnet/DevnetTierRouter.sol b/packages/protocol/contracts/layer1/devnet/DevnetTierRouter.sol index 0f63411dbdf..134265349a6 100644 --- a/packages/protocol/contracts/layer1/devnet/DevnetTierRouter.sol +++ b/packages/protocol/contracts/layer1/devnet/DevnetTierRouter.sol @@ -13,7 +13,7 @@ contract DevnetTierRouter is TierProviderBase, ITierRouter { } /// @inheritdoc ITierProvider - function getTierIds() public pure override returns (uint16[] memory tiers_) { + function getTierIds() external pure returns (uint16[] memory tiers_) { tiers_ = new uint16[](3); tiers_[0] = LibTiers.TIER_OPTIMISTIC; tiers_[1] = LibTiers.TIER_GUARDIAN_MINORITY; diff --git a/packages/protocol/contracts/layer1/hekla/HeklaTierProvider.sol b/packages/protocol/contracts/layer1/hekla/HeklaTierProvider.sol deleted file mode 100644 index 51a9e15fa57..00000000000 --- a/packages/protocol/contracts/layer1/hekla/HeklaTierProvider.sol +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; - -import "../tiers/TierProviderBase.sol"; -import "../tiers/ITierRouter.sol"; - -/// @title HeklaTierProvider -/// @custom:security-contact security@taiko.xyz -contract HeklaTierProvider is TierProviderBase, ITierRouter { - address public constant LAB_PROPOSER = 0xD3f681bD6B49887A48cC9C9953720903967E9DC0; - - /// @inheritdoc ITierRouter - function getProvider(uint256) external view returns (address) { - return address(this); - } - - /// @inheritdoc ITierProvider - function getTierIds() public pure override returns (uint16[] memory tiers_) { - tiers_ = new uint16[](6); - tiers_[0] = LibTiers.TIER_OPTIMISTIC; - tiers_[1] = LibTiers.TIER_SGX; - tiers_[2] = LibTiers.TIER_ZKVM_RISC0; - tiers_[3] = LibTiers.TIER_GUARDIAN_MINORITY; - tiers_[4] = LibTiers.TIER_GUARDIAN; - tiers_[5] = LibTiers.TIER_ZKVM_SP1; - } - - /// @inheritdoc ITierProvider - function getMinTier(address _proposer, uint256 _rand) public pure override returns (uint16) { - if (_proposer == LAB_PROPOSER) { - if (_rand % 1000 == 0) { - // 0.1% of the total blocks will require ZKVM Risc0 proofs. - return LibTiers.TIER_ZKVM_RISC0; - } else if (_rand % 1000 == 1) { - // 0.1% of the total blocks will require ZKVM Sp1 proofs. - return LibTiers.TIER_ZKVM_SP1; - } else { - return LibTiers.TIER_SGX; - } - } else { - if (_rand % 2 == 0) { - // 50% of the total blocks will require SGX proofs. - return LibTiers.TIER_SGX; - } else { - return LibTiers.TIER_OPTIMISTIC; - } - } - } -} diff --git a/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol b/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol new file mode 100644 index 00000000000..f62fdf51e53 --- /dev/null +++ b/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../tiers/TierProviderBase.sol"; +import "../tiers/ITierRouter.sol"; + +/// @title HeklaTierRouter +/// @custom:security-contact security@taiko.xyz +contract HeklaTierRouter is TierProviderBase, ITierRouter { + address public immutable DAO_FALLBACK_PROPOSER; + + constructor(address _daoFallbackProposer) { + // 0xD3f681bD6B49887A48cC9C9953720903967E9DC0 + DAO_FALLBACK_PROPOSER = _daoFallbackProposer; + } + + /// @inheritdoc ITierRouter + function getProvider(uint256) external view returns (address) { + return address(this); + } + + /// @inheritdoc ITierProvider + function getTierIds() external pure returns (uint16[] memory tiers_) { + tiers_ = new uint16[](6); + tiers_[0] = LibTiers.TIER_OPTIMISTIC; + tiers_[1] = LibTiers.TIER_SGX; + tiers_[2] = LibTiers.TIER_ZKVM_RISC0; + tiers_[3] = LibTiers.TIER_ZKVM_SP1; + tiers_[4] = LibTiers.TIER_GUARDIAN_MINORITY; + tiers_[5] = LibTiers.TIER_GUARDIAN; + } + + /// @inheritdoc ITierProvider + function getMinTier(address _proposer, uint256 _rand) public view override returns (uint16) { + if (_proposer == DAO_FALLBACK_PROPOSER) { + if (_rand % 1000 == 0) return LibTiers.TIER_ZKVM_RISC0; + else if (_rand % 1000 == 1) return LibTiers.TIER_ZKVM_SP1; + else return LibTiers.TIER_SGX; + } + + return _rand % 2 == 0 ? LibTiers.TIER_SGX : LibTiers.TIER_OPTIMISTIC; + } +} diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol index da6ca821b57..6268c73946b 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol @@ -2,14 +2,38 @@ pragma solidity ^0.8.24; import "src/layer1/tiers/ITierRouter.sol"; -import "src/layer1/tiers/TierProviderV2.sol"; +import "src/layer1/tiers/TierProviderBase.sol"; /// @title MainnetTierRouter /// @dev Labeled in AddressResolver as "tier_router" /// @custom:security-contact security@taiko.xyz -contract MainnetTierRouter is ITierRouter, TierProviderV2 { +contract MainnetTierRouter is ITierRouter, TierProviderBase { + address public immutable DAO_FALLBACK_PROPOSER; + + constructor(address _daoFallbackProposer) { + // 0xD3f681bD6B49887A48cC9C9953720903967E9DC0 + DAO_FALLBACK_PROPOSER = _daoFallbackProposer; + } + /// @inheritdoc ITierRouter function getProvider(uint256) external view returns (address) { return address(this); } + + /// @inheritdoc ITierProvider + function getTierIds() external pure returns (uint16[] memory tiers_) { + tiers_ = new uint16[](4); + tiers_[0] = LibTiers.TIER_SGX; + tiers_[1] = LibTiers.TIER_ZKVM_ANY; + tiers_[2] = LibTiers.TIER_GUARDIAN_MINORITY; + tiers_[3] = LibTiers.TIER_GUARDIAN; + } + + /// @inheritdoc ITierProvider + function getMinTier(address _proposer, uint256 _rand) public view override returns (uint16) { + if (_proposer == DAO_FALLBACK_PROPOSER) { + return _rand % 500 == 0 ? LibTiers.TIER_ZKVM_ANY : LibTiers.TIER_SGX; + } + return LibTiers.TIER_SGX; + } } diff --git a/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol b/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol index 9f781db3d49..facaf1392c3 100644 --- a/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol +++ b/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol @@ -21,8 +21,8 @@ abstract contract TierProviderBase is ITierProvider { /// previous tier. Additionally, each tier's contest bond is 6.5625 times its validity bond. function getTier(uint16 _tierId) public pure virtual returns (ITierProvider.Tier memory) { if (_tierId == LibTiers.TIER_OPTIMISTIC) { - // cooldownWindow is 1440 minutes and provingWindow is 15 minutes - return _buildTier("", BOND_UNIT, 1440, 15); + // cooldownWindow is 24 hours and provingWindow is 15 minutes + return _buildTier("", BOND_UNIT, 24, 15); } // TEE Tiers @@ -37,19 +37,20 @@ abstract contract TierProviderBase is ITierProvider { // ZKVM+TEE Tier if (_tierId == LibTiers.TIER_ZKVM_AND_TEE) { - return _buildTier(LibStrings.B_TIER_ZKVM_AND_TEE, BOND_UNIT * 4, 1440, 180); + // cooldownWindow is 2 hours and provingWindow is 3 hours + return _buildTier(LibStrings.B_TIER_ZKVM_AND_TEE, BOND_UNIT * 4, 2, 180); } // Guardian Minority Tiers if (_tierId == LibTiers.TIER_GUARDIAN_MINORITY) { - // cooldownWindow is 240 minutes and provingWindow is 2880 minutes - return _buildTier(LibStrings.B_TIER_GUARDIAN_MINORITY, BOND_UNIT * 4, 240, 2880); + // cooldownWindow is 4 hours + return _buildTier(LibStrings.B_TIER_GUARDIAN_MINORITY, BOND_UNIT * 4, 4, 0); } // Guardian Major Tiers if (_tierId == LibTiers.TIER_GUARDIAN) { - // cooldownWindow is 1440 minutes and provingWindow is 2880 minutes - return _buildTier(LibStrings.B_TIER_GUARDIAN, 0, 1440, 2880); + // cooldownWindow is 4 hours + return _buildTier(LibStrings.B_TIER_GUARDIAN, 0, 4, 0); } revert TIER_NOT_FOUND(); @@ -63,22 +64,22 @@ abstract contract TierProviderBase is ITierProvider { pure returns (ITierProvider.Tier memory) { - // cooldownWindow is 1440 minutes and provingWindow is 60 minutes - return _buildTier(_verifierName, BOND_UNIT * 2, 1440, 60); + // cooldownWindow is 4 hours and provingWindow is 60 minutes + return _buildTier(_verifierName, BOND_UNIT * 2, 4, 60); } /// @dev Builds a ZK tier with a specific verifier name. /// @param _verifierName The name of the verifier. /// @return A Tier struct with predefined parameters for ZK. function _buildZkTier(bytes32 _verifierName) private pure returns (ITierProvider.Tier memory) { - // cooldownWindow is 1440 minutes and provingWindow is 180 minutes - return _buildTier(_verifierName, BOND_UNIT * 3, 1440, 180); + // cooldownWindow is 4 hours and provingWindow is 3 hours + return _buildTier(_verifierName, BOND_UNIT * 3, 4, 180); } /// @dev Builds a generic tier with specified parameters. /// @param _verifierName The name of the verifier. /// @param _validityBond The validity bond amount. - /// @param _cooldownWindow The cooldown window duration in minutes. + /// @param _cooldownWindow The cooldown window duration in hours. /// @param _provingWindow The proving window duration in minutes. /// @return A Tier struct with the provided parameters. function _buildTier( @@ -95,7 +96,7 @@ abstract contract TierProviderBase is ITierProvider { verifierName: _verifierName, validityBond: _validityBond, contestBond: _validityBond / 10_000 * 65_625, - cooldownWindow: _cooldownWindow, + cooldownWindow: _cooldownWindow * 60, provingWindow: GRACE_PERIOD + _provingWindow, maxBlocksToVerifyPerProof: 0 }); diff --git a/packages/protocol/contracts/layer1/tiers/TierProviderV2.sol b/packages/protocol/contracts/layer1/tiers/TierProviderV2.sol deleted file mode 100644 index 69f1541bf14..00000000000 --- a/packages/protocol/contracts/layer1/tiers/TierProviderV2.sol +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; - -import "./TierProviderBase.sol"; - -/// @title TierProviderV2 -/// @custom:security-contact security@taiko.xyz -contract TierProviderV2 is TierProviderBase { - /// @inheritdoc ITierProvider - function getTierIds() public pure override returns (uint16[] memory tiers_) { - tiers_ = new uint16[](3); - tiers_[0] = LibTiers.TIER_SGX; - tiers_[1] = LibTiers.TIER_GUARDIAN_MINORITY; - tiers_[2] = LibTiers.TIER_GUARDIAN; - } - - /// @inheritdoc ITierProvider - function getMinTier(address, uint256) public pure override returns (uint16) { - return LibTiers.TIER_SGX; - } -} diff --git a/packages/protocol/script/gen-layouts.sh b/packages/protocol/script/gen-layouts.sh index 6216cbc7630..25d53ffe77d 100755 --- a/packages/protocol/script/gen-layouts.sh +++ b/packages/protocol/script/gen-layouts.sh @@ -31,9 +31,8 @@ contracts_layer1=( "contracts/layer1/verifiers/SgxVerifier.sol:SgxVerifier" "contracts/layer1/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation" "contracts/layer1/based/TaikoL1.sol:TaikoL1" -"contracts/layer1/tiers/TierProviderV2.sol:TierProviderV2" "contracts/layer1/hekla/HeklaTaikoL1.sol:HeklaTaikoL1" -"contracts/layer1/hekla/HeklaTierProvider.sol:HeklaTierProvider" +"contracts/layer1/hekla/HeklaTierRouter.sol:HeklaTierRouter" "contracts/layer1/mainnet/multirollup/MainnetBridge.sol:MainnetBridge" "contracts/layer1/mainnet/multirollup/MainnetSignalService.sol:MainnetSignalService" "contracts/layer1/mainnet/multirollup/MainnetERC20Vault.sol:MainnetERC20Vault" diff --git a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol index 093a937168d..085fbd47b2e 100644 --- a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol +++ b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol @@ -45,6 +45,7 @@ import "test/shared/DeployCapability.sol"; contract DeployProtocolOnL1 is DeployCapability { uint256 public NUM_MIN_MAJORITY_GUARDIANS = vm.envUint("NUM_MIN_MAJORITY_GUARDIANS"); uint256 public NUM_MIN_MINORITY_GUARDIANS = vm.envUint("NUM_MIN_MINORITY_GUARDIANS"); + address public DAO_FALLBACK_PROPOSER = 0xD3f681bD6B49887A48cC9C9953720903967E9DC0; address public constant MAINNET_CONTRACT_OWNER = 0x9CBeE534B5D8a6280e01a14844Ee8aF350399C7F; // admin.taiko.eth @@ -432,7 +433,7 @@ contract DeployProtocolOnL1 is DeployCapability { } else if (keccak256(abi.encode(tierRouterName)) == keccak256(abi.encode("testnet"))) { return address(new TestTierRouter()); } else if (keccak256(abi.encode(tierRouterName)) == keccak256(abi.encode("mainnet"))) { - return address(new MainnetTierRouter()); + return address(new MainnetTierRouter(DAO_FALLBACK_PROPOSER)); } else { revert("invalid tier provider"); } diff --git a/packages/protocol/test/layer1/based/TaikoL1.t.sol b/packages/protocol/test/layer1/based/TaikoL1.t.sol index ede0cffa22f..1d06387c1d8 100644 --- a/packages/protocol/test/layer1/based/TaikoL1.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1.t.sol @@ -224,16 +224,6 @@ contract TaikoL1Tests is TaikoL1TestBase { proposeBlock(Alice, 1024); } - function test_getTierIds() external { - uint16[] memory tiers = tr.getTierIds(); - assertEq(tiers[0], LibTiers.TIER_OPTIMISTIC); - assertEq(tiers[1], LibTiers.TIER_SGX); - assertEq(tiers[2], LibTiers.TIER_GUARDIAN); - - vm.expectRevert(); - tr.getTier(123); - } - function proposeButRevert(address proposer, uint24 txListSize, bytes4 revertReason) internal { uint256 msgValue = 2 ether; TaikoData.HookCall[] memory hookcalls = new TaikoData.HookCall[](0); diff --git a/packages/protocol/test/layer1/based/TestTierRouter.sol b/packages/protocol/test/layer1/based/TestTierRouter.sol index 8eb53a868b8..173ebd033d4 100644 --- a/packages/protocol/test/layer1/based/TestTierRouter.sol +++ b/packages/protocol/test/layer1/based/TestTierRouter.sol @@ -16,8 +16,8 @@ contract TestTierRouter is ITierProvider, ITierRouter { function getProvider(uint256) external view returns (address) { return address(this); } - /// @inheritdoc ITierProvider + /// @inheritdoc ITierProvider function getTier(uint16 _tierId) public pure override returns (ITierProvider.Tier memory) { if (_tierId == LibTiers.TIER_OPTIMISTIC) { return ITierProvider.Tier({ From 7c91a7d486c22e0f1a5386978086dfca5b73cfe0 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Wed, 30 Oct 2024 17:26:32 +0800 Subject: [PATCH 108/205] docs(protocol): update `tier_router` in hekla (#18352) --- packages/protocol/deployments/hekla-contract-logs.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/protocol/deployments/hekla-contract-logs.md b/packages/protocol/deployments/hekla-contract-logs.md index 1eaaed91392..c6381f3dd16 100644 --- a/packages/protocol/deployments/hekla-contract-logs.md +++ b/packages/protocol/deployments/hekla-contract-logs.md @@ -153,7 +153,7 @@ ### tierRouter -- impl: `0xACF97d3b3c15c3C009eB04a640954d48237fc3ff` +- impl: `0x45f63AF6ff5803BF4F2817FEe690f1cd5d5bc681` - logs: - deployed on Jun 10, 2024 at commit `d5965bb` - upgraded on Jun 14, 2024 at commit `cc10b04` @@ -161,6 +161,7 @@ - upgraded on Aug 15, 2024 at commit `05d49b0` - upgraded on Sep 02, 2024 at commit `9dae5c8` - upgraded on Oct 24, 2024 at commit `78f9ac0` + - upgraded on Oct 30, 2024 at commit `63455f9` ### prover_set From fc8d99f52ba20f12207b0b850f3f13c8e625aa7b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:35:11 +0800 Subject: [PATCH 109/205] build(deps): bump github.com/prometheus/client_golang from 1.20.4 to 1.20.5 (#18266) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 31dcefa4c84..b5615d755c1 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 github.com/pressly/goose/v3 v3.20.0 - github.com/prometheus/client_golang v1.20.4 + github.com/prometheus/client_golang v1.20.5 github.com/prysmaticlabs/prysm/v5 v5.1.0 github.com/rabbitmq/amqp091-go v1.10.0 github.com/shopspring/decimal v1.4.0 diff --git a/go.sum b/go.sum index f7be24097ed..8a36fb048c8 100644 --- a/go.sum +++ b/go.sum @@ -521,8 +521,8 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/pressly/goose/v3 v3.20.0 h1:uPJdOxF/Ipj7ABVNOAMJXSxwFXZGwMGHNqjC8e61VA0= github.com/pressly/goose/v3 v3.20.0/go.mod h1:BRfF2GcG4FTG12QfdBVy3q1yveaf4ckL9vWwEcIO3lA= -github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= -github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= From c78ee7317425f76203c0d7e3a058a190596e9ea9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 12:35:34 +0000 Subject: [PATCH 110/205] build(deps): bump gorm.io/datatypes from 1.2.1 to 1.2.4 (#18265) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index b5615d755c1..71e7db5423b 100644 --- a/go.mod +++ b/go.mod @@ -40,9 +40,9 @@ require ( golang.org/x/sync v0.8.0 gopkg.in/go-playground/assert.v1 v1.2.1 gopkg.in/yaml.v3 v3.0.1 - gorm.io/datatypes v1.2.1 + gorm.io/datatypes v1.2.4 gorm.io/driver/mysql v1.5.6 - gorm.io/gorm v1.25.10 + gorm.io/gorm v1.25.11 gotest.tools v2.2.0+incompatible ) diff --git a/go.sum b/go.sum index 8a36fb048c8..98bede54c63 100644 --- a/go.sum +++ b/go.sum @@ -892,8 +892,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/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= -gorm.io/datatypes v1.2.1 h1:r+g0bk4LPCW2v4+Ls7aeNgGme7JYdNDQ2VtvlNUfBh0= -gorm.io/datatypes v1.2.1/go.mod h1:hYK6OTb/1x+m96PgoZZq10UXJ6RvEBb9kRDQ2yyhzGs= +gorm.io/datatypes v1.2.4 h1:uZmGAcK/QZ0uyfCuVg0VQY1ZmV9h1fuG0tMwKByO1z4= +gorm.io/datatypes v1.2.4/go.mod h1:f4BsLcFAX67szSv8svwLRjklArSHAvHLeE3pXAS5DZI= gorm.io/driver/mysql v1.5.6 h1:Ld4mkIickM+EliaQZQx3uOJDJHtrd70MxAUqWqlx3Y8= gorm.io/driver/mysql v1.5.6/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM= gorm.io/driver/postgres v1.5.0 h1:u2FXTy14l45qc3UeCJ7QaAXZmZfDDv0YrthvmRq1l0U= @@ -906,8 +906,8 @@ gorm.io/driver/sqlserver v1.4.1/go.mod h1:DJ4P+MeZbc5rvY58PnmN1Lnyvb5gw5NPzGshHD gorm.io/gorm v1.20.7/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.21.3/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= -gorm.io/gorm v1.25.10 h1:dQpO+33KalOA+aFYGlK+EfxcI5MbO7EP2yYygwh9h+s= -gorm.io/gorm v1.25.10/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg= +gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= 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.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= From 4fb79a25f034b7c928fd56f21f15f3936b30a7fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:43:27 +0800 Subject: [PATCH 111/205] build(deps): bump github.com/morkid/paginate from 1.1.7 to 1.1.8 (#18264) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 71e7db5423b..a60f1aac76a 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/labstack/echo/v4 v4.12.0 github.com/labstack/gommon v0.4.2 github.com/modern-go/reflect2 v1.0.2 - github.com/morkid/paginate v1.1.7 + github.com/morkid/paginate v1.1.8 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index 98bede54c63..f26b5a742ab 100644 --- a/go.sum +++ b/go.sum @@ -468,8 +468,8 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/morkid/gocache v1.0.0 h1:hTnU78Dqp2vs9al5vJC2TmmMF+Hm3nDH1AgRBjSXE+0= github.com/morkid/gocache v1.0.0/go.mod h1:xK+hmoEMjYffIBvjn7DE8WfSd/rF5Kz/G9f20OliMJY= -github.com/morkid/paginate v1.1.7 h1:qgU1qLhYxlckJ11CoUn7tQpT4k5SmWTTa1NpdSNbShg= -github.com/morkid/paginate v1.1.7/go.mod h1:1VCx2ARlAVEv2Yd+YHTGRMs0Gacvi75dCrPidrmPq5g= +github.com/morkid/paginate v1.1.8 h1:nAk+ZIzSAjFdCeOFdH5j+xq2ipiuXKySsY3/DthVELQ= +github.com/morkid/paginate v1.1.8/go.mod h1:dmJDIOQirmfa03fH7M4neVRfl7xQth11OQdFT5e+4bY= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= From 269759bccefba399f0aa6f45482f4a24330a5e47 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 31 Oct 2024 16:41:58 +0800 Subject: [PATCH 112/205] feat(protocol): scripts to deploy new mainnet implementation contracts (#18356) Co-authored-by: Gavin Yu --- .../mainnet/rollup/MainnetTierRouter.sol | 2 +- .../layer2/mainnet/MainnetTaikoL2.sol | 2 +- .../script/layer1/UpdateMainnetOntakeL1.s.sol | 45 +++++++++++++++++++ .../script/layer2/UpdateMainnetOntakeL2.s.sol | 21 +++++++++ 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 packages/protocol/script/layer1/UpdateMainnetOntakeL1.s.sol create mode 100644 packages/protocol/script/layer2/UpdateMainnetOntakeL2.s.sol diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol index 6268c73946b..954b3be352f 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol @@ -11,7 +11,7 @@ contract MainnetTierRouter is ITierRouter, TierProviderBase { address public immutable DAO_FALLBACK_PROPOSER; constructor(address _daoFallbackProposer) { - // 0xD3f681bD6B49887A48cC9C9953720903967E9DC0 + // 0x68d30f47F19c07bCCEf4Ac7FAE2Dc12FCa3e0dC9 DAO_FALLBACK_PROPOSER = _daoFallbackProposer; } diff --git a/packages/protocol/contracts/layer2/mainnet/MainnetTaikoL2.sol b/packages/protocol/contracts/layer2/mainnet/MainnetTaikoL2.sol index f7769413cb6..956c193fdab 100644 --- a/packages/protocol/contracts/layer2/mainnet/MainnetTaikoL2.sol +++ b/packages/protocol/contracts/layer2/mainnet/MainnetTaikoL2.sol @@ -7,6 +7,6 @@ import "../based/TaikoL2.sol"; /// @custom:security-contact security@taiko.xyz contract MainnetTaikoL2 is TaikoL2 { function ontakeForkHeight() public pure override returns (uint64) { - return 374_400; // = 7200 * 52 + return 538_304; } } diff --git a/packages/protocol/script/layer1/UpdateMainnetOntakeL1.s.sol b/packages/protocol/script/layer1/UpdateMainnetOntakeL1.s.sol new file mode 100644 index 00000000000..39ad0679e98 --- /dev/null +++ b/packages/protocol/script/layer1/UpdateMainnetOntakeL1.s.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "test/shared/DeployCapability.sol"; +import "src/layer1/mainnet/multirollup/MainnetSharedAddressManager.sol"; +import "src/layer1/mainnet/multirollup/MainnetSignalService.sol"; +import "src/layer1/mainnet/multirollup/MainnetBridge.sol"; +import "src/layer1/mainnet/rollup/MainnetRollupAddressManager.sol"; +import "src/layer1/mainnet/rollup/MainnetTaikoL1.sol"; +import "src/layer1/mainnet/rollup/MainnetTierRouter.sol"; +import "src/layer1/mainnet/rollup/verifiers/MainnetSgxVerifier.sol"; +import "src/layer1/provers/GuardianProver.sol"; +import "src/layer1/mainnet/rollup/MainnetProverSet.sol"; + +contract UpgradeMainnetOntakeL1 is DeployCapability { + uint256 public privateKey = vm.envUint("PRIVATE_KEY"); + + modifier broadcast() { + require(privateKey != 0, "invalid private key"); + vm.startBroadcast(privateKey); + _; + vm.stopBroadcast(); + } + + function run() external broadcast { + // MainnetSharedAddressManager + console2.log(address(new MainnetSharedAddressManager())); + // MainnetSignalService + console2.log(address(new MainnetSignalService())); + // MainnetBridge + console2.log(address(new MainnetBridge())); + // MainnetRollupAddressManager + console2.log(address(new MainnetRollupAddressManager())); + // MainnetTaikoL1 + console2.log(address(new MainnetTaikoL1())); + // MainnetTierRouter + console2.log(address(new MainnetTierRouter(0x68d30f47F19c07bCCEf4Ac7FAE2Dc12FCa3e0dC9))); + // MainnetSgxVerifier + console2.log(address(new MainnetSgxVerifier())); + // GuardianProver + console2.log(address(new GuardianProver())); + // MainnetProverSet + console2.log(address(new MainnetProverSet())); + } +} diff --git a/packages/protocol/script/layer2/UpdateMainnetOntakeL2.s.sol b/packages/protocol/script/layer2/UpdateMainnetOntakeL2.s.sol new file mode 100644 index 00000000000..d578b827771 --- /dev/null +++ b/packages/protocol/script/layer2/UpdateMainnetOntakeL2.s.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "test/shared/DeployCapability.sol"; +import "src/layer2/mainnet/MainnetTaikoL2.sol"; + +contract UpgradeMainnetOntakeL2 is DeployCapability { + uint256 public privateKey = vm.envUint("PRIVATE_KEY"); + + modifier broadcast() { + require(privateKey != 0, "invalid private key"); + vm.startBroadcast(privateKey); + _; + vm.stopBroadcast(); + } + + function run() external broadcast { + // MainnetTaikoL2 + console2.log(address(new MainnetTaikoL2())); + } +} From 500a8bbc46a3d1962ae5cc6d7f10e990f03d07c7 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 1 Nov 2024 11:56:36 +0800 Subject: [PATCH 113/205] chore(protocol): remove `TIER_ZKVM_ANY` in `MainnetTierRouter` (#18357) --- .../layer1/mainnet/rollup/MainnetTierRouter.sol | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol index 954b3be352f..1f77863ab6b 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol @@ -22,18 +22,14 @@ contract MainnetTierRouter is ITierRouter, TierProviderBase { /// @inheritdoc ITierProvider function getTierIds() external pure returns (uint16[] memory tiers_) { - tiers_ = new uint16[](4); + tiers_ = new uint16[](3); tiers_[0] = LibTiers.TIER_SGX; - tiers_[1] = LibTiers.TIER_ZKVM_ANY; - tiers_[2] = LibTiers.TIER_GUARDIAN_MINORITY; - tiers_[3] = LibTiers.TIER_GUARDIAN; + tiers_[1] = LibTiers.TIER_GUARDIAN_MINORITY; + tiers_[2] = LibTiers.TIER_GUARDIAN; } /// @inheritdoc ITierProvider function getMinTier(address _proposer, uint256 _rand) public view override returns (uint16) { - if (_proposer == DAO_FALLBACK_PROPOSER) { - return _rand % 500 == 0 ? LibTiers.TIER_ZKVM_ANY : LibTiers.TIER_SGX; - } return LibTiers.TIER_SGX; } } From f4f4796488059b02c79d6fb15170df58dd31dc4e Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 1 Nov 2024 11:59:15 +0800 Subject: [PATCH 114/205] ci(protocol): trigger patch release (1.10.1) (#18358) From 116578ef8a4391611bd1b3c469f4068cec8a8447 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 1 Nov 2024 12:22:12 +0800 Subject: [PATCH 115/205] chore(protocol): undo 1.10.0 release (#18363) --- .release-please-manifest.json | 2 +- packages/protocol/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8ad86e806be..d5c942d4a91 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -5,7 +5,7 @@ "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", "packages/guardian-prover-health-check-ui": "0.2.0", - "packages/protocol": "1.10.0", + "packages/protocol": "1.9.0", "packages/relayer": "0.12.0", "packages/snaefell-ui": "1.1.0", "packages/supplementary-contracts": "1.0.0", diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 864bcdb5467..dfd54350a7c 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -1,6 +1,6 @@ { "name": "@taiko/protocol", - "version": "1.10.0", + "version": "1.9.0", "private": true, "scripts": { "buildMerkle": "ts-node ./utils/airdrop/buildMerkleTree.ts ./utils/airdrop/airdrop_db/example_claimList.json", From aa351ab0f90e442a8b15adb8de6a48d9ae6d1c42 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 1 Nov 2024 12:25:39 +0800 Subject: [PATCH 116/205] chore(protocol): deploy `MainnetTierRouter` and update `RollupAddressCache` (#18359) --- .../contracts/layer1/mainnet/addrcache/RollupAddressCache.sol | 2 +- packages/protocol/deployments/mainnet-contract-logs-L1.md | 3 ++- packages/protocol/script/layer1/UpdateMainnetOntakeL1.s.sol | 3 --- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol index fc7cf509295..d4409c078b9 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol @@ -34,7 +34,7 @@ contract RollupAddressCache is AddressCache { return (true, 0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a); } if (_name == LibStrings.B_TIER_ROUTER) { - return (true, 0x2cD242BfD58E6D1810323D07b065413095c7AFd0); + return (true, 0x2Ae89453c6c79Add793db7B9d23c275b90C26065); } if (_name == LibStrings.B_TIER_SGX) { return (true, 0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81); diff --git a/packages/protocol/deployments/mainnet-contract-logs-L1.md b/packages/protocol/deployments/mainnet-contract-logs-L1.md index 0ddbcd8596d..7abcfa39253 100644 --- a/packages/protocol/deployments/mainnet-contract-logs-L1.md +++ b/packages/protocol/deployments/mainnet-contract-logs-L1.md @@ -230,9 +230,10 @@ #### tier_router -- impl: `0x2cD242BfD58E6D1810323D07b065413095c7AFd0` +- impl: `0x2Ae89453c6c79Add793db7B9d23c275b90C26065` - logs: - deployed on Oct 24, 2024 @commit`7334b1d` + - deployed on Nov 1, 2024 @commit`f4f4796` #### tier_sgx diff --git a/packages/protocol/script/layer1/UpdateMainnetOntakeL1.s.sol b/packages/protocol/script/layer1/UpdateMainnetOntakeL1.s.sol index 39ad0679e98..97d945f3a72 100644 --- a/packages/protocol/script/layer1/UpdateMainnetOntakeL1.s.sol +++ b/packages/protocol/script/layer1/UpdateMainnetOntakeL1.s.sol @@ -7,7 +7,6 @@ import "src/layer1/mainnet/multirollup/MainnetSignalService.sol"; import "src/layer1/mainnet/multirollup/MainnetBridge.sol"; import "src/layer1/mainnet/rollup/MainnetRollupAddressManager.sol"; import "src/layer1/mainnet/rollup/MainnetTaikoL1.sol"; -import "src/layer1/mainnet/rollup/MainnetTierRouter.sol"; import "src/layer1/mainnet/rollup/verifiers/MainnetSgxVerifier.sol"; import "src/layer1/provers/GuardianProver.sol"; import "src/layer1/mainnet/rollup/MainnetProverSet.sol"; @@ -33,8 +32,6 @@ contract UpgradeMainnetOntakeL1 is DeployCapability { console2.log(address(new MainnetRollupAddressManager())); // MainnetTaikoL1 console2.log(address(new MainnetTaikoL1())); - // MainnetTierRouter - console2.log(address(new MainnetTierRouter(0x68d30f47F19c07bCCEf4Ac7FAE2Dc12FCa3e0dC9))); // MainnetSgxVerifier console2.log(address(new MainnetSgxVerifier())); // GuardianProver From 3b47077c8d91f0e128b10e226018f3bd9eb70776 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 1 Nov 2024 12:31:54 +0800 Subject: [PATCH 117/205] ci(repo): trigger release-lease on tag changes (#18364) --- .github/workflows/repo--release-please.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/repo--release-please.yml b/.github/workflows/repo--release-please.yml index 99559795b17..b3934ccc1d7 100644 --- a/.github/workflows/repo--release-please.yml +++ b/.github/workflows/repo--release-please.yml @@ -4,6 +4,11 @@ on: push: branches: - main + tags: + - '*' + delete: + tags: + - '*' permissions: contents: write From 9345f1419a1e5d0f975e15bb372b6101da9f0c48 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Thu, 31 Oct 2024 22:58:59 -0700 Subject: [PATCH 118/205] chore(main): release protocol 1.10.0 (#18365) --- .release-please-manifest.json | 2 +- packages/protocol/CHANGELOG.md | 91 ++++++++++++++++++++++++++++++++++ packages/protocol/package.json | 2 +- 3 files changed, 93 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d5c942d4a91..8ad86e806be 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -5,7 +5,7 @@ "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", "packages/guardian-prover-health-check-ui": "0.2.0", - "packages/protocol": "1.9.0", + "packages/protocol": "1.10.0", "packages/relayer": "0.12.0", "packages/snaefell-ui": "1.1.0", "packages/supplementary-contracts": "1.0.0", diff --git a/packages/protocol/CHANGELOG.md b/packages/protocol/CHANGELOG.md index b53dda5f470..68fb7a99736 100644 --- a/packages/protocol/CHANGELOG.md +++ b/packages/protocol/CHANGELOG.md @@ -1,5 +1,96 @@ # Changelog +## [1.10.0](https://github.com/taikoxyz/taiko-mono/compare/protocol-v1.9.0...protocol-v1.10.0) (2024-11-01) + + +### Features + +* **protocol:** add `proposeBlocksV2` method to `ProverSet` ([#18115](https://github.com/taikoxyz/taiko-mono/issues/18115)) ([0743a99](https://github.com/taikoxyz/taiko-mono/commit/0743a99ee6ab403024bab5834178399fbeebb4e5)) +* **protocol:** add aggregated sgx verify test ([#18160](https://github.com/taikoxyz/taiko-mono/issues/18160)) ([8dda47b](https://github.com/taikoxyz/taiko-mono/commit/8dda47bf9ee47faa8a0d16dde0b4398d5e7019f8)) +* **protocol:** add Hekla Ontake hardfork upgrade scripts ([#18103](https://github.com/taikoxyz/taiko-mono/issues/18103)) ([a3436e8](https://github.com/taikoxyz/taiko-mono/commit/a3436e8cafbc96ebfa5742ada995adae39c572ce)) +* **protocol:** allow owner to update recipient in TokenUnlock ([#18184](https://github.com/taikoxyz/taiko-mono/issues/18184)) ([773ae1b](https://github.com/taikoxyz/taiko-mono/commit/773ae1b11f309ee8c4e0b1c0d22b9bfa41beae0d)) +* **protocol:** check-in `HeklaTaikoToken` ([#18189](https://github.com/taikoxyz/taiko-mono/issues/18189)) ([60c38d8](https://github.com/taikoxyz/taiko-mono/commit/60c38d8d179f2c02a0ed87f97bd34dc708b38df4)) +* **protocol:** enable sp1 batch aggregation ([#18199](https://github.com/taikoxyz/taiko-mono/issues/18199)) ([038cd32](https://github.com/taikoxyz/taiko-mono/commit/038cd326668b3a882798ecb4e7f9e3ecadc6dc28)) +* **protocol:** improve `getTransitions` ([#18181](https://github.com/taikoxyz/taiko-mono/issues/18181)) ([868d733](https://github.com/taikoxyz/taiko-mono/commit/868d733db962a76261036c3e583cb50feaec901f)) +* **protocol:** Increase the probability of sgx proof for lab proposer ([#18288](https://github.com/taikoxyz/taiko-mono/issues/18288)) ([fd0dbbb](https://github.com/taikoxyz/taiko-mono/commit/fd0dbbbb3df0db27873e0ba87e45a5165fb7c0f1)) +* **protocol:** introduce `getTransitions` in TaikoL1 ([#18154](https://github.com/taikoxyz/taiko-mono/issues/18154)) ([273bf53](https://github.com/taikoxyz/taiko-mono/commit/273bf53fad763b8504353e7cc14c8585e341f9d0)) +* **protocol:** make sure `init()` covers logics in `init2()`, `init3()`.. ([#18292](https://github.com/taikoxyz/taiko-mono/issues/18292)) ([9d06958](https://github.com/taikoxyz/taiko-mono/commit/9d06958e713e530fdd610c439c7b93199d0dcc69)) +* **protocol:** rename B_BLOCK_PROPOSER to B_PRECONF_REGISTRY ([#18255](https://github.com/taikoxyz/taiko-mono/issues/18255)) ([bf3caf7](https://github.com/taikoxyz/taiko-mono/commit/bf3caf7d986d7b03cf3bd0aa69ea97602bff80aa)) +* **protocol:** scripts to deploy new mainnet implementation contracts ([#18356](https://github.com/taikoxyz/taiko-mono/issues/18356)) ([269759b](https://github.com/taikoxyz/taiko-mono/commit/269759bccefba399f0aa6f45482f4a24330a5e47)) +* **protocol:** update mainnet `ontakeForkHeight` config ([#18252](https://github.com/taikoxyz/taiko-mono/issues/18252)) ([7550882](https://github.com/taikoxyz/taiko-mono/commit/75508828d3755e1a831380cdd2ab321e67fa22fc)) +* **protocol:** update ric0 & sp1 verification contract ([#18269](https://github.com/taikoxyz/taiko-mono/issues/18269)) ([684a909](https://github.com/taikoxyz/taiko-mono/commit/684a909e83705c59b2b7a0a991424b7a8e9e03ad)) +* **protocol:** update sp1 contracts ([#18097](https://github.com/taikoxyz/taiko-mono/issues/18097)) ([6f26434](https://github.com/taikoxyz/taiko-mono/commit/6f264342fe48f8d193559ac0712cc875d643b6fd)) +* **protocol:** upgrade script ([#18334](https://github.com/taikoxyz/taiko-mono/issues/18334)) ([2c41dd1](https://github.com/taikoxyz/taiko-mono/commit/2c41dd10989566c1b6af691c92ab2cbde734a13a)) +* **protocol:** user smaller cooldown windows ([#18345](https://github.com/taikoxyz/taiko-mono/issues/18345)) ([63455f9](https://github.com/taikoxyz/taiko-mono/commit/63455f91d202d88583d70bce69e799032523eb18)) + + +### Bug Fixes + +* **protocl:** check blockId in getBlock and getBlockV2 ([#18327](https://github.com/taikoxyz/taiko-mono/issues/18327)) ([4288fb6](https://github.com/taikoxyz/taiko-mono/commit/4288fb6e0c8c76651d2db866cab55f32a9a25075)) +* **protocol:** avoid invocation in Bridge message processing if calldata is "" and value is 0 ([#18137](https://github.com/taikoxyz/taiko-mono/issues/18137)) ([10c2972](https://github.com/taikoxyz/taiko-mono/commit/10c29727081bd8f8b94bbfc4472b162ec552ef64)) +* **protocol:** correct the wrong router address for mainnet ([#18291](https://github.com/taikoxyz/taiko-mono/issues/18291)) ([ae0a9da](https://github.com/taikoxyz/taiko-mono/commit/ae0a9daf83ab8f323c216978724ebcb71de54cfe)) +* **protocol:** fix a new bug in LibProposing ([#18328](https://github.com/taikoxyz/taiko-mono/issues/18328)) ([7436bae](https://github.com/taikoxyz/taiko-mono/commit/7436bae9660cfcf1d430ca111df8c75d50908eae)) +* **protocol:** fix an issue in same transition check ([#18254](https://github.com/taikoxyz/taiko-mono/issues/18254)) ([233806e](https://github.com/taikoxyz/taiko-mono/commit/233806e4838aa12e8de436a37979ff3e614119f2)) +* **protocol:** fix DCAP configuration script ([#18088](https://github.com/taikoxyz/taiko-mono/issues/18088)) ([e8618c5](https://github.com/taikoxyz/taiko-mono/commit/e8618c54a58993499e852ec2ffc2468d4f0274ba)) +* **protocol:** fix issue in mainnet deployment script ([#18283](https://github.com/taikoxyz/taiko-mono/issues/18283)) ([5c371a1](https://github.com/taikoxyz/taiko-mono/commit/5c371a181af444999f611e03774ec096ffbd1226)) +* **protocol:** fix LibAddress.supportsInterface to handle undecodeable return data ([#18286](https://github.com/taikoxyz/taiko-mono/issues/18286)) ([299b4c9](https://github.com/taikoxyz/taiko-mono/commit/299b4c9ecf96644c909df70a3527ae5c2e728a07)) +* **protocol:** fix permission in ComposeVerifier ([#18302](https://github.com/taikoxyz/taiko-mono/issues/18302)) ([4c45d8b](https://github.com/taikoxyz/taiko-mono/commit/4c45d8bcdb52521ac1738ca271316d82689537b0)) +* **protocol:** fix proposeBlock()'s block id check ([#18227](https://github.com/taikoxyz/taiko-mono/issues/18227)) ([3a9d6c1](https://github.com/taikoxyz/taiko-mono/commit/3a9d6c166b7c6666eb2515893b6a3fbd00f4b1ea)) +* **protocol:** fix test related to SendMessageToDelegateOwner.s.sol ([#18300](https://github.com/taikoxyz/taiko-mono/issues/18300)) ([65daa3e](https://github.com/taikoxyz/taiko-mono/commit/65daa3e631b471d17dbffb1001dab66efa67c499)) +* **protocol:** fix wrong Bridged ERC20 address cache ([#18287](https://github.com/taikoxyz/taiko-mono/issues/18287)) ([49267ab](https://github.com/taikoxyz/taiko-mono/commit/49267abaa6d27d16fe4fb62ca0bb28d49b09d2f9)) +* **protocol:** revert a change to maintain taiko-geth compatibility ([#18331](https://github.com/taikoxyz/taiko-mono/issues/18331)) ([9d18d59](https://github.com/taikoxyz/taiko-mono/commit/9d18d598fe3e890a1f35e2d39916d554282ee4a0)) +* **protocol:** revert changes related to `proposedIn` and `proposedAt` to fix a bug ([#18333](https://github.com/taikoxyz/taiko-mono/issues/18333)) ([5cb43ab](https://github.com/taikoxyz/taiko-mono/commit/5cb43ab1e29422353de549f8386eff613291c7df)) +* **protocol:** reward non-assigned prover 7/8 liveness bond ([#18132](https://github.com/taikoxyz/taiko-mono/issues/18132)) ([9f99099](https://github.com/taikoxyz/taiko-mono/commit/9f99099ac271e6e2a0973a43084e29169386f2cd)) +* **protocol:** small fix to 1559 error check ([#18339](https://github.com/taikoxyz/taiko-mono/issues/18339)) ([4428661](https://github.com/taikoxyz/taiko-mono/commit/44286615a0e0b0a17892fe83aad96546a6b1aca1)) + + +### Chores + +* **docs:** redirect the contribution.md path ([#18316](https://github.com/taikoxyz/taiko-mono/issues/18316)) ([0607ef7](https://github.com/taikoxyz/taiko-mono/commit/0607ef718dbe34c0ffe125825b12001b36a43fc5)) +* **main:** release protocol 1.10.0 ([#18077](https://github.com/taikoxyz/taiko-mono/issues/18077)) ([3d12cb2](https://github.com/taikoxyz/taiko-mono/commit/3d12cb24b16c7eede1930b928408c1462134f5a7)) +* **protocol:** add functions to ITaikoL1 for Nethermind Preconf ([#18217](https://github.com/taikoxyz/taiko-mono/issues/18217)) ([e349d22](https://github.com/taikoxyz/taiko-mono/commit/e349d2237a1830edab305b2f0eaaeb0eaf3c623f)) +* **protocol:** change Hekla gas issuance per sec to 100000 ([#18335](https://github.com/taikoxyz/taiko-mono/issues/18335)) ([3d448d4](https://github.com/taikoxyz/taiko-mono/commit/3d448d4a78608ea7daf1d50e877c32f8d30f1e7a)) +* **protocol:** change Hekla sharingPctg to 80% & gasIssuancePerSecond to 1000000 ([#18322](https://github.com/taikoxyz/taiko-mono/issues/18322)) ([75feb5b](https://github.com/taikoxyz/taiko-mono/commit/75feb5b36560b786a54e97280352c0d70c3e2f06)) +* **protocol:** deploy `MainnetTierRouter` and update `RollupAddressCache` ([#18359](https://github.com/taikoxyz/taiko-mono/issues/18359)) ([aa351ab](https://github.com/taikoxyz/taiko-mono/commit/aa351ab0f90e442a8b15adb8de6a48d9ae6d1c42)) +* **protocol:** fix lint issue in SP1Verifier ([#18213](https://github.com/taikoxyz/taiko-mono/issues/18213)) ([7874dd3](https://github.com/taikoxyz/taiko-mono/commit/7874dd3ff8a6053da8c09377b52c83e7a506f45f)) +* **protocol:** improve the usage of `initializer` and `reinitializer` ([#18319](https://github.com/taikoxyz/taiko-mono/issues/18319)) ([13cc007](https://github.com/taikoxyz/taiko-mono/commit/13cc0074a2295c5939cf83e23f531cb25c43bd64)) +* **protocol:** remove `TIER_ZKVM_ANY` in `MainnetTierRouter` ([#18357](https://github.com/taikoxyz/taiko-mono/issues/18357)) ([500a8bb](https://github.com/taikoxyz/taiko-mono/commit/500a8bbc46a3d1962ae5cc6d7f10e990f03d07c7)) +* **protocol:** revert Hekla `baseFeeConfig` updates ([#18340](https://github.com/taikoxyz/taiko-mono/issues/18340)) ([ae8ac3c](https://github.com/taikoxyz/taiko-mono/commit/ae8ac3c2e686b136de8c68853ecb91a39260a93f)) +* **protocol:** set mainnet Ontake fork height ([#18112](https://github.com/taikoxyz/taiko-mono/issues/18112)) ([8812eb2](https://github.com/taikoxyz/taiko-mono/commit/8812eb2a8de367311b8ada6bd3587bfe5efee090)) +* **protocol:** shorten imports in solidity files ([#18221](https://github.com/taikoxyz/taiko-mono/issues/18221)) ([9b2ba6a](https://github.com/taikoxyz/taiko-mono/commit/9b2ba6a2a2fae24d1fb34e23b29b3146e96f575e)) +* **protocol:** undo 1.10.0 release ([#18363](https://github.com/taikoxyz/taiko-mono/issues/18363)) ([116578e](https://github.com/taikoxyz/taiko-mono/commit/116578ef8a4391611bd1b3c469f4068cec8a8447)) +* **protoco:** remove unused delegate owner deployment ([#18290](https://github.com/taikoxyz/taiko-mono/issues/18290)) ([63ba863](https://github.com/taikoxyz/taiko-mono/commit/63ba863dcf322b2cf04d7dcaf6d8905bf28de6bc)) + + +### Documentation + +* **protocol:** fix invalid links in docs ([#18144](https://github.com/taikoxyz/taiko-mono/issues/18144)) ([c62f3f6](https://github.com/taikoxyz/taiko-mono/commit/c62f3f6b4a21f3af44f7df908fd8aac198721d5b)) +* **protocol:** update `tier_router` in hekla ([#18352](https://github.com/taikoxyz/taiko-mono/issues/18352)) ([7c91a7d](https://github.com/taikoxyz/taiko-mono/commit/7c91a7d486c22e0f1a5386978086dfca5b73cfe0)) +* **protocol:** update code4rena-2024-03-taiko-final-report.md ([#18062](https://github.com/taikoxyz/taiko-mono/issues/18062)) ([fd68794](https://github.com/taikoxyz/taiko-mono/commit/fd68794a2de24b7a32d2d5a1c3f52c2156b6d61a)) +* **protocol:** update Hekla deployments ([#18152](https://github.com/taikoxyz/taiko-mono/issues/18152)) ([6c7ff61](https://github.com/taikoxyz/taiko-mono/commit/6c7ff617b913b21b8b12b035f0d653c068830de3)) +* **protocol:** update Hekla deployments ([#18257](https://github.com/taikoxyz/taiko-mono/issues/18257)) ([fbb1c82](https://github.com/taikoxyz/taiko-mono/commit/fbb1c824e35adb452176d988f32cf06d0c72b9bf)) +* **protocol:** update L1 deployment ([#18299](https://github.com/taikoxyz/taiko-mono/issues/18299)) ([f60ce3e](https://github.com/taikoxyz/taiko-mono/commit/f60ce3e78bb9a2717718c3a9d7016346d5305488)) +* **protocol:** update mainnet deployment ([#18258](https://github.com/taikoxyz/taiko-mono/issues/18258)) ([eeeb4af](https://github.com/taikoxyz/taiko-mono/commit/eeeb4afeff8572115c2cf82db149cee7a723f30c)) +* **protocol:** upgrade protocol version in hekla to 1.10.0 ([#18343](https://github.com/taikoxyz/taiko-mono/issues/18343)) ([4805024](https://github.com/taikoxyz/taiko-mono/commit/4805024c15ab63bf345dcc5f5868a4a16af0ba48)) +* **protocol:** upgrade sp1 plonk verifier 2.0.0 ([#18098](https://github.com/taikoxyz/taiko-mono/issues/18098)) ([cfd0e9e](https://github.com/taikoxyz/taiko-mono/commit/cfd0e9e4af2e42ead309e0c571b09dd20ddfe0f9)) +* **protocol:** upgrade zk verifiers in Hekla ([#18279](https://github.com/taikoxyz/taiko-mono/issues/18279)) ([e98a1d5](https://github.com/taikoxyz/taiko-mono/commit/e98a1d5cdaa14af86340081ee42ad263a41bfdb5)) + + +### Code Refactoring + +* **protocol:** simplify some protocol code based on OpenZeppelin's recommendation ([#18308](https://github.com/taikoxyz/taiko-mono/issues/18308)) ([fbad703](https://github.com/taikoxyz/taiko-mono/commit/fbad703739f09d4524f9d808c3bad31d0122ec2c)) +* **protocol:** slightly change defender monitors ([#18086](https://github.com/taikoxyz/taiko-mono/issues/18086)) ([b93d056](https://github.com/taikoxyz/taiko-mono/commit/b93d056479adfc4a1f557578d8b66eda48b104a9)) + + +### Tests + +* **protocol:** fix another L2 test failure ([#18304](https://github.com/taikoxyz/taiko-mono/issues/18304)) ([b3dd4dc](https://github.com/taikoxyz/taiko-mono/commit/b3dd4dccd261a9ebda69325661d2941001268ec2)) + + +### Workflow + +* **protocol:** trigger patch release (1.10.1) ([#18358](https://github.com/taikoxyz/taiko-mono/issues/18358)) ([f4f4796](https://github.com/taikoxyz/taiko-mono/commit/f4f4796488059b02c79d6fb15170df58dd31dc4e)) + ## [1.10.0](https://github.com/taikoxyz/taiko-mono/compare/protocol-v1.9.0...protocol-v1.10.0) (2024-10-29) diff --git a/packages/protocol/package.json b/packages/protocol/package.json index dfd54350a7c..864bcdb5467 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -1,6 +1,6 @@ { "name": "@taiko/protocol", - "version": "1.9.0", + "version": "1.10.0", "private": true, "scripts": { "buildMerkle": "ts-node ./utils/airdrop/buildMerkleTree.ts ./utils/airdrop/airdrop_db/example_claimList.json", From 9182fbaf05d309f9827310f3616992c0cc88a22d Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Sat, 2 Nov 2024 10:26:11 +0800 Subject: [PATCH 119/205] chore(protocol): restore proving window changes (#18368) --- .../contracts/layer1/based/TaikoL1.sol | 4 +-- .../layer1/hekla/HeklaTierRouter.sol | 2 ++ .../mainnet/rollup/MainnetTierRouter.sol | 3 ++ .../layer1/tiers/TierProviderBase.sol | 31 +++++++++---------- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index a7a33982dc6..b546527f488 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -246,7 +246,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { /// @return blockId_ The last verified block's ID. /// @return blockHash_ The last verified block's blockHash. /// @return stateRoot_ The last verified block's stateRoot. - /// @return verifiedAt_ The timestamp this block is verified at. + /// @return verifiedAt_ The timestamp this block is proven at. function getLastVerifiedBlock() external view @@ -260,7 +260,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { /// @return blockId_ The last verified block's ID. /// @return blockHash_ The last verified block's blockHash. /// @return stateRoot_ The last verified block's stateRoot. - /// @return verifiedAt_ The timestamp this block is verified at. + /// @return verifiedAt_ The timestamp this block is proven at. function getLastSyncedBlock() external view diff --git a/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol b/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol index f62fdf51e53..2c77b524c95 100644 --- a/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol +++ b/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol @@ -5,6 +5,8 @@ import "../tiers/TierProviderBase.sol"; import "../tiers/ITierRouter.sol"; /// @title HeklaTierRouter +/// @dev Any changes to the configuration in this file must be announced and documented on our site. +/// Ensure all modifications are reviewed by the devrel team. /// @custom:security-contact security@taiko.xyz contract HeklaTierRouter is TierProviderBase, ITierRouter { address public immutable DAO_FALLBACK_PROPOSER; diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol index 1f77863ab6b..6b1054829fa 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol @@ -5,6 +5,8 @@ import "src/layer1/tiers/ITierRouter.sol"; import "src/layer1/tiers/TierProviderBase.sol"; /// @title MainnetTierRouter +/// @dev Any changes to the configuration in this file must be announced and documented on our site. +/// Ensure all modifications are reviewed by the devrel team. /// @dev Labeled in AddressResolver as "tier_router" /// @custom:security-contact security@taiko.xyz contract MainnetTierRouter is ITierRouter, TierProviderBase { @@ -29,6 +31,7 @@ contract MainnetTierRouter is ITierRouter, TierProviderBase { } /// @inheritdoc ITierProvider + // solhint-disable-next-line no-unused-vars function getMinTier(address _proposer, uint256 _rand) public view override returns (uint16) { return LibTiers.TIER_SGX; } diff --git a/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol b/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol index facaf1392c3..000393b91fa 100644 --- a/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol +++ b/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol @@ -6,6 +6,8 @@ import "./ITierProvider.sol"; import "./LibTiers.sol"; /// @title TierProviderBase +/// @dev Any changes to the configuration in this file must be announced and documented on our site. +/// Ensure all modifications are reviewed by the devrel team. /// @custom:security-contact security@taiko.xyz abstract contract TierProviderBase is ITierProvider { /// @dev Grace period for block proving service. @@ -21,8 +23,8 @@ abstract contract TierProviderBase is ITierProvider { /// previous tier. Additionally, each tier's contest bond is 6.5625 times its validity bond. function getTier(uint16 _tierId) public pure virtual returns (ITierProvider.Tier memory) { if (_tierId == LibTiers.TIER_OPTIMISTIC) { - // cooldownWindow is 24 hours and provingWindow is 15 minutes - return _buildTier("", BOND_UNIT, 24, 15); + // cooldownWindow is 1440 minutes and provingWindow is 15 minutes + return _buildTier("", BOND_UNIT, 1440, 15); } // TEE Tiers @@ -34,23 +36,20 @@ abstract contract TierProviderBase is ITierProvider { if (_tierId == LibTiers.TIER_ZKVM_RISC0) return _buildZkTier(LibStrings.B_TIER_ZKVM_RISC0); if (_tierId == LibTiers.TIER_ZKVM_SP1) return _buildZkTier(LibStrings.B_TIER_ZKVM_SP1); if (_tierId == LibTiers.TIER_ZKVM_ANY) return _buildZkTier(LibStrings.B_TIER_ZKVM_ANY); - - // ZKVM+TEE Tier if (_tierId == LibTiers.TIER_ZKVM_AND_TEE) { - // cooldownWindow is 2 hours and provingWindow is 3 hours - return _buildTier(LibStrings.B_TIER_ZKVM_AND_TEE, BOND_UNIT * 4, 2, 180); + return _buildZkTier(LibStrings.B_TIER_ZKVM_AND_TEE); } // Guardian Minority Tiers if (_tierId == LibTiers.TIER_GUARDIAN_MINORITY) { - // cooldownWindow is 4 hours - return _buildTier(LibStrings.B_TIER_GUARDIAN_MINORITY, BOND_UNIT * 4, 4, 0); + // cooldownWindow is 240 minutes and provingWindow is 2880 minutes + return _buildTier(LibStrings.B_TIER_GUARDIAN_MINORITY, BOND_UNIT * 3, 240, 0); } // Guardian Major Tiers if (_tierId == LibTiers.TIER_GUARDIAN) { - // cooldownWindow is 4 hours - return _buildTier(LibStrings.B_TIER_GUARDIAN, 0, 4, 0); + // cooldownWindow is 1440 minutes and provingWindow is 2880 minutes + return _buildTier(LibStrings.B_TIER_GUARDIAN, 0, 240, 0); } revert TIER_NOT_FOUND(); @@ -64,22 +63,22 @@ abstract contract TierProviderBase is ITierProvider { pure returns (ITierProvider.Tier memory) { - // cooldownWindow is 4 hours and provingWindow is 60 minutes - return _buildTier(_verifierName, BOND_UNIT * 2, 4, 60); + // cooldownWindow is 1440 minutes and provingWindow is 60 minutes + return _buildTier(_verifierName, BOND_UNIT * 2, 240, 60); } /// @dev Builds a ZK tier with a specific verifier name. /// @param _verifierName The name of the verifier. /// @return A Tier struct with predefined parameters for ZK. function _buildZkTier(bytes32 _verifierName) private pure returns (ITierProvider.Tier memory) { - // cooldownWindow is 4 hours and provingWindow is 3 hours - return _buildTier(_verifierName, BOND_UNIT * 3, 4, 180); + // cooldownWindow is 1440 minutes and provingWindow is 180 minutes + return _buildTier(_verifierName, BOND_UNIT * 3, 240, 180); } /// @dev Builds a generic tier with specified parameters. /// @param _verifierName The name of the verifier. /// @param _validityBond The validity bond amount. - /// @param _cooldownWindow The cooldown window duration in hours. + /// @param _cooldownWindow The cooldown window duration in minutes. /// @param _provingWindow The proving window duration in minutes. /// @return A Tier struct with the provided parameters. function _buildTier( @@ -96,7 +95,7 @@ abstract contract TierProviderBase is ITierProvider { verifierName: _verifierName, validityBond: _validityBond, contestBond: _validityBond / 10_000 * 65_625, - cooldownWindow: _cooldownWindow * 60, + cooldownWindow: _cooldownWindow, provingWindow: GRACE_PERIOD + _provingWindow, maxBlocksToVerifyPerProof: 0 }); From 9748ae527a75124f8674bb66280b9161ce79d046 Mon Sep 17 00:00:00 2001 From: David Date: Sat, 2 Nov 2024 11:18:15 +0800 Subject: [PATCH 120/205] feat(protocol): update `B_TIER_ROUTER` in `RollupAddressCache` (#18370) --- .../contracts/layer1/mainnet/addrcache/RollupAddressCache.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol index d4409c078b9..ec0184fb5b4 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol @@ -34,7 +34,7 @@ contract RollupAddressCache is AddressCache { return (true, 0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a); } if (_name == LibStrings.B_TIER_ROUTER) { - return (true, 0x2Ae89453c6c79Add793db7B9d23c275b90C26065); + return (true, 0x8f1C1D58C858e9a9eeCc587d7D51AECfd16b5542); } if (_name == LibStrings.B_TIER_SGX) { return (true, 0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81); From 4fd7b5922dd1447d91ec7fea83c987cb1643cc1b Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Sat, 2 Nov 2024 01:07:06 -0700 Subject: [PATCH 121/205] docs(docs-site): update mainnet prover docs (#18367) --- .../docs/guides/node-operators/enable-a-prover.mdx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/docs-site/src/content/docs/guides/node-operators/enable-a-prover.mdx b/packages/docs-site/src/content/docs/guides/node-operators/enable-a-prover.mdx index 2a84cc03ca3..677f356f745 100644 --- a/packages/docs-site/src/content/docs/guides/node-operators/enable-a-prover.mdx +++ b/packages/docs-site/src/content/docs/guides/node-operators/enable-a-prover.mdx @@ -56,7 +56,15 @@ The following steps can be done through the [ProverSet contract](/guides/node-op 4. Set the amount to at least the minimum bond amount of 125 TAIKO. - You will need 125 TAIKO for each bond you sign. After entering 125, you need to set the 18 decimals that the TAIKO contract takes, you can click the plus button and then select 10^18. + You will need 150 TAIKO for each bond you sign. After entering 150, you need to set the 18 decimals that the TAIKO contract takes, you can click the plus button and then select 10^18. + + You will notice that the amount subtracted is separate in two transactions, 125 for the `proposeBlock` and 25 for `proveBlock`. + + This is because the `livenessBond` (125) is taken when the block is proposed, and once the proof has been provided in the window is credited in TaikoL1; the `validityBond` (150) is then debited using the existing balance + an extra 25 TTKOh. + + If you have bonded TTKOh in the TaikoL1 contract, it will be used first before more is taken from your ProverSet. + + For an explanation of the difference between these bonds, please refer to the terminology section [here](/resources/terminology). 5. Finally, click the **Write** button. From ea0158f0cbaa974f90f9174410c705e6cbdc48aa Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Sun, 3 Nov 2024 09:16:59 +0800 Subject: [PATCH 122/205] chore(protocol): optimize Taiko L1 gas cost (#18376) --- packages/protocol/contracts/layer1/based/LibVerifying.sol | 2 +- packages/protocol/script/layer1/deploy_protocol_on_l1.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibVerifying.sol b/packages/protocol/contracts/layer1/based/LibVerifying.sol index 82cdba18bd3..0fc0bf1501e 100644 --- a/packages/protocol/contracts/layer1/based/LibVerifying.sol +++ b/packages/protocol/contracts/layer1/based/LibVerifying.sol @@ -40,7 +40,7 @@ library LibVerifying { IAddressResolver _resolver, uint64 _maxBlocksToVerify ) - public + internal { if (_maxBlocksToVerify == 0) { return; diff --git a/packages/protocol/script/layer1/deploy_protocol_on_l1.sh b/packages/protocol/script/layer1/deploy_protocol_on_l1.sh index 391fd31cca2..f272b57802b 100755 --- a/packages/protocol/script/layer1/deploy_protocol_on_l1.sh +++ b/packages/protocol/script/layer1/deploy_protocol_on_l1.sh @@ -29,7 +29,7 @@ forge script ./script/layer1/DeployProtocolOnL1.s.sol:DeployProtocolOnL1 \ --ffi \ -vvvv \ --private-key $PRIVATE_KEY \ - --block-gas-limit 100000000 + --block-gas-limit 200000000 export PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 SECURITY_COUNCIL=0x60997970C51812dc3A010C7d01b50e0d17dc79C8 \ @@ -43,4 +43,4 @@ forge script ./script/layer1/DeployTaikoToken.s.sol:DeployTaikoToken \ --ffi \ -vvvv \ --private-key $PRIVATE_KEY \ - --block-gas-limit 100000000 + --block-gas-limit 200000000 From 8543cecdef9d10d038bc5a7313230006acd26e22 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Sun, 3 Nov 2024 13:46:12 +0800 Subject: [PATCH 123/205] refactor(protocol): remove unused code post Ontake fork (#18150) Co-authored-by: dantaik Co-authored-by: gavin Co-authored-by: David Co-authored-by: Bernat Canal Garceran Co-authored-by: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> Co-authored-by: maskpp Co-authored-by: smtmfft <99081233+smtmfft@users.noreply.github.com> Co-authored-by: Ivan Lagunovsky Co-authored-by: jeff <113397187+cyberhorsey@users.noreply.github.com> Co-authored-by: Karim Co-authored-by: Karim <162329697+kimo-ice@users.noreply.github.com> Co-authored-by: YoGhurt111 --- _typos.toml | 2 + packages/protocol/.gitignore | 3 + packages/protocol/.solhint.json | 1 + packages/protocol/.solhintignore | 2 + packages/protocol/contract_layout_layer1.md | 882 ++-- packages/protocol/contract_layout_layer2.md | 374 +- .../contracts/layer1/based/ITaikoL1.sol | 56 +- .../contracts/layer1/based/LibBonds.sol | 114 +- .../contracts/layer1/based/LibData.sol | 95 +- .../contracts/layer1/based/LibProposing.sol | 209 +- .../contracts/layer1/based/LibProving.sol | 483 +- .../contracts/layer1/based/LibUtils.sol | 224 +- .../contracts/layer1/based/LibVerifying.sol | 94 +- .../contracts/layer1/based/TaikoData.sol | 133 +- .../contracts/layer1/based/TaikoEvents.sol | 52 +- .../contracts/layer1/based/TaikoL1.sol | 83 +- .../contracts/layer1/devnet/DevnetTaikoL1.sol | 2 +- .../mainnet/addrcache/RollupAddressCache.sol | 2 +- .../mainnet/rollup/MainnetTierRouter.sol | 11 +- .../contracts/layer1/preconf/README.md | 3 + .../preconf/avs-mvp/PreconfServiceManager.sol | 88 + .../preconf/avs-mvp/iface/IAVSDirectory.sol | 38 + .../avs-mvp/iface/IDelegationManager.sol | 22 + .../layer1/preconf/avs-mvp/iface/ISlasher.sol | 18 + .../avs-mvp/iface/IStrategyManager.sol | 18 + .../preconf/avs-mvp/impl/AVSDirectory.sol | 48 + .../avs-mvp/impl/DelegationManager.sol | 55 + .../layer1/preconf/avs-mvp/impl/Slasher.sol | 31 + .../preconf/avs-mvp/impl/StrategyManager.sol | 39 + .../eigenlayer/PreconfServiceManager.sol | 10 + .../layer1/preconf/iface/IPreconfRegistry.sol | 91 + .../preconf/iface/IPreconfServiceManager.sol | 25 + .../preconf/iface/IPreconfTaskManager.sol | 127 + .../preconf/impl/LibPreconfConstants.sol | 12 + .../layer1/preconf/impl/PreconfRegistry.sol | 246 + .../preconf/impl/PreconfTaskManager.sol | 637 +++ .../layer1/preconf/libs/LibBLS12381.sol | 468 ++ .../layer1/preconf/libs/LibBLSSignature.sol | 38 + .../layer1/preconf/libs/LibEIP4788.sol | 98 + .../layer1/preconf/libs/LibMerkleUtils.sol | 80 + .../preconf/mock/MockPreconfRegistry.sol | 245 + .../layer1/preconf/mock/MockTaikoToken.sol | 13 + .../layer1/provers/GuardianProver.sol | 113 +- .../contracts/layer1/provers/ProverSet.sol | 36 +- .../layer1/tiers/TierProviderBase.sol | 4 +- .../layer1/verifiers/Risc0Verifier.sol | 20 +- .../layer1/verifiers/SgxVerifier.sol | 28 +- .../layer1/verifiers/SgxVerifierBase.sol | 169 + .../verifiers/compose/ComposeVerifier.sol | 15 +- .../based/{Lib1559Math.sol => LibEIP1559.sol} | 7 +- .../contracts/layer2/based/LibL2Config.sol | 1 + .../contracts/layer2/based/TaikoL2.sol | 54 +- .../contracts/layer2/devnet/DevnetTaikoL2.sol | 2 +- .../contracts/shared/bridge/Bridge.sol | 2 +- .../shared/common/AddressManager.sol | 2 +- .../shared/common/AddressResolver.sol | 22 +- .../shared/common/EssentialContract.sol | 28 +- .../contracts/shared/common/LibAddress.sol | 6 +- .../contracts/shared/common/LibBytes.sol | 2 +- .../contracts/shared/common/LibStrings.sol | 2 +- .../contracts/shared/common/LibTrieProof.sol | 4 +- packages/protocol/foundry.toml | 11 +- packages/protocol/package.json | 2 + .../script/layer1/preconf/BaseScript.sol | 28 + .../layer1/preconf/deployment/DeployAVS.s.sol | 73 + .../deployment/DeployEigenlayerMVP.s.sol | 50 + .../layer1/preconf/deployment/deploy_avs.sh | 17 + .../deployment/deploy_eigenlayer_mvp.sh | 10 + .../deployment/mock/DeployMockAVS.s.sol | 75 + .../mock/DeployMockTaikoToken.s.sol | 13 + .../layer1/preconf/misc/EmptyContract.sol | 5 + .../protocol/test/genesis/data/genesis.json | 242 - .../test/genesis/data/genesis_alloc.json | 217 - .../genesis/data/genesis_storage_layout.json | 4667 ----------------- .../common/AttestationBase.t.sol | 15 +- .../utils/DcapTestUtils.t.sol | 10 +- .../utils/V3QuoteParseUtils.t.sol | 15 +- .../test/layer1/based/MockTaikoL1.sol | 66 + .../protocol/test/layer1/based/TaikoL1.t.sol | 28 +- .../based/TaikoL1LibProvingWithTiers.t.sol | 52 +- .../test/layer1/based/TaikoL1TestBase.sol | 24 +- .../test/layer1/based/TaikoL1TestGroup1.t.sol | 77 +- .../layer1/based/TaikoL1TestGroup10.t.sol | 2 +- .../test/layer1/based/TaikoL1TestGroup2.t.sol | 20 +- .../test/layer1/based/TaikoL1TestGroup3.t.sol | 20 +- .../test/layer1/based/TaikoL1TestGroup4.t.sol | 15 +- .../test/layer1/based/TaikoL1TestGroup5.t.sol | 32 +- .../test/layer1/based/TaikoL1TestGroup6.t.sol | 8 +- .../test/layer1/based/TaikoL1TestGroup7.t.sol | 4 +- .../test/layer1/based/TaikoL1TestGroup8.t.sol | 6 +- .../test/layer1/based/TaikoL1TestGroup9.t.sol | 34 +- .../layer1/based/TaikoL1TestGroupBase.sol | 35 +- .../layer1/based/TaikoL1testGroupA1.t.sol | 101 - .../layer1/based/TaikoL1testGroupA2.t.sol | 182 - .../test/layer1/based/TestTierRouter.sol | 12 +- .../protocol/test/layer1/preconf/BaseTest.sol | 17 + .../beacon/BeaconProofsVerification.sol | 70 + .../preconf/blocks/BlockProposing.t.sol | 239 + .../layer1/preconf/bls/BLSExpandMsgXmd.t.sol | 129 + .../preconf/bls/BLSHashToFieldFp2.t.sol | 103 + .../bls/script-test/BLSHashToCurveG2.sol | 34 + .../bls/script-test/BLSVerifySignature.sol | 64 + .../layer1/preconf/fixtures/BeaconProofs.sol | 135 + .../preconf/fixtures/BlocksFixtures.sol | 66 + .../preconf/fixtures/LookaheadFixtures.sol | 53 + .../lookahead/IncorrectLookahead.t.sol | 661 +++ .../preconf/lookahead/LookaheadPosting.t.sol | 428 ++ .../preconf/mocks/MockBeaconBlockRoot.sol | 18 + .../preconf/mocks/MockPreconfRegistry.sol | 55 + .../mocks/MockPreconfServiceManager.sol | 15 + .../test/layer1/verifiers/SgxVerifier.t.sol | 23 +- .../{Lib1559Math.t.sol => LibEIP1559.t.sol} | 34 +- packages/protocol/test/layer2/TaikoL2.t.sol | 59 +- .../layer2/TaikoL2EIP1559Configurable.sol | 50 - .../test/layer2/TaikoL2NoFeeCheck.t.sol | 201 - packages/protocol/test/layer2/TaikoL2Test.sol | 7 +- pnpm-lock.yaml | 801 ++- 117 files changed, 7575 insertions(+), 7644 deletions(-) create mode 100644 packages/protocol/contracts/layer1/preconf/README.md create mode 100644 packages/protocol/contracts/layer1/preconf/avs-mvp/PreconfServiceManager.sol create mode 100644 packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IAVSDirectory.sol create mode 100644 packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IDelegationManager.sol create mode 100644 packages/protocol/contracts/layer1/preconf/avs-mvp/iface/ISlasher.sol create mode 100644 packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IStrategyManager.sol create mode 100644 packages/protocol/contracts/layer1/preconf/avs-mvp/impl/AVSDirectory.sol create mode 100644 packages/protocol/contracts/layer1/preconf/avs-mvp/impl/DelegationManager.sol create mode 100644 packages/protocol/contracts/layer1/preconf/avs-mvp/impl/Slasher.sol create mode 100644 packages/protocol/contracts/layer1/preconf/avs-mvp/impl/StrategyManager.sol create mode 100644 packages/protocol/contracts/layer1/preconf/eigenlayer/PreconfServiceManager.sol create mode 100644 packages/protocol/contracts/layer1/preconf/iface/IPreconfRegistry.sol create mode 100644 packages/protocol/contracts/layer1/preconf/iface/IPreconfServiceManager.sol create mode 100644 packages/protocol/contracts/layer1/preconf/iface/IPreconfTaskManager.sol create mode 100644 packages/protocol/contracts/layer1/preconf/impl/LibPreconfConstants.sol create mode 100644 packages/protocol/contracts/layer1/preconf/impl/PreconfRegistry.sol create mode 100644 packages/protocol/contracts/layer1/preconf/impl/PreconfTaskManager.sol create mode 100644 packages/protocol/contracts/layer1/preconf/libs/LibBLS12381.sol create mode 100644 packages/protocol/contracts/layer1/preconf/libs/LibBLSSignature.sol create mode 100644 packages/protocol/contracts/layer1/preconf/libs/LibEIP4788.sol create mode 100644 packages/protocol/contracts/layer1/preconf/libs/LibMerkleUtils.sol create mode 100644 packages/protocol/contracts/layer1/preconf/mock/MockPreconfRegistry.sol create mode 100644 packages/protocol/contracts/layer1/preconf/mock/MockTaikoToken.sol create mode 100644 packages/protocol/contracts/layer1/verifiers/SgxVerifierBase.sol rename packages/protocol/contracts/layer2/based/{Lib1559Math.sol => LibEIP1559.sol} (93%) create mode 100644 packages/protocol/script/layer1/preconf/BaseScript.sol create mode 100644 packages/protocol/script/layer1/preconf/deployment/DeployAVS.s.sol create mode 100644 packages/protocol/script/layer1/preconf/deployment/DeployEigenlayerMVP.s.sol create mode 100644 packages/protocol/script/layer1/preconf/deployment/deploy_avs.sh create mode 100644 packages/protocol/script/layer1/preconf/deployment/deploy_eigenlayer_mvp.sh create mode 100644 packages/protocol/script/layer1/preconf/deployment/mock/DeployMockAVS.s.sol create mode 100644 packages/protocol/script/layer1/preconf/deployment/mock/DeployMockTaikoToken.s.sol create mode 100644 packages/protocol/script/layer1/preconf/misc/EmptyContract.sol delete mode 100644 packages/protocol/test/genesis/data/genesis.json delete mode 100644 packages/protocol/test/genesis/data/genesis_alloc.json delete mode 100644 packages/protocol/test/genesis/data/genesis_storage_layout.json create mode 100644 packages/protocol/test/layer1/based/MockTaikoL1.sol delete mode 100644 packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol delete mode 100644 packages/protocol/test/layer1/based/TaikoL1testGroupA2.t.sol create mode 100644 packages/protocol/test/layer1/preconf/BaseTest.sol create mode 100644 packages/protocol/test/layer1/preconf/beacon/BeaconProofsVerification.sol create mode 100644 packages/protocol/test/layer1/preconf/blocks/BlockProposing.t.sol create mode 100644 packages/protocol/test/layer1/preconf/bls/BLSExpandMsgXmd.t.sol create mode 100644 packages/protocol/test/layer1/preconf/bls/BLSHashToFieldFp2.t.sol create mode 100644 packages/protocol/test/layer1/preconf/bls/script-test/BLSHashToCurveG2.sol create mode 100644 packages/protocol/test/layer1/preconf/bls/script-test/BLSVerifySignature.sol create mode 100644 packages/protocol/test/layer1/preconf/fixtures/BeaconProofs.sol create mode 100644 packages/protocol/test/layer1/preconf/fixtures/BlocksFixtures.sol create mode 100644 packages/protocol/test/layer1/preconf/fixtures/LookaheadFixtures.sol create mode 100644 packages/protocol/test/layer1/preconf/lookahead/IncorrectLookahead.t.sol create mode 100644 packages/protocol/test/layer1/preconf/lookahead/LookaheadPosting.t.sol create mode 100644 packages/protocol/test/layer1/preconf/mocks/MockBeaconBlockRoot.sol create mode 100644 packages/protocol/test/layer1/preconf/mocks/MockPreconfRegistry.sol create mode 100644 packages/protocol/test/layer1/preconf/mocks/MockPreconfServiceManager.sol rename packages/protocol/test/layer2/{Lib1559Math.t.sol => LibEIP1559.t.sol} (66%) delete mode 100644 packages/protocol/test/layer2/TaikoL2EIP1559Configurable.sol delete mode 100644 packages/protocol/test/layer2/TaikoL2NoFeeCheck.t.sol diff --git a/_typos.toml b/_typos.toml index e0ba4825a7b..004806bd6cf 100644 --- a/_typos.toml +++ b/_typos.toml @@ -5,6 +5,8 @@ extend-ignore-identifiers-re = [ "bafybeiegdqpwx3he5dvoxqklspdjekjepjcobfaakyficksratn73qbbyy", "TGE", "tge", + "preconf", + "preconfer", "baed", "Groth", "groth", diff --git a/packages/protocol/.gitignore b/packages/protocol/.gitignore index 610554964aa..d413d569ab2 100644 --- a/packages/protocol/.gitignore +++ b/packages/protocol/.gitignore @@ -34,6 +34,9 @@ broadcast lcov.info simulation/out/ +test/genesis/data/genesis.json +test/genesis/data/genesis_alloc.json +test/genesis/data/genesis_storage_layout.json # Serverless directories .serverless diff --git a/packages/protocol/.solhint.json b/packages/protocol/.solhint.json index add6256b711..43f67a418ae 100644 --- a/packages/protocol/.solhint.json +++ b/packages/protocol/.solhint.json @@ -14,6 +14,7 @@ "no-inline-assembly": "off", "not-rely-on-time": "off", "gas-custom-errors": "off", + "immutable-vars-naming": "off", "one-contract-per-file": "off" } } diff --git a/packages/protocol/.solhintignore b/packages/protocol/.solhintignore index b0045ae5f33..fa784518089 100644 --- a/packages/protocol/.solhintignore +++ b/packages/protocol/.solhintignore @@ -1,4 +1,6 @@ node_modules/ lib/ contracts/layer1/automata-attestation/ +contracts/layer1/preconf/avs-mvp/ +contracts/layer1/preconf/libs/LibBLS12381.sol test/shared/thirdparty/ diff --git a/packages/protocol/contract_layout_layer1.md b/packages/protocol/contract_layout_layer1.md index b8a329cd8ef..299e675c91e 100644 --- a/packages/protocol/contract_layout_layer1.md +++ b/packages/protocol/contract_layout_layer1.md @@ -12,7 +12,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | ERC1155Vault | | __reentry | uint8 | 201 | 0 | 1 | ERC1155Vault | | __paused | uint8 | 201 | 1 | 1 | ERC1155Vault | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC1155Vault | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC1155Vault | | __gap | uint256[49] | 202 | 0 | 1568 | ERC1155Vault | | __gap | uint256[50] | 251 | 0 | 1600 | ERC1155Vault | | bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | ERC1155Vault | @@ -36,7 +36,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | ERC20Vault | | __reentry | uint8 | 201 | 0 | 1 | ERC20Vault | | __paused | uint8 | 201 | 1 | 1 | ERC20Vault | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC20Vault | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC20Vault | | __gap | uint256[49] | 202 | 0 | 1568 | ERC20Vault | | __gap | uint256[50] | 251 | 0 | 1600 | ERC20Vault | | bridgedToCanonical | mapping(address => struct ERC20Vault.CanonicalERC20) | 301 | 0 | 32 | ERC20Vault | @@ -59,7 +59,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | ERC721Vault | | __reentry | uint8 | 201 | 0 | 1 | ERC721Vault | | __paused | uint8 | 201 | 1 | 1 | ERC721Vault | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC721Vault | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC721Vault | | __gap | uint256[49] | 202 | 0 | 1568 | ERC721Vault | | __gap | uint256[50] | 251 | 0 | 1600 | ERC721Vault | | bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | ERC721Vault | @@ -81,7 +81,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | BridgedERC20 | | __reentry | uint8 | 201 | 0 | 1 | BridgedERC20 | | __paused | uint8 | 201 | 1 | 1 | BridgedERC20 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20 | | __gap | uint256[49] | 202 | 0 | 1568 | BridgedERC20 | | _balances | mapping(address => uint256) | 251 | 0 | 32 | BridgedERC20 | | _allowances | mapping(address => mapping(address => uint256)) | 252 | 0 | 32 | BridgedERC20 | @@ -110,7 +110,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | BridgedERC20V2 | | __reentry | uint8 | 201 | 0 | 1 | BridgedERC20V2 | | __paused | uint8 | 201 | 1 | 1 | BridgedERC20V2 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20V2 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20V2 | | __gap | uint256[49] | 202 | 0 | 1568 | BridgedERC20V2 | | _balances | mapping(address => uint256) | 251 | 0 | 32 | BridgedERC20V2 | | _allowances | mapping(address => mapping(address => uint256)) | 252 | 0 | 32 | BridgedERC20V2 | @@ -146,7 +146,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | BridgedERC721 | | __reentry | uint8 | 201 | 0 | 1 | BridgedERC721 | | __paused | uint8 | 201 | 1 | 1 | BridgedERC721 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC721 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC721 | | __gap | uint256[49] | 202 | 0 | 1568 | BridgedERC721 | | __gap | uint256[50] | 251 | 0 | 1600 | BridgedERC721 | | _name | string | 301 | 0 | 32 | BridgedERC721 | @@ -174,7 +174,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | BridgedERC1155 | | __reentry | uint8 | 201 | 0 | 1 | BridgedERC1155 | | __paused | uint8 | 201 | 1 | 1 | BridgedERC1155 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC1155 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC1155 | | __gap | uint256[49] | 202 | 0 | 1568 | BridgedERC1155 | | __gap | uint256[50] | 251 | 0 | 1600 | BridgedERC1155 | | _balances | mapping(uint256 => mapping(address => uint256)) | 301 | 0 | 32 | BridgedERC1155 | @@ -188,67 +188,67 @@ | __gap | uint256[46] | 355 | 0 | 1472 | BridgedERC1155 | ## Bridge -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-----------------------------------------|------|--------|-------|-------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | Bridge | -| _initializing | bool | 0 | 1 | 1 | Bridge | -| __gap | uint256[50] | 1 | 0 | 1600 | Bridge | -| _owner | address | 51 | 0 | 20 | Bridge | -| __gap | uint256[49] | 52 | 0 | 1568 | Bridge | -| _pendingOwner | address | 101 | 0 | 20 | Bridge | -| __gap | uint256[49] | 102 | 0 | 1568 | Bridge | -| addressManager | address | 151 | 0 | 20 | Bridge | -| __gap | uint256[49] | 152 | 0 | 1568 | Bridge | -| __reentry | uint8 | 201 | 0 | 1 | Bridge | -| __paused | uint8 | 201 | 1 | 1 | Bridge | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | Bridge | -| __gap | uint256[49] | 202 | 0 | 1568 | Bridge | -| __reserved1 | uint64 | 251 | 0 | 8 | Bridge | -| nextMessageId | uint64 | 251 | 8 | 8 | Bridge | -| messageStatus | mapping(bytes32 => enum IBridge.Status) | 252 | 0 | 32 | Bridge | -| __ctx | struct IBridge.Context | 253 | 0 | 64 | Bridge | -| __reserved2 | uint256 | 255 | 0 | 32 | Bridge | -| __reserved3 | uint256 | 256 | 0 | 32 | Bridge | -| __gap | uint256[44] | 257 | 0 | 1408 | Bridge | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------------------|------|--------|-------|-------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | Bridge | +| _initializing | bool | 0 | 1 | 1 | Bridge | +| __gap | uint256[50] | 1 | 0 | 1600 | Bridge | +| _owner | address | 51 | 0 | 20 | Bridge | +| __gap | uint256[49] | 52 | 0 | 1568 | Bridge | +| _pendingOwner | address | 101 | 0 | 20 | Bridge | +| __gap | uint256[49] | 102 | 0 | 1568 | Bridge | +| addressManager | address | 151 | 0 | 20 | Bridge | +| __gap | uint256[49] | 152 | 0 | 1568 | Bridge | +| __reentry | uint8 | 201 | 0 | 1 | Bridge | +| __paused | uint8 | 201 | 1 | 1 | Bridge | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | Bridge | +| __gap | uint256[49] | 202 | 0 | 1568 | Bridge | +| __reserved1 | uint64 | 251 | 0 | 8 | Bridge | +| nextMessageId | uint64 | 251 | 8 | 8 | Bridge | +| messageStatus | mapping(bytes32 => enum IBridge.Status) | 252 | 0 | 32 | Bridge | +| __ctx | struct IBridge.Context | 253 | 0 | 64 | Bridge | +| __reserved2 | uint256 | 255 | 0 | 32 | Bridge | +| __reserved3 | uint256 | 256 | 0 | 32 | Bridge | +| __gap | uint256[44] | 257 | 0 | 1408 | Bridge | ## QuotaManager -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-----------------------------------------------|------|--------|-------|-------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | QuotaManager | -| _initializing | bool | 0 | 1 | 1 | QuotaManager | -| __gap | uint256[50] | 1 | 0 | 1600 | QuotaManager | -| _owner | address | 51 | 0 | 20 | QuotaManager | -| __gap | uint256[49] | 52 | 0 | 1568 | QuotaManager | -| _pendingOwner | address | 101 | 0 | 20 | QuotaManager | -| __gap | uint256[49] | 102 | 0 | 1568 | QuotaManager | -| addressManager | address | 151 | 0 | 20 | QuotaManager | -| __gap | uint256[49] | 152 | 0 | 1568 | QuotaManager | -| __reentry | uint8 | 201 | 0 | 1 | QuotaManager | -| __paused | uint8 | 201 | 1 | 1 | QuotaManager | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | QuotaManager | -| __gap | uint256[49] | 202 | 0 | 1568 | QuotaManager | -| tokenQuota | mapping(address => struct QuotaManager.Quota) | 251 | 0 | 32 | QuotaManager | -| quotaPeriod | uint24 | 252 | 0 | 3 | QuotaManager | -| __gap | uint256[48] | 253 | 0 | 1536 | QuotaManager | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------------------------|------|--------|-------|-------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | QuotaManager | +| _initializing | bool | 0 | 1 | 1 | QuotaManager | +| __gap | uint256[50] | 1 | 0 | 1600 | QuotaManager | +| _owner | address | 51 | 0 | 20 | QuotaManager | +| __gap | uint256[49] | 52 | 0 | 1568 | QuotaManager | +| _pendingOwner | address | 101 | 0 | 20 | QuotaManager | +| __gap | uint256[49] | 102 | 0 | 1568 | QuotaManager | +| addressManager | address | 151 | 0 | 20 | QuotaManager | +| __gap | uint256[49] | 152 | 0 | 1568 | QuotaManager | +| __reentry | uint8 | 201 | 0 | 1 | QuotaManager | +| __paused | uint8 | 201 | 1 | 1 | QuotaManager | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | QuotaManager | +| __gap | uint256[49] | 202 | 0 | 1568 | QuotaManager | +| tokenQuota | mapping(address => struct QuotaManager.Quota) | 251 | 0 | 32 | QuotaManager | +| quotaPeriod | uint24 | 252 | 0 | 3 | QuotaManager | +| __gap | uint256[48] | 253 | 0 | 1536 | QuotaManager | ## AddressManager -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------------------------------------------|------|--------|-------|-----------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | AddressManager | -| _initializing | bool | 0 | 1 | 1 | AddressManager | -| __gap | uint256[50] | 1 | 0 | 1600 | AddressManager | -| _owner | address | 51 | 0 | 20 | AddressManager | -| __gap | uint256[49] | 52 | 0 | 1568 | AddressManager | -| _pendingOwner | address | 101 | 0 | 20 | AddressManager | -| __gap | uint256[49] | 102 | 0 | 1568 | AddressManager | -| addressManager | address | 151 | 0 | 20 | AddressManager | -| __gap | uint256[49] | 152 | 0 | 1568 | AddressManager | -| __reentry | uint8 | 201 | 0 | 1 | AddressManager | -| __paused | uint8 | 201 | 1 | 1 | AddressManager | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | AddressManager | -| __gap | uint256[49] | 202 | 0 | 1568 | AddressManager | -| __addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | AddressManager | -| __gap | uint256[49] | 252 | 0 | 1568 | AddressManager | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------------------------------------------|------|--------|-------|-----------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | AddressManager | +| _initializing | bool | 0 | 1 | 1 | AddressManager | +| __gap | uint256[50] | 1 | 0 | 1600 | AddressManager | +| _owner | address | 51 | 0 | 20 | AddressManager | +| __gap | uint256[49] | 52 | 0 | 1568 | AddressManager | +| _pendingOwner | address | 101 | 0 | 20 | AddressManager | +| __gap | uint256[49] | 102 | 0 | 1568 | AddressManager | +| addressManager | address | 151 | 0 | 20 | AddressManager | +| __gap | uint256[49] | 152 | 0 | 1568 | AddressManager | +| __reentry | uint8 | 201 | 0 | 1 | AddressManager | +| __paused | uint8 | 201 | 1 | 1 | AddressManager | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | AddressManager | +| __gap | uint256[49] | 202 | 0 | 1568 | AddressManager | +| __addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | AddressManager | +| __gap | uint256[49] | 252 | 0 | 1568 | AddressManager | ## AddressResolver | Name | Type | Slot | Offset | Bytes | Contract | @@ -259,41 +259,41 @@ | __gap | uint256[49] | 1 | 0 | 1568 | AddressResolver | ## EssentialContract -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------|------|--------|-------|-----------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | EssentialContract | -| _initializing | bool | 0 | 1 | 1 | EssentialContract | -| __gap | uint256[50] | 1 | 0 | 1600 | EssentialContract | -| _owner | address | 51 | 0 | 20 | EssentialContract | -| __gap | uint256[49] | 52 | 0 | 1568 | EssentialContract | -| _pendingOwner | address | 101 | 0 | 20 | EssentialContract | -| __gap | uint256[49] | 102 | 0 | 1568 | EssentialContract | -| addressManager | address | 151 | 0 | 20 | EssentialContract | -| __gap | uint256[49] | 152 | 0 | 1568 | EssentialContract | -| __reentry | uint8 | 201 | 0 | 1 | EssentialContract | -| __paused | uint8 | 201 | 1 | 1 | EssentialContract | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | EssentialContract | -| __gap | uint256[49] | 202 | 0 | 1568 | EssentialContract | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------|------|--------|-------|-----------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | EssentialContract | +| _initializing | bool | 0 | 1 | 1 | EssentialContract | +| __gap | uint256[50] | 1 | 0 | 1600 | EssentialContract | +| _owner | address | 51 | 0 | 20 | EssentialContract | +| __gap | uint256[49] | 52 | 0 | 1568 | EssentialContract | +| _pendingOwner | address | 101 | 0 | 20 | EssentialContract | +| __gap | uint256[49] | 102 | 0 | 1568 | EssentialContract | +| addressManager | address | 151 | 0 | 20 | EssentialContract | +| __gap | uint256[49] | 152 | 0 | 1568 | EssentialContract | +| __reentry | uint8 | 201 | 0 | 1 | EssentialContract | +| __paused | uint8 | 201 | 1 | 1 | EssentialContract | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | EssentialContract | +| __gap | uint256[49] | 202 | 0 | 1568 | EssentialContract | ## SignalService -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-----------------------------------------------|------|--------|-------|---------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | SignalService | -| _initializing | bool | 0 | 1 | 1 | SignalService | -| __gap | uint256[50] | 1 | 0 | 1600 | SignalService | -| _owner | address | 51 | 0 | 20 | SignalService | -| __gap | uint256[49] | 52 | 0 | 1568 | SignalService | -| _pendingOwner | address | 101 | 0 | 20 | SignalService | -| __gap | uint256[49] | 102 | 0 | 1568 | SignalService | -| addressManager | address | 151 | 0 | 20 | SignalService | -| __gap | uint256[49] | 152 | 0 | 1568 | SignalService | -| __reentry | uint8 | 201 | 0 | 1 | SignalService | -| __paused | uint8 | 201 | 1 | 1 | SignalService | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | SignalService | -| __gap | uint256[49] | 202 | 0 | 1568 | SignalService | -| topBlockId | mapping(uint64 => mapping(bytes32 => uint64)) | 251 | 0 | 32 | SignalService | -| isAuthorized | mapping(address => bool) | 252 | 0 | 32 | SignalService | -| __gap | uint256[48] | 253 | 0 | 1536 | SignalService | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------------------------|------|--------|-------|---------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | SignalService | +| _initializing | bool | 0 | 1 | 1 | SignalService | +| __gap | uint256[50] | 1 | 0 | 1600 | SignalService | +| _owner | address | 51 | 0 | 20 | SignalService | +| __gap | uint256[49] | 52 | 0 | 1568 | SignalService | +| _pendingOwner | address | 101 | 0 | 20 | SignalService | +| __gap | uint256[49] | 102 | 0 | 1568 | SignalService | +| addressManager | address | 151 | 0 | 20 | SignalService | +| __gap | uint256[49] | 152 | 0 | 1568 | SignalService | +| __reentry | uint8 | 201 | 0 | 1 | SignalService | +| __paused | uint8 | 201 | 1 | 1 | SignalService | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | SignalService | +| __gap | uint256[49] | 202 | 0 | 1568 | SignalService | +| topBlockId | mapping(uint64 => mapping(bytes32 => uint64)) | 251 | 0 | 32 | SignalService | +| isAuthorized | mapping(address => bool) | 252 | 0 | 32 | SignalService | +| __gap | uint256[48] | 253 | 0 | 1536 | SignalService | ## TaikoToken | Name | Type | Slot | Offset | Bytes | Contract | @@ -309,7 +309,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | TaikoToken | | __reentry | uint8 | 201 | 0 | 1 | TaikoToken | | __paused | uint8 | 201 | 1 | 1 | TaikoToken | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | TaikoToken | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | TaikoToken | | __gap | uint256[49] | 202 | 0 | 1568 | TaikoToken | | __slots_previously_used_by_ERC20SnapshotUpgradeable | uint256[50] | 251 | 0 | 1600 | TaikoToken | | _balances | mapping(address => uint256) | 301 | 0 | 32 | TaikoToken | @@ -333,98 +333,98 @@ | __gap | uint256[50] | 504 | 0 | 1600 | TaikoToken | ## ComposeVerifier -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------|------|--------|-------|------------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | ComposeVerifier | -| _initializing | bool | 0 | 1 | 1 | ComposeVerifier | -| __gap | uint256[50] | 1 | 0 | 1600 | ComposeVerifier | -| _owner | address | 51 | 0 | 20 | ComposeVerifier | -| __gap | uint256[49] | 52 | 0 | 1568 | ComposeVerifier | -| _pendingOwner | address | 101 | 0 | 20 | ComposeVerifier | -| __gap | uint256[49] | 102 | 0 | 1568 | ComposeVerifier | -| addressManager | address | 151 | 0 | 20 | ComposeVerifier | -| __gap | uint256[49] | 152 | 0 | 1568 | ComposeVerifier | -| __reentry | uint8 | 201 | 0 | 1 | ComposeVerifier | -| __paused | uint8 | 201 | 1 | 1 | ComposeVerifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | ComposeVerifier | -| __gap | uint256[49] | 202 | 0 | 1568 | ComposeVerifier | -| __gap | uint256[50] | 251 | 0 | 1600 | ComposeVerifier | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------|------|--------|-------|------------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | ComposeVerifier | +| _initializing | bool | 0 | 1 | 1 | ComposeVerifier | +| __gap | uint256[50] | 1 | 0 | 1600 | ComposeVerifier | +| _owner | address | 51 | 0 | 20 | ComposeVerifier | +| __gap | uint256[49] | 52 | 0 | 1568 | ComposeVerifier | +| _pendingOwner | address | 101 | 0 | 20 | ComposeVerifier | +| __gap | uint256[49] | 102 | 0 | 1568 | ComposeVerifier | +| addressManager | address | 151 | 0 | 20 | ComposeVerifier | +| __gap | uint256[49] | 152 | 0 | 1568 | ComposeVerifier | +| __reentry | uint8 | 201 | 0 | 1 | ComposeVerifier | +| __paused | uint8 | 201 | 1 | 1 | ComposeVerifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | ComposeVerifier | +| __gap | uint256[49] | 202 | 0 | 1568 | ComposeVerifier | +| __gap | uint256[50] | 251 | 0 | 1600 | ComposeVerifier | ## TeeAnyVerifier -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------|------|--------|-------|----------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | TeeAnyVerifier | -| _initializing | bool | 0 | 1 | 1 | TeeAnyVerifier | -| __gap | uint256[50] | 1 | 0 | 1600 | TeeAnyVerifier | -| _owner | address | 51 | 0 | 20 | TeeAnyVerifier | -| __gap | uint256[49] | 52 | 0 | 1568 | TeeAnyVerifier | -| _pendingOwner | address | 101 | 0 | 20 | TeeAnyVerifier | -| __gap | uint256[49] | 102 | 0 | 1568 | TeeAnyVerifier | -| addressManager | address | 151 | 0 | 20 | TeeAnyVerifier | -| __gap | uint256[49] | 152 | 0 | 1568 | TeeAnyVerifier | -| __reentry | uint8 | 201 | 0 | 1 | TeeAnyVerifier | -| __paused | uint8 | 201 | 1 | 1 | TeeAnyVerifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | TeeAnyVerifier | -| __gap | uint256[49] | 202 | 0 | 1568 | TeeAnyVerifier | -| __gap | uint256[50] | 251 | 0 | 1600 | TeeAnyVerifier | -| __gap | uint256[50] | 301 | 0 | 1600 | TeeAnyVerifier | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------|------|--------|-------|----------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | TeeAnyVerifier | +| _initializing | bool | 0 | 1 | 1 | TeeAnyVerifier | +| __gap | uint256[50] | 1 | 0 | 1600 | TeeAnyVerifier | +| _owner | address | 51 | 0 | 20 | TeeAnyVerifier | +| __gap | uint256[49] | 52 | 0 | 1568 | TeeAnyVerifier | +| _pendingOwner | address | 101 | 0 | 20 | TeeAnyVerifier | +| __gap | uint256[49] | 102 | 0 | 1568 | TeeAnyVerifier | +| addressManager | address | 151 | 0 | 20 | TeeAnyVerifier | +| __gap | uint256[49] | 152 | 0 | 1568 | TeeAnyVerifier | +| __reentry | uint8 | 201 | 0 | 1 | TeeAnyVerifier | +| __paused | uint8 | 201 | 1 | 1 | TeeAnyVerifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | TeeAnyVerifier | +| __gap | uint256[49] | 202 | 0 | 1568 | TeeAnyVerifier | +| __gap | uint256[50] | 251 | 0 | 1600 | TeeAnyVerifier | +| __gap | uint256[50] | 301 | 0 | 1600 | TeeAnyVerifier | ## ZkAndTeeVerifier -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------|------|--------|-------|--------------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | ZkAndTeeVerifier | -| _initializing | bool | 0 | 1 | 1 | ZkAndTeeVerifier | -| __gap | uint256[50] | 1 | 0 | 1600 | ZkAndTeeVerifier | -| _owner | address | 51 | 0 | 20 | ZkAndTeeVerifier | -| __gap | uint256[49] | 52 | 0 | 1568 | ZkAndTeeVerifier | -| _pendingOwner | address | 101 | 0 | 20 | ZkAndTeeVerifier | -| __gap | uint256[49] | 102 | 0 | 1568 | ZkAndTeeVerifier | -| addressManager | address | 151 | 0 | 20 | ZkAndTeeVerifier | -| __gap | uint256[49] | 152 | 0 | 1568 | ZkAndTeeVerifier | -| __reentry | uint8 | 201 | 0 | 1 | ZkAndTeeVerifier | -| __paused | uint8 | 201 | 1 | 1 | ZkAndTeeVerifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | ZkAndTeeVerifier | -| __gap | uint256[49] | 202 | 0 | 1568 | ZkAndTeeVerifier | -| __gap | uint256[50] | 251 | 0 | 1600 | ZkAndTeeVerifier | -| __gap | uint256[50] | 301 | 0 | 1600 | ZkAndTeeVerifier | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------|------|--------|-------|--------------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | ZkAndTeeVerifier | +| _initializing | bool | 0 | 1 | 1 | ZkAndTeeVerifier | +| __gap | uint256[50] | 1 | 0 | 1600 | ZkAndTeeVerifier | +| _owner | address | 51 | 0 | 20 | ZkAndTeeVerifier | +| __gap | uint256[49] | 52 | 0 | 1568 | ZkAndTeeVerifier | +| _pendingOwner | address | 101 | 0 | 20 | ZkAndTeeVerifier | +| __gap | uint256[49] | 102 | 0 | 1568 | ZkAndTeeVerifier | +| addressManager | address | 151 | 0 | 20 | ZkAndTeeVerifier | +| __gap | uint256[49] | 152 | 0 | 1568 | ZkAndTeeVerifier | +| __reentry | uint8 | 201 | 0 | 1 | ZkAndTeeVerifier | +| __paused | uint8 | 201 | 1 | 1 | ZkAndTeeVerifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | ZkAndTeeVerifier | +| __gap | uint256[49] | 202 | 0 | 1568 | ZkAndTeeVerifier | +| __gap | uint256[50] | 251 | 0 | 1600 | ZkAndTeeVerifier | +| __gap | uint256[50] | 301 | 0 | 1600 | ZkAndTeeVerifier | ## ZkAnyVerifier -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------|------|--------|-------|--------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | ZkAnyVerifier | -| _initializing | bool | 0 | 1 | 1 | ZkAnyVerifier | -| __gap | uint256[50] | 1 | 0 | 1600 | ZkAnyVerifier | -| _owner | address | 51 | 0 | 20 | ZkAnyVerifier | -| __gap | uint256[49] | 52 | 0 | 1568 | ZkAnyVerifier | -| _pendingOwner | address | 101 | 0 | 20 | ZkAnyVerifier | -| __gap | uint256[49] | 102 | 0 | 1568 | ZkAnyVerifier | -| addressManager | address | 151 | 0 | 20 | ZkAnyVerifier | -| __gap | uint256[49] | 152 | 0 | 1568 | ZkAnyVerifier | -| __reentry | uint8 | 201 | 0 | 1 | ZkAnyVerifier | -| __paused | uint8 | 201 | 1 | 1 | ZkAnyVerifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | ZkAnyVerifier | -| __gap | uint256[49] | 202 | 0 | 1568 | ZkAnyVerifier | -| __gap | uint256[50] | 251 | 0 | 1600 | ZkAnyVerifier | -| __gap | uint256[50] | 301 | 0 | 1600 | ZkAnyVerifier | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------|------|--------|-------|--------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | ZkAnyVerifier | +| _initializing | bool | 0 | 1 | 1 | ZkAnyVerifier | +| __gap | uint256[50] | 1 | 0 | 1600 | ZkAnyVerifier | +| _owner | address | 51 | 0 | 20 | ZkAnyVerifier | +| __gap | uint256[49] | 52 | 0 | 1568 | ZkAnyVerifier | +| _pendingOwner | address | 101 | 0 | 20 | ZkAnyVerifier | +| __gap | uint256[49] | 102 | 0 | 1568 | ZkAnyVerifier | +| addressManager | address | 151 | 0 | 20 | ZkAnyVerifier | +| __gap | uint256[49] | 152 | 0 | 1568 | ZkAnyVerifier | +| __reentry | uint8 | 201 | 0 | 1 | ZkAnyVerifier | +| __paused | uint8 | 201 | 1 | 1 | ZkAnyVerifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | ZkAnyVerifier | +| __gap | uint256[49] | 202 | 0 | 1568 | ZkAnyVerifier | +| __gap | uint256[50] | 251 | 0 | 1600 | ZkAnyVerifier | +| __gap | uint256[50] | 301 | 0 | 1600 | ZkAnyVerifier | ## Risc0Verifier -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|--------------------------|------|--------|-------|------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | Risc0Verifier | -| _initializing | bool | 0 | 1 | 1 | Risc0Verifier | -| __gap | uint256[50] | 1 | 0 | 1600 | Risc0Verifier | -| _owner | address | 51 | 0 | 20 | Risc0Verifier | -| __gap | uint256[49] | 52 | 0 | 1568 | Risc0Verifier | -| _pendingOwner | address | 101 | 0 | 20 | Risc0Verifier | -| __gap | uint256[49] | 102 | 0 | 1568 | Risc0Verifier | -| addressManager | address | 151 | 0 | 20 | Risc0Verifier | -| __gap | uint256[49] | 152 | 0 | 1568 | Risc0Verifier | -| __reentry | uint8 | 201 | 0 | 1 | Risc0Verifier | -| __paused | uint8 | 201 | 1 | 1 | Risc0Verifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | Risc0Verifier | -| __gap | uint256[49] | 202 | 0 | 1568 | Risc0Verifier | -| isImageTrusted | mapping(bytes32 => bool) | 251 | 0 | 32 | Risc0Verifier | -| __gap | uint256[49] | 252 | 0 | 1568 | Risc0Verifier | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|--------------------------|------|--------|-------|------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | Risc0Verifier | +| _initializing | bool | 0 | 1 | 1 | Risc0Verifier | +| __gap | uint256[50] | 1 | 0 | 1600 | Risc0Verifier | +| _owner | address | 51 | 0 | 20 | Risc0Verifier | +| __gap | uint256[49] | 52 | 0 | 1568 | Risc0Verifier | +| _pendingOwner | address | 101 | 0 | 20 | Risc0Verifier | +| __gap | uint256[49] | 102 | 0 | 1568 | Risc0Verifier | +| addressManager | address | 151 | 0 | 20 | Risc0Verifier | +| __gap | uint256[49] | 152 | 0 | 1568 | Risc0Verifier | +| __reentry | uint8 | 201 | 0 | 1 | Risc0Verifier | +| __paused | uint8 | 201 | 1 | 1 | Risc0Verifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | Risc0Verifier | +| __gap | uint256[49] | 202 | 0 | 1568 | Risc0Verifier | +| isImageTrusted | mapping(bytes32 => bool) | 251 | 0 | 32 | Risc0Verifier | +| __gap | uint256[49] | 252 | 0 | 1568 | Risc0Verifier | ## SP1Verifier | Name | Type | Slot | Offset | Bytes | Contract | @@ -440,7 +440,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | SP1Verifier | | __reentry | uint8 | 201 | 0 | 1 | SP1Verifier | | __paused | uint8 | 201 | 1 | 1 | SP1Verifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | SP1Verifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | SP1Verifier | | __gap | uint256[49] | 202 | 0 | 1568 | SP1Verifier | | isProgramTrusted | mapping(bytes32 => bool) | 251 | 0 | 32 | SP1Verifier | | __gap | uint256[49] | 252 | 0 | 1568 | SP1Verifier | @@ -459,7 +459,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | SgxVerifier | | __reentry | uint8 | 201 | 0 | 1 | SgxVerifier | | __paused | uint8 | 201 | 1 | 1 | SgxVerifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | SgxVerifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | SgxVerifier | | __gap | uint256[49] | 202 | 0 | 1568 | SgxVerifier | | nextInstanceId | uint256 | 251 | 0 | 32 | SgxVerifier | | instances | mapping(uint256 => struct SgxVerifier.Instance) | 252 | 0 | 32 | SgxVerifier | @@ -480,7 +480,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | AutomataDcapV3Attestation | | __reentry | uint8 | 201 | 0 | 1 | AutomataDcapV3Attestation | | __paused | uint8 | 201 | 1 | 1 | AutomataDcapV3Attestation | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | AutomataDcapV3Attestation | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | AutomataDcapV3Attestation | | __gap | uint256[49] | 202 | 0 | 1568 | AutomataDcapV3Attestation | | sigVerifyLib | contract ISigVerifyLib | 251 | 0 | 20 | AutomataDcapV3Attestation | | pemCertLib | contract IPEMCertChainLib | 252 | 0 | 20 | AutomataDcapV3Attestation | @@ -493,90 +493,90 @@ | __gap | uint256[39] | 261 | 0 | 1248 | AutomataDcapV3Attestation | ## TaikoL1 -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|------------------------|------|--------|-------|--------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | TaikoL1 | -| _initializing | bool | 0 | 1 | 1 | TaikoL1 | -| __gap | uint256[50] | 1 | 0 | 1600 | TaikoL1 | -| _owner | address | 51 | 0 | 20 | TaikoL1 | -| __gap | uint256[49] | 52 | 0 | 1568 | TaikoL1 | -| _pendingOwner | address | 101 | 0 | 20 | TaikoL1 | -| __gap | uint256[49] | 102 | 0 | 1568 | TaikoL1 | -| addressManager | address | 151 | 0 | 20 | TaikoL1 | -| __gap | uint256[49] | 152 | 0 | 1568 | TaikoL1 | -| __reentry | uint8 | 201 | 0 | 1 | TaikoL1 | -| __paused | uint8 | 201 | 1 | 1 | TaikoL1 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | TaikoL1 | -| __gap | uint256[49] | 202 | 0 | 1568 | TaikoL1 | -| state | struct TaikoData.State | 251 | 0 | 1600 | TaikoL1 | -| __gap | uint256[50] | 301 | 0 | 1600 | TaikoL1 | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|------------------------|------|--------|-------|--------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | TaikoL1 | +| _initializing | bool | 0 | 1 | 1 | TaikoL1 | +| __gap | uint256[50] | 1 | 0 | 1600 | TaikoL1 | +| _owner | address | 51 | 0 | 20 | TaikoL1 | +| __gap | uint256[49] | 52 | 0 | 1568 | TaikoL1 | +| _pendingOwner | address | 101 | 0 | 20 | TaikoL1 | +| __gap | uint256[49] | 102 | 0 | 1568 | TaikoL1 | +| addressManager | address | 151 | 0 | 20 | TaikoL1 | +| __gap | uint256[49] | 152 | 0 | 1568 | TaikoL1 | +| __reentry | uint8 | 201 | 0 | 1 | TaikoL1 | +| __paused | uint8 | 201 | 1 | 1 | TaikoL1 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | TaikoL1 | +| __gap | uint256[49] | 202 | 0 | 1568 | TaikoL1 | +| state | struct TaikoData.State | 251 | 0 | 1600 | TaikoL1 | +| __gap | uint256[50] | 301 | 0 | 1600 | TaikoL1 | ## HeklaTaikoL1 -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|------------------------|------|--------|-------|------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | HeklaTaikoL1 | -| _initializing | bool | 0 | 1 | 1 | HeklaTaikoL1 | -| __gap | uint256[50] | 1 | 0 | 1600 | HeklaTaikoL1 | -| _owner | address | 51 | 0 | 20 | HeklaTaikoL1 | -| __gap | uint256[49] | 52 | 0 | 1568 | HeklaTaikoL1 | -| _pendingOwner | address | 101 | 0 | 20 | HeklaTaikoL1 | -| __gap | uint256[49] | 102 | 0 | 1568 | HeklaTaikoL1 | -| addressManager | address | 151 | 0 | 20 | HeklaTaikoL1 | -| __gap | uint256[49] | 152 | 0 | 1568 | HeklaTaikoL1 | -| __reentry | uint8 | 201 | 0 | 1 | HeklaTaikoL1 | -| __paused | uint8 | 201 | 1 | 1 | HeklaTaikoL1 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | HeklaTaikoL1 | -| __gap | uint256[49] | 202 | 0 | 1568 | HeklaTaikoL1 | -| state | struct TaikoData.State | 251 | 0 | 1600 | HeklaTaikoL1 | -| __gap | uint256[50] | 301 | 0 | 1600 | HeklaTaikoL1 | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|------------------------|------|--------|-------|------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | HeklaTaikoL1 | +| _initializing | bool | 0 | 1 | 1 | HeklaTaikoL1 | +| __gap | uint256[50] | 1 | 0 | 1600 | HeklaTaikoL1 | +| _owner | address | 51 | 0 | 20 | HeklaTaikoL1 | +| __gap | uint256[49] | 52 | 0 | 1568 | HeklaTaikoL1 | +| _pendingOwner | address | 101 | 0 | 20 | HeklaTaikoL1 | +| __gap | uint256[49] | 102 | 0 | 1568 | HeklaTaikoL1 | +| addressManager | address | 151 | 0 | 20 | HeklaTaikoL1 | +| __gap | uint256[49] | 152 | 0 | 1568 | HeklaTaikoL1 | +| __reentry | uint8 | 201 | 0 | 1 | HeklaTaikoL1 | +| __paused | uint8 | 201 | 1 | 1 | HeklaTaikoL1 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | HeklaTaikoL1 | +| __gap | uint256[49] | 202 | 0 | 1568 | HeklaTaikoL1 | +| state | struct TaikoData.State | 251 | 0 | 1600 | HeklaTaikoL1 | +| __gap | uint256[50] | 301 | 0 | 1600 | HeklaTaikoL1 | ## HeklaTierRouter | Name | Type | Slot | Offset | Bytes | Contract | |------|------|------|--------|-------|----------| ## MainnetBridge -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-----------------------------------------|------|--------|-------|----------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetBridge | -| _initializing | bool | 0 | 1 | 1 | MainnetBridge | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetBridge | -| _owner | address | 51 | 0 | 20 | MainnetBridge | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetBridge | -| _pendingOwner | address | 101 | 0 | 20 | MainnetBridge | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetBridge | -| addressManager | address | 151 | 0 | 20 | MainnetBridge | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetBridge | -| __reentry | uint8 | 201 | 0 | 1 | MainnetBridge | -| __paused | uint8 | 201 | 1 | 1 | MainnetBridge | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetBridge | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetBridge | -| __reserved1 | uint64 | 251 | 0 | 8 | MainnetBridge | -| nextMessageId | uint64 | 251 | 8 | 8 | MainnetBridge | -| messageStatus | mapping(bytes32 => enum IBridge.Status) | 252 | 0 | 32 | MainnetBridge | -| __ctx | struct IBridge.Context | 253 | 0 | 64 | MainnetBridge | -| __reserved2 | uint256 | 255 | 0 | 32 | MainnetBridge | -| __reserved3 | uint256 | 256 | 0 | 32 | MainnetBridge | -| __gap | uint256[44] | 257 | 0 | 1408 | MainnetBridge | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------------------|------|--------|-------|----------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetBridge | +| _initializing | bool | 0 | 1 | 1 | MainnetBridge | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetBridge | +| _owner | address | 51 | 0 | 20 | MainnetBridge | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetBridge | +| _pendingOwner | address | 101 | 0 | 20 | MainnetBridge | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetBridge | +| addressManager | address | 151 | 0 | 20 | MainnetBridge | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetBridge | +| __reentry | uint8 | 201 | 0 | 1 | MainnetBridge | +| __paused | uint8 | 201 | 1 | 1 | MainnetBridge | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetBridge | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetBridge | +| __reserved1 | uint64 | 251 | 0 | 8 | MainnetBridge | +| nextMessageId | uint64 | 251 | 8 | 8 | MainnetBridge | +| messageStatus | mapping(bytes32 => enum IBridge.Status) | 252 | 0 | 32 | MainnetBridge | +| __ctx | struct IBridge.Context | 253 | 0 | 64 | MainnetBridge | +| __reserved2 | uint256 | 255 | 0 | 32 | MainnetBridge | +| __reserved3 | uint256 | 256 | 0 | 32 | MainnetBridge | +| __gap | uint256[44] | 257 | 0 | 1408 | MainnetBridge | ## MainnetSignalService -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-----------------------------------------------|------|--------|-------|------------------------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetSignalService | -| _initializing | bool | 0 | 1 | 1 | MainnetSignalService | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetSignalService | -| _owner | address | 51 | 0 | 20 | MainnetSignalService | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetSignalService | -| _pendingOwner | address | 101 | 0 | 20 | MainnetSignalService | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetSignalService | -| addressManager | address | 151 | 0 | 20 | MainnetSignalService | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetSignalService | -| __reentry | uint8 | 201 | 0 | 1 | MainnetSignalService | -| __paused | uint8 | 201 | 1 | 1 | MainnetSignalService | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSignalService | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetSignalService | -| topBlockId | mapping(uint64 => mapping(bytes32 => uint64)) | 251 | 0 | 32 | MainnetSignalService | -| isAuthorized | mapping(address => bool) | 252 | 0 | 32 | MainnetSignalService | -| __gap | uint256[48] | 253 | 0 | 1536 | MainnetSignalService | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------------------------|------|--------|-------|------------------------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetSignalService | +| _initializing | bool | 0 | 1 | 1 | MainnetSignalService | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetSignalService | +| _owner | address | 51 | 0 | 20 | MainnetSignalService | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetSignalService | +| _pendingOwner | address | 101 | 0 | 20 | MainnetSignalService | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetSignalService | +| addressManager | address | 151 | 0 | 20 | MainnetSignalService | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetSignalService | +| __reentry | uint8 | 201 | 0 | 1 | MainnetSignalService | +| __paused | uint8 | 201 | 1 | 1 | MainnetSignalService | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSignalService | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetSignalService | +| topBlockId | mapping(uint64 => mapping(bytes32 => uint64)) | 251 | 0 | 32 | MainnetSignalService | +| isAuthorized | mapping(address => bool) | 252 | 0 | 32 | MainnetSignalService | +| __gap | uint256[48] | 253 | 0 | 1536 | MainnetSignalService | ## MainnetERC20Vault | Name | Type | Slot | Offset | Bytes | Contract | @@ -592,7 +592,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | MainnetERC20Vault | | __reentry | uint8 | 201 | 0 | 1 | MainnetERC20Vault | | __paused | uint8 | 201 | 1 | 1 | MainnetERC20Vault | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetERC20Vault | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetERC20Vault | | __gap | uint256[49] | 202 | 0 | 1568 | MainnetERC20Vault | | __gap | uint256[50] | 251 | 0 | 1600 | MainnetERC20Vault | | bridgedToCanonical | mapping(address => struct ERC20Vault.CanonicalERC20) | 301 | 0 | 32 | MainnetERC20Vault | @@ -615,7 +615,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | MainnetERC1155Vault | | __reentry | uint8 | 201 | 0 | 1 | MainnetERC1155Vault | | __paused | uint8 | 201 | 1 | 1 | MainnetERC1155Vault | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetERC1155Vault | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetERC1155Vault | | __gap | uint256[49] | 202 | 0 | 1568 | MainnetERC1155Vault | | __gap | uint256[50] | 251 | 0 | 1600 | MainnetERC1155Vault | | bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | MainnetERC1155Vault | @@ -639,7 +639,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | MainnetERC721Vault | | __reentry | uint8 | 201 | 0 | 1 | MainnetERC721Vault | | __paused | uint8 | 201 | 1 | 1 | MainnetERC721Vault | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetERC721Vault | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetERC721Vault | | __gap | uint256[49] | 202 | 0 | 1568 | MainnetERC721Vault | | __gap | uint256[50] | 251 | 0 | 1600 | MainnetERC721Vault | | bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | MainnetERC721Vault | @@ -648,23 +648,23 @@ | __gap | uint256[50] | 351 | 0 | 1600 | MainnetERC721Vault | ## MainnetSharedAddressManager -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------------------------------------------|------|--------|-------|--------------------------------------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetSharedAddressManager | -| _initializing | bool | 0 | 1 | 1 | MainnetSharedAddressManager | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetSharedAddressManager | -| _owner | address | 51 | 0 | 20 | MainnetSharedAddressManager | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetSharedAddressManager | -| _pendingOwner | address | 101 | 0 | 20 | MainnetSharedAddressManager | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetSharedAddressManager | -| addressManager | address | 151 | 0 | 20 | MainnetSharedAddressManager | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetSharedAddressManager | -| __reentry | uint8 | 201 | 0 | 1 | MainnetSharedAddressManager | -| __paused | uint8 | 201 | 1 | 1 | MainnetSharedAddressManager | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSharedAddressManager | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetSharedAddressManager | -| __addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | MainnetSharedAddressManager | -| __gap | uint256[49] | 252 | 0 | 1568 | MainnetSharedAddressManager | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------------------------------------------|------|--------|-------|--------------------------------------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetSharedAddressManager | +| _initializing | bool | 0 | 1 | 1 | MainnetSharedAddressManager | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetSharedAddressManager | +| _owner | address | 51 | 0 | 20 | MainnetSharedAddressManager | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetSharedAddressManager | +| _pendingOwner | address | 101 | 0 | 20 | MainnetSharedAddressManager | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetSharedAddressManager | +| addressManager | address | 151 | 0 | 20 | MainnetSharedAddressManager | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetSharedAddressManager | +| __reentry | uint8 | 201 | 0 | 1 | MainnetSharedAddressManager | +| __paused | uint8 | 201 | 1 | 1 | MainnetSharedAddressManager | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSharedAddressManager | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetSharedAddressManager | +| __addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | MainnetSharedAddressManager | +| __gap | uint256[49] | 252 | 0 | 1568 | MainnetSharedAddressManager | ## RollupAddressCache | Name | Type | Slot | Offset | Bytes | Contract | @@ -692,7 +692,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | MainnetSgxVerifier | | __reentry | uint8 | 201 | 0 | 1 | MainnetSgxVerifier | | __paused | uint8 | 201 | 1 | 1 | MainnetSgxVerifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSgxVerifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSgxVerifier | | __gap | uint256[49] | 202 | 0 | 1568 | MainnetSgxVerifier | | nextInstanceId | uint256 | 251 | 0 | 32 | MainnetSgxVerifier | | instances | mapping(uint256 => struct SgxVerifier.Instance) | 252 | 0 | 32 | MainnetSgxVerifier | @@ -713,86 +713,86 @@ | __gap | uint256[49] | 152 | 0 | 1568 | MainnetSP1Verifier | | __reentry | uint8 | 201 | 0 | 1 | MainnetSP1Verifier | | __paused | uint8 | 201 | 1 | 1 | MainnetSP1Verifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSP1Verifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSP1Verifier | | __gap | uint256[49] | 202 | 0 | 1568 | MainnetSP1Verifier | | isProgramTrusted | mapping(bytes32 => bool) | 251 | 0 | 32 | MainnetSP1Verifier | | __gap | uint256[49] | 252 | 0 | 1568 | MainnetSP1Verifier | ## MainnetZkAnyVerifier -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------|------|--------|-------|-----------------------------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetZkAnyVerifier | -| _initializing | bool | 0 | 1 | 1 | MainnetZkAnyVerifier | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetZkAnyVerifier | -| _owner | address | 51 | 0 | 20 | MainnetZkAnyVerifier | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetZkAnyVerifier | -| _pendingOwner | address | 101 | 0 | 20 | MainnetZkAnyVerifier | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetZkAnyVerifier | -| addressManager | address | 151 | 0 | 20 | MainnetZkAnyVerifier | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetZkAnyVerifier | -| __reentry | uint8 | 201 | 0 | 1 | MainnetZkAnyVerifier | -| __paused | uint8 | 201 | 1 | 1 | MainnetZkAnyVerifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetZkAnyVerifier | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetZkAnyVerifier | -| __gap | uint256[50] | 251 | 0 | 1600 | MainnetZkAnyVerifier | -| __gap | uint256[50] | 301 | 0 | 1600 | MainnetZkAnyVerifier | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------|------|--------|-------|-----------------------------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetZkAnyVerifier | +| _initializing | bool | 0 | 1 | 1 | MainnetZkAnyVerifier | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetZkAnyVerifier | +| _owner | address | 51 | 0 | 20 | MainnetZkAnyVerifier | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetZkAnyVerifier | +| _pendingOwner | address | 101 | 0 | 20 | MainnetZkAnyVerifier | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetZkAnyVerifier | +| addressManager | address | 151 | 0 | 20 | MainnetZkAnyVerifier | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetZkAnyVerifier | +| __reentry | uint8 | 201 | 0 | 1 | MainnetZkAnyVerifier | +| __paused | uint8 | 201 | 1 | 1 | MainnetZkAnyVerifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetZkAnyVerifier | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetZkAnyVerifier | +| __gap | uint256[50] | 251 | 0 | 1600 | MainnetZkAnyVerifier | +| __gap | uint256[50] | 301 | 0 | 1600 | MainnetZkAnyVerifier | ## MainnetRisc0Verifier -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|--------------------------|------|--------|-------|-----------------------------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetRisc0Verifier | -| _initializing | bool | 0 | 1 | 1 | MainnetRisc0Verifier | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetRisc0Verifier | -| _owner | address | 51 | 0 | 20 | MainnetRisc0Verifier | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetRisc0Verifier | -| _pendingOwner | address | 101 | 0 | 20 | MainnetRisc0Verifier | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetRisc0Verifier | -| addressManager | address | 151 | 0 | 20 | MainnetRisc0Verifier | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetRisc0Verifier | -| __reentry | uint8 | 201 | 0 | 1 | MainnetRisc0Verifier | -| __paused | uint8 | 201 | 1 | 1 | MainnetRisc0Verifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetRisc0Verifier | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetRisc0Verifier | -| isImageTrusted | mapping(bytes32 => bool) | 251 | 0 | 32 | MainnetRisc0Verifier | -| __gap | uint256[49] | 252 | 0 | 1568 | MainnetRisc0Verifier | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|--------------------------|------|--------|-------|-----------------------------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetRisc0Verifier | +| _initializing | bool | 0 | 1 | 1 | MainnetRisc0Verifier | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetRisc0Verifier | +| _owner | address | 51 | 0 | 20 | MainnetRisc0Verifier | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetRisc0Verifier | +| _pendingOwner | address | 101 | 0 | 20 | MainnetRisc0Verifier | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetRisc0Verifier | +| addressManager | address | 151 | 0 | 20 | MainnetRisc0Verifier | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetRisc0Verifier | +| __reentry | uint8 | 201 | 0 | 1 | MainnetRisc0Verifier | +| __paused | uint8 | 201 | 1 | 1 | MainnetRisc0Verifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetRisc0Verifier | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetRisc0Verifier | +| isImageTrusted | mapping(bytes32 => bool) | 251 | 0 | 32 | MainnetRisc0Verifier | +| __gap | uint256[49] | 252 | 0 | 1568 | MainnetRisc0Verifier | ## MainnetZkAndTeeVerifier -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------|------|--------|-------|-----------------------------------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetZkAndTeeVerifier | -| _initializing | bool | 0 | 1 | 1 | MainnetZkAndTeeVerifier | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetZkAndTeeVerifier | -| _owner | address | 51 | 0 | 20 | MainnetZkAndTeeVerifier | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetZkAndTeeVerifier | -| _pendingOwner | address | 101 | 0 | 20 | MainnetZkAndTeeVerifier | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetZkAndTeeVerifier | -| addressManager | address | 151 | 0 | 20 | MainnetZkAndTeeVerifier | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetZkAndTeeVerifier | -| __reentry | uint8 | 201 | 0 | 1 | MainnetZkAndTeeVerifier | -| __paused | uint8 | 201 | 1 | 1 | MainnetZkAndTeeVerifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetZkAndTeeVerifier | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetZkAndTeeVerifier | -| __gap | uint256[50] | 251 | 0 | 1600 | MainnetZkAndTeeVerifier | -| __gap | uint256[50] | 301 | 0 | 1600 | MainnetZkAndTeeVerifier | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------|------|--------|-------|-----------------------------------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetZkAndTeeVerifier | +| _initializing | bool | 0 | 1 | 1 | MainnetZkAndTeeVerifier | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetZkAndTeeVerifier | +| _owner | address | 51 | 0 | 20 | MainnetZkAndTeeVerifier | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetZkAndTeeVerifier | +| _pendingOwner | address | 101 | 0 | 20 | MainnetZkAndTeeVerifier | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetZkAndTeeVerifier | +| addressManager | address | 151 | 0 | 20 | MainnetZkAndTeeVerifier | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetZkAndTeeVerifier | +| __reentry | uint8 | 201 | 0 | 1 | MainnetZkAndTeeVerifier | +| __paused | uint8 | 201 | 1 | 1 | MainnetZkAndTeeVerifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetZkAndTeeVerifier | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetZkAndTeeVerifier | +| __gap | uint256[50] | 251 | 0 | 1600 | MainnetZkAndTeeVerifier | +| __gap | uint256[50] | 301 | 0 | 1600 | MainnetZkAndTeeVerifier | ## MainnetTeeAnyVerifier -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------|------|--------|-------|-------------------------------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetTeeAnyVerifier | -| _initializing | bool | 0 | 1 | 1 | MainnetTeeAnyVerifier | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetTeeAnyVerifier | -| _owner | address | 51 | 0 | 20 | MainnetTeeAnyVerifier | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetTeeAnyVerifier | -| _pendingOwner | address | 101 | 0 | 20 | MainnetTeeAnyVerifier | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetTeeAnyVerifier | -| addressManager | address | 151 | 0 | 20 | MainnetTeeAnyVerifier | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetTeeAnyVerifier | -| __reentry | uint8 | 201 | 0 | 1 | MainnetTeeAnyVerifier | -| __paused | uint8 | 201 | 1 | 1 | MainnetTeeAnyVerifier | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetTeeAnyVerifier | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetTeeAnyVerifier | -| __gap | uint256[50] | 251 | 0 | 1600 | MainnetTeeAnyVerifier | -| __gap | uint256[50] | 301 | 0 | 1600 | MainnetTeeAnyVerifier | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------|------|--------|-------|-------------------------------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetTeeAnyVerifier | +| _initializing | bool | 0 | 1 | 1 | MainnetTeeAnyVerifier | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetTeeAnyVerifier | +| _owner | address | 51 | 0 | 20 | MainnetTeeAnyVerifier | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetTeeAnyVerifier | +| _pendingOwner | address | 101 | 0 | 20 | MainnetTeeAnyVerifier | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetTeeAnyVerifier | +| addressManager | address | 151 | 0 | 20 | MainnetTeeAnyVerifier | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetTeeAnyVerifier | +| __reentry | uint8 | 201 | 0 | 1 | MainnetTeeAnyVerifier | +| __paused | uint8 | 201 | 1 | 1 | MainnetTeeAnyVerifier | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetTeeAnyVerifier | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetTeeAnyVerifier | +| __gap | uint256[50] | 251 | 0 | 1600 | MainnetTeeAnyVerifier | +| __gap | uint256[50] | 301 | 0 | 1600 | MainnetTeeAnyVerifier | ## MainnetGuardianProver | Name | Type | Slot | Offset | Bytes | Contract | @@ -808,7 +808,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | MainnetGuardianProver | | __reentry | uint8 | 201 | 0 | 1 | MainnetGuardianProver | | __paused | uint8 | 201 | 1 | 1 | MainnetGuardianProver | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetGuardianProver | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetGuardianProver | | __gap | uint256[49] | 202 | 0 | 1568 | MainnetGuardianProver | | guardianIds | mapping(address => uint256) | 251 | 0 | 32 | MainnetGuardianProver | | approvals | mapping(uint256 => mapping(bytes32 => uint256)) | 252 | 0 | 32 | MainnetGuardianProver | @@ -820,108 +820,108 @@ | __gap | uint256[45] | 256 | 0 | 1440 | MainnetGuardianProver | ## MainnetTaikoL1 -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|------------------------|------|--------|-------|-------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetTaikoL1 | -| _initializing | bool | 0 | 1 | 1 | MainnetTaikoL1 | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetTaikoL1 | -| _owner | address | 51 | 0 | 20 | MainnetTaikoL1 | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetTaikoL1 | -| _pendingOwner | address | 101 | 0 | 20 | MainnetTaikoL1 | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetTaikoL1 | -| addressManager | address | 151 | 0 | 20 | MainnetTaikoL1 | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetTaikoL1 | -| __reentry | uint8 | 201 | 0 | 1 | MainnetTaikoL1 | -| __paused | uint8 | 201 | 1 | 1 | MainnetTaikoL1 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetTaikoL1 | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetTaikoL1 | -| state | struct TaikoData.State | 251 | 0 | 1600 | MainnetTaikoL1 | -| __gap | uint256[50] | 301 | 0 | 1600 | MainnetTaikoL1 | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|------------------------|------|--------|-------|-------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetTaikoL1 | +| _initializing | bool | 0 | 1 | 1 | MainnetTaikoL1 | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetTaikoL1 | +| _owner | address | 51 | 0 | 20 | MainnetTaikoL1 | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetTaikoL1 | +| _pendingOwner | address | 101 | 0 | 20 | MainnetTaikoL1 | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetTaikoL1 | +| addressManager | address | 151 | 0 | 20 | MainnetTaikoL1 | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetTaikoL1 | +| __reentry | uint8 | 201 | 0 | 1 | MainnetTaikoL1 | +| __paused | uint8 | 201 | 1 | 1 | MainnetTaikoL1 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetTaikoL1 | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetTaikoL1 | +| state | struct TaikoData.State | 251 | 0 | 1600 | MainnetTaikoL1 | +| __gap | uint256[50] | 301 | 0 | 1600 | MainnetTaikoL1 | ## MainnetRollupAddressManager -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------------------------------------------|------|--------|-------|---------------------------------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetRollupAddressManager | -| _initializing | bool | 0 | 1 | 1 | MainnetRollupAddressManager | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetRollupAddressManager | -| _owner | address | 51 | 0 | 20 | MainnetRollupAddressManager | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetRollupAddressManager | -| _pendingOwner | address | 101 | 0 | 20 | MainnetRollupAddressManager | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetRollupAddressManager | -| addressManager | address | 151 | 0 | 20 | MainnetRollupAddressManager | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetRollupAddressManager | -| __reentry | uint8 | 201 | 0 | 1 | MainnetRollupAddressManager | -| __paused | uint8 | 201 | 1 | 1 | MainnetRollupAddressManager | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetRollupAddressManager | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetRollupAddressManager | -| __addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | MainnetRollupAddressManager | -| __gap | uint256[49] | 252 | 0 | 1568 | MainnetRollupAddressManager | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------------------------------------------|------|--------|-------|---------------------------------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetRollupAddressManager | +| _initializing | bool | 0 | 1 | 1 | MainnetRollupAddressManager | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetRollupAddressManager | +| _owner | address | 51 | 0 | 20 | MainnetRollupAddressManager | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetRollupAddressManager | +| _pendingOwner | address | 101 | 0 | 20 | MainnetRollupAddressManager | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetRollupAddressManager | +| addressManager | address | 151 | 0 | 20 | MainnetRollupAddressManager | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetRollupAddressManager | +| __reentry | uint8 | 201 | 0 | 1 | MainnetRollupAddressManager | +| __paused | uint8 | 201 | 1 | 1 | MainnetRollupAddressManager | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetRollupAddressManager | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetRollupAddressManager | +| __addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | MainnetRollupAddressManager | +| __gap | uint256[49] | 252 | 0 | 1568 | MainnetRollupAddressManager | ## MainnetTierRouter | Name | Type | Slot | Offset | Bytes | Contract | |------|------|------|--------|-------|----------| ## MainnetProverSet -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|--------------------------|------|--------|-------|-----------------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetProverSet | -| _initializing | bool | 0 | 1 | 1 | MainnetProverSet | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetProverSet | -| _owner | address | 51 | 0 | 20 | MainnetProverSet | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetProverSet | -| _pendingOwner | address | 101 | 0 | 20 | MainnetProverSet | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetProverSet | -| addressManager | address | 151 | 0 | 20 | MainnetProverSet | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetProverSet | -| __reentry | uint8 | 201 | 0 | 1 | MainnetProverSet | -| __paused | uint8 | 201 | 1 | 1 | MainnetProverSet | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetProverSet | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetProverSet | -| isProver | mapping(address => bool) | 251 | 0 | 32 | MainnetProverSet | -| admin | address | 252 | 0 | 20 | MainnetProverSet | -| __gap | uint256[48] | 253 | 0 | 1536 | MainnetProverSet | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|--------------------------|------|--------|-------|-----------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetProverSet | +| _initializing | bool | 0 | 1 | 1 | MainnetProverSet | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetProverSet | +| _owner | address | 51 | 0 | 20 | MainnetProverSet | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetProverSet | +| _pendingOwner | address | 101 | 0 | 20 | MainnetProverSet | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetProverSet | +| addressManager | address | 151 | 0 | 20 | MainnetProverSet | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetProverSet | +| __reentry | uint8 | 201 | 0 | 1 | MainnetProverSet | +| __paused | uint8 | 201 | 1 | 1 | MainnetProverSet | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetProverSet | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetProverSet | +| isProver | mapping(address => bool) | 251 | 0 | 32 | MainnetProverSet | +| admin | address | 252 | 0 | 20 | MainnetProverSet | +| __gap | uint256[48] | 253 | 0 | 1536 | MainnetProverSet | ## TokenUnlock -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|--------------------------|------|--------|-------|---------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | TokenUnlock | -| _initializing | bool | 0 | 1 | 1 | TokenUnlock | -| __gap | uint256[50] | 1 | 0 | 1600 | TokenUnlock | -| _owner | address | 51 | 0 | 20 | TokenUnlock | -| __gap | uint256[49] | 52 | 0 | 1568 | TokenUnlock | -| _pendingOwner | address | 101 | 0 | 20 | TokenUnlock | -| __gap | uint256[49] | 102 | 0 | 1568 | TokenUnlock | -| addressManager | address | 151 | 0 | 20 | TokenUnlock | -| __gap | uint256[49] | 152 | 0 | 1568 | TokenUnlock | -| __reentry | uint8 | 201 | 0 | 1 | TokenUnlock | -| __paused | uint8 | 201 | 1 | 1 | TokenUnlock | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | TokenUnlock | -| __gap | uint256[49] | 202 | 0 | 1568 | TokenUnlock | -| amountVested | uint256 | 251 | 0 | 32 | TokenUnlock | -| recipient | address | 252 | 0 | 20 | TokenUnlock | -| tgeTimestamp | uint64 | 252 | 20 | 8 | TokenUnlock | -| isProverSet | mapping(address => bool) | 253 | 0 | 32 | TokenUnlock | -| __gap | uint256[47] | 254 | 0 | 1504 | TokenUnlock | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|--------------------------|------|--------|-------|---------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | TokenUnlock | +| _initializing | bool | 0 | 1 | 1 | TokenUnlock | +| __gap | uint256[50] | 1 | 0 | 1600 | TokenUnlock | +| _owner | address | 51 | 0 | 20 | TokenUnlock | +| __gap | uint256[49] | 52 | 0 | 1568 | TokenUnlock | +| _pendingOwner | address | 101 | 0 | 20 | TokenUnlock | +| __gap | uint256[49] | 102 | 0 | 1568 | TokenUnlock | +| addressManager | address | 151 | 0 | 20 | TokenUnlock | +| __gap | uint256[49] | 152 | 0 | 1568 | TokenUnlock | +| __reentry | uint8 | 201 | 0 | 1 | TokenUnlock | +| __paused | uint8 | 201 | 1 | 1 | TokenUnlock | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | TokenUnlock | +| __gap | uint256[49] | 202 | 0 | 1568 | TokenUnlock | +| amountVested | uint256 | 251 | 0 | 32 | TokenUnlock | +| recipient | address | 252 | 0 | 20 | TokenUnlock | +| tgeTimestamp | uint64 | 252 | 20 | 8 | TokenUnlock | +| isProverSet | mapping(address => bool) | 253 | 0 | 32 | TokenUnlock | +| __gap | uint256[47] | 254 | 0 | 1504 | TokenUnlock | ## ProverSet -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|--------------------------|------|--------|-------|--------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | ProverSet | -| _initializing | bool | 0 | 1 | 1 | ProverSet | -| __gap | uint256[50] | 1 | 0 | 1600 | ProverSet | -| _owner | address | 51 | 0 | 20 | ProverSet | -| __gap | uint256[49] | 52 | 0 | 1568 | ProverSet | -| _pendingOwner | address | 101 | 0 | 20 | ProverSet | -| __gap | uint256[49] | 102 | 0 | 1568 | ProverSet | -| addressManager | address | 151 | 0 | 20 | ProverSet | -| __gap | uint256[49] | 152 | 0 | 1568 | ProverSet | -| __reentry | uint8 | 201 | 0 | 1 | ProverSet | -| __paused | uint8 | 201 | 1 | 1 | ProverSet | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | ProverSet | -| __gap | uint256[49] | 202 | 0 | 1568 | ProverSet | -| isProver | mapping(address => bool) | 251 | 0 | 32 | ProverSet | -| admin | address | 252 | 0 | 20 | ProverSet | -| __gap | uint256[48] | 253 | 0 | 1536 | ProverSet | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|--------------------------|------|--------|-------|--------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | ProverSet | +| _initializing | bool | 0 | 1 | 1 | ProverSet | +| __gap | uint256[50] | 1 | 0 | 1600 | ProverSet | +| _owner | address | 51 | 0 | 20 | ProverSet | +| __gap | uint256[49] | 52 | 0 | 1568 | ProverSet | +| _pendingOwner | address | 101 | 0 | 20 | ProverSet | +| __gap | uint256[49] | 102 | 0 | 1568 | ProverSet | +| addressManager | address | 151 | 0 | 20 | ProverSet | +| __gap | uint256[49] | 152 | 0 | 1568 | ProverSet | +| __reentry | uint8 | 201 | 0 | 1 | ProverSet | +| __paused | uint8 | 201 | 1 | 1 | ProverSet | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | ProverSet | +| __gap | uint256[49] | 202 | 0 | 1568 | ProverSet | +| isProver | mapping(address => bool) | 251 | 0 | 32 | ProverSet | +| admin | address | 252 | 0 | 20 | ProverSet | +| __gap | uint256[48] | 253 | 0 | 1536 | ProverSet | ## GuardianProver | Name | Type | Slot | Offset | Bytes | Contract | @@ -937,7 +937,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | GuardianProver | | __reentry | uint8 | 201 | 0 | 1 | GuardianProver | | __paused | uint8 | 201 | 1 | 1 | GuardianProver | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | GuardianProver | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | GuardianProver | | __gap | uint256[49] | 202 | 0 | 1568 | GuardianProver | | guardianIds | mapping(address => uint256) | 251 | 0 | 32 | GuardianProver | | approvals | mapping(uint256 => mapping(bytes32 => uint256)) | 252 | 0 | 32 | GuardianProver | diff --git a/packages/protocol/contract_layout_layer2.md b/packages/protocol/contract_layout_layer2.md index 4c9776da7d2..e0f97f06590 100644 --- a/packages/protocol/contract_layout_layer2.md +++ b/packages/protocol/contract_layout_layer2.md @@ -12,7 +12,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | ERC1155Vault | | __reentry | uint8 | 201 | 0 | 1 | ERC1155Vault | | __paused | uint8 | 201 | 1 | 1 | ERC1155Vault | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC1155Vault | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC1155Vault | | __gap | uint256[49] | 202 | 0 | 1568 | ERC1155Vault | | __gap | uint256[50] | 251 | 0 | 1600 | ERC1155Vault | | bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | ERC1155Vault | @@ -36,7 +36,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | ERC20Vault | | __reentry | uint8 | 201 | 0 | 1 | ERC20Vault | | __paused | uint8 | 201 | 1 | 1 | ERC20Vault | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC20Vault | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC20Vault | | __gap | uint256[49] | 202 | 0 | 1568 | ERC20Vault | | __gap | uint256[50] | 251 | 0 | 1600 | ERC20Vault | | bridgedToCanonical | mapping(address => struct ERC20Vault.CanonicalERC20) | 301 | 0 | 32 | ERC20Vault | @@ -59,7 +59,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | ERC721Vault | | __reentry | uint8 | 201 | 0 | 1 | ERC721Vault | | __paused | uint8 | 201 | 1 | 1 | ERC721Vault | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC721Vault | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC721Vault | | __gap | uint256[49] | 202 | 0 | 1568 | ERC721Vault | | __gap | uint256[50] | 251 | 0 | 1600 | ERC721Vault | | bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | ERC721Vault | @@ -81,7 +81,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | BridgedERC20 | | __reentry | uint8 | 201 | 0 | 1 | BridgedERC20 | | __paused | uint8 | 201 | 1 | 1 | BridgedERC20 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20 | | __gap | uint256[49] | 202 | 0 | 1568 | BridgedERC20 | | _balances | mapping(address => uint256) | 251 | 0 | 32 | BridgedERC20 | | _allowances | mapping(address => mapping(address => uint256)) | 252 | 0 | 32 | BridgedERC20 | @@ -110,7 +110,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | BridgedERC20V2 | | __reentry | uint8 | 201 | 0 | 1 | BridgedERC20V2 | | __paused | uint8 | 201 | 1 | 1 | BridgedERC20V2 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20V2 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20V2 | | __gap | uint256[49] | 202 | 0 | 1568 | BridgedERC20V2 | | _balances | mapping(address => uint256) | 251 | 0 | 32 | BridgedERC20V2 | | _allowances | mapping(address => mapping(address => uint256)) | 252 | 0 | 32 | BridgedERC20V2 | @@ -146,7 +146,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | BridgedERC721 | | __reentry | uint8 | 201 | 0 | 1 | BridgedERC721 | | __paused | uint8 | 201 | 1 | 1 | BridgedERC721 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC721 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC721 | | __gap | uint256[49] | 202 | 0 | 1568 | BridgedERC721 | | __gap | uint256[50] | 251 | 0 | 1600 | BridgedERC721 | | _name | string | 301 | 0 | 32 | BridgedERC721 | @@ -174,7 +174,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | BridgedERC1155 | | __reentry | uint8 | 201 | 0 | 1 | BridgedERC1155 | | __paused | uint8 | 201 | 1 | 1 | BridgedERC1155 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC1155 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC1155 | | __gap | uint256[49] | 202 | 0 | 1568 | BridgedERC1155 | | __gap | uint256[50] | 251 | 0 | 1600 | BridgedERC1155 | | _balances | mapping(uint256 => mapping(address => uint256)) | 301 | 0 | 32 | BridgedERC1155 | @@ -188,67 +188,67 @@ | __gap | uint256[46] | 355 | 0 | 1472 | BridgedERC1155 | ## Bridge -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-----------------------------------------|------|--------|-------|-------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | Bridge | -| _initializing | bool | 0 | 1 | 1 | Bridge | -| __gap | uint256[50] | 1 | 0 | 1600 | Bridge | -| _owner | address | 51 | 0 | 20 | Bridge | -| __gap | uint256[49] | 52 | 0 | 1568 | Bridge | -| _pendingOwner | address | 101 | 0 | 20 | Bridge | -| __gap | uint256[49] | 102 | 0 | 1568 | Bridge | -| addressManager | address | 151 | 0 | 20 | Bridge | -| __gap | uint256[49] | 152 | 0 | 1568 | Bridge | -| __reentry | uint8 | 201 | 0 | 1 | Bridge | -| __paused | uint8 | 201 | 1 | 1 | Bridge | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | Bridge | -| __gap | uint256[49] | 202 | 0 | 1568 | Bridge | -| __reserved1 | uint64 | 251 | 0 | 8 | Bridge | -| nextMessageId | uint64 | 251 | 8 | 8 | Bridge | -| messageStatus | mapping(bytes32 => enum IBridge.Status) | 252 | 0 | 32 | Bridge | -| __ctx | struct IBridge.Context | 253 | 0 | 64 | Bridge | -| __reserved2 | uint256 | 255 | 0 | 32 | Bridge | -| __reserved3 | uint256 | 256 | 0 | 32 | Bridge | -| __gap | uint256[44] | 257 | 0 | 1408 | Bridge | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------------------|------|--------|-------|-------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | Bridge | +| _initializing | bool | 0 | 1 | 1 | Bridge | +| __gap | uint256[50] | 1 | 0 | 1600 | Bridge | +| _owner | address | 51 | 0 | 20 | Bridge | +| __gap | uint256[49] | 52 | 0 | 1568 | Bridge | +| _pendingOwner | address | 101 | 0 | 20 | Bridge | +| __gap | uint256[49] | 102 | 0 | 1568 | Bridge | +| addressManager | address | 151 | 0 | 20 | Bridge | +| __gap | uint256[49] | 152 | 0 | 1568 | Bridge | +| __reentry | uint8 | 201 | 0 | 1 | Bridge | +| __paused | uint8 | 201 | 1 | 1 | Bridge | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | Bridge | +| __gap | uint256[49] | 202 | 0 | 1568 | Bridge | +| __reserved1 | uint64 | 251 | 0 | 8 | Bridge | +| nextMessageId | uint64 | 251 | 8 | 8 | Bridge | +| messageStatus | mapping(bytes32 => enum IBridge.Status) | 252 | 0 | 32 | Bridge | +| __ctx | struct IBridge.Context | 253 | 0 | 64 | Bridge | +| __reserved2 | uint256 | 255 | 0 | 32 | Bridge | +| __reserved3 | uint256 | 256 | 0 | 32 | Bridge | +| __gap | uint256[44] | 257 | 0 | 1408 | Bridge | ## QuotaManager -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-----------------------------------------------|------|--------|-------|-------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | QuotaManager | -| _initializing | bool | 0 | 1 | 1 | QuotaManager | -| __gap | uint256[50] | 1 | 0 | 1600 | QuotaManager | -| _owner | address | 51 | 0 | 20 | QuotaManager | -| __gap | uint256[49] | 52 | 0 | 1568 | QuotaManager | -| _pendingOwner | address | 101 | 0 | 20 | QuotaManager | -| __gap | uint256[49] | 102 | 0 | 1568 | QuotaManager | -| addressManager | address | 151 | 0 | 20 | QuotaManager | -| __gap | uint256[49] | 152 | 0 | 1568 | QuotaManager | -| __reentry | uint8 | 201 | 0 | 1 | QuotaManager | -| __paused | uint8 | 201 | 1 | 1 | QuotaManager | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | QuotaManager | -| __gap | uint256[49] | 202 | 0 | 1568 | QuotaManager | -| tokenQuota | mapping(address => struct QuotaManager.Quota) | 251 | 0 | 32 | QuotaManager | -| quotaPeriod | uint24 | 252 | 0 | 3 | QuotaManager | -| __gap | uint256[48] | 253 | 0 | 1536 | QuotaManager | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------------------------|------|--------|-------|-------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | QuotaManager | +| _initializing | bool | 0 | 1 | 1 | QuotaManager | +| __gap | uint256[50] | 1 | 0 | 1600 | QuotaManager | +| _owner | address | 51 | 0 | 20 | QuotaManager | +| __gap | uint256[49] | 52 | 0 | 1568 | QuotaManager | +| _pendingOwner | address | 101 | 0 | 20 | QuotaManager | +| __gap | uint256[49] | 102 | 0 | 1568 | QuotaManager | +| addressManager | address | 151 | 0 | 20 | QuotaManager | +| __gap | uint256[49] | 152 | 0 | 1568 | QuotaManager | +| __reentry | uint8 | 201 | 0 | 1 | QuotaManager | +| __paused | uint8 | 201 | 1 | 1 | QuotaManager | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | QuotaManager | +| __gap | uint256[49] | 202 | 0 | 1568 | QuotaManager | +| tokenQuota | mapping(address => struct QuotaManager.Quota) | 251 | 0 | 32 | QuotaManager | +| quotaPeriod | uint24 | 252 | 0 | 3 | QuotaManager | +| __gap | uint256[48] | 253 | 0 | 1536 | QuotaManager | ## AddressManager -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------------------------------------------|------|--------|-------|-----------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | AddressManager | -| _initializing | bool | 0 | 1 | 1 | AddressManager | -| __gap | uint256[50] | 1 | 0 | 1600 | AddressManager | -| _owner | address | 51 | 0 | 20 | AddressManager | -| __gap | uint256[49] | 52 | 0 | 1568 | AddressManager | -| _pendingOwner | address | 101 | 0 | 20 | AddressManager | -| __gap | uint256[49] | 102 | 0 | 1568 | AddressManager | -| addressManager | address | 151 | 0 | 20 | AddressManager | -| __gap | uint256[49] | 152 | 0 | 1568 | AddressManager | -| __reentry | uint8 | 201 | 0 | 1 | AddressManager | -| __paused | uint8 | 201 | 1 | 1 | AddressManager | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | AddressManager | -| __gap | uint256[49] | 202 | 0 | 1568 | AddressManager | -| __addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | AddressManager | -| __gap | uint256[49] | 252 | 0 | 1568 | AddressManager | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------------------------------------------|------|--------|-------|-----------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | AddressManager | +| _initializing | bool | 0 | 1 | 1 | AddressManager | +| __gap | uint256[50] | 1 | 0 | 1600 | AddressManager | +| _owner | address | 51 | 0 | 20 | AddressManager | +| __gap | uint256[49] | 52 | 0 | 1568 | AddressManager | +| _pendingOwner | address | 101 | 0 | 20 | AddressManager | +| __gap | uint256[49] | 102 | 0 | 1568 | AddressManager | +| addressManager | address | 151 | 0 | 20 | AddressManager | +| __gap | uint256[49] | 152 | 0 | 1568 | AddressManager | +| __reentry | uint8 | 201 | 0 | 1 | AddressManager | +| __paused | uint8 | 201 | 1 | 1 | AddressManager | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | AddressManager | +| __gap | uint256[49] | 202 | 0 | 1568 | AddressManager | +| __addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | AddressManager | +| __gap | uint256[49] | 252 | 0 | 1568 | AddressManager | ## AddressResolver | Name | Type | Slot | Offset | Bytes | Contract | @@ -259,41 +259,41 @@ | __gap | uint256[49] | 1 | 0 | 1568 | AddressResolver | ## EssentialContract -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------|------|--------|-------|-----------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | EssentialContract | -| _initializing | bool | 0 | 1 | 1 | EssentialContract | -| __gap | uint256[50] | 1 | 0 | 1600 | EssentialContract | -| _owner | address | 51 | 0 | 20 | EssentialContract | -| __gap | uint256[49] | 52 | 0 | 1568 | EssentialContract | -| _pendingOwner | address | 101 | 0 | 20 | EssentialContract | -| __gap | uint256[49] | 102 | 0 | 1568 | EssentialContract | -| addressManager | address | 151 | 0 | 20 | EssentialContract | -| __gap | uint256[49] | 152 | 0 | 1568 | EssentialContract | -| __reentry | uint8 | 201 | 0 | 1 | EssentialContract | -| __paused | uint8 | 201 | 1 | 1 | EssentialContract | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | EssentialContract | -| __gap | uint256[49] | 202 | 0 | 1568 | EssentialContract | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------|------|--------|-------|-----------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | EssentialContract | +| _initializing | bool | 0 | 1 | 1 | EssentialContract | +| __gap | uint256[50] | 1 | 0 | 1600 | EssentialContract | +| _owner | address | 51 | 0 | 20 | EssentialContract | +| __gap | uint256[49] | 52 | 0 | 1568 | EssentialContract | +| _pendingOwner | address | 101 | 0 | 20 | EssentialContract | +| __gap | uint256[49] | 102 | 0 | 1568 | EssentialContract | +| addressManager | address | 151 | 0 | 20 | EssentialContract | +| __gap | uint256[49] | 152 | 0 | 1568 | EssentialContract | +| __reentry | uint8 | 201 | 0 | 1 | EssentialContract | +| __paused | uint8 | 201 | 1 | 1 | EssentialContract | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | EssentialContract | +| __gap | uint256[49] | 202 | 0 | 1568 | EssentialContract | ## SignalService -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-----------------------------------------------|------|--------|-------|---------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | SignalService | -| _initializing | bool | 0 | 1 | 1 | SignalService | -| __gap | uint256[50] | 1 | 0 | 1600 | SignalService | -| _owner | address | 51 | 0 | 20 | SignalService | -| __gap | uint256[49] | 52 | 0 | 1568 | SignalService | -| _pendingOwner | address | 101 | 0 | 20 | SignalService | -| __gap | uint256[49] | 102 | 0 | 1568 | SignalService | -| addressManager | address | 151 | 0 | 20 | SignalService | -| __gap | uint256[49] | 152 | 0 | 1568 | SignalService | -| __reentry | uint8 | 201 | 0 | 1 | SignalService | -| __paused | uint8 | 201 | 1 | 1 | SignalService | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | SignalService | -| __gap | uint256[49] | 202 | 0 | 1568 | SignalService | -| topBlockId | mapping(uint64 => mapping(bytes32 => uint64)) | 251 | 0 | 32 | SignalService | -| isAuthorized | mapping(address => bool) | 252 | 0 | 32 | SignalService | -| __gap | uint256[48] | 253 | 0 | 1536 | SignalService | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------------------------|------|--------|-------|---------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | SignalService | +| _initializing | bool | 0 | 1 | 1 | SignalService | +| __gap | uint256[50] | 1 | 0 | 1600 | SignalService | +| _owner | address | 51 | 0 | 20 | SignalService | +| __gap | uint256[49] | 52 | 0 | 1568 | SignalService | +| _pendingOwner | address | 101 | 0 | 20 | SignalService | +| __gap | uint256[49] | 102 | 0 | 1568 | SignalService | +| addressManager | address | 151 | 0 | 20 | SignalService | +| __gap | uint256[49] | 152 | 0 | 1568 | SignalService | +| __reentry | uint8 | 201 | 0 | 1 | SignalService | +| __paused | uint8 | 201 | 1 | 1 | SignalService | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | SignalService | +| __gap | uint256[49] | 202 | 0 | 1568 | SignalService | +| topBlockId | mapping(uint64 => mapping(bytes32 => uint64)) | 251 | 0 | 32 | SignalService | +| isAuthorized | mapping(address => bool) | 252 | 0 | 32 | SignalService | +| __gap | uint256[48] | 253 | 0 | 1536 | SignalService | ## BridgedTaikoToken | Name | Type | Slot | Offset | Bytes | Contract | @@ -309,7 +309,7 @@ | __gap | uint256[49] | 152 | 0 | 1568 | BridgedTaikoToken | | __reentry | uint8 | 201 | 0 | 1 | BridgedTaikoToken | | __paused | uint8 | 201 | 1 | 1 | BridgedTaikoToken | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedTaikoToken | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedTaikoToken | | __gap | uint256[49] | 202 | 0 | 1568 | BridgedTaikoToken | | __slots_previously_used_by_ERC20SnapshotUpgradeable | uint256[50] | 251 | 0 | 1600 | BridgedTaikoToken | | _balances | mapping(address => uint256) | 301 | 0 | 32 | BridgedTaikoToken | @@ -333,99 +333,99 @@ | __gap | uint256[50] | 504 | 0 | 1600 | BridgedTaikoToken | ## DelegateOwner -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------|-------------|------|--------|-------|--------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | DelegateOwner | -| _initializing | bool | 0 | 1 | 1 | DelegateOwner | -| __gap | uint256[50] | 1 | 0 | 1600 | DelegateOwner | -| _owner | address | 51 | 0 | 20 | DelegateOwner | -| __gap | uint256[49] | 52 | 0 | 1568 | DelegateOwner | -| _pendingOwner | address | 101 | 0 | 20 | DelegateOwner | -| __gap | uint256[49] | 102 | 0 | 1568 | DelegateOwner | -| addressManager | address | 151 | 0 | 20 | DelegateOwner | -| __gap | uint256[49] | 152 | 0 | 1568 | DelegateOwner | -| __reentry | uint8 | 201 | 0 | 1 | DelegateOwner | -| __paused | uint8 | 201 | 1 | 1 | DelegateOwner | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | DelegateOwner | -| __gap | uint256[49] | 202 | 0 | 1568 | DelegateOwner | -| remoteChainId | uint64 | 251 | 0 | 8 | DelegateOwner | -| admin | address | 251 | 8 | 20 | DelegateOwner | -| nextTxId | uint64 | 252 | 0 | 8 | DelegateOwner | -| remoteOwner | address | 252 | 8 | 20 | DelegateOwner | -| __gap | uint256[48] | 253 | 0 | 1536 | DelegateOwner | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------|------|--------|-------|--------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | DelegateOwner | +| _initializing | bool | 0 | 1 | 1 | DelegateOwner | +| __gap | uint256[50] | 1 | 0 | 1600 | DelegateOwner | +| _owner | address | 51 | 0 | 20 | DelegateOwner | +| __gap | uint256[49] | 52 | 0 | 1568 | DelegateOwner | +| _pendingOwner | address | 101 | 0 | 20 | DelegateOwner | +| __gap | uint256[49] | 102 | 0 | 1568 | DelegateOwner | +| addressManager | address | 151 | 0 | 20 | DelegateOwner | +| __gap | uint256[49] | 152 | 0 | 1568 | DelegateOwner | +| __reentry | uint8 | 201 | 0 | 1 | DelegateOwner | +| __paused | uint8 | 201 | 1 | 1 | DelegateOwner | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | DelegateOwner | +| __gap | uint256[49] | 202 | 0 | 1568 | DelegateOwner | +| remoteChainId | uint64 | 251 | 0 | 8 | DelegateOwner | +| admin | address | 251 | 8 | 20 | DelegateOwner | +| nextTxId | uint64 | 252 | 0 | 8 | DelegateOwner | +| remoteOwner | address | 252 | 8 | 20 | DelegateOwner | +| __gap | uint256[48] | 253 | 0 | 1536 | DelegateOwner | ## TaikoL2 -| Name | Type | Slot | Offset | Bytes | Contract | -|-----------------|-----------------------------|------|--------|-------|--------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | TaikoL2 | -| _initializing | bool | 0 | 1 | 1 | TaikoL2 | -| __gap | uint256[50] | 1 | 0 | 1600 | TaikoL2 | -| _owner | address | 51 | 0 | 20 | TaikoL2 | -| __gap | uint256[49] | 52 | 0 | 1568 | TaikoL2 | -| _pendingOwner | address | 101 | 0 | 20 | TaikoL2 | -| __gap | uint256[49] | 102 | 0 | 1568 | TaikoL2 | -| addressManager | address | 151 | 0 | 20 | TaikoL2 | -| __gap | uint256[49] | 152 | 0 | 1568 | TaikoL2 | -| __reentry | uint8 | 201 | 0 | 1 | TaikoL2 | -| __paused | uint8 | 201 | 1 | 1 | TaikoL2 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | TaikoL2 | -| __gap | uint256[49] | 202 | 0 | 1568 | TaikoL2 | -| _blockhashes | mapping(uint256 => bytes32) | 251 | 0 | 32 | TaikoL2 | -| publicInputHash | bytes32 | 252 | 0 | 32 | TaikoL2 | -| parentGasExcess | uint64 | 253 | 0 | 8 | TaikoL2 | -| lastSyncedBlock | uint64 | 253 | 8 | 8 | TaikoL2 | -| parentTimestamp | uint64 | 253 | 16 | 8 | TaikoL2 | -| parentGasTarget | uint64 | 253 | 24 | 8 | TaikoL2 | -| l1ChainId | uint64 | 254 | 0 | 8 | TaikoL2 | -| __gap | uint256[46] | 255 | 0 | 1472 | TaikoL2 | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------|------|--------|-------|--------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | TaikoL2 | +| _initializing | bool | 0 | 1 | 1 | TaikoL2 | +| __gap | uint256[50] | 1 | 0 | 1600 | TaikoL2 | +| _owner | address | 51 | 0 | 20 | TaikoL2 | +| __gap | uint256[49] | 52 | 0 | 1568 | TaikoL2 | +| _pendingOwner | address | 101 | 0 | 20 | TaikoL2 | +| __gap | uint256[49] | 102 | 0 | 1568 | TaikoL2 | +| addressManager | address | 151 | 0 | 20 | TaikoL2 | +| __gap | uint256[49] | 152 | 0 | 1568 | TaikoL2 | +| __reentry | uint8 | 201 | 0 | 1 | TaikoL2 | +| __paused | uint8 | 201 | 1 | 1 | TaikoL2 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | TaikoL2 | +| __gap | uint256[49] | 202 | 0 | 1568 | TaikoL2 | +| _blockhashes | mapping(uint256 => bytes32) | 251 | 0 | 32 | TaikoL2 | +| publicInputHash | bytes32 | 252 | 0 | 32 | TaikoL2 | +| parentGasExcess | uint64 | 253 | 0 | 8 | TaikoL2 | +| lastSyncedBlock | uint64 | 253 | 8 | 8 | TaikoL2 | +| parentTimestamp | uint64 | 253 | 16 | 8 | TaikoL2 | +| parentGasTarget | uint64 | 253 | 24 | 8 | TaikoL2 | +| l1ChainId | uint64 | 254 | 0 | 8 | TaikoL2 | +| __gap | uint256[46] | 255 | 0 | 1472 | TaikoL2 | ## HeklaTaikoL2 -| Name | Type | Slot | Offset | Bytes | Contract | -|-----------------|-----------------------------|------|--------|-------|------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | HeklaTaikoL2 | -| _initializing | bool | 0 | 1 | 1 | HeklaTaikoL2 | -| __gap | uint256[50] | 1 | 0 | 1600 | HeklaTaikoL2 | -| _owner | address | 51 | 0 | 20 | HeklaTaikoL2 | -| __gap | uint256[49] | 52 | 0 | 1568 | HeklaTaikoL2 | -| _pendingOwner | address | 101 | 0 | 20 | HeklaTaikoL2 | -| __gap | uint256[49] | 102 | 0 | 1568 | HeklaTaikoL2 | -| addressManager | address | 151 | 0 | 20 | HeklaTaikoL2 | -| __gap | uint256[49] | 152 | 0 | 1568 | HeklaTaikoL2 | -| __reentry | uint8 | 201 | 0 | 1 | HeklaTaikoL2 | -| __paused | uint8 | 201 | 1 | 1 | HeklaTaikoL2 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | HeklaTaikoL2 | -| __gap | uint256[49] | 202 | 0 | 1568 | HeklaTaikoL2 | -| _blockhashes | mapping(uint256 => bytes32) | 251 | 0 | 32 | HeklaTaikoL2 | -| publicInputHash | bytes32 | 252 | 0 | 32 | HeklaTaikoL2 | -| parentGasExcess | uint64 | 253 | 0 | 8 | HeklaTaikoL2 | -| lastSyncedBlock | uint64 | 253 | 8 | 8 | HeklaTaikoL2 | -| parentTimestamp | uint64 | 253 | 16 | 8 | HeklaTaikoL2 | -| parentGasTarget | uint64 | 253 | 24 | 8 | HeklaTaikoL2 | -| l1ChainId | uint64 | 254 | 0 | 8 | HeklaTaikoL2 | -| __gap | uint256[46] | 255 | 0 | 1472 | HeklaTaikoL2 | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------|------|--------|-------|------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | HeklaTaikoL2 | +| _initializing | bool | 0 | 1 | 1 | HeklaTaikoL2 | +| __gap | uint256[50] | 1 | 0 | 1600 | HeklaTaikoL2 | +| _owner | address | 51 | 0 | 20 | HeklaTaikoL2 | +| __gap | uint256[49] | 52 | 0 | 1568 | HeklaTaikoL2 | +| _pendingOwner | address | 101 | 0 | 20 | HeklaTaikoL2 | +| __gap | uint256[49] | 102 | 0 | 1568 | HeklaTaikoL2 | +| addressManager | address | 151 | 0 | 20 | HeklaTaikoL2 | +| __gap | uint256[49] | 152 | 0 | 1568 | HeklaTaikoL2 | +| __reentry | uint8 | 201 | 0 | 1 | HeklaTaikoL2 | +| __paused | uint8 | 201 | 1 | 1 | HeklaTaikoL2 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | HeklaTaikoL2 | +| __gap | uint256[49] | 202 | 0 | 1568 | HeklaTaikoL2 | +| _blockhashes | mapping(uint256 => bytes32) | 251 | 0 | 32 | HeklaTaikoL2 | +| publicInputHash | bytes32 | 252 | 0 | 32 | HeklaTaikoL2 | +| parentGasExcess | uint64 | 253 | 0 | 8 | HeklaTaikoL2 | +| lastSyncedBlock | uint64 | 253 | 8 | 8 | HeklaTaikoL2 | +| parentTimestamp | uint64 | 253 | 16 | 8 | HeklaTaikoL2 | +| parentGasTarget | uint64 | 253 | 24 | 8 | HeklaTaikoL2 | +| l1ChainId | uint64 | 254 | 0 | 8 | HeklaTaikoL2 | +| __gap | uint256[46] | 255 | 0 | 1472 | HeklaTaikoL2 | ## MainnetTaikoL2 -| Name | Type | Slot | Offset | Bytes | Contract | -|-----------------|-----------------------------|------|--------|-------|------------------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | MainnetTaikoL2 | -| _initializing | bool | 0 | 1 | 1 | MainnetTaikoL2 | -| __gap | uint256[50] | 1 | 0 | 1600 | MainnetTaikoL2 | -| _owner | address | 51 | 0 | 20 | MainnetTaikoL2 | -| __gap | uint256[49] | 52 | 0 | 1568 | MainnetTaikoL2 | -| _pendingOwner | address | 101 | 0 | 20 | MainnetTaikoL2 | -| __gap | uint256[49] | 102 | 0 | 1568 | MainnetTaikoL2 | -| addressManager | address | 151 | 0 | 20 | MainnetTaikoL2 | -| __gap | uint256[49] | 152 | 0 | 1568 | MainnetTaikoL2 | -| __reentry | uint8 | 201 | 0 | 1 | MainnetTaikoL2 | -| __paused | uint8 | 201 | 1 | 1 | MainnetTaikoL2 | -| lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetTaikoL2 | -| __gap | uint256[49] | 202 | 0 | 1568 | MainnetTaikoL2 | -| _blockhashes | mapping(uint256 => bytes32) | 251 | 0 | 32 | MainnetTaikoL2 | -| publicInputHash | bytes32 | 252 | 0 | 32 | MainnetTaikoL2 | -| parentGasExcess | uint64 | 253 | 0 | 8 | MainnetTaikoL2 | -| lastSyncedBlock | uint64 | 253 | 8 | 8 | MainnetTaikoL2 | -| parentTimestamp | uint64 | 253 | 16 | 8 | MainnetTaikoL2 | -| parentGasTarget | uint64 | 253 | 24 | 8 | MainnetTaikoL2 | -| l1ChainId | uint64 | 254 | 0 | 8 | MainnetTaikoL2 | -| __gap | uint256[46] | 255 | 0 | 1472 | MainnetTaikoL2 | +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-----------------------------|------|--------|-------|------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | MainnetTaikoL2 | +| _initializing | bool | 0 | 1 | 1 | MainnetTaikoL2 | +| __gap | uint256[50] | 1 | 0 | 1600 | MainnetTaikoL2 | +| _owner | address | 51 | 0 | 20 | MainnetTaikoL2 | +| __gap | uint256[49] | 52 | 0 | 1568 | MainnetTaikoL2 | +| _pendingOwner | address | 101 | 0 | 20 | MainnetTaikoL2 | +| __gap | uint256[49] | 102 | 0 | 1568 | MainnetTaikoL2 | +| addressManager | address | 151 | 0 | 20 | MainnetTaikoL2 | +| __gap | uint256[49] | 152 | 0 | 1568 | MainnetTaikoL2 | +| __reentry | uint8 | 201 | 0 | 1 | MainnetTaikoL2 | +| __paused | uint8 | 201 | 1 | 1 | MainnetTaikoL2 | +| __lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetTaikoL2 | +| __gap | uint256[49] | 202 | 0 | 1568 | MainnetTaikoL2 | +| _blockhashes | mapping(uint256 => bytes32) | 251 | 0 | 32 | MainnetTaikoL2 | +| publicInputHash | bytes32 | 252 | 0 | 32 | MainnetTaikoL2 | +| parentGasExcess | uint64 | 253 | 0 | 8 | MainnetTaikoL2 | +| lastSyncedBlock | uint64 | 253 | 8 | 8 | MainnetTaikoL2 | +| parentTimestamp | uint64 | 253 | 16 | 8 | MainnetTaikoL2 | +| parentGasTarget | uint64 | 253 | 24 | 8 | MainnetTaikoL2 | +| l1ChainId | uint64 | 254 | 0 | 8 | MainnetTaikoL2 | +| __gap | uint256[46] | 255 | 0 | 1472 | MainnetTaikoL2 | diff --git a/packages/protocol/contracts/layer1/based/ITaikoL1.sol b/packages/protocol/contracts/layer1/based/ITaikoL1.sol index 1d6517ec013..9ea3977ecdd 100644 --- a/packages/protocol/contracts/layer1/based/ITaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/ITaikoL1.sol @@ -6,19 +6,6 @@ import "./TaikoData.sol"; /// @title ITaikoL1 /// @custom:security-contact security@taiko.xyz interface ITaikoL1 { - /// @notice Proposes a Taiko L2 block. - /// @param _params Block parameters, currently an encoded BlockParams object. - /// @param _txList txList data if calldata is used for DA. - /// @return meta_ The metadata of the proposed L2 block. - /// @return deposits_ The Ether deposits processed. - function proposeBlock( - bytes calldata _params, - bytes calldata _txList - ) - external - payable - returns (TaikoData.BlockMetadata memory meta_, TaikoData.EthDeposit[] memory deposits_); - /// @notice Proposes a Taiko L2 block (version 2) /// @param _params Block parameters, an encoded BlockParamsV2 object. /// @param _txList txList data if calldata is used for DA. @@ -42,9 +29,9 @@ interface ITaikoL1 { returns (TaikoData.BlockMetadataV2[] memory metaArr_); /// @notice Proves or contests a block transition. - /// @param _blockId The index of the block to prove. This is also used to - /// select the right implementation version. - /// @param _input An abi-encoded (TaikoData.BlockMetadata, TaikoData.Transition, + /// @param _blockId Index of the block to prove. This is also used to select the right + /// implementation version. + /// @param _input ABI-encoded (TaikoData.BlockMetadata, TaikoData.Transition, /// TaikoData.TierProof) tuple. function proveBlock(uint64 _blockId, bytes calldata _input) external; @@ -61,14 +48,27 @@ interface ITaikoL1 { ) external; - /// @notice Verifies up to a certain number of blocks. - /// @param _maxBlocksToVerify Max number of blocks to verify. + /// @notice Verifies up to a specified number of blocks. + /// @param _maxBlocksToVerify Maximum number of blocks to verify. function verifyBlocks(uint64 _maxBlocksToVerify) external; - /// @notice Pause block proving. - /// @param _pause True if paused. + /// @notice Pauses or unpauses block proving. + /// @param _pause True to pause, false to unpause. function pauseProving(bool _pause) external; + /// @notice Deposits Taiko token to be used as bonds. + /// @param _amount The amount of Taiko token to deposit. + function depositBond(uint256 _amount) external; + + /// @notice Withdraws Taiko tokens. + /// @param _amount Amount of Taiko tokens to withdraw. + function withdrawBond(uint256 _amount) external; + + /// @notice Gets the prover that actually proved a verified block. + /// @param _blockId Index of the block. + /// @return The prover's address. If the block is not verified yet, address(0) will be returned. + function getVerifiedBlockProver(uint64 _blockId) external view returns (address); + /// @notice Gets the details of a block. /// @param _blockId Index of the block. /// @return blk_ The block. @@ -77,7 +77,8 @@ interface ITaikoL1 { /// @notice Gets the state transition for a specific block. /// @param _blockId Index of the block. /// @param _tid The transition id. - /// @return The state transition data of the block. + /// @return The state transition data of the block. The transition's state root will be zero if + /// the block is not a sync-block. function getTransition( uint64 _blockId, uint32 _tid @@ -86,19 +87,6 @@ interface ITaikoL1 { view returns (TaikoData.TransitionState memory); - /// @notice Deposits Taiko token to be used as bonds. - /// @param _amount The amount of Taiko token to deposit. - function depositBond(uint256 _amount) external; - - /// @notice Withdraws Taiko token. - /// @param _amount The amount of Taiko token to withdraw. - function withdrawBond(uint256 _amount) external; - - /// @notice Gets the prover that actually proved a verified block. - /// @param _blockId The index of the block. - /// @return The prover's address. If the block is not verified yet, address(0) will be returned. - function getVerifiedBlockProver(uint64 _blockId) external view returns (address); - /// @notice Gets the configuration of the TaikoL1 contract. /// @return Config struct containing configuration parameters. function getConfig() external pure returns (TaikoData.Config memory); diff --git a/packages/protocol/contracts/layer1/based/LibBonds.sol b/packages/protocol/contracts/layer1/based/LibBonds.sol index f8b321ce442..1f06b0485a6 100644 --- a/packages/protocol/contracts/layer1/based/LibBonds.sol +++ b/packages/protocol/contracts/layer1/based/LibBonds.sol @@ -11,91 +11,127 @@ import "./TaikoData.sol"; /// @notice A library that offers helper functions to handle bonds. /// @custom:security-contact security@taiko.xyz library LibBonds { - /// @dev Emitted when token is credited back to a user's bond balance. - event BondCredited(address indexed user, uint256 amount); + /// @dev Emitted when tokens are deposited into a user's bond balance. + /// @param user The address of the user who deposited the tokens. + /// @param amount The amount of tokens deposited. + event BondDeposited(address indexed user, uint256 amount); - /// @dev Emitted when token is debited from a user's bond balance. - event BondDebited(address indexed user, uint256 amount); + /// @dev Emitted when tokens are withdrawn from a user's bond balance. + /// @param user The address of the user who withdrew the tokens. + /// @param amount The amount of tokens withdrawn. + event BondWithdrawn(address indexed user, uint256 amount); - /// @dev Deposits Taiko token to be used as bonds. - /// @param _state Current TaikoData.State. - /// @param _resolver Address resolver interface. - /// @param _amount The amount of token to deposit. + /// @dev Emitted when a token is credited back to a user's bond balance. + /// @param user The address of the user whose bond balance is credited. + /// @param blockId The ID of the block to credit for. + /// @param amount The amount of tokens credited. + event BondCredited(address indexed user, uint256 blockId, uint256 amount); + + /// @dev Emitted when a token is debited from a user's bond balance. + /// @param user The address of the user whose bond balance is debited. + /// @param blockId The ID of the block to debit for. + /// @param amount The amount of tokens debited. + event BondDebited(address indexed user, uint256 blockId, uint256 amount); + + /// @dev Deposits TAIKO tokens to be used as bonds. + /// @param _state The current state of TaikoData. + /// @param _resolver The address resolver interface. + /// @param _amount The amount of tokens to deposit. function depositBond( TaikoData.State storage _state, IAddressResolver _resolver, uint256 _amount ) - internal + public { + emit BondDeposited(msg.sender, _amount); _state.bondBalance[msg.sender] += _amount; _tko(_resolver).transferFrom(msg.sender, address(this), _amount); } - /// @dev Withdraws Taiko token. - /// @param _state Current TaikoData.State. - /// @param _resolver Address resolver interface. - /// @param _amount The amount of token to withdraw. + /// @dev Withdraws TAIKO tokens. + /// @param _state The current state of TaikoData. + /// @param _resolver The address resolver interface. + /// @param _amount The amount of tokens to withdraw. function withdrawBond( TaikoData.State storage _state, IAddressResolver _resolver, uint256 _amount ) - internal + public { + emit BondWithdrawn(msg.sender, _amount); _state.bondBalance[msg.sender] -= _amount; _tko(_resolver).transfer(msg.sender, _amount); } - /// @dev Debits Taiko tokens as bonds. - /// @param _state Current TaikoData.State. - /// @param _resolver Address resolver interface. - /// @param _user The user address to debit. - /// @param _amount The amount of token to debit. + /// @dev Gets a user's current TAIKO token bond balance. + /// @param _state The current state of TaikoData. + /// @param _user The address of the user. + /// @return The current token balance. + function bondBalanceOf( + TaikoData.State storage _state, + address _user + ) + public + view + returns (uint256) + { + return _state.bondBalance[_user]; + } + + /// @dev Debits TAIKO tokens as bonds. + /// @param _state The current state of TaikoData. + /// @param _resolver The address resolver interface. + /// @param _user The address of the user to debit. + /// @param _blockId The ID of the block to debit for. + /// @param _amount The amount of tokens to debit. function debitBond( TaikoData.State storage _state, IAddressResolver _resolver, address _user, + uint256 _blockId, uint256 _amount ) internal { - uint256 balance = _state.bondBalance[_user]; + if (_amount == 0) return; + uint256 balance = _state.bondBalance[_user]; if (balance >= _amount) { unchecked { _state.bondBalance[_user] = balance - _amount; } - emit BondDebited(_user, _amount); } else { + emit BondDeposited(msg.sender, _amount); _tko(_resolver).transferFrom(_user, address(this), _amount); } + emit BondDebited(_user, _blockId, _amount); } - /// @dev Credits Taiko tokens to user's bond balance. - /// @param _state Current TaikoData.State. - /// @param _user The user address to credit. - /// @param _amount The amount of token to credit. - function creditBond(TaikoData.State storage _state, address _user, uint256 _amount) internal { - _state.bondBalance[_user] += _amount; - emit BondCredited(_user, _amount); - } - - /// @dev Gets a user's current Taiko token bond balance. - /// @param _state Current TaikoData.State. - /// @param _user The user address to credit. - /// @return The current token balance. - function bondBalanceOf( + /// @dev Credits TAIKO tokens to a user's bond balance. + /// @param _state The current state of TaikoData. + /// @param _user The address of the user to credit. + /// @param _blockId The ID of the block to credit for. + /// @param _amount The amount of tokens to credit. + function creditBond( TaikoData.State storage _state, - address _user + address _user, + uint256 _blockId, + uint256 _amount ) internal - view - returns (uint256) { - return _state.bondBalance[_user]; + if (_amount == 0) return; + unchecked { + _state.bondBalance[_user] += _amount; + } + emit BondCredited(_user, _blockId, _amount); } + /// @dev Resolves the TAIKO token address using the address resolver. + /// @param _resolver The address resolver interface. + /// @return tko_ The IERC20 interface of the TAIKO token. function _tko(IAddressResolver _resolver) private view returns (IERC20) { return IERC20(_resolver.resolve(LibStrings.B_TAIKO_TOKEN, false)); } diff --git a/packages/protocol/contracts/layer1/based/LibData.sol b/packages/protocol/contracts/layer1/based/LibData.sol index 242c1417904..c6881f67a49 100644 --- a/packages/protocol/contracts/layer1/based/LibData.sol +++ b/packages/protocol/contracts/layer1/based/LibData.sol @@ -5,100 +5,33 @@ import "../verifiers/IVerifier.sol"; import "./TaikoData.sol"; /// @title LibData -/// @notice A library that offers helper functions. +/// @notice A library that offers helper functions for data conversion. /// @custom:security-contact security@taiko.xyz library LibData { - // = keccak256(abi.encode(new TaikoData.EthDeposit[](0))) - bytes32 internal constant EMPTY_ETH_DEPOSIT_HASH = - 0x569e75fc77c1a856f6daaf9e69d8a9566ca34aa47f9133711ce065a571af0cfd; - - function blockParamsV1ToV2(TaikoData.BlockParams memory _v1) - internal - pure - returns (TaikoData.BlockParamsV2 memory) - { - return TaikoData.BlockParamsV2({ - proposer: address(0), - coinbase: _v1.coinbase, - parentMetaHash: _v1.parentMetaHash, - anchorBlockId: 0, - timestamp: 0, - blobTxListOffset: 0, - blobTxListLength: 0, - blobIndex: 0 - }); - } - - function blockMetadataV2toV1(TaikoData.BlockMetadataV2 memory _v2) - internal - pure - returns (TaikoData.BlockMetadata memory) - { - return TaikoData.BlockMetadata({ - l1Hash: _v2.anchorBlockHash, - difficulty: _v2.difficulty, - blobHash: _v2.blobHash, - extraData: _v2.extraData, - depositsHash: EMPTY_ETH_DEPOSIT_HASH, - coinbase: _v2.coinbase, - id: _v2.id, - gasLimit: _v2.gasLimit, - timestamp: _v2.timestamp, - l1Height: _v2.anchorBlockId, - minTier: _v2.minTier, - blobUsed: _v2.blobUsed, - parentMetaHash: _v2.parentMetaHash, - sender: _v2.proposer - }); - } - - function blockMetadataV1toV2(TaikoData.BlockMetadata memory _v1) - internal - pure - returns (TaikoData.BlockMetadataV2 memory) - { - return TaikoData.BlockMetadataV2({ - anchorBlockHash: _v1.l1Hash, - difficulty: _v1.difficulty, - blobHash: _v1.blobHash, - extraData: _v1.extraData, - coinbase: _v1.coinbase, - id: _v1.id, - gasLimit: _v1.gasLimit, - timestamp: _v1.timestamp, - anchorBlockId: _v1.l1Height, - minTier: _v1.minTier, - blobUsed: _v1.blobUsed, - parentMetaHash: _v1.parentMetaHash, - proposer: _v1.sender, - livenessBond: 0, - proposedAt: 0, - proposedIn: 0, - blobTxListOffset: 0, - blobTxListLength: 0, - blobIndex: 0, - baseFeeConfig: LibSharedData.BaseFeeConfig(0, 0, 0, 0, 0) - }); - } - - function blockV2toV1(TaikoData.BlockV2 memory _v2) - internal + /// @dev Converts a BlockV2 struct to a Block struct. + /// @param _v2 The BlockV2 struct to convert. + /// @return The converted Block struct. + function blockV2ToV1(TaikoData.BlockV2 memory _v2) + public pure returns (TaikoData.Block memory) { return TaikoData.Block({ metaHash: _v2.metaHash, - assignedProver: _v2.assignedProver, - livenessBond: _v2.livenessBond, + assignedProver: address(0), // assigned prover is now meta.proposer. + livenessBond: 0, // liveness bond is now meta.livenessBond blockId: _v2.blockId, - proposedAt: _v2.proposedAt, - proposedIn: _v2.proposedIn, + proposedAt: 0, + proposedIn: 0, nextTransitionId: _v2.nextTransitionId, verifiedTransitionId: _v2.verifiedTransitionId }); } - function verifierContextV2toV1(IVerifier.ContextV2 memory _v2) + /// @dev Converts a ContextV2 struct to a Context struct. + /// @param _v2 The ContextV2 struct to convert. + /// @return The converted Context struct. + function verifierContextV2ToV1(IVerifier.ContextV2 memory _v2) internal pure returns (IVerifier.Context memory) diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index 857a760c1b1..27a2424fe91 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -9,7 +9,7 @@ import "./LibUtils.sol"; import "./LibVerifying.sol"; /// @title LibProposing -/// @notice A library for handling block proposals in the Taiko protocol. +/// @notice A library that offers helper functions for block proposals. /// @custom:security-contact security@taiko.xyz library LibProposing { using LibAddress for address; @@ -21,54 +21,36 @@ library LibProposing { TaikoData.BlockParamsV2 params; ITierProvider tierProvider; bytes32 parentMetaHash; - bool postFork; bool allowCustomProposer; - bytes32 extraData; } - /// @notice Emitted when a block is proposed. - /// @param blockId The ID of the proposed block. - /// @param assignedProver The address of the assigned prover. - /// @param livenessBond The liveness bond of the proposed block. - /// @param meta The metadata of the proposed block. - /// @param depositsProcessed The EthDeposit array about processed deposits in this proposed - /// block. - event BlockProposed( - uint256 indexed blockId, - address indexed assignedProver, - uint96 livenessBond, - TaikoData.BlockMetadata meta, - TaikoData.EthDeposit[] depositsProcessed - ); - - /// @notice Emitted when a block is proposed. + /// @dev Emitted when a block is proposed. /// @param blockId The ID of the proposed block. /// @param meta The metadata of the proposed block. event BlockProposedV2(uint256 indexed blockId, TaikoData.BlockMetadataV2 meta); - /// @notice Emitted when a block's txList is in the calldata. + /// @dev Emitted when a block's txList is in the calldata. /// @param blockId The ID of the proposed block. /// @param txList The txList. event CalldataTxList(uint256 indexed blockId, bytes txList); error L1_BLOB_NOT_AVAILABLE(); error L1_BLOB_NOT_FOUND(); + error L1_FORK_HEIGHT_ERROR(); error L1_INVALID_ANCHOR_BLOCK(); error L1_INVALID_CUSTOM_PROPOSER(); error L1_INVALID_PARAMS(); error L1_INVALID_PROPOSER(); error L1_INVALID_TIMESTAMP(); - error L1_LIVENESS_BOND_NOT_RECEIVED(); error L1_TOO_MANY_BLOCKS(); error L1_UNEXPECTED_PARENT(); - /// @notice Proposes multiple Taiko L2 blocks. + /// @dev Proposes multiple Taiko L2 blocks. /// @param _state The current state of the Taiko protocol. /// @param _config The configuration parameters for the Taiko protocol. /// @param _resolver The address resolver interface. /// @param _paramsArr An array of encoded data bytes containing the block parameters. /// @param _txListArr An array of transaction list bytes (if not blob). - /// @return metaV1s_ An array of metadata objects for the proposed L2 blocks (version 1). /// @return metas_ An array of metadata objects for the proposed L2 blocks (version 2). function proposeBlocks( TaikoData.State storage _state, @@ -77,22 +59,17 @@ library LibProposing { bytes[] calldata _paramsArr, bytes[] calldata _txListArr ) - public - returns ( - TaikoData.BlockMetadata[] memory metaV1s_, - TaikoData.BlockMetadataV2[] memory metas_ - ) + internal + returns (TaikoData.BlockMetadataV2[] memory metas_) { if (_paramsArr.length == 0 || _paramsArr.length != _txListArr.length) { revert L1_INVALID_PARAMS(); } - metaV1s_ = new TaikoData.BlockMetadata[](_paramsArr.length); metas_ = new TaikoData.BlockMetadataV2[](_paramsArr.length); for (uint256 i; i < _paramsArr.length; ++i) { - (metaV1s_[i], metas_[i]) = - _proposeBlock(_state, _config, _resolver, _paramsArr[i], _txListArr[i]); + metas_[i] = _proposeBlock(_state, _config, _resolver, _paramsArr[i], _txListArr[i]); } if (!_state.slotB.provingPaused) { @@ -104,13 +81,12 @@ library LibProposing { } } - /// @notice Proposes a single Taiko L2 block. + /// @dev Proposes a single Taiko L2 block. /// @param _state The current state of the Taiko protocol. /// @param _config The configuration parameters for the Taiko protocol. /// @param _resolver The address resolver interface. /// @param _params Encoded data bytes containing the block parameters. /// @param _txList Transaction list bytes (if not blob). - /// @return metaV1_ The metadata of the proposed block (version 1). /// @return meta_ The metadata of the proposed block (version 2). function proposeBlock( TaikoData.State storage _state, @@ -119,10 +95,10 @@ library LibProposing { bytes calldata _params, bytes calldata _txList ) - public - returns (TaikoData.BlockMetadata memory metaV1_, TaikoData.BlockMetadataV2 memory meta_) + internal + returns (TaikoData.BlockMetadataV2 memory meta_) { - (metaV1_, meta_) = _proposeBlock(_state, _config, _resolver, _params, _txList); + meta_ = _proposeBlock(_state, _config, _resolver, _params, _txList); if (!_state.slotB.provingPaused) { if (LibUtils.shouldVerifyBlocks(_config, meta_.id, false)) { @@ -131,6 +107,13 @@ library LibProposing { } } + /// @dev Proposes a single Taiko L2 block. + /// @param _state The current state of the Taiko protocol. + /// @param _config The configuration parameters for the Taiko protocol. + /// @param _resolver The address resolver interface. + /// @param _params Encoded data bytes containing the block parameters. + /// @param _txList Transaction list bytes (if not blob). + /// @return meta_ The metadata of the proposed block (version 2). function _proposeBlock( TaikoData.State storage _state, TaikoData.Config memory _config, @@ -139,41 +122,40 @@ library LibProposing { bytes calldata _txList ) private - returns (TaikoData.BlockMetadata memory metaV1_, TaikoData.BlockMetadataV2 memory meta_) + returns (TaikoData.BlockMetadataV2 memory meta_) { // Checks proposer access. Local memory local; local.b = _state.slotB; - local.postFork = local.b.numBlocks >= _config.ontakeForkHeight; - // It's essential to ensure that the ring buffer for proposed blocks - // still has space for at least one more block. - if (local.b.numBlocks >= local.b.lastVerifiedBlockId + _config.blockMaxProposals + 1) { - revert L1_TOO_MANY_BLOCKS(); + // It's essential to ensure that the ring buffer for proposed blocks still has space for at + // least one more block. + require(local.b.numBlocks >= _config.ontakeForkHeight, L1_FORK_HEIGHT_ERROR()); + + unchecked { + require( + local.b.numBlocks < local.b.lastVerifiedBlockId + _config.blockMaxProposals + 1, + L1_TOO_MANY_BLOCKS() + ); } - address preconfRegistry = _resolver.resolve(LibStrings.B_PRECONF_REGISTRY, true); - if (preconfRegistry != address(0)) { - if (preconfRegistry != msg.sender) revert L1_INVALID_PROPOSER(); + address preconfTaskManager = _resolver.resolve(LibStrings.B_PRECONF_TASK_MANAGER, true); + if (preconfTaskManager != address(0)) { + require(preconfTaskManager == msg.sender, L1_INVALID_PROPOSER()); local.allowCustomProposer = true; } - if (local.postFork) { - if (_params.length != 0) { - local.params = abi.decode(_params, (TaikoData.BlockParamsV2)); - } - } else { - TaikoData.BlockParams memory paramsV1 = abi.decode(_params, (TaikoData.BlockParams)); - local.params = LibData.blockParamsV1ToV2(paramsV1); - local.extraData = paramsV1.extraData; + if (_params.length != 0) { + local.params = abi.decode(_params, (TaikoData.BlockParamsV2)); } if (local.params.proposer == address(0)) { local.params.proposer = msg.sender; } else { - if (local.params.proposer != msg.sender && !local.allowCustomProposer) { - revert L1_INVALID_CUSTOM_PROPOSER(); - } + require( + local.params.proposer == msg.sender || local.allowCustomProposer, + L1_INVALID_CUSTOM_PROPOSER() + ); } if (local.params.coinbase == address(0)) { @@ -196,52 +178,48 @@ library LibProposing { parentBlk = _state.blocks[(local.b.numBlocks - 1) % _config.blockRingBufferSize]; } - if (local.postFork) { - // Verify the passed in L1 state block number. - // We only allow the L1 block to be 2 epochs old. - // The other constraint is that the L1 block number needs to be larger than or equal - // the one in the previous L2 block. - if ( - local.params.anchorBlockId + _config.maxAnchorHeightOffset < block.number // - || local.params.anchorBlockId >= block.number - || local.params.anchorBlockId < parentBlk.proposedIn - ) { - revert L1_INVALID_ANCHOR_BLOCK(); - } + // Verify the passed in L1 state block number to anchor. + require( + local.params.anchorBlockId + _config.maxAnchorHeightOffset >= block.number, + L1_INVALID_ANCHOR_BLOCK() + ); + require(local.params.anchorBlockId < block.number, L1_INVALID_ANCHOR_BLOCK()); - // Verify the passed in timestamp. - // We only allow the timestamp to be 2 epochs old. - // The other constraint is that the timestamp needs to be larger than or equal the - // one in the previous L2 block. - if ( - local.params.timestamp + _config.maxAnchorHeightOffset * SECONDS_PER_BLOCK - < block.timestamp || local.params.timestamp > block.timestamp - || local.params.timestamp < parentBlk.proposedAt - ) { - revert L1_INVALID_TIMESTAMP(); - } - } + // parentBlk.proposedIn is actually parent's params.anchorBlockId + require(local.params.anchorBlockId >= parentBlk.proposedIn, L1_INVALID_ANCHOR_BLOCK()); - // Check if parent block has the right meta hash. This is to allow the proposer to make - // sure the block builds on the expected latest chain state. + // Verify the provided timestamp to anchor. Note that local.params.anchorBlockId and + // local.params.timestamp may not correspond to the same L1 block. + require( + local.params.timestamp + _config.maxAnchorHeightOffset * SECONDS_PER_BLOCK + >= block.timestamp, + L1_INVALID_TIMESTAMP() + ); + require(local.params.timestamp <= block.timestamp, L1_INVALID_TIMESTAMP()); + + // parentBlk.proposedAt is actually parent's params.timestamp + require(local.params.timestamp >= parentBlk.proposedAt, L1_INVALID_TIMESTAMP()); + + // Check if parent block has the right meta hash. This is to allow the proposer to make sure + // the block builds on the expected latest chain state. if (local.params.parentMetaHash == 0) { local.params.parentMetaHash = parentBlk.metaHash; - } else if (local.params.parentMetaHash != parentBlk.metaHash) { - revert L1_UNEXPECTED_PARENT(); + } else { + require(local.params.parentMetaHash == parentBlk.metaHash, L1_UNEXPECTED_PARENT()); } - // Initialize metadata to compute a metaHash, which forms a part of - // the block data to be stored on-chain for future integrity checks. - // If we choose to persist all data fields in the metadata, it will - // require additional storage slots. + // Initialize metadata to compute a metaHash, which forms a part of the block data to be + // stored on-chain for future integrity checks. If we choose to persist all data fields in + // the metadata, it will require additional storage slots. meta_ = TaikoData.BlockMetadataV2({ anchorBlockHash: blockhash(local.params.anchorBlockId), difficulty: keccak256(abi.encode("TAIKO_DIFFICULTY", local.b.numBlocks)), blobHash: 0, // to be initialized below - // To make sure each L2 block can be exexucated deterministiclly by the client - // without referering to its metadata on Ethereum, we need to encode - // config.sharingPctg into the extraData. - extraData: local.postFork ? _encodeBaseFeeConfig(_config.baseFeeConfig) : local.extraData, + // Encode _config.baseFeeConfig into extraData to allow L2 block execution without + // metadata. Metadata might be unavailable until the block is proposed on-chain. In + // preconfirmation scenarios, multiple blocks may be built but not yet proposed, making + // metadata unavailable. + extraData: _encodeBaseFeeConfig(_config.baseFeeConfig), coinbase: local.params.coinbase, id: local.b.numBlocks, gasLimit: _config.blockMaxGasLimit, @@ -262,14 +240,9 @@ library LibProposing { // Update certain meta fields if (meta_.blobUsed) { - if (!LibNetwork.isDencunSupported(block.chainid)) revert L1_BLOB_NOT_AVAILABLE(); - - // Always use the first blob in this transaction. If the - // proposeBlock functions are called more than once in the same - // L1 transaction, these multiple L2 blocks will share the same - // blob. + require(LibNetwork.isDencunSupported(block.chainid), L1_BLOB_NOT_AVAILABLE()); meta_.blobHash = blobhash(local.params.blobIndex); - if (meta_.blobHash == 0) revert L1_BLOB_NOT_FOUND(); + require(meta_.blobHash != 0, L1_BLOB_NOT_FOUND()); } else { meta_.blobHash = keccak256(_txList); emit CalldataTxList(meta_.id, _txList); @@ -284,20 +257,15 @@ library LibProposing { // Use the difficulty as a random number meta_.minTier = local.tierProvider.getMinTier(meta_.proposer, uint256(meta_.difficulty)); - if (!local.postFork) { - metaV1_ = LibData.blockMetadataV2toV1(meta_); - } - // Create the block that will be stored onchain TaikoData.BlockV2 memory blk = TaikoData.BlockV2({ - metaHash: local.postFork ? keccak256(abi.encode(meta_)) : keccak256(abi.encode(metaV1_)), + metaHash: keccak256(abi.encode(meta_)), assignedProver: address(0), - livenessBond: local.postFork ? 0 : meta_.livenessBond, + livenessBond: 0, blockId: local.b.numBlocks, - proposedAt: local.postFork ? local.params.timestamp : uint64(block.timestamp), - proposedIn: local.postFork ? local.params.anchorBlockId : uint64(block.number), - // For a new block, the next transition ID is always 1, not 0. - nextTransitionId: 1, + proposedAt: local.params.timestamp, // = params.timestamp post Ontake + proposedIn: local.params.anchorBlockId, // = params.anchorBlockId post Ontake + nextTransitionId: 1, // For a new block, the next transition ID is always 1, not 0. livenessBondReturned: false, // For unverified block, its verifiedTransitionId is always 0. verifiedTransitionId: 0 @@ -311,27 +279,14 @@ library LibProposing { ++_state.slotB.numBlocks; } - LibBonds.debitBond(_state, _resolver, local.params.proposer, _config.livenessBond); + LibBonds.debitBond(_state, _resolver, local.params.proposer, meta_.id, _config.livenessBond); - // Bribe the block builder. Unlike 1559-tips, this tip is only made - // if this transaction succeeds. - if (msg.value != 0 && block.coinbase != address(0)) { - address(block.coinbase).sendEtherAndVerify(msg.value); - } - - if (local.postFork) { - emit BlockProposedV2(meta_.id, meta_); - } else { - emit BlockProposed({ - blockId: metaV1_.id, - assignedProver: local.params.proposer, - livenessBond: _config.livenessBond, - meta: metaV1_, - depositsProcessed: new TaikoData.EthDeposit[](0) - }); - } + emit BlockProposedV2(meta_.id, meta_); } + /// @dev Encodes the base fee configuration into a bytes32. + /// @param _baseFeeConfig The base fee configuration. + /// @return The encoded base fee configuration. function _encodeBaseFeeConfig(LibSharedData.BaseFeeConfig memory _baseFeeConfig) private pure diff --git a/packages/protocol/contracts/layer1/based/LibProving.sol b/packages/protocol/contracts/layer1/based/LibProving.sol index 39a50636965..c455434ae31 100644 --- a/packages/protocol/contracts/layer1/based/LibProving.sol +++ b/packages/protocol/contracts/layer1/based/LibProving.sol @@ -8,8 +8,7 @@ import "./LibUtils.sol"; import "./LibVerifying.sol"; /// @title LibProving -/// @notice A library for handling block contestation and proving in the Taiko -/// protocol. +/// @notice A library that offers helper functions for proving and contesting block transitions. /// @custom:security-contact security@taiko.xyz library LibProving { using LibMath for uint256; @@ -22,9 +21,6 @@ library LibProving { TaikoData.BlockMetadataV2 meta; TaikoData.TierProof proof; bytes32 metaHash; - address assignedProver; - bytes32 stateRoot; - uint96 livenessBond; uint64 slot; uint64 blockId; uint24 tid; @@ -32,26 +28,9 @@ library LibProving { bool isTopTier; bool inProvingWindow; bool sameTransition; - bool postFork; - uint64 proposedAt; - bool isSyncBlock; } - /// @notice Emitted when a transition is proved. - /// @param blockId The block ID. - /// @param tran The transition data. - /// @param prover The prover's address. - /// @param validityBond The validity bond amount. - /// @param tier The tier of the proof. - event TransitionProved( - uint256 indexed blockId, - TaikoData.Transition tran, - address prover, - uint96 validityBond, - uint16 tier - ); - - /// @notice Emitted when a transition is proved. + /// @dev Emitted when a transition is proved. /// @param blockId The block ID. /// @param tran The transition data. /// @param prover The prover's address. @@ -67,21 +46,7 @@ library LibProving { uint64 proposedIn ); - /// @notice Emitted when a transition is contested. - /// @param blockId The block ID. - /// @param tran The transition data. - /// @param contester The contester's address. - /// @param contestBond The contest bond amount. - /// @param tier The tier of the proof. - event TransitionContested( - uint256 indexed blockId, - TaikoData.Transition tran, - address contester, - uint96 contestBond, - uint16 tier - ); - - /// @notice Emitted when a transition is contested. + /// @dev Emitted when a transition is contested. /// @param blockId The block ID. /// @param tran The transition data. /// @param contester The contester's address. @@ -97,7 +62,7 @@ library LibProving { uint64 proposedIn ); - /// @notice Emitted when proving is paused or unpaused. + /// @dev Emitted when proving is paused or unpaused. /// @param paused The pause status. event ProvingPaused(bool paused); @@ -106,6 +71,7 @@ library LibProving { error L1_BLOCK_MISMATCH(); error L1_CANNOT_CONTEST(); error L1_DIFF_VERIFIER(); + error L1_INVALID_BLOCK_ID(); error L1_INVALID_PARAMS(); error L1_INVALID_PAUSE_STATUS(); error L1_INVALID_TIER(); @@ -113,11 +79,11 @@ library LibProving { error L1_NOT_ASSIGNED_PROVER(); error L1_PROVING_PAUSED(); - /// @notice Pauses or unpauses the proving process. + /// @dev Pauses or unpauses the proving process. /// @param _state Current TaikoData.State. /// @param _pause The pause status. - function pauseProving(TaikoData.State storage _state, bool _pause) internal { - if (_state.slotB.provingPaused == _pause) revert L1_INVALID_PAUSE_STATUS(); + function pauseProving(TaikoData.State storage _state, bool _pause) public { + require(_state.slotB.provingPaused != _pause, L1_INVALID_PAUSE_STATUS()); _state.slotB.provingPaused = _pause; if (!_pause) { @@ -130,12 +96,12 @@ library LibProving { /// @param _state Current TaikoData.State. /// @param _config Actual TaikoData.Config. /// @param _resolver Address resolver interface. - /// @param _blockIds The index of the block to prove. This is also used to - /// select the right implementation version. - /// @param _inputs An abi-encoded (TaikoData.BlockMetadata, TaikoData.Transition, + /// @param _blockIds The index of the block to prove. This is also used to select the right + /// implementation version. + /// @param _inputs A list of abi-encoded (TaikoData.BlockMetadataV2, TaikoData.Transition, /// TaikoData.TierProof) tuple. - /// @param _batchProof An abi-encoded TaikoData.TierProof that contains the batch/aggregated - /// proof for the given blocks. + /// @param _batchProof A list of abi-encoded TaikoData.TierProof that contains the + /// batch/aggregated proof for the given blocks. function proveBlocks( TaikoData.State storage _state, TaikoData.Config memory _config, @@ -144,24 +110,23 @@ library LibProving { bytes[] calldata _inputs, bytes calldata _batchProof ) - public + public // Will reach contract size limit if changed to `internal` { - if (_blockIds.length == 0 || _blockIds.length != _inputs.length) { - revert L1_INVALID_PARAMS(); - } + require(_blockIds.length != 0, L1_INVALID_PARAMS()); + require(_blockIds.length == _inputs.length, L1_INVALID_PARAMS()); TaikoData.TierProof memory batchProof; if (_batchProof.length != 0) { batchProof = abi.decode(_batchProof, (TaikoData.TierProof)); - if (batchProof.tier == 0) revert L1_INVALID_TIER(); + require(batchProof.tier != 0, L1_INVALID_TIER()); } IVerifier.ContextV2[] memory ctxs = new IVerifier.ContextV2[](_blockIds.length); bytes32 batchVerifierName; bool batchVerifierNameSet; - // This loop iterates over each block ID in the _blockIds array. - // For each block ID, it calls the _proveBlock function to get the context and verifier. + // This loop iterates over each block ID in the _blockIds array. For each block ID, it calls + // the _proveBlock function to get the context and verifier. for (uint256 i; i < _blockIds.length; ++i) { bytes32 _verifierName; (ctxs[i], _verifierName) = @@ -172,8 +137,8 @@ library LibProving { if (!batchVerifierNameSet) { batchVerifierNameSet = true; batchVerifierName = _verifierName; - } else if (batchVerifierName != _verifierName) { - revert L1_DIFF_VERIFIER(); + } else { + require(batchVerifierName == _verifierName, L1_DIFF_VERIFIER()); } } } @@ -190,9 +155,9 @@ library LibProving { /// @param _state Current TaikoData.State. /// @param _config Actual TaikoData.Config. /// @param _resolver Address resolver interface. - /// @param _blockId The index of the block to prove. This is also used to - /// select the right implementation version. - /// @param _input An abi-encoded (TaikoData.BlockMetadata, TaikoData.Transition, + /// @param _blockId The index of the block to prove. This is also used to select the right + /// implementation version. + /// @param _input An abi-encoded (TaikoData.BlockMetadataV2, TaikoData.Transition, /// TaikoData.TierProof) tuple. function proveBlock( TaikoData.State storage _state, @@ -201,12 +166,24 @@ library LibProving { uint64 _blockId, bytes calldata _input ) - public + public // Will reach contract size limit if changed to `internal` { TaikoData.TierProof memory noBatchProof; _proveBlock(_state, _config, _resolver, _blockId, _input, noBatchProof); } + /// @dev Proves or contests a single Taiko L2 block. + /// @param _state Current TaikoData.State. + /// @param _config Actual TaikoData.Config. + /// @param _resolver Address resolver interface. + /// @param _blockId The index of the block to prove. This is also used to select the right + /// implementation version. + /// @param _input An abi-encoded (TaikoData.BlockMetadataV2, TaikoData.Transition, + /// TaikoData.TierProof) tuple. + /// @param _batchProof An abi-encoded TaikoData.TierProof that contains the batch/aggregated + /// proof for the given blocks. + /// @return ctx_ The context of the verifier. + /// @return verifierName_ The name of the verifier. function _proveBlock( TaikoData.State storage _state, TaikoData.Config memory _config, @@ -221,93 +198,55 @@ library LibProving { Local memory local; local.b = _state.slotB; local.blockId = _blockId; - local.postFork = _blockId >= _config.ontakeForkHeight; - if (local.postFork) { - if (_batchProof.tier == 0) { - // No batch proof is available, each transition is proving using a separate proof. - (local.meta, ctx_.tran, local.proof) = abi.decode( - _input, (TaikoData.BlockMetadataV2, TaikoData.Transition, TaikoData.TierProof) - ); - } else { - // All transitions are proving using the batch proof. - (local.meta, ctx_.tran) = - abi.decode(_input, (TaikoData.BlockMetadataV2, TaikoData.Transition)); - local.proof = _batchProof; - } - } else { - TaikoData.BlockMetadata memory metaV1; - (metaV1, ctx_.tran, local.proof) = abi.decode( - _input, (TaikoData.BlockMetadata, TaikoData.Transition, TaikoData.TierProof) + if (_batchProof.tier == 0) { + // No batch proof is available, each transition is proving using a separate proof. + (local.meta, ctx_.tran, local.proof) = abi.decode( + _input, (TaikoData.BlockMetadataV2, TaikoData.Transition, TaikoData.TierProof) ); - local.meta = LibData.blockMetadataV1toV2(metaV1); + } else { + // All transitions are proving using the batch proof. + (local.meta, ctx_.tran) = + abi.decode(_input, (TaikoData.BlockMetadataV2, TaikoData.Transition)); + local.proof = _batchProof; } - if (_blockId != local.meta.id) revert LibUtils.L1_INVALID_BLOCK_ID(); - - // Make sure parentHash is not zero - // To contest an existing transition, simply use any non-zero value as - // the blockHash and stateRoot. - if (ctx_.tran.parentHash == 0 || ctx_.tran.blockHash == 0 || ctx_.tran.stateRoot == 0) { - revert L1_INVALID_TRANSITION(); - } + require(ctx_.tran.parentHash != 0, L1_INVALID_TRANSITION()); + require(ctx_.tran.blockHash != 0, L1_INVALID_TRANSITION()); + require(ctx_.tran.stateRoot != 0, L1_INVALID_TRANSITION()); // Check that the block has been proposed but has not yet been verified. - if (local.meta.id <= local.b.lastVerifiedBlockId || local.meta.id >= local.b.numBlocks) { - revert LibUtils.L1_INVALID_BLOCK_ID(); - } + require(_blockId == local.meta.id, L1_INVALID_BLOCK_ID()); + require(local.meta.id > local.b.lastVerifiedBlockId, L1_INVALID_BLOCK_ID()); + require(local.meta.id < local.b.numBlocks, L1_INVALID_BLOCK_ID()); local.slot = local.meta.id % _config.blockRingBufferSize; TaikoData.BlockV2 storage blk = _state.blocks[local.slot]; - local.proposedAt = local.postFork ? local.meta.proposedAt : blk.proposedAt; - - local.isSyncBlock = - LibUtils.shouldSyncStateRoot(_config.stateRootSyncInternal, local.blockId); - if (local.isSyncBlock) { - local.stateRoot = ctx_.tran.stateRoot; - } - - local.assignedProver = blk.assignedProver; - if (local.assignedProver == address(0)) { - local.assignedProver = local.meta.proposer; - } - - if (!blk.livenessBondReturned) { - local.livenessBond = - local.meta.livenessBond == 0 ? blk.livenessBond : local.meta.livenessBond; - } local.metaHash = blk.metaHash; - // Check the integrity of the block data. It's worth noting that in - // theory, this check may be skipped, but it's included for added - // caution. - { - bytes32 metaHash = local.postFork - ? keccak256(abi.encode(local.meta)) - : keccak256(abi.encode(LibData.blockMetadataV2toV1(local.meta))); - - if (local.metaHash != metaHash) revert L1_BLOCK_MISMATCH(); - } + // Check the integrity of the block data. It's worth noting that in theory, this check may + // be skipped, but it's included for added caution. + require(local.metaHash == keccak256(abi.encode(local.meta)), L1_BLOCK_MISMATCH()); - // Each transition is uniquely identified by the parentHash, with the - // blockHash and stateRoot open for later updates as higher-tier proofs - // become available. In cases where a transition with the specified - // parentHash does not exist, the transition ID (tid) will be set to 0. + // Each transition is uniquely identified by the parentHash, with the blockHash and + // stateRoot open for later updates as higher-tier proofs become available. In cases where a + // transition with the specified parentHash does not exist, a new transition will be + // created. TaikoData.TransitionState memory ts; (local.tid, ts) = _fetchOrCreateTransition(_state, blk, ctx_.tran, local); - // The new proof must meet or exceed the minimum tier required by the - // block or the previous proof; it cannot be on a lower tier. - if ( - local.proof.tier == 0 || local.proof.tier < local.meta.minTier - || local.proof.tier < ts.tier - ) { - revert L1_INVALID_TIER(); - } + // Reset a deprecated field. + ts.__reserved1 = 0; - // Retrieve the tier configurations. If the tier is not supported, the - // subsequent action will result in a revert. + // The new proof must meet or exceed the minimum tier required by the block or the previous + // proof; it cannot be on a lower tier. + require(local.proof.tier != 0, L1_INVALID_TIER()); + require(local.proof.tier >= local.meta.minTier, L1_INVALID_TIER()); + require(local.proof.tier >= ts.tier, L1_INVALID_TIER()); + + // Retrieve the tier configurations. If the tier is not supported, the subsequent action + // will result in a revert. { ITierRouter tierRouter = ITierRouter(_resolver.resolve(LibStrings.B_TIER_ROUTER, false)); ITierProvider tierProvider = ITierProvider(tierRouter.getProvider(local.blockId)); @@ -323,29 +262,22 @@ library LibProving { _windowMinutes: local.minTier.provingWindow }); - // Checks if only the assigned prover is permissioned to prove the block. - // The assigned prover is granted exclusive permission to prove only the first - // transition. + // Checks if only the assigned prover is permissioned to prove the block. The assigned + // prover is granted exclusive permission to prove only the first transition. if ( !local.isTopTier && ts.contester == address(0) && local.tid == 1 && ts.tier == 0 && local.inProvingWindow ) { - if (msg.sender != local.assignedProver) revert L1_NOT_ASSIGNED_PROVER(); + require(msg.sender == local.meta.proposer, L1_NOT_ASSIGNED_PROVER()); } - // We must verify the proof, and any failure in proof verification will - // result in a revert. - // - // It's crucial to emphasize that the proof can be assessed in two - // potential modes: "proving mode" and "contesting mode." However, the - // precise verification logic is defined within each tier's IVerifier - // contract implementation. We simply specify to the verifier contract - // which mode it should utilize - if the new tier is higher than the - // previous tier, we employ the proving mode; otherwise, we employ the - // contesting mode (the new tier cannot be lower than the previous tier, - // this has been checked above). - // - // It's obvious that proof verification is entirely decoupled from - // Taiko's core protocol. + // We must verify the proof, and any failure in proof verification will result in a revert. + // It's crucial to emphasize that the proof can be assessed in two potential modes: "proving + // mode" and "contesting mode." However, the precise verification logic is defined within + // each tier's IVerifier contract implementation. We simply specify to the verifier contract + // which mode it should utilize - if the new tier is higher than the previous tier, we + // employ the proving mode; otherwise, we employ the contesting mode (the new tier cannot be + // lower than the previous tier, this has been checked above). It's obvious that proof + // verification is entirely decoupled from Taiko's core protocol. if (local.tier.verifierName != "") { ctx_ = IVerifier.ContextV2({ metaHash: local.metaHash, @@ -364,14 +296,20 @@ library LibProving { if (_batchProof.tier == 0) { // In the case of per-transition proof, we verify the proof. IVerifier(_resolver.resolve(local.tier.verifierName, false)).verifyProof( - LibData.verifierContextV2toV1(ctx_), ctx_.tran, local.proof + LibData.verifierContextV2ToV1(ctx_), ctx_.tran, local.proof ); } } - local.sameTransition = local.isSyncBlock - ? ctx_.tran.blockHash == ts.blockHash && local.stateRoot == ts.stateRoot - : ctx_.tran.blockHash == ts.blockHash; + if (LibUtils.isSyncBlock(_config.stateRootSyncInternal, local.blockId)) { + local.sameTransition = + ctx_.tran.blockHash == ts.blockHash && ctx_.tran.stateRoot == ts.stateRoot; + } else { + local.sameTransition = ctx_.tran.blockHash == ts.blockHash; + + // For non sync-block, we set the stateRoot to 0 before emitting it in events + ctx_.tran.stateRoot = 0; + } if (local.proof.tier > ts.tier) { // Handles the case when an incoming tier is higher than the current transition's tier. @@ -379,28 +317,18 @@ library LibProving { // (L1_ALREADY_PROVED). _overrideWithHigherProof(_state, _resolver, blk, ts, ctx_.tran, local.proof, local); - if (local.postFork) { - emit TransitionProvedV2({ - blockId: local.blockId, - tran: ctx_.tran, - prover: msg.sender, - validityBond: local.tier.validityBond, - tier: local.proof.tier, - proposedIn: local.meta.proposedIn - }); - } else { - emit TransitionProved({ - blockId: local.blockId, - tran: ctx_.tran, - prover: msg.sender, - validityBond: local.tier.validityBond, - tier: local.proof.tier - }); - } + emit TransitionProvedV2({ + blockId: local.blockId, + tran: ctx_.tran, + prover: msg.sender, + validityBond: local.tier.validityBond, + tier: local.proof.tier, + proposedIn: local.meta.proposedIn + }); } else { // New transition and old transition on the same tier - and if this transaction tries to // prove the same, it reverts - if (local.sameTransition) revert L1_ALREADY_PROVED(); + require(!local.sameTransition, L1_ALREADY_PROVED()); if (local.isTopTier) { // The top tier prover re-proves. @@ -409,71 +337,48 @@ library LibProving { ts.prover = msg.sender; ts.blockHash = ctx_.tran.blockHash; - ts.stateRoot = local.stateRoot; - - if (local.postFork) { - emit TransitionProvedV2({ - blockId: local.blockId, - tran: ctx_.tran, - prover: msg.sender, - validityBond: 0, - tier: local.proof.tier, - proposedIn: local.meta.proposedIn - }); - } else { - emit TransitionProved({ - blockId: local.blockId, - tran: ctx_.tran, - prover: msg.sender, - validityBond: 0, - tier: local.proof.tier - }); - } + ts.stateRoot = ctx_.tran.stateRoot; + + emit TransitionProvedV2({ + blockId: local.blockId, + tran: ctx_.tran, + prover: msg.sender, + validityBond: 0, + tier: local.proof.tier, + proposedIn: local.meta.proposedIn + }); } else { // Contesting but not on the highest tier - if (ts.contester != address(0)) revert L1_ALREADY_CONTESTED(); + require(ts.contester == address(0), L1_ALREADY_CONTESTED()); // Making it a non-sliding window, relative when ts.timestamp was registered (or to // lastUnpaused if that one is bigger) - if ( - LibUtils.isPostDeadline( + require( + !LibUtils.isPostDeadline( ts.timestamp, local.b.lastUnpausedAt, local.tier.cooldownWindow - ) - ) { - revert L1_CANNOT_CONTEST(); - } + ), + L1_CANNOT_CONTEST() + ); - // _checkIfContestable(/*_state,*/ tier.cooldownWindow, ts.timestamp); // Burn the contest bond from the prover. - LibBonds.debitBond(_state, _resolver, msg.sender, local.tier.contestBond); - - // We retain the contest bond within the transition, just in - // case this configuration is altered to a different value - // before the contest is resolved. - // - // It's worth noting that the previous value of ts.contestBond - // doesn't have any significance. + LibBonds.debitBond( + _state, _resolver, msg.sender, local.blockId, local.tier.contestBond + ); + + // We retain the contest bond within the transition, just in case this configuration + // is altered to a different value before the contest is resolved. It's worth noting + // that the previous value of ts.contestBond doesn't have any significance. ts.contestBond = local.tier.contestBond; ts.contester = msg.sender; - if (local.postFork) { - emit TransitionContestedV2({ - blockId: local.blockId, - tran: ctx_.tran, - contester: msg.sender, - contestBond: local.tier.contestBond, - tier: local.proof.tier, - proposedIn: local.meta.proposedIn - }); - } else { - emit TransitionContested({ - blockId: local.blockId, - tran: ctx_.tran, - contester: msg.sender, - contestBond: local.tier.contestBond, - tier: local.proof.tier - }); - } + emit TransitionContestedV2({ + blockId: local.blockId, + tran: ctx_.tran, + contester: msg.sender, + contestBond: local.tier.contestBond, + tier: local.proof.tier, + proposedIn: local.meta.proposedIn + }); } } @@ -487,7 +392,13 @@ library LibProving { } } - /// @dev Handle the transition initialization logic + /// @dev Handle the transition initialization logic. + /// @param _state Current TaikoData.State. + /// @param _blk Current TaikoData.BlockV2. + /// @param _tran Current TaikoData.Transition. + /// @param _local Current Local struct. + /// @return tid_ The transition ID. + /// @return ts_ The transition state. function _fetchOrCreateTransition( TaikoData.State storage _state, TaikoData.BlockV2 storage _blk, @@ -500,50 +411,41 @@ library LibProving { tid_ = LibUtils.getTransitionId(_state, _blk, _local.slot, _tran.parentHash); if (tid_ == 0) { - // In cases where a transition with the provided parentHash is not - // found, we must essentially "create" one and set it to its initial - // state. This initial state can be viewed as a special transition - // on tier-0. - // - // Subsequently, we transform this tier-0 transition into a - // non-zero-tier transition with a proof. This approach ensures that - // the same logic is applicable for both 0-to-non-zero transition - // updates and non-zero-to-non-zero transition updates. + // In cases where a transition with the provided parentHash is not found, we must + // essentially "create" one and set it to its initial state. This initial state can be + // viewed as a special transition on tier-0. Subsequently, we transform this tier-0 + // transition into a non-zero-tier transition with a proof. This approach ensures that + // the same logic is applicable for both 0-to-non-zero transition updates and + // non-zero-to-non-zero transition updates. unchecked { - // Unchecked is safe: Not realistic 2**32 different fork choice - // per block will be proven and none of them is valid + // Unchecked is safe: Not realistic 2**32 different fork choice per block will be + // proven and none of them is valid tid_ = _blk.nextTransitionId++; } - // Keep in mind that state.transitions are also reusable storage - // slots, so it's necessary to reinitialize all transition fields - // below. - ts_.timestamp = _local.proposedAt; + // Keep in mind that state.transitions are also reusable storage slots, so it's + // necessary to reinitialize all transition fields below. + ts_.timestamp = _local.meta.proposedAt; if (tid_ == 1) { - // This approach serves as a cost-saving technique for the - // majority of blocks, where the first transition is expected to - // be the correct one. Writing to `transitions` is more economical - // since it resides in the ring buffer, whereas writing to + // This approach serves as a cost-saving technique for the majority of blocks, where + // the first transition is expected to be the correct one. Writing to `transitions` + // is more economical since it resides in the ring buffer, whereas writing to // `transitionIds` is not as cost-effective. ts_.key = _tran.parentHash; - // In the case of this first transition, the block's assigned - // prover has the privilege to re-prove it, but only when the - // assigned prover matches the previous prover. To ensure this, - // we establish the transition's prover as the block's assigned - // prover. Consequently, when we carry out a 0-to-non-zero - // transition update, the previous prover will consistently be - // the block's assigned prover. - // - // While alternative implementations are possible, introducing - // such changes would require additional if-else logic. - ts_.prover = _local.assignedProver; + // In the case of this first transition, the block's assigned prover has the + // privilege to re-prove it, but only when the assigned prover matches the previous + // prover. To ensure this, we establish the transition's prover as the block's + // assigned prover. Consequently, when we carry out a 0-to-non-zero transition + // update, the previous prover will consistently be the block's assigned prover. + // While alternative implementations are possible, introducing such changes would + // require additional if-else logic. + ts_.prover = _local.meta.proposer; } else { - // Furthermore, we index the transition for future retrieval. - // It's worth emphasizing that this mapping for indexing is not - // reusable. However, given that the majority of blocks will - // only possess one transition — the correct one — we don't need + // Furthermore, we index the transition for future retrieval. It's worth emphasizing + // that this mapping for indexing is not reusable. However, given that the majority + // of blocks will only possess one transition — the correct one — we don't need // to be concerned about the cost in this case. // There is no need to initialize ts.key here because it's only used when tid == 1 @@ -556,16 +458,14 @@ library LibProving { } /// @dev Handles what happens when either the first transition is being proven or there is a - /// higher tier proof incoming - /// - /// Assume Alice is the initial prover, Bob is the contester, and Cindy is the subsequent - /// prover. The validity bond `V` is set at 100, and the contestation bond `C` at 500. If Bob - /// successfully contests, he receives a reward of 65.625, calculated as 3/4 of 7/8 of 100. Cindy - /// receives 21.875, which is 1/4 of 7/8 of 100, while the protocol retains 12.5 as friction. - /// Bob's Return on Investment (ROI) is 13.125%, calculated from 65.625 divided by 500. - // To establish the expected ROI `r` for valid contestations, where the contestation bond `C` to - // validity bond `V` ratio is `C/V = 21/(32*r)`, and if `r` set at 10%, the C/V ratio will be - // 6.5625. + /// higher tier proof incoming. + /// @param _state Current TaikoData.State. + /// @param _resolver Address resolver interface. + /// @param _blk Current TaikoData.BlockV2. + /// @param _ts Current TaikoData.TransitionState. + /// @param _tran Current TaikoData.Transition. + /// @param _proof Current TaikoData.TierProof. + /// @param _local Current Local struct. function _overrideWithHigherProof( TaikoData.State storage _state, IAddressResolver _resolver, @@ -586,41 +486,41 @@ library LibProving { reward = _rewardAfterFriction(_ts.contestBond); // We return the validity bond back, but the original prover doesn't get any reward. - LibBonds.creditBond(_state, _ts.prover, _ts.validityBond); + LibBonds.creditBond(_state, _ts.prover, _local.blockId, _ts.validityBond); } else { // The contested transition is proven to be invalid, contester wins the game. // Contester gets 3/4 of reward, the new prover gets 1/4. reward = _rewardAfterFriction(_ts.validityBond) >> 2; unchecked { - LibBonds.creditBond(_state, _ts.contester, _ts.contestBond + reward * 3); + LibBonds.creditBond( + _state, _ts.contester, _local.blockId, _ts.contestBond + reward * 3 + ); } } } else { - if (_local.sameTransition) revert L1_ALREADY_PROVED(); + require(!_local.sameTransition, L1_ALREADY_PROVED()); - // The code below will be executed if - // - 1) the transition is proved for the fist time, or - // - 2) the transition is contested. + // The code below will be executed if 1) the transition is proved for the first time + // or 2) the transition is contested. reward = _rewardAfterFriction(_ts.validityBond); - if (_local.livenessBond != 0) { - // After the first proof, the block's liveness bond will always be reset to 0. - // This means liveness bond will be handled only once for any given block. - _blk.livenessBond = 0; + if (!_blk.livenessBondReturned) { _blk.livenessBondReturned = true; if (_returnLivenessBond(_local, _proof.data)) { - if (_local.assignedProver == msg.sender) { + if (_local.meta.proposer == msg.sender) { unchecked { - reward += _local.livenessBond; + reward += _local.meta.livenessBond; } } else { - LibBonds.creditBond(_state, _local.assignedProver, _local.livenessBond); + LibBonds.creditBond( + _state, _local.meta.proposer, _local.blockId, _local.meta.livenessBond + ); } } else { // Reward a majority of liveness bond to the actual prover unchecked { - reward += _rewardAfterFriction(_local.livenessBond); + reward += _rewardAfterFriction(_local.meta.livenessBond); } } } @@ -628,9 +528,13 @@ library LibProving { unchecked { if (reward > _local.tier.validityBond) { - LibBonds.creditBond(_state, msg.sender, reward - _local.tier.validityBond); + LibBonds.creditBond( + _state, msg.sender, _local.blockId, reward - _local.tier.validityBond + ); } else if (reward < _local.tier.validityBond) { - LibBonds.debitBond(_state, _resolver, msg.sender, _local.tier.validityBond - reward); + LibBonds.debitBond( + _state, _resolver, msg.sender, _local.blockId, _local.tier.validityBond - reward + ); } } @@ -641,16 +545,21 @@ library LibProving { if (!_local.sameTransition) { _ts.blockHash = _tran.blockHash; - _ts.stateRoot = _local.stateRoot; + _ts.stateRoot = _tran.stateRoot; } } /// @dev Returns the reward after applying 12.5% friction. + /// @param _amount The amount to apply friction to. + /// @return The reward after applying friction. function _rewardAfterFriction(uint256 _amount) private pure returns (uint256) { return (_amount * 7) >> 3; } /// @dev Returns if the liveness bond shall be returned. + /// @param _local Current Local struct. + /// @param _proofData The proof data. + /// @return True if the liveness bond shall be returned, false otherwise. function _returnLivenessBond( Local memory _local, bytes memory _proofData diff --git a/packages/protocol/contracts/layer1/based/LibUtils.sol b/packages/protocol/contracts/layer1/based/LibUtils.sol index 6f132186381..535f07cedb5 100644 --- a/packages/protocol/contracts/layer1/based/LibUtils.sol +++ b/packages/protocol/contracts/layer1/based/LibUtils.sol @@ -11,54 +11,33 @@ import "../tiers/ITierRouter.sol"; import "./TaikoData.sol"; /// @title LibUtils -/// @notice A library that offers helper functions. +/// @notice A library that offers utility helper functions. /// @custom:security-contact security@taiko.xyz library LibUtils { using LibMath for uint256; - /// @dev Emitted when a block is verified. - /// @param blockId The ID of the verified block. - /// @param prover The prover whose transition is used for verifying the - /// block. - /// @param blockHash The hash of the verified block. - /// @param stateRoot Deprecated and is always zero. - /// @param tier The tier ID of the proof. - event BlockVerified( - uint256 indexed blockId, - address indexed prover, - bytes32 blockHash, - bytes32 stateRoot, - uint16 tier - ); + uint256 internal constant SECONDS_IN_MINUTE = 60; /// @dev Emitted when a block is verified. /// @param blockId The ID of the verified block. - /// @param prover The prover whose transition is used for verifying the - /// block. + /// @param prover The prover whose transition is used for verifying the block. /// @param blockHash The hash of the verified block. /// @param tier The tier ID of the proof. event BlockVerifiedV2( uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier ); - error L1_BLOCK_MISMATCH(); error L1_INVALID_BLOCK_ID(); error L1_INVALID_PARAMS(); error L1_INVALID_GENESIS_HASH(); error L1_TRANSITION_NOT_FOUND(); error L1_UNEXPECTED_TRANSITION_ID(); - /// @notice Initializes the Taiko protocol state. + /// @dev Initializes the Taiko protocol state. /// @param _state The state to initialize. /// @param _genesisBlockHash The block hash of the genesis block. - function init( - TaikoData.State storage _state, - TaikoData.Config memory _config, - bytes32 _genesisBlockHash - ) - internal - { - if (_genesisBlockHash == 0) revert L1_INVALID_GENESIS_HASH(); + function init(TaikoData.State storage _state, bytes32 _genesisBlockHash) public { + require(_genesisBlockHash != 0, L1_INVALID_GENESIS_HASH()); // Init state _state.slotA.genesisHeight = uint64(block.number); _state.slotA.genesisTimestamp = uint64(block.timestamp); @@ -68,6 +47,7 @@ library LibUtils { TaikoData.BlockV2 storage blk = _state.blocks[0]; blk.nextTransitionId = 2; blk.proposedAt = uint64(block.timestamp); + blk.proposedIn = uint64(block.number); blk.verifiedTransitionId = 1; blk.metaHash = bytes32(uint256(1)); // Give the genesis metahash a non-zero value. @@ -77,42 +57,12 @@ library LibUtils { ts.prover = address(0); ts.timestamp = uint64(block.timestamp); - if (_config.ontakeForkHeight == 0) { - emit BlockVerifiedV2({ - blockId: 0, - prover: address(0), - blockHash: _genesisBlockHash, - tier: 0 - }); - } else { - emit BlockVerified({ - blockId: 0, - prover: address(0), - blockHash: _genesisBlockHash, - stateRoot: 0, - tier: 0 - }); - } - } - - /// @dev Retrieves a block based on its ID. - /// @param _state Current TaikoData.State. - /// @param _config Actual TaikoData.Config. - /// @param _blockId Id of the block. - /// @return blk_ The block storage pointer. - /// @return slot_ The slot value. - function getBlock( - TaikoData.State storage _state, - TaikoData.Config memory _config, - uint64 _blockId - ) - internal - view - returns (TaikoData.BlockV2 storage blk_, uint64 slot_) - { - slot_ = _blockId % _config.blockRingBufferSize; - blk_ = _state.blocks[slot_]; - if (blk_.blockId != _blockId) revert L1_INVALID_BLOCK_ID(); + emit BlockVerifiedV2({ + blockId: 0, + prover: address(0), + blockHash: _genesisBlockHash, + tier: 0 + }); } /// @dev Retrieves a block's block hash and state root. @@ -121,12 +71,13 @@ library LibUtils { /// @param _blockId Id of the block. /// @return blockHash_ The block's block hash. /// @return stateRoot_ The block's storage root. + /// @return verifiedAt_ The timestamp when the block was proven at. function getBlockInfo( TaikoData.State storage _state, TaikoData.Config memory _config, uint64 _blockId ) - internal + public view returns (bytes32 blockHash_, bytes32 stateRoot_, uint64 verifiedAt_) { @@ -142,87 +93,111 @@ library LibUtils { } } - /// @notice This function will revert if the transition is not found. - /// @dev Retrieves the transition with a given parentHash. + /// @dev Gets the state transitions for a batch of block. For transition that doesn't exist, the + /// corresponding transition state will be empty. /// @param _state Current TaikoData.State. /// @param _config Actual TaikoData.Config. - /// @param _blockId Id of the block. - /// @param _tid The transition id. - /// @return The state transition pointer. - function getTransition( + /// @param _blockIds Id array of the blocks. + /// @param _parentHashes Parent hashes of the blocks. + /// @return transitions_ The state transition pointer array. + function getTransitions( TaikoData.State storage _state, TaikoData.Config memory _config, - uint64 _blockId, - uint32 _tid + uint64[] calldata _blockIds, + bytes32[] calldata _parentHashes ) - internal + public view - returns (TaikoData.TransitionState storage) + returns (TaikoData.TransitionState[] memory transitions_) { - (TaikoData.BlockV2 storage blk, uint64 slot) = getBlock(_state, _config, _blockId); - - if (_tid == 0 || _tid >= blk.nextTransitionId) revert L1_TRANSITION_NOT_FOUND(); - return _state.transitions[slot][_tid]; + require(_blockIds.length != 0, L1_INVALID_PARAMS()); + require(_blockIds.length == _parentHashes.length, L1_INVALID_PARAMS()); + transitions_ = new TaikoData.TransitionState[](_blockIds.length); + for (uint256 i; i < _blockIds.length; ++i) { + (TaikoData.BlockV2 storage blk, uint64 slot) = getBlock(_state, _config, _blockIds[i]); + uint24 tid = getTransitionId(_state, blk, slot, _parentHashes[i]); + if (tid != 0) { + transitions_[i] = _state.transitions[slot][tid]; + } + } } - /// @notice This function will revert if the transition is not found. This function will revert - /// if the transition is not found. /// @dev Retrieves the transition with a given parentHash. + /// @dev This function will revert if the transition is not found. /// @param _state Current TaikoData.State. /// @param _config Actual TaikoData.Config. /// @param _blockId Id of the block. /// @param _parentHash Parent hash of the block. /// @return The state transition pointer. - function getTransition( + function getTransitionByParentHash( TaikoData.State storage _state, TaikoData.Config memory _config, uint64 _blockId, bytes32 _parentHash ) - internal + public view returns (TaikoData.TransitionState storage) { (TaikoData.BlockV2 storage blk, uint64 slot) = getBlock(_state, _config, _blockId); uint24 tid = getTransitionId(_state, blk, slot, _parentHash); - if (tid == 0) revert L1_TRANSITION_NOT_FOUND(); + require(tid != 0, L1_TRANSITION_NOT_FOUND()); return _state.transitions[slot][tid]; } - /// @notice Gets the state transitions for a batch of block. For transition that doesn't exist, - /// the corresponding transition state will be empty. + /// @dev Retrieves a block based on its ID. /// @param _state Current TaikoData.State. /// @param _config Actual TaikoData.Config. - /// @param _blockIds Id array of the blocks. - /// @param _parentHashes Parent hashes of the blocks. - /// @return transitions_ The state transition pointer array. - function getTransitions( + /// @param _blockId Id of the block. + /// @return blk_ The block storage pointer. + /// @return slot_ The slot value. + function getBlock( TaikoData.State storage _state, TaikoData.Config memory _config, - uint64[] calldata _blockIds, - bytes32[] calldata _parentHashes + uint64 _blockId ) internal view - returns (TaikoData.TransitionState[] memory transitions_) + returns (TaikoData.BlockV2 storage blk_, uint64 slot_) { - if (_blockIds.length == 0 || _blockIds.length != _parentHashes.length) { - revert L1_INVALID_PARAMS(); - } - transitions_ = new TaikoData.TransitionState[](_blockIds.length); - for (uint256 i; i < _blockIds.length; ++i) { - (TaikoData.BlockV2 storage blk, uint64 slot) = getBlock(_state, _config, _blockIds[i]); - uint24 tid = getTransitionId(_state, blk, slot, _parentHashes[i]); - if (tid != 0) { - transitions_[i] = _state.transitions[slot][tid]; - } - } + slot_ = _blockId % _config.blockRingBufferSize; + blk_ = _state.blocks[slot_]; + require(blk_.blockId == _blockId, L1_INVALID_BLOCK_ID()); + } + + /// @dev Retrieves the transition with a transition ID. + /// @dev This function will revert if the transition is not found. + /// @param _state Current TaikoData.State. + /// @param _config Actual TaikoData.Config. + /// @param _blockId Id of the block. + /// @param _tid The transition id. + /// @return The state transition pointer. + function getTransitionById( + TaikoData.State storage _state, + TaikoData.Config memory _config, + uint64 _blockId, + uint24 _tid + ) + internal + view + returns (TaikoData.TransitionState storage) + { + (TaikoData.BlockV2 storage blk, uint64 slot) = getBlock(_state, _config, _blockId); + + require(_tid != 0, L1_TRANSITION_NOT_FOUND()); + require(_tid < blk.nextTransitionId, L1_TRANSITION_NOT_FOUND()); + return _state.transitions[slot][_tid]; } - /// @dev Retrieves the ID of the transition with a given parentHash. - /// This function will return 0 if the transition is not found. + /// @dev Retrieves the ID of the transition with a given parentHash. This function will return 0 + /// if the transition is not found. + /// @param _state Current TaikoData.State. + /// @param _blk The block storage pointer. + /// @param _slot The slot value. + /// @param _parentHash The parent hash of the block. + /// @return tid_ The transition ID. function getTransitionId( TaikoData.State storage _state, TaikoData.BlockV2 storage _blk, @@ -235,13 +210,18 @@ library LibUtils { { if (_state.transitions[_slot][1].key == _parentHash) { tid_ = 1; - if (tid_ >= _blk.nextTransitionId) revert L1_UNEXPECTED_TRANSITION_ID(); + require(tid_ < _blk.nextTransitionId, L1_UNEXPECTED_TRANSITION_ID()); } else { tid_ = _state.transitionIds[_blk.blockId][_parentHash]; - if (tid_ != 0 && tid_ >= _blk.nextTransitionId) revert L1_UNEXPECTED_TRANSITION_ID(); + require(tid_ == 0 || tid_ < _blk.nextTransitionId, L1_UNEXPECTED_TRANSITION_ID()); } } + /// @dev Checks if the current timestamp is past the deadline. + /// @param _tsTimestamp The timestamp to check. + /// @param _lastUnpausedAt The last unpaused timestamp. + /// @param _windowMinutes The window in minutes. + /// @return True if the current timestamp is past the deadline, false otherwise. function isPostDeadline( uint256 _tsTimestamp, uint256 _lastUnpausedAt, @@ -252,11 +232,17 @@ library LibUtils { returns (bool) { unchecked { - uint256 deadline = _tsTimestamp.max(_lastUnpausedAt) + _windowMinutes * 60; + uint256 deadline = + _tsTimestamp.max(_lastUnpausedAt) + _windowMinutes * SECONDS_IN_MINUTE; return block.timestamp >= deadline; } } + /// @dev Determines if blocks should be verified based on the configuration and block ID. + /// @param _config The TaikoData.Config. + /// @param _blockId The ID of the block. + /// @param _isBlockProposed Whether the block is proposed. + /// @return True if blocks should be verified, false otherwise. function shouldVerifyBlocks( TaikoData.Config memory _config, uint64 _blockId, @@ -267,18 +253,9 @@ library LibUtils { returns (bool) { if (_config.maxBlocksToVerify == 0) return false; - - // Consider each segment of 8 blocks, verification is attempted either on block 3 if it has - // been - // proved, or on block 7 if it has been proposed. Over time, the ratio of blocks to - // verification attempts averages 4:1, meaning each verification attempt typically covers 4 - // blocks. However, considering worst cases caused by blocks being proved out of order, some - // verification attempts may verify few or no blocks. In such cases, additional - // verifications are needed to catch up. Consequently, the `maxBlocksToVerify` parameter - // should be set high enough, for example 16, to allow for efficient catch-up. - - // Now lets use `maxBlocksToVerify` as an input to calculate the size of each block - // segment, instead of using 8 as a constant. + // If maxBlocksToVerify = 16, segmentSize = 8, verification will be triggered by + // proposeBlock(s) for blocks 0, 8, 16, 24, ..., and by proveBlock(s) for blocks 4, 12, 20, + // 28, ... uint256 segmentSize = _config.maxBlocksToVerify >> 1; if (segmentSize <= 1) return true; @@ -286,7 +263,12 @@ library LibUtils { return _blockId % segmentSize == (_isBlockProposed ? 0 : segmentSize >> 1); } - function shouldSyncStateRoot( + /// @dev Determines if the state root should be synchronized based on the configuration and + /// block ID. + /// @param _stateRootSyncInternal The state root sync interval. + /// @param _blockId The ID of the block. + /// @return True if the state root should be synchronized, false otherwise. + function isSyncBlock( uint256 _stateRootSyncInternal, uint256 _blockId ) diff --git a/packages/protocol/contracts/layer1/based/LibVerifying.sol b/packages/protocol/contracts/layer1/based/LibVerifying.sol index 0fc0bf1501e..e0d72d02ec8 100644 --- a/packages/protocol/contracts/layer1/based/LibVerifying.sol +++ b/packages/protocol/contracts/layer1/based/LibVerifying.sol @@ -6,7 +6,7 @@ import "./LibBonds.sol"; import "./LibUtils.sol"; /// @title LibVerifying -/// @notice A library for handling block verification in the Taiko protocol. +/// @notice A library that offers helper functions for verifying blocks. /// @custom:security-contact security@taiko.xyz library LibVerifying { using LibMath for uint256; @@ -24,16 +24,17 @@ library LibVerifying { uint64 syncBlockId; uint24 syncTransitionId; address prover; - bool postFork; ITierRouter tierRouter; } error L1_BLOCK_MISMATCH(); - error L1_INVALID_CONFIG(); error L1_TRANSITION_ID_ZERO(); - error L1_TOO_LATE(); /// @dev Verifies up to N blocks. + /// @param _state The current state of TaikoData. + /// @param _config The configuration of TaikoData. + /// @param _resolver The address resolver interface. + /// @param _maxBlocksToVerify The maximum number of blocks to verify. function verifyBlocks( TaikoData.State storage _state, TaikoData.Config memory _config, @@ -52,24 +53,20 @@ library LibVerifying { local.slot = local.blockId % _config.blockRingBufferSize; TaikoData.BlockV2 storage blk = _state.blocks[local.slot]; - if (blk.blockId != local.blockId) revert L1_BLOCK_MISMATCH(); + require(blk.blockId == local.blockId, L1_BLOCK_MISMATCH()); local.lastVerifiedTransitionId = blk.verifiedTransitionId; local.tid = local.lastVerifiedTransitionId; - // The following scenario should never occur but is included as a - // precaution. - if (local.tid == 0) revert L1_TRANSITION_ID_ZERO(); + // The following scenario should never occur but is included as a precaution. + require(local.tid != 0, L1_TRANSITION_ID_ZERO()); - // The `blockHash` variable represents the most recently trusted - // blockHash on L2. + // The `blockHash` variable represents the most recently trusted blockHash on L2. local.blockHash = _state.transitions[local.slot][local.tid].blockHash; - // Unchecked is safe: - // - assignment is within ranges - // - blockId and numBlocksVerified values incremented will still be OK in the - // next 584K years if we verifying one block per every second - + // Unchecked is safe: - assignment is within ranges - blockId and numBlocksVerified values + // incremented will still be OK in the next 584K years if we verify one block per every + // second unchecked { ++local.blockId; @@ -77,23 +74,21 @@ library LibVerifying { local.blockId < local.b.numBlocks && local.numBlocksVerified < _maxBlocksToVerify ) { local.slot = local.blockId % _config.blockRingBufferSize; - local.postFork = local.blockId >= _config.ontakeForkHeight; blk = _state.blocks[local.slot]; - if (blk.blockId != local.blockId) revert L1_BLOCK_MISMATCH(); + require(blk.blockId == local.blockId, L1_BLOCK_MISMATCH()); local.tid = LibUtils.getTransitionId(_state, blk, local.slot, local.blockHash); - // When `tid` is 0, it indicates that there is no proven - // transition with its parentHash equal to the blockHash of the - // most recently verified block. + // When `tid` is 0, it indicates that there is no proven transition with its + // parentHash equal to the blockHash of the most recently verified block. if (local.tid == 0) break; // A transition with the correct `parentHash` has been located. TaikoData.TransitionState storage ts = _state.transitions[local.slot][local.tid]; - // It's not possible to verify this block if either the - // transition is contested and awaiting higher-tier proof or if - // the transition is still within its cooldown period. + // It's not possible to verify this block if either the transition is contested and + // awaiting higher-tier proof or if the transition is still within its cooldown + // period. local.tier = ts.tier; if (ts.contester != address(0)) { @@ -110,8 +105,8 @@ library LibVerifying { ).cooldownWindow; if (!LibUtils.isPostDeadline(ts.timestamp, local.b.lastUnpausedAt, cooldown)) { - // If cooldownWindow is 0, the block can theoretically - // be proved and verified within the same L1 block. + // If cooldownWindow is 0, the block can theoretically be proved and verified + // within the same L1 block. break; } @@ -120,33 +115,23 @@ library LibVerifying { local.blockHash = ts.blockHash; local.prover = ts.prover; - LibBonds.creditBond(_state, local.prover, ts.validityBond); - - // Note: We exclusively address the bonds linked to the - // transition used for verification. While there may exist - // other transitions for this block, we disregard them entirely. - // The bonds for these other transitions are burned (more precisely held in custody) - // either when the transitions are generated or proven. In such cases, both the - // provers and contesters of those transitions forfeit their bonds. - - if (local.postFork) { - emit LibUtils.BlockVerifiedV2({ - blockId: local.blockId, - prover: local.prover, - blockHash: local.blockHash, - tier: local.tier - }); - } else { - emit LibUtils.BlockVerified({ - blockId: local.blockId, - prover: local.prover, - blockHash: local.blockHash, - stateRoot: 0, // DEPRECATED and is always zero. - tier: local.tier - }); - } + LibBonds.creditBond(_state, local.prover, local.blockId, ts.validityBond); + + // Note: We exclusively address the bonds linked to the transition used for + // verification. While there may exist other transitions for this block, we + // disregard them entirely. The bonds for these other transitions are burned (more + // precisely held in custody) either when the transitions are generated or proven. In + // such cases, both the provers and contesters of those transitions forfeit their + // bonds. + + emit LibUtils.BlockVerifiedV2({ + blockId: local.blockId, + prover: local.prover, + blockHash: local.blockHash, + tier: local.tier + }); - if (LibUtils.shouldSyncStateRoot(_config.stateRootSyncInternal, local.blockId)) { + if (LibUtils.isSyncBlock(_config.stateRootSyncInternal, local.blockId)) { bytes32 stateRoot = ts.stateRoot; if (stateRoot != 0) { local.syncStateRoot = stateRoot; @@ -189,6 +174,11 @@ library LibVerifying { } } + /// @dev Retrieves the prover of a verified block. + /// @param _state The current state of TaikoData. + /// @param _config The configuration of TaikoData. + /// @param _blockId The ID of the block. + /// @return The address of the prover. function getVerifiedBlockProver( TaikoData.State storage _state, TaikoData.Config memory _config, @@ -203,6 +193,6 @@ library LibVerifying { uint24 tid = blk.verifiedTransitionId; if (tid == 0) return address(0); - return LibUtils.getTransition(_state, _config, _blockId, tid).prover; + return LibUtils.getTransitionById(_state, _config, _blockId, tid).prover; } } diff --git a/packages/protocol/contracts/layer1/based/TaikoData.sol b/packages/protocol/contracts/layer1/based/TaikoData.sol index e0ed8918ed0..f9a2a59cb7c 100644 --- a/packages/protocol/contracts/layer1/based/TaikoData.sol +++ b/packages/protocol/contracts/layer1/based/TaikoData.sol @@ -4,63 +4,49 @@ pragma solidity ^0.8.24; import "src/shared/data/LibSharedData.sol"; /// @title TaikoData -/// @notice This library defines various data structures used in the Taiko -/// protocol. +/// @notice This library defines various data structures used in the Taiko protocol. /// @custom:security-contact security@taiko.xyz library TaikoData { - /// @dev Struct holding Taiko configuration parameters. See {TaikoConfig}. + /// @notice Struct holding Taiko configuration parameters. See {TaikoConfig}. struct Config { - // --------------------------------------------------------------------- - // Group 1: General configs - // --------------------------------------------------------------------- - // The chain ID of the network where Taiko contracts are deployed. + /// @notice The chain ID of the network where Taiko contracts are deployed. uint64 chainId; - // --------------------------------------------------------------------- - // Group 2: Block level configs - // --------------------------------------------------------------------- - // The maximum number of proposals allowed in a single block. + /// @notice The maximum number of verifications allowed when a block is proposed or proved. uint64 blockMaxProposals; - // Size of the block ring buffer, allowing extra space for proposals. + /// @notice Size of the block ring buffer, allowing extra space for proposals. uint64 blockRingBufferSize; - // The maximum number of verifications allowed when a block is proposed - // or proved. + /// @notice The maximum number of verifications allowed when a block is proposed or proved. uint64 maxBlocksToVerify; - // The maximum gas limit allowed for a block. + /// @notice The maximum gas limit allowed for a block. uint32 blockMaxGasLimit; - // --------------------------------------------------------------------- - // Group 3: Proof related configs - // --------------------------------------------------------------------- - // The amount of Taiko token as a prover liveness bond + /// @notice The amount of Taiko token as a prover liveness bond. uint96 livenessBond; - // --------------------------------------------------------------------- - // Group 4: Cross-chain sync - // --------------------------------------------------------------------- - // The number of L2 blocks between each L2-to-L1 state root sync. + /// @notice The number of L2 blocks between each L2-to-L1 state root sync. uint8 stateRootSyncInternal; + /// @notice The max differences of the anchor height and the current block number. uint64 maxAnchorHeightOffset; - // --------------------------------------------------------------------- - // Group 5: Previous configs in TaikoL2 - // --------------------------------------------------------------------- + /// @notice Base fee configuration LibSharedData.BaseFeeConfig baseFeeConfig; - // --------------------------------------------------------------------- - // Group 6: Others - // --------------------------------------------------------------------- + /// @notie The Ontake fork height on L2. uint64 ontakeForkHeight; } - /// @dev A proof and the tier of proof it belongs to + /// @notice DEPRECATED but used by node/client for syncing old blocks + /// @notice A proof and the tier of proof it belongs to. struct TierProof { uint16 tier; bytes data; } - /// @dev Hook and it's data (currently used only during proposeBlock) + /// @notice DEPRECATED but used by node/client for syncing old blocks + /// @notice Hook and its data (currently used only during proposeBlock) struct HookCall { address hook; bytes data; } - /// @dev Represents proposeBlock's _data input parameter + /// @notice DEPRECATED but used by node/client for syncing old blocks + /// @notice Represents proposeBlock's _data input parameter struct BlockParams { address assignedProver; // DEPRECATED, value ignored. address coinbase; @@ -81,10 +67,10 @@ library TaikoData { uint8 blobIndex; // NEW } - /// @dev Struct containing data only required for proving a block - /// Note: On L2, `block.difficulty` is the pseudo name of - /// `block.prevrandao`, which returns a random number provided by the layer - /// 1 chain. + /// @notice DEPRECATED but used by node/client for syncing old blocks + /// @notice Struct containing data only required for proving a block + /// @notice Note: On L2, `block.difficulty` is the pseudo name of `block.prevrandao`, which + /// returns a random number provided by the layer 1 chain. struct BlockMetadata { bytes32 l1Hash; bytes32 difficulty; @@ -117,17 +103,15 @@ library TaikoData { bytes32 parentMetaHash; address proposer; uint96 livenessBond; - // Time this block is proposed at, used to check proving window and cooldown window. - uint64 proposedAt; - // L1 block number, required/used by node/client. - uint64 proposedIn; + uint64 proposedAt; // Used by node/client post block proposal. + uint64 proposedIn; // Used by node/client post block proposal. uint32 blobTxListOffset; uint32 blobTxListLength; uint8 blobIndex; LibSharedData.BaseFeeConfig baseFeeConfig; } - /// @dev Struct representing transition to be proven. + /// @notice Struct representing transition to be proven. struct Transition { bytes32 parentHash; bytes32 blockHash; @@ -135,8 +119,8 @@ library TaikoData { bytes32 graffiti; // Arbitrary data that the prover can use for various purposes. } - /// @dev Struct representing state transition data. - /// 6 slots used. + /// @notice Struct representing state transition data. + /// @notice 6 slots used. struct TransitionState { bytes32 key; // slot 1, only written/read for the 1st state transition. bytes32 blockHash; // slot 2 @@ -145,69 +129,62 @@ library TaikoData { uint96 validityBond; address contester; // slot 5 uint96 contestBond; - uint64 timestamp; // slot 6 (90 bits) + uint64 timestamp; // slot 6 (88 bits) uint16 tier; uint8 __reserved1; } - /// @dev Struct containing data required for verifying a block. - /// 3 slots used. + /// @notice DEPRECATED but used by node/client for syncing old blocks + /// @notice Struct containing data required for verifying a block. + /// @notice 3 slots used. struct Block { bytes32 metaHash; // slot 1 - address assignedProver; // slot 2 + address assignedProver; uint96 livenessBond; uint64 blockId; // slot 3 - uint64 proposedAt; // timestamp - uint64 proposedIn; // L1 block number, required/used by node/client. + uint64 proposedAt; + uint64 proposedIn; uint32 nextTransitionId; - // The ID of the transaction that is used to verify this block. However, if - // this block is not verified as the last block in a batch, verifiedTransitionId - // will remain zero. + // The ID of the transaction that is used to verify this block. However, if this block is + // not verified as the last block in a batch, verifiedTransitionId will remain zero. uint32 verifiedTransitionId; } - /// @dev Struct containing data required for verifying a block. - /// 3 slots used. + /// @notice Struct containing data required for verifying a block. + /// @notice 3 slots used. struct BlockV2 { bytes32 metaHash; // slot 1 - address assignedProver; // slot 2 - uint96 livenessBond; + address assignedProver; // DEPRECATED!!! + uint96 livenessBond; // DEPRECATED!!! uint64 blockId; // slot 3 - // Before the fork, this field is the L1 timestamp when this block is proposed. - // After the fork, this is the timestamp of the L2 block. - // In a later fork, we an rename this field to `timestamp`. - uint64 proposedAt; - // Before the fork, this field is the L1 block number where this block is proposed. - // After the fork, this is the L1 block number input for the anchor transaction. - // In a later fork, we an rename this field to `anchorBlockId`. - uint64 proposedIn; + uint64 proposedAt; // Now represents L2 block's timestamp + uint64 proposedIn; // Now represents L2 block's anchorBlockId uint24 nextTransitionId; bool livenessBondReturned; - // The ID of the transaction that is used to verify this block. However, if - // this block is not verified as the last block in a batch, verifiedTransitionId - // will remain zero. + // The ID of the transaction that is used to verify this block. However, if this block is + // not verified as the last block in a batch, verifiedTransitionId will remain zero. uint24 verifiedTransitionId; } - /// @dev Struct representing an Ethereum deposit. - /// 2 slot used. Currently removed from protocol, but to be backwards compatible, the struct and - /// return values stayed for now. + /// @notice DEPRECATED but used by node/client for syncing old blocks + /// @notice Struct representing an Ethereum deposit. + /// @notice 2 slot used. Currently removed from protocol, but to be backwards compatible, the + /// struct and return values stayed for now. struct EthDeposit { address recipient; uint96 amount; uint64 id; } - /// @dev Forge is only able to run coverage in case the contracts by default - /// capable of compiling without any optimization (neither optimizer runs, - /// no compiling --via-ir flag). - /// In order to resolve stack too deep without optimizations, we needed to - /// introduce outsourcing vars into structs below. + /// @notice Forge is only able to run coverage in case the contracts by default capable of + /// compiling without any optimization (neither optimizer runs, no compiling --via-ir flag). + /// @notice In order to resolve stack too deep without optimizations, we needed to introduce + /// outsourcing vars into structs below. struct SlotA { uint64 genesisHeight; uint64 genesisTimestamp; uint64 lastSyncedBlockId; - uint64 lastSynecdAt; // typo! + uint64 lastSynecdAt; // known typo (lastSyncedAt) } struct SlotB { @@ -220,7 +197,7 @@ library TaikoData { uint64 lastUnpausedAt; } - /// @dev Struct holding the state variables for the {TaikoL1} contract. + /// @notice Struct holding the state variables for the {TaikoL1} contract. struct State { // Ring buffer for proposed blocks and a some recent verified blocks. mapping(uint64 blockId_mod_blockRingBufferSize => BlockV2 blk) blocks; @@ -229,7 +206,7 @@ library TaikoData { // Ring buffer for transitions mapping( uint64 blockId_mod_blockRingBufferSize - => mapping(uint32 transitionId => TransitionState ts) + => mapping(uint24 transitionId => TransitionState ts) ) transitions; bytes32 __reserve1; // Used as a ring buffer for Ether deposits SlotA slotA; // slot 5 diff --git a/packages/protocol/contracts/layer1/based/TaikoEvents.sol b/packages/protocol/contracts/layer1/based/TaikoEvents.sol index 32bae8634b4..9abfb9d6888 100644 --- a/packages/protocol/contracts/layer1/based/TaikoEvents.sol +++ b/packages/protocol/contracts/layer1/based/TaikoEvents.sol @@ -4,20 +4,35 @@ pragma solidity ^0.8.24; import "./TaikoData.sol"; /// @title TaikoEvents -/// @notice This abstract contract provides event declarations for the Taiko -/// protocol, which are emitted during block proposal, proof, verification, and -/// Ethereum deposit processes. -/// @dev The events defined here must match the definitions in the corresponding -/// L1 libraries. +/// @notice This abstract contract provides event declarations for the Taiko protocol, which are +/// emitted during block proposal, proof, verification, and Ethereum deposit processes. +/// @dev The events defined here must match the definitions in the corresponding L1 libraries. /// @custom:security-contact security@taiko.xyz abstract contract TaikoEvents { - /// @dev Emitted when token is credited back to a user's bond balance. - event BondCredited(address indexed user, uint256 amount); + /// @notice Emitted when tokens are deposited into a user's bond balance. + /// @param user The address of the user who deposited the tokens. + /// @param amount The amount of tokens deposited. + event BondDeposited(address indexed user, uint256 amount); - /// @dev Emitted when token is debited from a user's bond balance. - event BondDebited(address indexed user, uint256 amount); + /// @notice Emitted when tokens are withdrawn from a user's bond balance. + /// @param user The address of the user who withdrew the tokens. + /// @param amount The amount of tokens withdrawn. + event BondWithdrawn(address indexed user, uint256 amount); - /// @notice Emitted when a block is proposed. + /// @notice Emitted when a token is credited back to a user's bond balance. + /// @param user The address of the user whose bond balance is credited. + /// @param blockId The ID of the block to credit for. + /// @param amount The amount of tokens credited. + event BondCredited(address indexed user, uint256 blockId, uint256 amount); + + /// @notice Emitted when a token is debited from a user's bond balance. + /// @param user The address of the user whose bond balance is debited. + /// @param blockId The ID of the block to debit for. + /// @param amount The amount of tokens debited. + event BondDebited(address indexed user, uint256 blockId, uint256 amount); + + /// @notice DEPRECATED but used by node/client for syncing old blocks. Emitted when a block is + /// proposed. /// @param blockId The ID of the proposed block. /// @param assignedProver The address of the assigned prover. /// @param livenessBond The liveness bond of the proposed block. @@ -42,7 +57,8 @@ abstract contract TaikoEvents { /// @param txList The txList. event CalldataTxList(uint256 indexed blockId, bytes txList); - /// @notice Emitted when a transition is proved. + /// @notice DEPRECATED but used by node/client for syncing old blocks. Emitted when a transition + /// is proved. /// @param blockId The block ID. /// @param tran The transition data. /// @param prover The prover's address. @@ -72,7 +88,8 @@ abstract contract TaikoEvents { uint64 proposedIn ); - /// @notice Emitted when a transition is contested. + /// @notice DEPRECATED but used by node/client for syncing old blocks. Emitted when a transition + /// is contested. /// @param blockId The block ID. /// @param tran The transition data. /// @param contester The contester's address. @@ -106,10 +123,10 @@ abstract contract TaikoEvents { /// @param paused The pause status. event ProvingPaused(bool paused); - /// @dev Emitted when a block is verified. + /// @notice DEPRECATED but used by node/client for syncing old blocks. Emitted when a block is + /// verified. /// @param blockId The ID of the verified block. - /// @param prover The prover whose transition is used for verifying the - /// block. + /// @param prover The prover whose transition is used for verifying the block. /// @param blockHash The hash of the verified block. /// @param stateRoot Deprecated and is always zero. /// @param tier The tier ID of the proof. @@ -121,10 +138,9 @@ abstract contract TaikoEvents { uint16 tier ); - /// @dev Emitted when a block is verified. + /// @notice Emitted when a block is verified. /// @param blockId The ID of the verified block. - /// @param prover The prover whose transition is used for verifying the - /// block. + /// @param prover The prover whose transition is used for verifying the block. /// @param blockHash The hash of the verified block. /// @param tier The tier ID of the proof. event BlockVerifiedV2( diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index b546527f488..a9c1e5054bb 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; import "src/shared/common/EssentialContract.sol"; import "./LibData.sol"; import "./LibProposing.sol"; @@ -13,9 +14,9 @@ import "./ITaikoL1.sol"; /// @notice This contract serves as the "base layer contract" of the Taiko protocol, providing /// functionalities for proposing, proving, and verifying blocks. The term "base layer contract" /// means that although this is usually deployed on L1, it can also be deployed on L2s to create -/// L3 "inception layers". The contract also handles the deposit and withdrawal of Taiko tokens -/// and Ether. Additionally, this contract doesn't hold any Ether. Ether deposited to L2 are held -/// by the Bridge contract. +/// L3s. The contract also handles the deposit and withdrawal of Taiko tokens and Ether. +/// Additionally, this contract doesn't hold any Ether. Ether deposited to L2 are held by the Bridge +/// contract. /// @dev Labeled in AddressResolver as "taiko" /// @custom:security-contact security@taiko.xyz contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { @@ -24,11 +25,10 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { uint256[50] private __gap; - error L1_FORK_ERROR(); - error L1_INVALID_PARAMS(); + error L1_FORK_HEIGHT_ERROR(); modifier whenProvingNotPaused() { - if (state.slotB.provingPaused) revert LibProving.L1_PROVING_PAUSED(); + require(!state.slotB.provingPaused, LibProving.L1_PROVING_PAUSED()); _; } @@ -52,7 +52,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { initializer { __Essential_init(_owner, _rollupAddressManager); - LibUtils.init(state, getConfig(), _genesisBlockHash); + LibUtils.init(state, _genesisBlockHash); if (_toPause) _pause(); } @@ -65,26 +65,13 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { state.__reserve1 = 0; } - /// @inheritdoc ITaikoL1 - function proposeBlock( - bytes calldata _params, - bytes calldata _txList - ) - external - payable - whenNotPaused - nonReentrant - emitEventForClient - returns (TaikoData.BlockMetadata memory meta_, TaikoData.EthDeposit[] memory deposits_) - { - TaikoData.Config memory config = getConfig(); - - TaikoData.BlockMetadataV2 memory metaV2; - (meta_, metaV2) = LibProposing.proposeBlock(state, config, this, _params, _txList); - if (metaV2.id >= config.ontakeForkHeight) revert L1_FORK_ERROR(); - deposits_ = new TaikoData.EthDeposit[](0); + /// @notice This function shall be called by previously deployed contracts. + function init3() external onlyOwner reinitializer(3) { + // this value from EssentialContract is no longer used. + __lastUnpausedAt = 0; } + /// @inheritdoc ITaikoL1 function proposeBlockV2( bytes calldata _params, bytes calldata _txList @@ -96,8 +83,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { returns (TaikoData.BlockMetadataV2 memory meta_) { TaikoData.Config memory config = getConfig(); - (, meta_) = LibProposing.proposeBlock(state, config, this, _params, _txList); - if (meta_.id < config.ontakeForkHeight) revert L1_FORK_ERROR(); + return LibProposing.proposeBlock(state, config, this, _params, _txList); } /// @inheritdoc ITaikoL1 @@ -112,10 +98,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { returns (TaikoData.BlockMetadataV2[] memory metaArr_) { TaikoData.Config memory config = getConfig(); - (, metaArr_) = LibProposing.proposeBlocks(state, config, this, _paramsArr, _txListArr); - for (uint256 i; i < metaArr_.length; ++i) { - if (metaArr_[i].id < config.ontakeForkHeight) revert L1_FORK_ERROR(); - } + return LibProposing.proposeBlocks(state, config, this, _paramsArr, _txListArr); } /// @inheritdoc ITaikoL1 @@ -174,7 +157,16 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { LibBonds.withdrawBond(state, this, _amount); } + /// @notice Unpauses the contract. + function unpause() public override whenPaused { + _authorizePause(msg.sender, false); + __paused = _FALSE; + state.slotB.lastUnpausedAt = uint64(block.timestamp); + emit Unpaused(msg.sender); + } + /// @notice Gets the current bond balance of a given address. + /// @param _user The address of the user. /// @return The current bond balance. function bondBalanceOf(address _user) external view returns (uint256) { return LibBonds.bondBalanceOf(state, _user); @@ -189,12 +181,16 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { /// @param _blockId Index of the block. /// @return blk_ The block. function getBlock(uint64 _blockId) external view returns (TaikoData.Block memory blk_) { + require(_blockId < getConfig().ontakeForkHeight, L1_FORK_HEIGHT_ERROR()); + (TaikoData.BlockV2 memory blk,) = LibUtils.getBlock(state, getConfig(), _blockId); - blk_ = LibData.blockV2toV1(blk); + blk_ = LibData.blockV2ToV1(blk); } /// @inheritdoc ITaikoL1 function getBlockV2(uint64 _blockId) external view returns (TaikoData.BlockV2 memory blk_) { + require(_blockId >= getConfig().ontakeForkHeight, L1_FORK_HEIGHT_ERROR()); + (blk_,) = LibUtils.getBlock(state, getConfig(), _blockId); } @@ -211,14 +207,15 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { view returns (TaikoData.TransitionState memory) { - return LibUtils.getTransition(state, getConfig(), _blockId, _parentHash); + return LibUtils.getTransitionByParentHash(state, getConfig(), _blockId, _parentHash); } /// @notice Gets the state transitions for a batch of block. For transition that doesn't exist, /// the corresponding transition state will be empty. /// @param _blockIds Index of the blocks. /// @param _parentHashes Parent hashes of the blocks. - /// @return The state transition array of the blocks. + /// @return The state transition array of the blocks. Note that a transition's state root will + /// be zero if the block is not a sync-block. function getTransitions( uint64[] calldata _blockIds, bytes32[] calldata _parentHashes @@ -239,7 +236,9 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { view returns (TaikoData.TransitionState memory) { - return LibUtils.getTransition(state, getConfig(), _blockId, _tid); + return LibUtils.getTransitionById( + state, getConfig(), _blockId, SafeCastUpgradeable.toUint24(_tid) + ); } /// @notice Returns information about the last verified block. @@ -282,10 +281,10 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { return (state.slotA, state.slotB); } - /// @inheritdoc EssentialContract - function unpause() public override { - super.unpause(); // permission checked inside - state.slotB.lastUnpausedAt = uint64(block.timestamp); + /// @notice Returns the timestamp of the last unpaused state. + /// @return The timestamp of the last unpaused state. + function lastUnpausedAt() public view override returns (uint64) { + return state.slotB.lastUnpausedAt; } /// @inheritdoc ITaikoL1 @@ -306,11 +305,11 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { minGasExcess: 1_340_000_000, maxGasIssuancePerBlock: 600_000_000 // two minutes }), - ontakeForkHeight: 374_400 // = 7200 * 52 - }); + ontakeForkHeight: 0 + }); } - /// @dev chain_pauser is supposed to be a cold wallet. + /// @dev chain watchdog is supposed to be a cold wallet. function _authorizePause( address, bool diff --git a/packages/protocol/contracts/layer1/devnet/DevnetTaikoL1.sol b/packages/protocol/contracts/layer1/devnet/DevnetTaikoL1.sol index c256e1500a0..f5f7ce2b21b 100644 --- a/packages/protocol/contracts/layer1/devnet/DevnetTaikoL1.sol +++ b/packages/protocol/contracts/layer1/devnet/DevnetTaikoL1.sol @@ -25,7 +25,7 @@ contract DevnetTaikoL1 is TaikoL1 { minGasExcess: 1_340_000_000, maxGasIssuancePerBlock: 600_000_000 }), - ontakeForkHeight: 2 + ontakeForkHeight: 0 }); } } diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol index ec0184fb5b4..d69989ba6ad 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol @@ -48,7 +48,7 @@ contract RollupAddressCache is AddressCache { if (_name == LibStrings.B_AUTOMATA_DCAP_ATTESTATION) { return (true, 0x8d7C954960a36a7596d7eA4945dDf891967ca8A3); } - if (_name == LibStrings.B_PRECONF_REGISTRY) { + if (_name == LibStrings.B_PRECONF_TASK_MANAGER) { return (true, address(0)); } if (_name == LibStrings.B_CHAIN_WATCHDOG) { diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol index 6b1054829fa..fae1617ed0d 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol @@ -31,8 +31,15 @@ contract MainnetTierRouter is ITierRouter, TierProviderBase { } /// @inheritdoc ITierProvider - // solhint-disable-next-line no-unused-vars - function getMinTier(address _proposer, uint256 _rand) public view override returns (uint16) { + function getMinTier( + address, /*_proposer*/ + uint256 /*_rand*/ + ) + public + pure + override + returns (uint16) + { return LibTiers.TIER_SGX; } } diff --git a/packages/protocol/contracts/layer1/preconf/README.md b/packages/protocol/contracts/layer1/preconf/README.md new file mode 100644 index 00000000000..ea72bc235bf --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/README.md @@ -0,0 +1,3 @@ +# README + +This folder contains the contracts migrated from github.com/NethermindEth/Taiko-Preconf-AVS diff --git a/packages/protocol/contracts/layer1/preconf/avs-mvp/PreconfServiceManager.sol b/packages/protocol/contracts/layer1/preconf/avs-mvp/PreconfServiceManager.sol new file mode 100644 index 00000000000..f49db7dfa20 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/avs-mvp/PreconfServiceManager.sol @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; +import "../iface/IPreconfServiceManager.sol"; +import "./iface/ISlasher.sol"; +import "./iface/IAVSDirectory.sol"; + +/// @title PreconfServiceManager +/// @dev This contract would serve as the address of the AVS w.r.t the restaking platform being +/// used. Currently, this is based on a mock version of Eigenlayer that we have created solely for a +/// POC. +/// @custom:security-contact security@taiko.xyz +contract PreconfServiceManager is IPreconfServiceManager, ReentrancyGuard { + address internal immutable preconfRegistry; + address internal immutable preconfTaskManager; + IAVSDirectory internal immutable avsDirectory; + ISlasher internal immutable slasher; + + /// @dev This is currently just a flag and not actually being used to lock the stake. + mapping(address operator => uint256 timestamp) public stakeLockedUntil; + + uint256[49] private __gap; // 50 - 1 + + constructor( + address _preconfRegistry, + address _preconfTaskManager, + IAVSDirectory _avsDirectory, + ISlasher _slasher + ) { + preconfRegistry = _preconfRegistry; + preconfTaskManager = _preconfTaskManager; + avsDirectory = _avsDirectory; + slasher = _slasher; + } + + modifier onlyCallableBy(address allowedSender) { + require(msg.sender == allowedSender, SenderIsNotAllowed()); + _; + } + + /// @dev Simply relays the call to the AVS directory + function registerOperatorToAVS( + address operator, + bytes calldata operatorSignature + ) + external + nonReentrant + onlyCallableBy(preconfRegistry) + { + IAVSDirectory.SignatureWithSaltAndExpiry memory sig = + abi.decode(operatorSignature, (IAVSDirectory.SignatureWithSaltAndExpiry)); + avsDirectory.registerOperatorToAVS(operator, sig); + } + + /// @dev Simply relays the call to the AVS directory + function deregisterOperatorFromAVS(address operator) + external + nonReentrant + onlyCallableBy(preconfRegistry) + { + avsDirectory.deregisterOperatorFromAVS(operator); + } + + /// @dev This not completely functional until Eigenlayer decides the logic of their Slasher. + /// for now this simply sets a value in the storage and releases an event. + function lockStakeUntil( + address operator, + uint256 timestamp + ) + external + nonReentrant + onlyCallableBy(preconfTaskManager) + { + stakeLockedUntil[operator] = timestamp; + emit StakeLockedUntil(operator, timestamp); + } + + /// @dev This not completely functional until Eigenlayer decides the logic of their Slasher. + function slashOperator(address operator) + external + nonReentrant + onlyCallableBy(preconfTaskManager) + { + require(!slasher.isOperatorSlashed(operator), OperatorAlreadySlashed()); + slasher.slashOperator(operator); + } +} diff --git a/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IAVSDirectory.sol b/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IAVSDirectory.sol new file mode 100644 index 00000000000..ad4922b5174 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IAVSDirectory.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +/// @title IAVSDirectory +/// @custom:security-contact security@taiko.xyz +interface IAVSDirectory { + struct SignatureWithSaltAndExpiry { + // the signature itself, formatted as a single bytes object + bytes signature; + // the salt used to generate the signature + bytes32 salt; + // the expiration timestamp (UTC) of the signature + uint256 expiry; + } + + /// @dev This function will be left without implementation in the MVP + function registerOperatorToAVS( + address operator, + SignatureWithSaltAndExpiry memory operatorSignature + ) + external; + + /// @dev This function will be left without implementation in the MVP + function deregisterOperatorFromAVS(address operator) external; + + /// @dev This function will have the implementation in the MVP so that the node can pull the + /// message + /// to be signed + function calculateOperatorAVSRegistrationDigestHash( + address operator, + address avs, + bytes32 salt, + uint256 expiry + ) + external + view + returns (bytes32); +} diff --git a/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IDelegationManager.sol b/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IDelegationManager.sol new file mode 100644 index 00000000000..d786a0d7537 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IDelegationManager.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +/// @title IDelegationManager +/// @custom:security-contact security@taiko.xyz +interface IDelegationManager { + event OperatorSharesIncreased( + address indexed operator, address staker, address strategy, uint256 shares + ); + + /// @dev Called internally in EL by Strategy Manager + function increaseDelegatedShares(address operator, address strategy, uint256 shares) external; + + /// @dev Called by the AVS Stake Registry + function getOperatorShares( + address operator, + address[] memory strategies + ) + external + view + returns (uint256[] memory); +} diff --git a/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/ISlasher.sol b/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/ISlasher.sol new file mode 100644 index 00000000000..5e399835e54 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/ISlasher.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +/// @title ISlasher +/// @custom:security-contact security@taiko.xyz +interface ISlasher { + event OperatorSlashed(address indexed operator, address indexed avs); + event OptedIntoSlashing(address indexed operator, address indexed avs); + + /// @dev Called externally by the AVS operator client to allow AVS to slash the operator in the + /// future + function optIntoSlashing(address avs) external; + + /// @dev Called internally by the AVS (specifically the Service Manager) to slash the operator + function slashOperator(address operator) external; + + function isOperatorSlashed(address operator) external view returns (bool); +} diff --git a/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IStrategyManager.sol b/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IStrategyManager.sol new file mode 100644 index 00000000000..dda27f58ce1 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/avs-mvp/iface/IStrategyManager.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +/// @title IStrategyManager +/// @custom:security-contact security@taiko.xyz +interface IStrategyManager { + event Deposit(address staker, address token, address strategy, uint256 shares); + + /// @dev In EL this function is non-payable and solely for staking ERC20 tokens + function depositIntoStrategy( + address strategy, + address token, + uint256 amount + ) + external + payable + returns (uint256 shares); +} diff --git a/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/AVSDirectory.sol b/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/AVSDirectory.sol new file mode 100644 index 00000000000..3b24d2b8fdc --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/AVSDirectory.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../iface/IAVSDirectory.sol"; + +contract AVSDirectory is IAVSDirectory { + bytes32 private constant DOMAIN_TYPEHASH = + keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); + bytes32 private constant OPERATOR_AVS_REGISTRATION_TYPEHASH = keccak256( + "OperatorAVSRegistration(address operator,address avs,bytes32 salt,uint256 expiry)" + ); + + function registerOperatorToAVS( + address operator, + IAVSDirectory.SignatureWithSaltAndExpiry memory operatorSignature + ) + external + { } + + function deregisterOperatorFromAVS(address operator) external { } + + function calculateOperatorAVSRegistrationDigestHash( + address operator, + address avs, + bytes32 salt, + uint256 expiry + ) + public + view + returns (bytes32) + { + // calculate the struct hash + bytes32 structHash = + keccak256(abi.encode(OPERATOR_AVS_REGISTRATION_TYPEHASH, operator, avs, salt, expiry)); + // calculate the digest hash + bytes32 digestHash = + keccak256(abi.encodePacked("\x19\x01", _calculateDomainSeparator(), structHash)); + return digestHash; + } + + function _calculateDomainSeparator() internal view returns (bytes32) { + return keccak256( + abi.encode( + DOMAIN_TYPEHASH, keccak256(bytes("EigenLayer")), block.chainid, address(this) + ) + ); + } +} diff --git a/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/DelegationManager.sol b/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/DelegationManager.sol new file mode 100644 index 00000000000..06fc8d9fe6f --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/DelegationManager.sol @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../iface/IDelegationManager.sol"; +import "../iface/IStrategyManager.sol"; + +contract DelegationManager is IDelegationManager { + IStrategyManager internal immutable strategyManager; + + mapping(address operator => uint256 shares) internal operatorShares; + + constructor(IStrategyManager _strategyManager) { + strategyManager = _strategyManager; + } + + modifier onlyStrategyManager() { + require( + msg.sender == address(strategyManager), + "DelegationManager: Only Strategy Manager allowed" + ); + _; + } + + /// @dev In this MVP, operator and staker are used interchangeably + function increaseDelegatedShares( + address operator, + address strategy, + uint256 shares + ) + external + onlyStrategyManager + { + require(strategy == address(0), "DelegationManager: Only ETH strategy supported"); + operatorShares[operator] += shares; + emit OperatorSharesIncreased(operator, operator, strategy, shares); + } + + /// @dev This has been modified from the original EL implementation to accommodate for slashing + function getOperatorShares( + address operator, + address[] memory strategies + ) + external + view + returns (uint256[] memory) + { + uint256[] memory shares = new uint256[](strategies.length); + + for (uint256 i; i < strategies.length; ++i) { + require(strategies[i] == address(0), "DelegationManager: Only ETH strategy supported"); + shares[i] = operatorShares[operator]; + } + return shares; + } +} diff --git a/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/Slasher.sol b/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/Slasher.sol new file mode 100644 index 00000000000..94a668fa4df --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/Slasher.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../iface/ISlasher.sol"; + +contract Slasher is ISlasher { + mapping(address operator => mapping(address avs => bool canSlash)) internal slashingAllowed; + mapping(address operator => bool slashed) internal isSlashed; + + modifier onlyIfSlashingAllowed(address operator, address caller) { + require( + slashingAllowed[operator][caller], + "Slasher: Caller is not allowed to slash the operator" + ); + _; + } + + function optIntoSlashing(address avs) external { + slashingAllowed[msg.sender][avs] = true; + emit OptedIntoSlashing(msg.sender, avs); + } + + function slashOperator(address operator) external onlyIfSlashingAllowed(operator, msg.sender) { + isSlashed[operator] = true; + emit OperatorSlashed(operator, msg.sender); + } + + function isOperatorSlashed(address operator) external view returns (bool) { + return isSlashed[operator]; + } +} diff --git a/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/StrategyManager.sol b/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/StrategyManager.sol new file mode 100644 index 00000000000..307e3d4815e --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/avs-mvp/impl/StrategyManager.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../iface/IStrategyManager.sol"; +import "../iface/IDelegationManager.sol"; + +contract StrategyManager is IStrategyManager { + IDelegationManager internal immutable delegation; + + uint256 internal constant ETH_DEPOSIT = 1 ether; + + constructor(IDelegationManager _delegation) { + delegation = _delegation; + } + + function depositIntoStrategy( + address strategy, + address token, + uint256 amount + ) + external + payable + returns (uint256 shares) + { + require(strategy == address(0), "StrategyManager: Only ETH strategy supported"); + require(token == address(0), "StrategyManager: Only ETH deposits supported"); + require( + msg.value == ETH_DEPOSIT && amount == ETH_DEPOSIT, + "StrategyManager: Invalid ETH deposit" + ); + + // In the MVP, the shares equal the sent amount as we do not have any form of reward accrual + shares = amount; + + delegation.increaseDelegatedShares(msg.sender, strategy, shares); + + emit Deposit(msg.sender, token, strategy, shares); + } +} diff --git a/packages/protocol/contracts/layer1/preconf/eigenlayer/PreconfServiceManager.sol b/packages/protocol/contracts/layer1/preconf/eigenlayer/PreconfServiceManager.sol new file mode 100644 index 00000000000..c25da59facb --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/eigenlayer/PreconfServiceManager.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; +import "../iface/IPreconfServiceManager.sol"; + +/// @title PreconfServiceManager +/// @dev An implementation of IPreconfServiceManager on top of Eigenlayer restaking. +/// @custom:security-contact security@taiko.xyz +abstract contract PreconfServiceManager is IPreconfServiceManager, ReentrancyGuard { } diff --git a/packages/protocol/contracts/layer1/preconf/iface/IPreconfRegistry.sol b/packages/protocol/contracts/layer1/preconf/iface/IPreconfRegistry.sol new file mode 100644 index 00000000000..cfafe4081f6 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/iface/IPreconfRegistry.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../libs/LibBLS12381.sol"; + +/// @title IPreconfRegistry +/// @custom:security-contact security@taiko.xyz +interface IPreconfRegistry { + struct Validator { + // Preconfer that the validator proposer blocks for + address preconfer; + // Timestamp at which the preconfer may start proposing for the preconfer + // 2 epochs from validator addition timestamp + uint40 startProposingAt; + // Timestamp at which the preconfer must stop proposing for the preconfer + // 2 epochs from validator removal timestamp + uint40 stopProposingAt; + } + // ^ Note: 40 bits are enough for UNIX timestamp. This way we also compress the data to a single + // slot. + + struct AddValidatorParam { + // The public key of the validator + LibBLS12381.G1Point pubkey; + // The signature of the validator + LibBLS12381.G2Point signature; + // The timestamp at which the above signature expires + uint256 signatureExpiry; + } + + struct RemoveValidatorParam { + // The public key of the validator + LibBLS12381.G1Point pubkey; + // The signature of the validator + LibBLS12381.G2Point signature; + // The timestamp at which the above signature expires + uint256 signatureExpiry; + } + + enum ValidatorOp { + REMOVE, + ADD + } + + event PreconferRegistered(address indexed preconfer); + event PreconferDeregistered(address indexed preconfer); + event ValidatorAdded(bytes32 indexed pubKeyHash, address indexed preconfer); + event ValidatorRemoved(bytes32 indexed pubKeyHash, address indexed preconfer); + + error PreconferAlreadyRegistered(); + error PreconferNotRegistered(); + error InvalidValidatorSignature(); + error ValidatorSignatureExpired(); + error ValidatorAlreadyActive(); + error ValidatorAlreadyInactive(); + + /// @dev Registers a preconfer by giving them a non-zero registry index + function registerPreconfer(bytes calldata operatorSignature) external; + + /// @dev Deregisters a preconfer from the registry + function deregisterPreconfer() external; + + /// @dev Adds consensus layer validators to the system by assigning preconfers to them + function addValidators(AddValidatorParam[] calldata addValidatorParams) external; + + /// @dev Removes active validators who are proposing for a preconfer + function removeValidators(RemoveValidatorParam[] calldata removeValidatorParams) external; + + /// @dev Returns the message that the validator must sign to add or remove themselves from a + /// preconfer + function getMessageToSign( + ValidatorOp validatorOp, + uint256 expiry, + address preconfer + ) + external + view + returns (bytes memory); + + /// @dev Returns the index of the next preconfer + function getNextPreconferIndex() external view returns (uint256); + + /// @dev Returns the index of the preconfer + function getPreconferIndex(address preconfer) external view returns (uint256); + + /// @dev Returns the preconfer at the given index + function getPreconferAtIndex(uint256 index) external view returns (address); + + /// @dev Returns a validator who is proposing for a registered preconfer + function getValidator(bytes32 pubKeyHash) external view returns (Validator memory); +} diff --git a/packages/protocol/contracts/layer1/preconf/iface/IPreconfServiceManager.sol b/packages/protocol/contracts/layer1/preconf/iface/IPreconfServiceManager.sol new file mode 100644 index 00000000000..d47951d76e5 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/iface/IPreconfServiceManager.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +/// @title IPreconfServiceManager +/// @custom:security-contact security@taiko.xyz +interface IPreconfServiceManager { + event StakeLockedUntil(address indexed operator, uint256 timestamp); + + error SenderIsNotAllowed(); + error OperatorAlreadySlashed(); + + /// @dev Only callable by the registry + function registerOperatorToAVS(address operator, bytes calldata operatorSignature) external; + + /// @dev Only callable by the registry + function deregisterOperatorFromAVS(address operator) external; + + /// @dev Only Callable by PreconfTaskManager to prevent withdrawals of stake during preconf or + /// lookahead dispute period + function lockStakeUntil(address operator, uint256 timestamp) external; + + /// @dev Only Callable by PreconfTaskManager to slash an operator for incorrect lookahead or + /// preconfirmation + function slashOperator(address operator) external; +} diff --git a/packages/protocol/contracts/layer1/preconf/iface/IPreconfTaskManager.sol b/packages/protocol/contracts/layer1/preconf/iface/IPreconfTaskManager.sol new file mode 100644 index 00000000000..c381b71f34b --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/iface/IPreconfTaskManager.sol @@ -0,0 +1,127 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../libs/LibEIP4788.sol"; + +/// @title IPreconfTaskManager +/// @custom:security-contact security@taiko.xyz +interface IPreconfTaskManager { + struct LookaheadBufferEntry { + // True when the preconfer is randomly selected + bool isFallback; + // Timestamp of the slot at which the provided preconfer is the L1 validator + uint40 timestamp; + // Timestamp of the last slot that had a valid preconfer + uint40 prevTimestamp; + // Address of the preconfer who is also the L1 validator + // The preconfer will have rights to propose a block in the range (prevTimestamp, timestamp] + address preconfer; + } + + struct LookaheadSetParam { + // The timestamp of the slot + uint256 timestamp; + // The AVS operator who is also the L1 validator for the slot and will preconf L2 + // transactions + address preconfer; + } + + event LookaheadUpdated(LookaheadSetParam[]); + + event ProvedIncorrectLookahead( + address indexed poster, uint256 indexed timestamp, address indexed disputer + ); + + /// @dev The current (or provided) timestamp does not fall in the range provided by the + /// lookahead pointer + error InvalidLookaheadPointer(); + /// @dev The block proposer is not the assigned preconfer for the current slot/timestamp + error SenderIsNotThePreconfer(); + /// @dev Preconfer is not present in the registry + error PreconferNotRegistered(); + /// @dev Epoch timestamp is incorrect + error InvalidEpochTimestamp(); + /// @dev The timestamp in the lookahead is not of a valid future slot in the present epoch + error InvalidSlotTimestamp(); + /// @dev The chain id on which the preconfirmation was signed is different from the current + /// chain's id + error PreconfirmationChainIdMismatch(); + /// @dev The dispute window for proving incorrectc lookahead or preconfirmation is over + error MissedDisputeWindow(); + /// @dev The lookahead poster for the epoch has already been slashed or there is no lookahead + /// for epoch + error PosterAlreadySlashedOrLookaheadIsEmpty(); + /// @dev The lookahead preconfer matches the one the actual validator is proposing for + error LookaheadEntryIsCorrect(); + /// @dev Cannot force push a lookahead since it is not lagging behind + error LookaheadIsNotRequired(); + /// @dev The registry does not have a single registered preconfer + error NoRegisteredPreconfer(); + + /// @dev Accepts block proposal by an operator and forwards it to TaikoL1 contract + function newBlockProposals( + bytes[] calldata blockParamsArr, + bytes[] calldata txListArr, + uint256 lookaheadPointer, + LookaheadSetParam[] calldata lookaheadSetParams + ) + external; + + /// @dev Slashes a preconfer if the validator lookahead pushed by them has an incorrect entry + function proveIncorrectLookahead( + uint256 lookaheadPointer, + uint256 slotTimestamp, + bytes calldata validatorBLSPubKey, + LibEIP4788.InclusionProof calldata validatorInclusionProof + ) + external; + + /// @dev Forces the lookahead to be set for the next epoch if it is lagging behind + function forcePushLookahead(LookaheadSetParam[] calldata lookaheadSetParams) external; + + /// @dev Returns the fallback preconfer for the given epoch + function getFallbackPreconfer(uint256 epochTimestamp) external view returns (address); + + /// @dev Returns the full 32 slot preconfer lookahead for the epoch + function getLookaheadForEpoch(uint256 epochTimestamp) + external + view + returns (address[32] memory); + + /// @dev Return the parameters required for the lookahead to be set for the given epoch + function getLookaheadParamsForEpoch( + uint256 epochTimestamp, + bytes[32] calldata validatorBLSPubKeys + ) + external + view + returns (LookaheadSetParam[] memory); + + /// @dev Returns true is a lookahead is not posted for an epoch + /// @dev In the event that a lookahead was posted but later invalidated, this returns false + function isLookaheadRequired() external view returns (bool); + + /// @dev Returns the current lookahead tail + function getLookaheadTail() external view returns (uint256); + + /// @dev Returns the entire lookahead buffer + function getLookaheadBuffer() external view returns (LookaheadBufferEntry[128] memory); + + /// @dev Returns the lookahead poster for an epoch + function getLookaheadPoster(uint256 epochTimestamp) external view returns (address); + + /// @dev Returns the preconf service manager contract address + function getPreconfServiceManager() external view returns (address); + + /// @dev Returns the preconf registry contract address + function getPreconfRegistry() external view returns (address); + + /// @dev Returns the Taiko L1 contract address + function getTaikoL1() external view returns (address); + + /// @dev Returns the beacon genesis timestamp + function getBeaconGenesis() external view returns (uint256); + + /// @dev Returns the beacon block root contract address + function getBeaconBlockRootContract() external view returns (address); +} diff --git a/packages/protocol/contracts/layer1/preconf/impl/LibPreconfConstants.sol b/packages/protocol/contracts/layer1/preconf/impl/LibPreconfConstants.sol new file mode 100644 index 00000000000..12e408bb38a --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/impl/LibPreconfConstants.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +/// @title LibPreconfConstants +/// @custom:security-contact security@taiko.xyz +library LibPreconfConstants { + uint256 internal constant MAINNET_BEACON_GENESIS = 1_606_824_023; + uint256 internal constant SECONDS_IN_SLOT = 12; + uint256 internal constant SECONDS_IN_EPOCH = SECONDS_IN_SLOT * 32; + uint256 internal constant TWO_EPOCHS = 2 * SECONDS_IN_EPOCH; + uint256 internal constant DISPUTE_PERIOD = 2 * SECONDS_IN_EPOCH; +} diff --git a/packages/protocol/contracts/layer1/preconf/impl/PreconfRegistry.sol b/packages/protocol/contracts/layer1/preconf/impl/PreconfRegistry.sol new file mode 100644 index 00000000000..e3ad403436f --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/impl/PreconfRegistry.sol @@ -0,0 +1,246 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "../iface/IPreconfRegistry.sol"; +import "../iface/IPreconfServiceManager.sol"; +import "../libs/LibBLSSignature.sol"; +import "./LibPreconfConstants.sol"; + +/// @title PreconfRegistry +/// @custom:security-contact security@taiko.xyz +contract PreconfRegistry is IPreconfRegistry, Initializable { + using LibBLS12381 for LibBLS12381.G1Point; + + IPreconfServiceManager internal immutable preconfServiceManager; + + uint256 internal nextPreconferIndex; + + // Maps the preconfer's address to an index that may change over the lifetime of a preconfer + mapping(address preconfer => uint256 index) internal preconferToIndex; + + // Maps an index to the preconfer's address + // We need this mapping to deregister a preconfer in O(1) time. + // While it may also be done by just using the above map and sending a "witness" that is + // calculated offchain, + // we ideally do not want the node to maintain historical state. + mapping(uint256 index => address preconfer) internal indexToPreconfer; + + // Maps a validator's BLS pub key hash to the validator's details + mapping(bytes32 publicKeyHash => Validator validator) internal validators; + + uint256[46] private __gap; // = 50 - 4 + + constructor(IPreconfServiceManager _preconfServiceManager) { + preconfServiceManager = _preconfServiceManager; + } + + function init() external initializer { + nextPreconferIndex = 1; + } + + /** + * @notice Registers a preconfer in the registry by giving it a non-zero index + * @dev This function internally accesses the restaking platform via the AVS service manager + * @param operatorSignature The signature of the operator in the format expected by the + * restaking platform + */ + function registerPreconfer(bytes calldata operatorSignature) external { + // Preconfer must not have registered already + require(preconferToIndex[msg.sender] == 0, PreconferAlreadyRegistered()); + + uint256 _nextPreconferIndex = nextPreconferIndex; + + preconferToIndex[msg.sender] = _nextPreconferIndex; + indexToPreconfer[_nextPreconferIndex] = msg.sender; + + unchecked { + nextPreconferIndex = _nextPreconferIndex + 1; + } + + emit PreconferRegistered(msg.sender); + + preconfServiceManager.registerOperatorToAVS(msg.sender, operatorSignature); + } + + /** + * @notice Deregisters a preconfer from the registry by setting its index to zero + * @dev It assigns the index of the last preconfer to the preconfer being removed and + * decrements the global index counter. + */ + function deregisterPreconfer() external { + // Preconfer must have registered already + uint256 removedPreconferIndex = preconferToIndex[msg.sender]; + require(removedPreconferIndex != 0, PreconferNotRegistered()); + + // Remove the preconfer and exchange its index with the last preconfer + preconferToIndex[msg.sender] = 0; + + unchecked { + // Update to the decremented index to account for the removed preconfer + uint256 lastPreconferIndex = nextPreconferIndex - 1; + nextPreconferIndex = lastPreconferIndex; + + if (removedPreconferIndex == lastPreconferIndex) { + indexToPreconfer[removedPreconferIndex] = address(0); + } else { + address lastPreconfer = indexToPreconfer[lastPreconferIndex]; + preconferToIndex[lastPreconfer] = removedPreconferIndex; + indexToPreconfer[removedPreconferIndex] = lastPreconfer; + } + } + + emit PreconferDeregistered(msg.sender); + + preconfServiceManager.deregisterOperatorFromAVS(msg.sender); + } + + /** + * @notice Assigns a validator to a preconfer + * @dev This function verifies BLS signatures which is a very expensive operation costing about + * ~350K units of gas per signature. + * @param addValidatorParams Contains the public key, signature, expiry, and preconfer + */ + function addValidators(AddValidatorParam[] calldata addValidatorParams) external { + for (uint256 i; i < addValidatorParams.length; ++i) { + // Revert if preconfer is not registered + require(preconferToIndex[msg.sender] != 0, PreconferNotRegistered()); + + // Note: BLS signature checks are commented out for the POC + + // bytes memory message = _createMessage(ValidatorOp.ADD, + // addValidatorParams[i].signatureExpiry, msg.sender); + + // Revert if any signature is invalid + // if (!verifySignature(message, addValidatorParams[i].signature, + // addValidatorParams[i].pubkey)) { + // revert InvalidValidatorSignature(); + // } + + // Revert if the signature has expired + // if (block.timestamp > addValidatorParams[i].signatureExpiry) { + // revert ValidatorSignatureExpired(); + // } + + bytes32 pubKeyHash = _hashBLSPubKey(addValidatorParams[i].pubkey); + Validator memory validator = validators[pubKeyHash]; + + // Update the validator if it has no preconfer assigned, or if it has stopped proposing + // for the former preconfer + require( + validator.preconfer == address(0) + || (validator.stopProposingAt != 0 && block.timestamp > validator.stopProposingAt), + ValidatorAlreadyActive() + ); + + unchecked { + validators[pubKeyHash] = Validator({ + preconfer: msg.sender, + // The delay is crucial in order to not contradict the lookahead + startProposingAt: uint40(block.timestamp + LibPreconfConstants.TWO_EPOCHS), + stopProposingAt: uint40(0) + }); + } + + emit ValidatorAdded(pubKeyHash, msg.sender); + } + } + + /** + * @notice Unassigns a validator from a preconfer + * @dev Instead of removing the validator immediately, we delay the removal by two epochs, + * & set the `stopProposingAt` timestamp. + * @param removeValidatorParams Contains the public key, signature and expiry + */ + function removeValidators(RemoveValidatorParam[] calldata removeValidatorParams) external { + for (uint256 i; i < removeValidatorParams.length; ++i) { + bytes32 pubKeyHash = _hashBLSPubKey(removeValidatorParams[i].pubkey); + Validator memory validator = validators[pubKeyHash]; + + // Revert if the validator is not active (or already removed, but waiting to stop + // proposing) + require(validator.preconfer != address(0), ValidatorAlreadyInactive()); + require(validator.stopProposingAt == 0, ValidatorAlreadyInactive()); + + // Note: BLS signature checks have been commented out + // Todo: It would be reasonable to remove BLS checks altogether for validator removals. + + // bytes memory message = + // _createMessage(ValidatorOp.REMOVE, removeValidatorParams[i].signatureExpiry, + // validator.preconfer); + + // // Revert if any signature is invalid + // if (!verifySignature(message, removeValidatorParams[i].signature, + // removeValidatorParams[i].pubkey)) { + // revert InvalidValidatorSignature(); + // } + + // // Revert if the signature has expired + // if (block.timestamp > removeValidatorParams[i].signatureExpiry) { + // revert ValidatorSignatureExpired(); + // } + + unchecked { + // We also need to delay the removal by two epochs to avoid contradicting the + // lookahead + validators[pubKeyHash].stopProposingAt = + uint40(block.timestamp + LibPreconfConstants.TWO_EPOCHS); + } + + emit ValidatorRemoved(pubKeyHash, validator.preconfer); + } + } + + //======= + // Views + //======= + + function getMessageToSign( + ValidatorOp validatorOp, + uint256 expiry, + address preconfer + ) + external + view + returns (bytes memory) + { + return _createMessage(validatorOp, expiry, preconfer); + } + + function getNextPreconferIndex() external view returns (uint256) { + return nextPreconferIndex; + } + + function getPreconferIndex(address preconfer) external view returns (uint256) { + return preconferToIndex[preconfer]; + } + + function getPreconferAtIndex(uint256 index) external view returns (address) { + return indexToPreconfer[index]; + } + + function getValidator(bytes32 pubKeyHash) external view returns (Validator memory) { + return validators[pubKeyHash]; + } + + //========= + // Helpers + //========= + + function _createMessage( + ValidatorOp validatorOp, + uint256 expiry, + address preconfer + ) + internal + view + returns (bytes memory) + { + return abi.encodePacked(block.chainid, validatorOp, expiry, preconfer); + } + + function _hashBLSPubKey(LibBLS12381.G1Point calldata pubkey) internal pure returns (bytes32) { + uint256[2] memory compressedPubKey = pubkey.compress(); + return keccak256(abi.encodePacked(compressedPubKey)); + } +} diff --git a/packages/protocol/contracts/layer1/preconf/impl/PreconfTaskManager.sol b/packages/protocol/contracts/layer1/preconf/impl/PreconfTaskManager.sol new file mode 100644 index 00000000000..c44bede30c5 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/impl/PreconfTaskManager.sol @@ -0,0 +1,637 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "src/layer1/based/ITaikoL1.sol"; +import "../iface/IPreconfTaskManager.sol"; +import "../iface/IPreconfServiceManager.sol"; +import "../iface/IPreconfRegistry.sol"; +import "../libs/LibEIP4788.sol"; +import "./LibPreconfConstants.sol"; + +/// @title PreconfTaskManager +/// @custom:security-contact security@taiko.xyz +contract PreconfTaskManager is IPreconfTaskManager, Initializable { + // Cannot be kept in `LibPreconfConstants` file because solidity expects array sizes + // to be stored in the main contract file itself. + uint256 internal constant SLOTS_IN_EPOCH = 32; + uint256 internal constant LOOKAHEAD_BUFFER_SIZE = 128; + uint256 internal constant POSTER_BUFFER_SIZE = LibPreconfConstants.SECONDS_IN_EPOCH * 16; + + struct Poster { + // Address of lookahead poster + address addr; + // Start timestamp of the epoch for which the lookahead was posted + uint64 epochTimestamp; + } + + IPreconfServiceManager internal immutable preconfServiceManager; + IPreconfRegistry internal immutable preconfRegistry; + ITaikoL1 internal immutable taikoL1; + + // EIP-4788 + uint256 internal immutable beaconGenesis; + address internal immutable beaconBlockRootContract; + + // A ring buffer of upcoming preconfers (who are also the L1 validators) + uint256 internal lookaheadTail; + mapping( + uint256 lookaheadIndex_mod_LOOKAHEAD_BUFFER_SIZE + => LookaheadBufferEntry lookaheadBufferEntry + ) internal lookahead; + + // A ring buffer that maps beginning timestamp of an epoch to the lookahead poster for that + // epoch. + // If the lookahead poster has been slashed or the lookahead is not yet posted, the poster is + // the 0-address. + mapping(uint256 epochTimestamp_mod_POSTER_BUFFER_SIZE => Poster poster) internal + lookaheadPosters; + + uint256[47] private __gap; // = 50 - 3 + + constructor( + IPreconfServiceManager _serviceManager, + IPreconfRegistry _registry, + ITaikoL1 _taikoL1, + uint256 _beaconGenesis, + address _beaconBlockRootContract + ) { + preconfServiceManager = _serviceManager; + preconfRegistry = _registry; + taikoL1 = _taikoL1; + beaconGenesis = _beaconGenesis; + beaconBlockRootContract = _beaconBlockRootContract; + } + + function init(IERC20 _taikoToken) external initializer { + _taikoToken.approve(address(taikoL1), type(uint256).max); + } + + /** + * @notice Proposes a new Taiko L2 block. + * @dev The first caller in every epoch is expected to pass along the lookahead entries for the + * next epoch. + * The function reverts if the lookahead is lagging behind. This is possible if it is + * the first block proposal of the system or no lookahead was posted for the current epoch due + * to missed proposals. + * In this case, `forcePushLookahead` must be called in order to update the lookahead for the + * next epoch. + * @param blockParamsArr A list of block parameters expected by TaikoL1 contract + * @param txListArr A list of RLP encoded transaction list expected by TaikoL1 contract + * @param lookaheadPointer A pointer to the lookahead entry that may prove that the sender is + * the preconfer + * for the slot. + * @param lookaheadSetParams Collection of timestamps and preconfer addresses to be inserted in + * the lookahead + */ + function newBlockProposals( + bytes[] calldata blockParamsArr, + bytes[] calldata txListArr, + uint256 lookaheadPointer, + LookaheadSetParam[] calldata lookaheadSetParams + ) + external + { + LookaheadBufferEntry memory lookaheadEntry = _getLookaheadEntry(lookaheadPointer); + + uint256 epochTimestamp = _getEpochTimestamp(block.timestamp); + + // The current L1 block's timestamp must be within the range retrieved from the lookahead + // entry. + // The preconfer is allowed to propose a block in advanced if there are no other entries in + // the + // lookahead between the present slot and the preconfer's own slot. + // + // ------[Last slot with an entry]---[X]---[X]----[X]----[Preconfer]------- + // ------[ prevTimestamp ]---[ ]---[ ]----[ ]----[timestamp]------- + // + require(block.timestamp > lookaheadEntry.prevTimestamp, InvalidLookaheadPointer()); + require(block.timestamp <= lookaheadEntry.timestamp, InvalidLookaheadPointer()); + require(msg.sender == lookaheadEntry.preconfer, SenderIsNotThePreconfer()); + + uint256 nextEpochTimestamp = epochTimestamp + LibPreconfConstants.SECONDS_IN_EPOCH; + + // Update the lookahead for the next epoch. + // Only called during the first block proposal of the current epoch. + if (_isLookaheadRequired(epochTimestamp, nextEpochTimestamp)) { + _updateLookahead(nextEpochTimestamp, lookaheadSetParams); + } + + // Block the preconfer from withdrawing stake from the restaking service during the dispute + // window + preconfServiceManager.lockStakeUntil( + msg.sender, block.timestamp + LibPreconfConstants.DISPUTE_PERIOD + ); + + // Forward the block to Taiko's L1 contract + taikoL1.proposeBlocksV2(blockParamsArr, txListArr); + } + + /** + * @notice Proves that the lookahead for a specific slot was incorrect + * @dev The logic in this function only works once the lookahead slot has passed. This is + * because + * we pull the proposer from a past beacon block and verify if it is associated with the + * preconfer. + * @param lookaheadPointer The pointer to the lookahead entry that represents the incorrect slot + * @param slotTimestamp The timestamp of the slot for which the lookahead was incorrect + * @param validatorBLSPubKey The BLS public key of the validator who is proposed the block in + * the slot + * @param validatorInclusionProof The inclusion proof of the above validator in the Beacon state + */ + function proveIncorrectLookahead( + uint256 lookaheadPointer, + uint256 slotTimestamp, + bytes calldata validatorBLSPubKey, + LibEIP4788.InclusionProof calldata validatorInclusionProof + ) + external + { + uint256 epochTimestamp = _getEpochTimestamp(slotTimestamp); + + address poster = getLookaheadPoster(epochTimestamp); + + // Poster must not have been slashed + require(poster != address(0), PosterAlreadySlashedOrLookaheadIsEmpty()); + + // Must not have missed dispute period + require( + block.timestamp <= slotTimestamp + LibPreconfConstants.DISPUTE_PERIOD, + MissedDisputeWindow() + ); + + // Verify that the sent validator is the one in Beacon state + LibEIP4788.verifyValidator( + validatorBLSPubKey, _getBeaconBlockRoot(slotTimestamp), validatorInclusionProof + ); + + LookaheadBufferEntry memory lookaheadEntry = _getLookaheadEntry(lookaheadPointer); + + // Validate lookahead pointer + require(slotTimestamp <= lookaheadEntry.timestamp, InvalidLookaheadPointer()); + require(slotTimestamp > lookaheadEntry.prevTimestamp, InvalidLookaheadPointer()); + + // We pull the preconfer present at the required slot timestamp in the lookahead. + // If no preconfer is present for a slot, we simply use the 0-address to denote the + // preconfer. + address preconferInLookahead; + if (lookaheadEntry.timestamp == slotTimestamp && !lookaheadEntry.isFallback) { + // The slot was dedicated to a specific preconfer + preconferInLookahead = lookaheadEntry.preconfer; + } + + // Reduce validator's BLS pub key to the pub key hash expected by the registry + bytes32 validatorPubKeyHash = _getValidatorPubKeyHash(validatorBLSPubKey); + + // Retrieve the validator object + IPreconfRegistry.Validator memory validatorInRegistry = + preconfRegistry.getValidator(validatorPubKeyHash); + + // Fetch the preconfer associated with the validator from the registry + address preconferInRegistry = validatorInRegistry.preconfer; + if ( + slotTimestamp < validatorInRegistry.startProposingAt + || ( + validatorInRegistry.stopProposingAt != 0 + && slotTimestamp >= validatorInRegistry.stopProposingAt + ) + ) { + // The validator is no longer allowed to propose for the former preconfer + preconferInRegistry = address(0); + } + + // Revert if the lookahead preconfer matches the one that the validator pulled from beacon + // state + // is proposing for + require(preconferInLookahead != preconferInRegistry, LookaheadEntryIsCorrect()); + + uint256 epochEndTimestamp = epochTimestamp + LibPreconfConstants.SECONDS_IN_EPOCH; + + // If it is the current epoch's lookahead being proved incorrect then insert a fallback + // preconfer + if (block.timestamp < epochEndTimestamp) { + uint256 _lookaheadTail = lookaheadTail; + + uint256 lastSlotTimestamp = epochEndTimestamp - LibPreconfConstants.SECONDS_IN_SLOT; + + // If the lookahead for next epoch is available + if (_getLookaheadEntry(_lookaheadTail).timestamp >= epochEndTimestamp) { + // Get to the entry in the next epoch that connects to a slot in the current epoch + while (_getLookaheadEntry(_lookaheadTail).prevTimestamp >= epochEndTimestamp) { + _lookaheadTail -= 1; + } + + // Switch the connection to the last slot of the current epoch + lookahead[_lookaheadTail % LOOKAHEAD_BUFFER_SIZE].prevTimestamp = + uint40(lastSlotTimestamp); + + // Head to the last entry in current epoch + _lookaheadTail -= 1; + } + + _setLookaheadEntry( + _lookaheadTail, + LookaheadBufferEntry({ + isFallback: true, + timestamp: uint40(lastSlotTimestamp), + prevTimestamp: uint40(epochTimestamp - LibPreconfConstants.SECONDS_IN_SLOT), + preconfer: getFallbackPreconfer(epochTimestamp) + }) + ); + + _lookaheadTail -= 1; + + // Nullify the rest of the lookahead entries for this epoch + while (_getLookaheadEntry(_lookaheadTail).timestamp >= epochTimestamp) { + _setLookaheadEntry( + _lookaheadTail, + LookaheadBufferEntry({ + isFallback: false, + timestamp: 0, + prevTimestamp: 0, + preconfer: address(0) + }) + ); + _lookaheadTail -= 1; + } + } + + // Slash the poster + lookaheadPosters[epochTimestamp % POSTER_BUFFER_SIZE].addr = address(0); + preconfServiceManager.slashOperator(poster); + + emit ProvedIncorrectLookahead(poster, slotTimestamp, msg.sender); + } + + /** + * @notice Forces the lookahead to be set for the next epoch if it is not already set. + * @dev This is called once when the system starts up to push the first lookahead, and later + * anytime + * when the lookahead is lagging due to missed proposals. + * @param lookaheadSetParams Collection of timestamps and preconfer addresses to be inserted in + * the lookahead + */ + function forcePushLookahead(LookaheadSetParam[] calldata lookaheadSetParams) external { + // Sender must be a preconfer + require(preconfRegistry.getPreconferIndex(msg.sender) != 0, PreconferNotRegistered()); + + // Lookahead must be missing + uint256 epochTimestamp = _getEpochTimestamp(block.timestamp); + uint256 nextEpochTimestamp = epochTimestamp + LibPreconfConstants.SECONDS_IN_EPOCH; + require(_isLookaheadRequired(epochTimestamp, nextEpochTimestamp), LookaheadIsNotRequired()); + + // Update the lookahead for next epoch + _updateLookahead(nextEpochTimestamp, lookaheadSetParams); + + // Block the preconfer from withdrawing stake from Eigenlayer during the dispute window + preconfServiceManager.lockStakeUntil( + msg.sender, block.timestamp + LibPreconfConstants.DISPUTE_PERIOD + ); + } + + //========= + // Helpers + //========= + + /// @dev Updates the lookahead for an epoch + function _updateLookahead( + uint256 epochTimestamp, + LookaheadSetParam[] calldata lookaheadSetParams + ) + private + { + uint256 epochEndTimestamp = epochTimestamp + LibPreconfConstants.SECONDS_IN_EPOCH; + + // The tail of the lookahead is tracked and connected to the first new lookahead entry so + // that when no more preconfers are present in the remaining slots of the current epoch, + // the next epoch's preconfer may start preconfing in advanced. + // + // --[]--[]--[p1]--[]--[]---|---[]--[]--[P2]--[]--[] + // 1 2 3 4 5 6 7 8 9 10 + // Epoch 1 Epoch 2 + // + // Here, P2 may start preconfing and proposing blocks from slot 4 itself + // + uint256 _lookaheadTail = lookaheadTail; + uint256 prevSlotTimestamp = _getLookaheadEntry(_lookaheadTail).timestamp; + + if (lookaheadSetParams.length == 0) { + // If no preconfers are present in the lookahead, we use the fallback preconfer for the + // entire epoch + address fallbackPreconfer = getFallbackPreconfer(epochTimestamp); + _lookaheadTail += 1; + + // and, insert it in the last slot of the epoch so that it may start preconfing in + // advanced + _setLookaheadEntry( + _lookaheadTail, + LookaheadBufferEntry({ + isFallback: true, + timestamp: uint40(epochEndTimestamp - LibPreconfConstants.SECONDS_IN_SLOT), + prevTimestamp: uint40(prevSlotTimestamp), + preconfer: fallbackPreconfer + }) + ); + } else { + for (uint256 i; i < lookaheadSetParams.length; ++i) { + _lookaheadTail += 1; + + address preconfer = lookaheadSetParams[i].preconfer; + uint256 slotTimestamp = lookaheadSetParams[i].timestamp; + + // Each entry must be registered in the preconf registry + require(preconfRegistry.getPreconferIndex(preconfer) != 0, PreconferNotRegistered()); + + // Ensure that the timestamps belong to a valid slot in the epoch + require((slotTimestamp - epochTimestamp) % 12 == 0, InvalidSlotTimestamp()); + require(slotTimestamp < epochEndTimestamp, InvalidSlotTimestamp()); + require(slotTimestamp > prevSlotTimestamp, InvalidSlotTimestamp()); + + // Update the lookahead entry + _setLookaheadEntry( + _lookaheadTail, + LookaheadBufferEntry({ + isFallback: false, + timestamp: uint40(slotTimestamp), + prevTimestamp: uint40(prevSlotTimestamp), + preconfer: preconfer + }) + ); + prevSlotTimestamp = slotTimestamp; + } + } + + lookaheadTail = _lookaheadTail; + lookaheadPosters[epochTimestamp % POSTER_BUFFER_SIZE] = + Poster({ addr: msg.sender, epochTimestamp: uint64(epochTimestamp) }); + + // We directly use the lookahead set params even in the case of a fallback preconfer to + // assist the nodes in identifying an incorrect lookahead. The contents of this event can be + // matched against + // the output of `getLookaheadParamsForEpoch` to verify the correctness of the lookahead. + emit LookaheadUpdated(lookaheadSetParams); + } + + /** + * @notice Computes the timestamp of the epoch containing the provided slot timestamp + */ + function _getEpochTimestamp(uint256 slotTimestamp) private view returns (uint256) { + uint256 timePassedSinceGenesis = slotTimestamp - beaconGenesis; + uint256 timeToCurrentEpochFromGenesis = ( + timePassedSinceGenesis / LibPreconfConstants.SECONDS_IN_EPOCH + ) * LibPreconfConstants.SECONDS_IN_EPOCH; + return beaconGenesis + timeToCurrentEpochFromGenesis; + } + + /** + * @notice Retrieves the beacon block root for the block at the specified timestamp + */ + function _getBeaconBlockRoot(uint256 timestamp) private view returns (bytes32) { + // At block N, we get the beacon block root for block N - 1. So, to get the block root of + // the Nth block, + // we query the root at block N + 1. If N + 1 is a missed slot, we keep querying until we + // find a block N + x + // that has the block root for Nth block. + uint256 targetTimestamp = timestamp + LibPreconfConstants.SECONDS_IN_SLOT; + while (true) { + (bool success, bytes memory result) = + beaconBlockRootContract.staticcall(abi.encode(targetTimestamp)); + if (success && result.length > 0) { + return abi.decode(result, (bytes32)); + } + + unchecked { + targetTimestamp += LibPreconfConstants.SECONDS_IN_SLOT; + } + } + return bytes32(0); + } + + function _getLookaheadEntry(uint256 index) + internal + view + returns (LookaheadBufferEntry memory) + { + return lookahead[index % LOOKAHEAD_BUFFER_SIZE]; + } + + function _setLookaheadEntry(uint256 index, LookaheadBufferEntry memory entry) internal { + lookahead[index % LOOKAHEAD_BUFFER_SIZE] = entry; + } + + function _isLookaheadRequired( + uint256 epochTimestamp, + uint256 nextEpochTimestamp + ) + internal + view + returns (bool) + { + // If it's the first slot of current epoch, we don't need the lookahead since the offchain + // node may not have access to it yet. + return block.timestamp != epochTimestamp + && getLookaheadPoster(nextEpochTimestamp) == address(0); + } + + /** + * @dev Assumes that validatorBLSPubKey is 48 bytes long. + * Puts 16 empty bytes infront to make it equivalent to 48-byte long pub key stored in + * uint256[2] + */ + function _getValidatorPubKeyHash(bytes memory validatorBLSPubKey) + internal + pure + returns (bytes32) + { + return keccak256(abi.encodePacked(bytes16(0), validatorBLSPubKey)); + } + + function _validateEpochTimestamp(uint256 epochTimestamp) internal view { + require(epochTimestamp >= beaconGenesis, InvalidEpochTimestamp()); + require( + (epochTimestamp - beaconGenesis) % LibPreconfConstants.SECONDS_IN_EPOCH == 0, + InvalidEpochTimestamp() + ); + } + + //======= + // Views + //======= + + /// @dev We use the beacon block root at the first block in the last epoch as randomness to + /// decide on the preconfer for the given epoch + function getFallbackPreconfer(uint256 epochTimestamp) public view returns (address) { + _validateEpochTimestamp(epochTimestamp); + + uint256 nextPreconferIndex = preconfRegistry.getNextPreconferIndex(); + + // Registry must have at least one preconfer + require(nextPreconferIndex != 1, NoRegisteredPreconfer()); + + // Start of the last epoch + uint256 lastEpochTimestamp = epochTimestamp - LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 randomness = uint256(_getBeaconBlockRoot(lastEpochTimestamp)); + uint256 preconferIndex = randomness % (nextPreconferIndex - 1) + 1; + + return preconfRegistry.getPreconferAtIndex(preconferIndex); + } + + /** + * @notice Returns the full 32 slot preconfer lookahead for the epoch + * @dev This function has been added as a helper for the node to get the full 32 slot lookahead + * without + * the need of deconstructing the contract storage. Due to the fact that we are deconstructing + * an efficient + * data structure to fill in all the slots, this is very heavy on gas, and onchain calls to it + * should be avoided. + * @param epochTimestamp The start timestamp of the epoch for which the lookahead is to be + * generated + */ + function getLookaheadForEpoch(uint256 epochTimestamp) + external + view + returns (address[SLOTS_IN_EPOCH] memory) + { + _validateEpochTimestamp(epochTimestamp); + + address[SLOTS_IN_EPOCH] memory lookaheadForEpoch; + + uint256 _lookaheadTail = lookaheadTail; + uint256 lastSlotTimestamp = epochTimestamp + LibPreconfConstants.SECONDS_IN_EPOCH + - LibPreconfConstants.SECONDS_IN_SLOT; + + // Take the tail to the entry that fills the last slot of the epoch. + // This may be an entry in the next epoch who starts preconfing in advanced. + // This may also be an empty slot since the lookahead for next epoch is not yet posted. + while (_getLookaheadEntry(_lookaheadTail).prevTimestamp >= lastSlotTimestamp) { + _lookaheadTail -= 1; + } + + LookaheadBufferEntry memory _entry = _getLookaheadEntry(_lookaheadTail); + + // Iterate backwards and fill in the slots + for (uint256 i = SLOTS_IN_EPOCH; i > 0; --i) { + if (_entry.timestamp >= lastSlotTimestamp) { + lookaheadForEpoch[i - 1] = _entry.preconfer; + } + + lastSlotTimestamp -= LibPreconfConstants.SECONDS_IN_SLOT; + if (lastSlotTimestamp == _entry.prevTimestamp) { + _lookaheadTail -= 1; + // Reuse the memory space of _entry + _entry.preconfer = _getLookaheadEntry(_lookaheadTail).preconfer; + _entry.prevTimestamp = _getLookaheadEntry(_lookaheadTail).prevTimestamp; + } + } + + return lookaheadForEpoch; + } + + /** + * @notice Builds and returns lookahead set parameters for an epoch + * @dev This function can be used by the offchain node to create the lookahead to be posted. + * @param epochTimestamp The start timestamp of the epoch for which the lookahead is to be + * generated + * @param validatorBLSPubKeys The BLS public keys of the validators who are expected to propose + * in the epoch + * in the same sequence as they appear in the epoch. So at index n - 1, we have the validator + * for slot n in that + * epoch. + */ + function getLookaheadParamsForEpoch( + uint256 epochTimestamp, + bytes[SLOTS_IN_EPOCH] memory validatorBLSPubKeys + ) + external + view + returns (LookaheadSetParam[] memory) + { + _validateEpochTimestamp(epochTimestamp); + + uint256 index; + LookaheadSetParam[32] memory lookaheadSetParamsTemp; + + for (uint256 i = 0; i < 32; ++i) { + uint256 slotTimestamp = epochTimestamp + (i * LibPreconfConstants.SECONDS_IN_SLOT); + + // Fetch the validator object from the registry + IPreconfRegistry.Validator memory validator = + preconfRegistry.getValidator(_getValidatorPubKeyHash(validatorBLSPubKeys[i])); + + // Skip deregistered preconfers + if (preconfRegistry.getPreconferIndex(validator.preconfer) == 0) { + continue; + } + + // If the validator is allowed to propose in the epoch, add the associated preconfer to + // the lookahead + if ( + validator.preconfer != address(0) && slotTimestamp >= validator.startProposingAt + && (validator.stopProposingAt == 0 || slotTimestamp < validator.stopProposingAt) + ) { + lookaheadSetParamsTemp[index] = + LookaheadSetParam({ timestamp: slotTimestamp, preconfer: validator.preconfer }); + ++index; + } + } + + // Not very gas efficient, but is okay for a view expected to be used offchain + LookaheadSetParam[] memory lookaheadSetParams = new LookaheadSetParam[](index); + for (uint256 i; i < index; ++i) { + lookaheadSetParams[i] = lookaheadSetParamsTemp[i]; + } + + return lookaheadSetParams; + } + + /// @dev Returns true if the contract is expecting a lookahead for the next epoch + function isLookaheadRequired() external view returns (bool) { + uint256 epochTimestamp = _getEpochTimestamp(block.timestamp); + uint256 nextEpochTimestamp = epochTimestamp + LibPreconfConstants.SECONDS_IN_EPOCH; + return _isLookaheadRequired(epochTimestamp, nextEpochTimestamp); + } + + function getPreconfServiceManager() external view returns (address) { + return address(preconfServiceManager); + } + + function getPreconfRegistry() external view returns (address) { + return address(preconfRegistry); + } + + function getTaikoL1() external view returns (address) { + return address(taikoL1); + } + + function getBeaconGenesis() external view returns (uint256) { + return beaconGenesis; + } + + function getBeaconBlockRootContract() external view returns (address) { + return beaconBlockRootContract; + } + + function getLookaheadTail() external view returns (uint256) { + return lookaheadTail; + } + + function getLookaheadBuffer() + external + view + returns (LookaheadBufferEntry[LOOKAHEAD_BUFFER_SIZE] memory) + { + LookaheadBufferEntry[LOOKAHEAD_BUFFER_SIZE] memory _lookahead; + for (uint256 i; i < LOOKAHEAD_BUFFER_SIZE; ++i) { + _lookahead[i] = lookahead[i]; + } + return _lookahead; + } + + function getLookaheadPoster(uint256 epochTimestamp) public view returns (address) { + _validateEpochTimestamp(epochTimestamp); + Poster memory poster = lookaheadPosters[epochTimestamp % POSTER_BUFFER_SIZE]; + return poster.epochTimestamp == epochTimestamp ? poster.addr : address(0); + } +} diff --git a/packages/protocol/contracts/layer1/preconf/libs/LibBLS12381.sol b/packages/protocol/contracts/layer1/preconf/libs/LibBLS12381.sol new file mode 100644 index 00000000000..835b2f029b9 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/libs/LibBLS12381.sol @@ -0,0 +1,468 @@ +// SPDX-License-Identifier: MIT +// Functions in this library have been adapted from: +// https://github.com/ethyla/bls12-381-hash-to-curve/blob/main/src/HashToCurve.sol +pragma solidity ^0.8.24; + +/// @title LibBLS12381 +/// @custom:security-contact security@taiko.xyz +library LibBLS12381 { + using LibBLS12381 for *; + + struct FieldPoint2 { + uint256[2] u; + uint256[2] u_I; + } + + struct G1Point { + uint256[2] x; + uint256[2] y; + } + + struct G2Point { + uint256[2] x; + uint256[2] x_I; + uint256[2] y; + uint256[2] y_I; + } + + /// @dev Referenced from https://eips.ethereum.org/EIPS/eip-2537#curve-parameters + function baseFieldModulus() internal pure returns (uint256[2] memory) { + return [ + 0x000000000000000000000000000000001a0111ea397fe69a4b1ba7b6434bacd7, + 0x64774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab + ]; + } + + /// @dev Referenced from https://eips.ethereum.org/EIPS/eip-2537#curve-parameters + function negGeneratorG1() internal pure returns (G1Point memory) { + return G1Point({ + x: [ + 0x0000000000000000000000000000000017f1d3a73197d7942695638c4fa9ac0f, + 0xc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb + ], + y: [ + 0x00000000000000000000000000000000114d1d6855d545a8aa7d76c8cf2e21f2, + 0x67816aef1db507c96655b9d5caac42364e6f38ba0ecb751bad54dcd6b939c2ca + ] + }); + } + + /** + * @notice Negates a G1 point, by reflecting it over the x-axis + * @dev Assumes that the Y coordinate is always less than the field modulus + * @param point The G1 point to negate + */ + function negate(G1Point memory point) internal pure returns (G1Point memory) { + uint256[2] memory fieldModulus = baseFieldModulus(); + uint256[2] memory yNeg; + + // Perform word-wise elementary subtraction + if (fieldModulus[1] < point.y[1]) { + yNeg[1] = type(uint256).max - (point.y[1] - fieldModulus[1]) + 1; + fieldModulus[0] -= 1; // borrow + } else { + yNeg[1] = fieldModulus[1] - point.y[1]; + } + yNeg[0] = fieldModulus[0] - point.y[0]; + + return G1Point({ x: point.x, y: yNeg }); + } + + /** + * @notice Transforms a sequence of bytes into a G2 point + * @dev Based on https://datatracker.ietf.org/doc/html/rfc9380 + * @param message The message to hash + * @param dst The domain separation tag + */ + function hashToCurveG2( + bytes memory message, + bytes memory dst + ) + internal + view + returns (G2Point memory r) + { + // 1. u = hash_to_field(msg, 2) + FieldPoint2[2] memory u = hashToFieldFp2(message, dst); + // 2. Q0 = map_to_curve(u[0]) + G2Point memory q0 = u[0].mapToG2(); + // 3. Q1 = map_to_curve(u[1]) + G2Point memory q1 = u[1].mapToG2(); + // 4. R = Q0 + Q1 + r = q0.plus(q1); + // 5. P = clear_cofactor(R) + // Not needed as map fp to g2 already does it + } + + /** + * @notice Transforms a sequence of bytes into an element in the FP2 field + * @dev Based on https://datatracker.ietf.org/doc/html/rfc9380 + * @param message The message to hash + * @param dst The domain separation tag + */ + function hashToFieldFp2( + bytes memory message, + bytes memory dst + ) + internal + view + returns (FieldPoint2[2] memory) + { + // 1. len_in_bytes = count * m * L + // so always 2 * 2 * 64 = 256 + uint16 lenInBytes = 256; + // 2. uniform_bytes = expand_message(msg, DST, len_in_bytes) + uint256[] memory pseudoRandomBytes = _expandMsgXmd(message, dst, lenInBytes); + FieldPoint2[2] memory u; + // No loop here saves 800 gas hardcoding offset an additional 300 + // 3. for i in (0, ..., count - 1): + // 4. for j in (0, ..., m - 1): + // 5. elm_offset = L * (j + i * m) + // 6. tv = substr(uniform_bytes, elm_offset, HTF_L) + // uint8 HTF_L = 64; + // bytes memory tv = new bytes(64); + // 7. e_j = OS2IP(tv) mod p + // 8. u_i = (e_0, ..., e_(m - 1)) + // tv = bytes.concat(pseudo_random_bytes[0], pseudo_random_bytes[1]); + u[0].u = _modfield(pseudoRandomBytes[0], pseudoRandomBytes[1]); + u[0].u_I = _modfield(pseudoRandomBytes[2], pseudoRandomBytes[3]); + u[1].u = _modfield(pseudoRandomBytes[4], pseudoRandomBytes[5]); + u[1].u_I = _modfield(pseudoRandomBytes[6], pseudoRandomBytes[7]); + // 9. return (u_0, ..., u_(count - 1)) + return u; + } + + /** + * @notice Returns a G1Point in the compressed form + * @dev Based on + * https://github.com/zcash/librustzcash/blob/6e0364cd42a2b3d2b958a54771ef51a8db79dd29/pairing/src/bls12_381/README.md#serialization + * @param point The G1 point to compress + */ + function compress(G1Point memory point) internal pure returns (uint256[2] memory) { + uint256[2] memory r = point.x; + + // Set the first MSB + r[0] = r[0] | (1 << 127); + + // Second MSB is left to be 0 since we are assuming that no infinity points are involved + + // Set the third MSB if point.y is lexicographically larger than the y in negated point + if (_greaterThan(point.y, point.negate().y)) { + r[0] = r[0] | (1 << 125); + } + + return r; + } + + //================== + // Precompile calls + //================== + + /** + * @notice Adds two G2 points using the precompile at 0x0e + */ + function plus( + G2Point memory point1, + G2Point memory point2 + ) + internal + view + returns (G2Point memory) + { + uint256[8] memory r; + + uint256[16] memory input = [ + point1.x[0], + point1.x[1], + point1.x_I[0], + point1.x_I[1], + point1.y[0], + point1.y[1], + point1.y_I[0], + point1.y_I[1], + point2.x[0], + point2.x[1], + point2.x_I[0], + point2.x_I[1], + point2.y[0], + point2.y[1], + point2.y_I[0], + point2.y_I[1] + ]; + + // ABI for G2 addition precompile + // G2 addition call expects 512 bytes as an input that is interpreted as byte concatenation + // of two G2 points (256 bytes each). Output is an encoding of addition operation result - + // single G2 point (256 bytes). + assembly { + let success := + staticcall( + sub(gas(), 2000), + /// gas should be 800 + 0x0e, // address of BLS12_G2ADD + input, //input offset + 512, // input size + r, // output offset + 256 // output size + ) + if iszero(success) { revert(0, 0) } + } + + return _resolveG2Point(r); + } + + /** + * @notice Maps an element of the FP2 field to a G2 point using the precompile at 0x13 + */ + function mapToG2(FieldPoint2 memory fp2) internal view returns (G2Point memory) { + uint256[8] memory r; + + uint256[4] memory input = [fp2.u[0], fp2.u[1], fp2.u_I[0], fp2.u_I[1]]; + + // ABI for mapping Fp2 element to G2 point precompile + // Field-to-curve call expects 128 bytes an an input that is interpreted as a an element of + // the quadratic extension field. Output of this call is 256 bytes and is G2 point following + // respective encoding rules. + assembly { + let success := + staticcall( + sub(gas(), 2000), + /// gas should be 75000 + 0x13, // address of BLS12_MAP_FP2_TO_G2 + input, //input offset + 128, // input size + r, // output offset + 256 // output size + ) + if iszero(success) { revert(0, 0) } + } + + return _resolveG2Point(r); + } + + /** + * @notice Pairing check using the precompile at 0x11 + */ + function pairing( + G1Point memory a1, + G2Point memory b1, + G1Point memory a2, + G2Point memory b2 + ) + internal + view + returns (bool) + { + bool[1] memory r; + + uint256[24] memory input = [ + a1.x[0], + a1.x[1], + a1.y[0], + a1.y[1], + b1.x[0], + b1.x[1], + b1.x_I[0], + b1.x_I[1], + b1.y[0], + b1.y[1], + b1.y_I[0], + b1.y_I[1], + a2.x[0], + a2.x[1], + a2.y[0], + a2.y[1], + b2.x[0], + b2.x[1], + b2.x_I[0], + b2.x_I[1], + b2.y[0], + b2.y[1], + b2.y_I[0], + b2.y_I[1] + ]; + + // ABI for pairing precompile + // Pairing expects 384 (G1Point = 128 bytes, G2Point = 256 bytes) * k bytes as input. + // In this case, since two pairs of points are being passed, the input size is 384 * 2 = 768 + // bytes. + assembly { + let success := + staticcall( + sub(gas(), 2000), + /// gas should be 151000 + 0x11, // address of BLS12_PAIRING + input, //input offset + 768, // input size + r, // output offset + 32 // output size + ) + if iszero(success) { revert(0, 0) } + } + + return r[0]; + } + + //========= + // Helpers + //========= + + function _expandMsgXmd( + bytes memory message, + bytes memory dst, + uint16 lenInBytes + ) + internal + pure + returns (uint256[] memory) + { + // 1. ell = ceil(len_in_bytes / b_in_bytes) + // b_in_bytes seems to be 32 for sha256 + // ceil the division + uint256 ell = (lenInBytes - 1) / 32 + 1; + + // 2. ABORT if ell > 255 or len_in_bytes > 65535 or len(DST) > 255 + require(ell <= 255, "len_in_bytes too large for sha256"); + // Not really needed because of parameter type + // require(lenInBytes <= 65535, "len_in_bytes too large"); + // no length normalizing via hashing + require(dst.length <= 255, "dst too long"); + + bytes memory dstPrime = bytes.concat(dst, bytes1(uint8(dst.length))); + + // 4. Z_pad = I2OSP(0, s_in_bytes) + // this should be sha256 blocksize so 64 bytes + bytes memory zPad = + hex"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + + // 5. l_i_b_str = I2OSP(len_in_bytes, 2) + // length in byte string? + bytes2 libStr = bytes2(lenInBytes); + + // 6. msg_prime = Z_pad || msg || l_i_b_str || I2OSP(0, 1) || DST_prime + bytes memory msgPrime = bytes.concat(zPad, message, libStr, hex"00", dstPrime); + + uint256 b_0; + uint256[] memory b = new uint256[](ell); + + // 7. b_0 = H(msg_prime) + b_0 = uint256(sha256(msgPrime)); + + // 8. b_1 = H(b_0 || I2OSP(1, 1) || DST_prime) + b[0] = uint256(sha256(bytes.concat(bytes32(b_0), hex"01", dstPrime))); + + // 9. for i in (2, ..., ell): + for (uint8 i = 2; i <= ell; i++) { + // 10. b_i = H(strxor(b_0, b_(i - 1)) || I2OSP(i, 1) || DST_prime) + bytes memory tmp = abi.encodePacked(b_0 ^ b[i - 2], i, dstPrime); + b[i - 1] = uint256(sha256(tmp)); + } + // 11. uniform_bytes = b_1 || ... || b_ell + // 12. return substr(uniform_bytes, 0, len_in_bytes) + // Here we don't need the uniform_bytes because b is already properly formed + return b; + } + + function _modfield(uint256 _b1, uint256 _b2) internal view returns (uint256[2] memory r) { + assembly { + let bl := 0x40 + let ml := 0x40 + + let freemem := mload(0x40) // Free memory pointer is always stored at 0x40 + + // arg[0] = base.length @ +0 + mstore(freemem, bl) + // arg[1] = exp.length @ +0x20 + mstore(add(freemem, 0x20), 0x20) + // arg[2] = mod.length @ +0x40 + mstore(add(freemem, 0x40), ml) + + // arg[3] = base.bits @ + 0x60 + // places the first 32 bytes of _b1 and the last 32 bytes of _b2 + mstore(add(freemem, 0x60), _b1) + mstore(add(freemem, 0x80), _b2) + + // arg[4] = exp.bits @ +0x60+base.length + // exponent always 1 + mstore(add(freemem, 0xa0), 1) + + // arg[5] = mod.bits @ +96+base.length+exp.length + // this field_modulus as hex + // 4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787 + // we add the 0 prefix so that the result will be exactly 64 bytes + // saves 300 gas per call instead of sending it along every time + // places the first 32 bytes and the last 32 bytes of the field modulus + mstore( + add(freemem, 0xc0), + 0x000000000000000000000000000000001a0111ea397fe69a4b1ba7b6434bacd7 + ) + mstore( + add(freemem, 0xe0), + 0x64774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab + ) + + // Invoke contract 0x5, put return value right after mod.length, @ 0x60 + let success := + staticcall( + sub(gas(), 1350), // gas + 0x5, // mpdexp precompile + freemem, //input offset + 0x100, // input size = 0x60+base.length+exp.length+mod.length + add(freemem, 0x60), // output offset + ml // output size + ) + if iszero(success) { revert(0, 0) } + + // point to mod length, result was placed immediately after + r := add(freemem, 0x60) + //adjust freemem pointer + mstore(0x40, add(add(freemem, 0x60), ml)) + } + } + + /** + * @notice Returns true if `a` is lexicographically greater than `b` + * @dev It makes the comparison bit-wise. + * This functions also assumes that the passed values are 48-byte long BLS pub keys that have + * 16 functional bytes in the first word, and 32 bytes in the second. + */ + function _greaterThan(uint256[2] memory a, uint256[2] memory b) internal pure returns (bool) { + uint256 wordA; + uint256 wordB; + uint256 mask; + + // Only compare the unequal words + if (a[0] == b[0]) { + wordA = a[1]; + wordB = b[1]; + mask = 1 << 255; + } else { + wordA = a[0]; + wordB = b[0]; + mask = 1 << 127; // Only check for lower 16 bytes in the first word + } + + // We may safely set the control value to be less than 256 since it is guaranteed that the + // the loop returns if the first words are different. + for (uint256 i; i < 256; ++i) { + uint256 x = wordA & mask; + uint256 y = wordB & mask; + + if (x == 0 && y != 0) return false; + if (x != 0 && y == 0) return true; + + mask = mask >> 1; + } + + return false; + } + + function _resolveG2Point(uint256[8] memory flattened) internal pure returns (G2Point memory) { + return G2Point({ + x: [flattened[0], flattened[1]], + x_I: [flattened[2], flattened[3]], + y: [flattened[4], flattened[5]], + y_I: [flattened[6], flattened[7]] + }); + } +} diff --git a/packages/protocol/contracts/layer1/preconf/libs/LibBLSSignature.sol b/packages/protocol/contracts/layer1/preconf/libs/LibBLSSignature.sol new file mode 100644 index 00000000000..1b2255450ba --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/libs/LibBLSSignature.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "./LibBLS12381.sol"; + +/// @title LibBLSSignature +/// @custom:security-contact security@taiko.xyz +library LibBLSSignature { + using LibBLS12381 for *; + + /// @dev The domain separation tag for the BLS signature + function dst() internal pure returns (bytes memory) { + // Set based on the recommendations of RFC9380 + return bytes("Taiko Based Rollup Preconfirmation v0.1.0"); + } + + /** + * @notice Returns `true` if the BLS signature on the message matches against the public key + * @param message The message bytes + * @param sig The BLS signature + * @param pubkey The BLS public key of the expected signer + */ + function verifySignature( + bytes memory message, + LibBLS12381.G2Point memory sig, + LibBLS12381.G1Point memory pubkey + ) + public + view + returns (bool) + { + // Hash the message bytes into a G2 point + LibBLS12381.G2Point memory msgG2 = message.hashToCurveG2(dst()); + + // Return the pairing check that denotes the correctness of the signature + return LibBLS12381.pairing(pubkey, msgG2, LibBLS12381.negGeneratorG1(), sig); + } +} diff --git a/packages/protocol/contracts/layer1/preconf/libs/LibEIP4788.sol b/packages/protocol/contracts/layer1/preconf/libs/LibEIP4788.sol new file mode 100644 index 00000000000..153cb582131 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/libs/LibEIP4788.sol @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: MIT + +// Referenced from: https://ethresear.ch/t/slashing-proofoor-on-chain-slashed-validator-proofs/19421 +pragma solidity ^0.8.24; + +import "./LibMerkleUtils.sol"; + +/// @title LibEIP4788 +/// @custom:security-contact security@taiko.xyz +library LibEIP4788 { + struct InclusionProof { + // `Chunks` of the SSZ encoded validator + bytes32[8] validator; + // Index of the validator in the beacon state validator list + uint256 validatorIndex; + // Proof of inclusion of validator in beacon state validator list + bytes32[] validatorProof; + // Root of the validator list in the beacon state + bytes32 validatorsRoot; + // Proof of inclusion of validator list in the beacon state + bytes32[] beaconStateProof; + // Root of the beacon state + bytes32 beaconStateRoot; + // Proof of inclusion of beacon state in the beacon block + bytes32[] beaconBlockProofForState; + // Proof of inclusion of the validator index in the beacon block + bytes32[] beaconBlockProofForProposerIndex; + } + + /// @dev The validator pub key failed verification against the pub key hash tree root in the + /// validator chunks + error InvalidValidatorBLSPubKey(); + /// @dev The proof that the validator is a part of the validator list is invalid. + error ValidatorProofFailed(); + /// @dev The proof that the validator list is a part of the beacon state is invalid. + error BeaconStateProofFailed(); + /// @dev The proof that the beacon state is a part of the beacon block is invalid. + error BeaconBlockProofForStateFailed(); + /// @dev The proof that the actual validator index is a part of the beacon is invalid. + error BeaconBlockProofForProposerIndex(); + + function verifyValidator( + bytes memory validatorBLSPubKey, + bytes32 beaconBlockRoot, + InclusionProof memory inclusionProof + ) + internal + pure + { + // Validator's BLS public key is verified against the hash tree root within Validator chunks + bytes32 pubKeyHashTreeRoot = sha256(abi.encodePacked(validatorBLSPubKey, bytes16(0))); + require(pubKeyHashTreeRoot == inclusionProof.validator[0], InvalidValidatorBLSPubKey()); + + // Validator is verified against the validator list in the beacon state + bytes32 validatorHashTreeRoot = LibMerkleUtils.merkleize(inclusionProof.validator); + require( + LibMerkleUtils.verifyProof( + inclusionProof.validatorProof, + inclusionProof.validatorsRoot, + validatorHashTreeRoot, + inclusionProof.validatorIndex + ), + ValidatorProofFailed() + ); + + require( + LibMerkleUtils.verifyProof( + inclusionProof.beaconStateProof, + inclusionProof.beaconStateRoot, + inclusionProof.validatorsRoot, + 11 + ), + BeaconStateProofFailed() + ); + + // Beacon state is verified against the beacon block + require( + LibMerkleUtils.verifyProof( + inclusionProof.beaconBlockProofForState, + beaconBlockRoot, + inclusionProof.beaconStateRoot, + 3 + ), + BeaconBlockProofForStateFailed() + ); + + // Validator index is verified against the beacon block + require( + LibMerkleUtils.verifyProof( + inclusionProof.beaconBlockProofForProposerIndex, + beaconBlockRoot, + LibMerkleUtils.toLittleEndian(inclusionProof.validatorIndex), + 1 + ), + BeaconBlockProofForProposerIndex() + ); + } +} diff --git a/packages/protocol/contracts/layer1/preconf/libs/LibMerkleUtils.sol b/packages/protocol/contracts/layer1/preconf/libs/LibMerkleUtils.sol new file mode 100644 index 00000000000..c9a962edea4 --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/libs/LibMerkleUtils.sol @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.24; + +/// @title LibMerkleUtils +/// @custom:security-contact security@taiko.xyz +library LibMerkleUtils { + uint256 internal constant CHUNKS_LENGTH = 8; + uint256 internal constant TMP_LENGTH = 4; + + function hash(bytes32 a, bytes32 b) internal pure returns (bytes32) { + return sha256(abi.encodePacked(a, b)); + } + + function merkleize(bytes32[CHUNKS_LENGTH] memory chunks) internal pure returns (bytes32) { + bytes32[] memory tmp = new bytes32[](TMP_LENGTH); + + for (uint256 i; i < CHUNKS_LENGTH; ++i) { + merge(tmp, i, chunks[i]); + } + + return tmp[TMP_LENGTH - 1]; + } + + function merge(bytes32[] memory tmp, uint256 index, bytes32 chunk) internal pure { + bytes32 h = chunk; + uint256 j = 0; + while (true) { + if (index & 1 << j == 0) { + break; + } else { + h = hash(tmp[j], h); + } + j += 1; + } + tmp[j] = h; + } + + function verifyProof( + bytes32[] memory proof, + bytes32 root, + bytes32 leaf, + uint256 leafIndex + ) + internal + pure + returns (bool) + { + bytes32 h = leaf; + uint256 index = leafIndex; + + for (uint256 i = 0; i < proof.length; i++) { + bytes32 proofElement = proof[i]; + + if (index % 2 == 0) { + h = sha256(bytes.concat(h, proofElement)); + } else { + h = sha256(bytes.concat(proofElement, h)); + } + + index = index / 2; + } + + return h == root; + } + + function toLittleEndian(uint256 n) internal pure returns (bytes32) { + uint256 v = n; + v = ((v & 0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >> 8) + | ((v & 0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF) << 8); + v = ((v & 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000) >> 16) + | ((v & 0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) << 16); + v = ((v & 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000) >> 32) + | ((v & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) << 32); + v = ((v & 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000) >> 64) + | ((v & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) << 64); + v = (v >> 128) | (v << 128); + return bytes32(v); + } +} diff --git a/packages/protocol/contracts/layer1/preconf/mock/MockPreconfRegistry.sol b/packages/protocol/contracts/layer1/preconf/mock/MockPreconfRegistry.sol new file mode 100644 index 00000000000..0bb360711ca --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/mock/MockPreconfRegistry.sol @@ -0,0 +1,245 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "../impl/LibPreconfConstants.sol"; +import "../libs/LibBLSSignature.sol"; +import "../iface/IPreconfRegistry.sol"; +import "../iface/IPreconfServiceManager.sol"; +import "../avs-mvp/iface/IAVSDirectory.sol"; + +contract MockPreconfRegistry is IPreconfRegistry, Initializable { + using LibBLS12381 for LibBLS12381.G1Point; + + IPreconfServiceManager internal immutable preconfServiceManager; + + uint256 internal nextPreconferIndex; + + // Maps the preconfer's address to an index that may change over the lifetime of a preconfer + mapping(address preconfer => uint256 index) internal preconferToIndex; + + // Maps an index to the preconfer's address + // We need this mapping to deregister a preconfer in O(1) time. + // While it may also be done by just using the above map and sending a "witness" that is + // calculated offchain, + // we ideally do not want the node to maintain historical state. + mapping(uint256 index => address preconfer) internal indexToPreconfer; + + // Maps a validator's BLS pub key hash to the validator's details + mapping(bytes32 publicKeyHash => Validator validator) internal validators; + + constructor(IPreconfServiceManager _preconfServiceManager) { + preconfServiceManager = _preconfServiceManager; + } + + function init() external initializer { + nextPreconferIndex = 1; + } + + /** + * @notice Registers a preconfer in the registry by giving it a non-zero index + * @dev This function internally accesses Eigenlayer via the AVS service manager + * @param operatorSignature The signature of the operator in the format expected by Eigenlayer + */ + function registerPreconfer(bytes calldata operatorSignature) external { + // Preconfer must not have registered already + require(preconferToIndex[msg.sender] == 0, PreconferAlreadyRegistered()); + + uint256 _nextPreconferIndex = nextPreconferIndex; + + preconferToIndex[msg.sender] = _nextPreconferIndex; + indexToPreconfer[_nextPreconferIndex] = msg.sender; + + unchecked { + nextPreconferIndex = _nextPreconferIndex + 1; + } + + emit PreconferRegistered(msg.sender); + + preconfServiceManager.registerOperatorToAVS(msg.sender, operatorSignature); + } + + /** + * @notice Deregisters a preconfer from the registry by setting its index to zero + * @dev It assigns the index of the last preconfer to the preconfer being removed and + * decrements the global index counter. + */ + function deregisterPreconfer() external { + // Preconfer must have registered already + require(preconferToIndex[msg.sender] != 0, PreconferNotRegistered()); + + unchecked { + uint256 _nextPreconferIndex = nextPreconferIndex - 1; + + // Update to the decremented index to account for the removed preconfer + nextPreconferIndex = _nextPreconferIndex; + + uint256 removedPreconferIndex = preconferToIndex[msg.sender]; + address lastPreconfer = indexToPreconfer[_nextPreconferIndex]; + + // Remove the preconfer and exchange its index with the last preconfer + preconferToIndex[msg.sender] = 0; + preconferToIndex[lastPreconfer] = removedPreconferIndex; + indexToPreconfer[removedPreconferIndex] = lastPreconfer; + } + + emit PreconferDeregistered(msg.sender); + + preconfServiceManager.deregisterOperatorFromAVS(msg.sender); + } + + /** + * @notice Assigns a validator to a preconfer + * @dev The function allows different validators to be assigned to different preconfers, but + * generally, it will be called by a preconfer to assign validators to itself. + * @param addValidatorParams Contains the public key, signature, expiry, and preconfer + */ + function addValidators(AddValidatorParam[] calldata addValidatorParams) external { + for (uint256 i; i < addValidatorParams.length; ++i) { + // Revert if preconfer is not registered + require(preconferToIndex[msg.sender] != 0, PreconferNotRegistered()); + + // bytes memory message = _createMessage(ValidatorOp.ADD, + // addValidatorParams[i].signatureExpiry, msg.sender); + + // Revert if any signature is invalid + //if (!verifySignature(message, addValidatorParams[i].signature, + // addValidatorParams[i].pubkey)) { + // revert InvalidValidatorSignature(); + //} + + // Revert if the signature has expired + require( + block.timestamp <= addValidatorParams[i].signatureExpiry, + ValidatorSignatureExpired() + ); + + // Point compress the public key just how it is done on the consensus layer + uint256[2] memory compressedPubKey = addValidatorParams[i].pubkey.compress(); + // Use the hash for ease of mapping + bytes32 pubKeyHash = keccak256(abi.encodePacked(compressedPubKey)); + + Validator memory validator = validators[pubKeyHash]; + + // Update the validator if it has no preconfer assigned, or if it has stopped proposing + // for the former preconfer + require( + validator.preconfer == address(0) + || (validator.stopProposingAt != 0 && block.timestamp > validator.stopProposingAt), + ValidatorAlreadyActive() + ); + + unchecked { + validators[pubKeyHash] = Validator({ + preconfer: msg.sender, + // The delay is crucial in order to not contradict the lookahead + startProposingAt: uint40(block.timestamp + LibPreconfConstants.TWO_EPOCHS), + stopProposingAt: uint40(0) + }); + } + + emit ValidatorAdded(pubKeyHash, msg.sender); + } + } + + /** + * @notice Unassigns a validator from a preconfer + * @dev Instead of removing the validator immediately, we delay the removal by two epochs, + * & set the `stopProposingAt` timestamp. + * @param removeValidatorParams Contains the public key, signature and expiry + */ + function removeValidators(RemoveValidatorParam[] calldata removeValidatorParams) external { + for (uint256 i; i < removeValidatorParams.length; ++i) { + // Point compress the public key just how it is done on the consensus layer + uint256[2] memory compressedPubKey = removeValidatorParams[i].pubkey.compress(); + // Use the hash for ease of mapping + bytes32 pubKeyHash = keccak256(abi.encodePacked(compressedPubKey)); + + Validator memory validator = validators[pubKeyHash]; + + // Revert if the validator is not active (or already removed, but waiting to stop + // proposing) + require(validator.preconfer != address(0), ValidatorAlreadyInactive()); + require(validator.stopProposingAt == 0, ValidatorAlreadyInactive()); + + bytes memory message = _createMessage( + ValidatorOp.REMOVE, removeValidatorParams[i].signatureExpiry, validator.preconfer + ); + + // Revert if any signature is invalid + require( + LibBLSSignature.verifySignature( + message, removeValidatorParams[i].signature, removeValidatorParams[i].pubkey + ), + InvalidValidatorSignature() + ); + + // Revert if the signature has expired + require( + block.timestamp <= removeValidatorParams[i].signatureExpiry, + ValidatorSignatureExpired() + ); + + unchecked { + // We also need to delay the removal by two epochs to avoid contradicting the + // lookahead + validators[pubKeyHash].stopProposingAt = + uint40(block.timestamp + LibPreconfConstants.TWO_EPOCHS); + } + + emit ValidatorRemoved(pubKeyHash, validator.preconfer); + } + } + + //======= + // Views + //======= + + function getMessageToSign( + ValidatorOp validatorOp, + uint256 expiry, + address preconfer + ) + external + view + returns (bytes memory) + { + return _createMessage(validatorOp, expiry, preconfer); + } + + function getPreconfServiceManager() external view returns (address) { + return address(preconfServiceManager); + } + + function getNextPreconferIndex() external view returns (uint256) { + return nextPreconferIndex; + } + + function getPreconferIndex(address preconfer) external view returns (uint256) { + return preconferToIndex[preconfer]; + } + + function getPreconferAtIndex(uint256 index) external view returns (address) { + return indexToPreconfer[index]; + } + + function getValidator(bytes32 pubKeyHash) external view returns (Validator memory) { + return validators[pubKeyHash]; + } + + //========= + // Helpers + //========= + + function _createMessage( + ValidatorOp validatorOp, + uint256 expiry, + address preconfer + ) + internal + view + returns (bytes memory) + { + return abi.encodePacked(block.chainid, validatorOp, expiry, preconfer); + } +} diff --git a/packages/protocol/contracts/layer1/preconf/mock/MockTaikoToken.sol b/packages/protocol/contracts/layer1/preconf/mock/MockTaikoToken.sol new file mode 100644 index 00000000000..2f6d915e32e --- /dev/null +++ b/packages/protocol/contracts/layer1/preconf/mock/MockTaikoToken.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +contract MockTaikoToken { + address public lastAddr; + uint256 public lastAmount; + + function approve(address spender, uint256 amount) external returns (bool) { + lastAddr = spender; + lastAmount = amount; + return true; + } +} diff --git a/packages/protocol/contracts/layer1/provers/GuardianProver.sol b/packages/protocol/contracts/layer1/provers/GuardianProver.sol index 53bd8960709..5a8f136efa8 100644 --- a/packages/protocol/contracts/layer1/provers/GuardianProver.sol +++ b/packages/protocol/contracts/layer1/provers/GuardianProver.sol @@ -54,22 +54,22 @@ contract GuardianProver is IVerifier, EssentialContract { bytes proofData ); - /// @notice Emitted when the set of guardians is updated - /// @param version The new version - /// @param guardians The new set of guardians + /// @notice Emitted when the set of guardians is updated. + /// @param version The new version. + /// @param guardians The new set of guardians. event GuardiansUpdated(uint32 version, address[] guardians); - /// @notice Emitted when an approval is made - /// @param operationId The operation ID - /// @param approvalBits The new approval bits - /// @param minGuardiansReached If the proof was submitted + /// @notice Emitted when an approval is made. + /// @param operationId The operation ID. + /// @param approvalBits The new approval bits. + /// @param minGuardiansReached If the proof was submitted. event Approved(uint256 indexed operationId, uint256 approvalBits, bool minGuardiansReached); - /// @notice Emitted when a guardian prover submit a different proof for the same block - /// @param blockId The block ID - /// @param guardian The guardian prover address - /// @param currentProofHash The existing proof hash - /// @param newProofHash The new and different proof hash + /// @notice Emitted when a guardian prover submits a different proof for the same block. + /// @param blockId The block ID. + /// @param guardian The guardian prover address. + /// @param currentProofHash The existing proof hash. + /// @param newProofHash The new and different proof hash. /// @param provingPaused True if TaikoL1's proving is paused. event ConflictingProofs( uint256 indexed blockId, @@ -97,10 +97,10 @@ contract GuardianProver is IVerifier, EssentialContract { __Essential_init(_owner, _rollupAddressManager); } - /// @notice Set the set of guardians - /// @param _newGuardians The new set of guardians - /// @param _minGuardians The minimum required to sign - /// @param _clearData true to invalidate all existing data. + /// @notice Sets the set of guardians. + /// @param _newGuardians The new set of guardians. + /// @param _minGuardians The minimum required to sign. + /// @param _clearData True to invalidate all existing data. function setGuardians( address[] memory _newGuardians, uint8 _minGuardians, @@ -110,14 +110,12 @@ contract GuardianProver is IVerifier, EssentialContract { onlyOwner { // We need at most 255 guardians (so the approval bits fit in a uint256) - if (_newGuardians.length == 0 || _newGuardians.length > type(uint8).max) { - revert GP_INVALID_GUARDIAN_SET(); - } + require(_newGuardians.length != 0, GP_INVALID_GUARDIAN_SET()); + require(_newGuardians.length <= type(uint8).max, GP_INVALID_GUARDIAN_SET()); // Minimum number of guardians to approve is at least equal or greater than half the // guardians (rounded up) and less or equal than the total number of guardians - if (_minGuardians == 0 || _minGuardians > _newGuardians.length) { - revert GP_INVALID_MIN_GUARDIANS(); - } + require(_minGuardians != 0, GP_INVALID_MIN_GUARDIANS()); + require(_minGuardians <= _newGuardians.length, GP_INVALID_MIN_GUARDIANS()); // Delete the current guardians for (uint256 i; i < guardians.length; ++i) { @@ -128,9 +126,9 @@ contract GuardianProver is IVerifier, EssentialContract { // Set the new guardians for (uint256 i; i < _newGuardians.length; ++i) { address guardian = _newGuardians[i]; - if (guardian == address(0)) revert GP_INVALID_GUARDIAN(); + require(guardian != address(0), GP_INVALID_GUARDIAN()); // This makes sure there are not duplicate addresses - if (guardianIds[guardian] != 0) revert GP_INVALID_GUARDIAN_SET(); + require(guardianIds[guardian] == 0, GP_INVALID_GUARDIAN_SET()); // Save and index the guardian guardians.push(guardian); @@ -144,58 +142,39 @@ contract GuardianProver is IVerifier, EssentialContract { emit GuardiansUpdated(version, _newGuardians); } - /// @dev Enables or disables proving auto pause. - /// @param _enable true to enable, false to disable. + /// @notice Enables or disables proving auto pause. + /// @param _enable True to enable, false to disable. function enableProvingAutoPause(bool _enable) external onlyOwner { - if (provingAutoPauseEnabled == _enable) revert GP_INVALID_STATUS(); + require(provingAutoPauseEnabled != _enable, GP_INVALID_STATUS()); provingAutoPauseEnabled = _enable; emit ProvingAutoPauseEnabled(_enable); } /// @notice Enables unlimited allowance for Taiko L1 contract. - /// param _enable true if unlimited allowance is approved, false to set the allowance to 0. + /// @param _enable True if unlimited allowance is approved, false to set the allowance to 0. function enableTaikoTokenAllowance(bool _enable) external onlyOwner { address tko = resolve(LibStrings.B_TAIKO_TOKEN, false); address taiko = resolve(LibStrings.B_TAIKO, false); IERC20(tko).approve(taiko, _enable ? type(uint256).max : 0); } - /// @dev Withdraws Taiko Token to a given address. + /// @notice Withdraws Taiko Token to a given address. /// @param _to The recipient address. /// @param _amount The amount of Taiko token to withdraw. Use 0 for all balance. function withdrawTaikoToken(address _to, uint256 _amount) external onlyOwner { - if (_to == address(0)) revert GV_ZERO_ADDRESS(); + require(_to != address(0), GV_ZERO_ADDRESS()); IERC20 tko = IERC20(resolve(LibStrings.B_TAIKO_TOKEN, false)); uint256 amount = _amount == 0 ? tko.balanceOf(address(this)) : _amount; tko.transfer(_to, amount); } - /// @dev Called by guardians to approve a guardian proof - /// @param _meta The block's metadata. + /// @notice Called by guardians to approve a guardian proof (version 2). + /// @param _metaV2 The block's metadata (version 2). /// @param _tran The valid transition. /// @param _proof The tier proof. - /// @return approved_ True if the minimum number of approval is acquired, false otherwise. - function approve( - TaikoData.BlockMetadata calldata _meta, - TaikoData.Transition calldata _tran, - TaikoData.TierProof calldata _proof - ) - external - whenNotPaused - nonReentrant - returns (bool) - { - return _approve({ - _blockId: _meta.id, - _proofHash: keccak256(abi.encode(_meta, _tran, _proof.data)), - _blockHash: _tran.blockHash, - _data: abi.encode(_meta, _tran, _proof), - _proofData: _proof.data - }); - } - + /// @return approved_ True if the minimum number of approvals is acquired, false otherwise. function approveV2( TaikoData.BlockMetadataV2 calldata _metaV2, TaikoData.Transition calldata _tran, @@ -217,11 +196,9 @@ contract GuardianProver is IVerifier, EssentialContract { /// @notice Pauses chain proving and verification. function pauseTaikoProving() external whenNotPaused { - if (guardianIds[msg.sender] == 0) revert GP_INVALID_GUARDIAN(); + require(guardianIds[msg.sender] != 0, GP_INVALID_GUARDIAN()); - if (address(this) != resolve(LibStrings.B_CHAIN_WATCHDOG, true)) { - revert GV_PERMISSION_DENIED(); - } + require(address(this) == resolve(LibStrings.B_CHAIN_WATCHDOG, true), GV_PERMISSION_DENIED()); ITaikoL1(resolve(LibStrings.B_TAIKO, false)).pauseProving(true); } @@ -235,7 +212,7 @@ contract GuardianProver is IVerifier, EssentialContract { external view { - if (_ctx.msgSender != address(this)) revert GV_PERMISSION_DENIED(); + require(_ctx.msgSender == address(this), GV_PERMISSION_DENIED()); } /// @inheritdoc IVerifier @@ -247,16 +224,23 @@ contract GuardianProver is IVerifier, EssentialContract { view { for (uint256 i; i < _ctxs.length; ++i) { - if (_ctxs[i].msgSender != address(this)) revert GV_PERMISSION_DENIED(); + require(_ctxs[i].msgSender == address(this), GV_PERMISSION_DENIED()); } } - /// @notice Returns the number of guardians - /// @return The number of guardians + /// @notice Returns the number of guardians. + /// @return The number of guardians. function numGuardians() public view returns (uint256) { return guardians.length; } + /// @notice Internal function to handle the approval process. + /// @param _blockId The block ID. + /// @param _proofHash The proof hash. + /// @param _blockHash The block hash. + /// @param _data The encoded data. + /// @param _proofData The proof data. + /// @return approved_ True if the minimum number of approvals is acquired, false otherwise. function _approve( uint64 _blockId, bytes32 _proofHash, @@ -299,6 +283,10 @@ contract GuardianProver is IVerifier, EssentialContract { } } + /// @notice Internal function to save the approval. + /// @param _blockId The block ID. + /// @param _proofHash The proof hash. + /// @return approved_ True if the minimum number of approvals is acquired, false otherwise. function _saveApproval( uint256 _blockId, bytes32 _proofHash @@ -307,7 +295,7 @@ contract GuardianProver is IVerifier, EssentialContract { returns (bool approved_) { uint256 id = guardianIds[msg.sender]; - if (id == 0) revert GP_INVALID_GUARDIAN(); + require(id != 0, GP_INVALID_GUARDIAN()); uint256 _version = version; @@ -320,6 +308,9 @@ contract GuardianProver is IVerifier, EssentialContract { emit Approved(_blockId, _approval, approved_); } + /// @notice Internal function to check if the minimum number of approvals is reached. + /// @param _approvalBits The approval bits. + /// @return True if the minimum number of approvals is reached, false otherwise. function _isApproved(uint256 _approvalBits) private view returns (bool) { uint256 count; uint256 bits = _approvalBits; diff --git a/packages/protocol/contracts/layer1/provers/ProverSet.sol b/packages/protocol/contracts/layer1/provers/ProverSet.sol index c0b4d66dec9..d78df93f2ff 100644 --- a/packages/protocol/contracts/layer1/provers/ProverSet.sol +++ b/packages/protocol/contracts/layer1/provers/ProverSet.sol @@ -32,14 +32,15 @@ contract ProverSet is EssentialContract, IERC1271 { error PERMISSION_DENIED(); modifier onlyAuthorized() { - if (msg.sender != admin && msg.sender != IHasRecipient(admin).recipient()) { - revert PERMISSION_DENIED(); - } + require( + msg.sender == admin || msg.sender == IHasRecipient(admin).recipient(), + PERMISSION_DENIED() + ); _; } modifier onlyProver() { - if (!isProver[msg.sender]) revert PERMISSION_DENIED(); + require(isProver[msg.sender], PERMISSION_DENIED()); _; } @@ -58,16 +59,13 @@ contract ProverSet is EssentialContract, IERC1271 { IERC20(tkoToken()).approve(taikoL1(), type(uint256).max); } - /// @notice Receives ETH as fees. - receive() external payable { } - function approveAllowance(address _address, uint256 _allowance) external onlyOwner { IERC20(tkoToken()).approve(_address, _allowance); } /// @notice Enables or disables a prover. function enableProver(address _prover, bool _isProver) external onlyAuthorized { - if (isProver[_prover] == _isProver) revert INVALID_STATUS(); + require(isProver[_prover] != _isProver, INVALID_STATUS()); isProver[_prover] = _isProver; emit ProverEnabled(_prover, _isProver); @@ -84,26 +82,7 @@ contract ProverSet is EssentialContract, IERC1271 { } /// @notice Propose a Taiko block. - function proposeBlock( - bytes calldata _params, - bytes calldata _txList - ) - external - payable - onlyProver - { - ITaikoL1(taikoL1()).proposeBlock(_params, _txList); - } - - /// @notice Propose a Taiko block. - function proposeBlockV2( - bytes calldata _params, - bytes calldata _txList - ) - external - payable - onlyProver - { + function proposeBlockV2(bytes calldata _params, bytes calldata _txList) external onlyProver { ITaikoL1(taikoL1()).proposeBlockV2(_params, _txList); } @@ -113,7 +92,6 @@ contract ProverSet is EssentialContract, IERC1271 { bytes[] calldata _txListArr ) external - payable onlyProver { ITaikoL1(taikoL1()).proposeBlocksV2(_paramsArr, _txListArr); diff --git a/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol b/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol index 000393b91fa..27415a361ef 100644 --- a/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol +++ b/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol @@ -97,7 +97,7 @@ abstract contract TierProviderBase is ITierProvider { contestBond: _validityBond / 10_000 * 65_625, cooldownWindow: _cooldownWindow, provingWindow: GRACE_PERIOD + _provingWindow, - maxBlocksToVerifyPerProof: 0 - }); + maxBlocksToVerifyPerProof: 0 // DEPRECATED + }); } } diff --git a/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol b/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol index 68a93df3ecd..2700c1cefe7 100644 --- a/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/Risc0Verifier.sol @@ -62,9 +62,7 @@ contract Risc0Verifier is EssentialContract, IVerifier { // Decode will throw if not proper length/encoding (bytes memory seal, bytes32 imageId) = abi.decode(_proof.data, (bytes, bytes32)); - if (!isImageTrusted[imageId]) { - revert RISC_ZERO_INVALID_BLOCK_PROOF_IMAGE_ID(); - } + require(isImageTrusted[imageId], RISC_ZERO_INVALID_BLOCK_PROOF_IMAGE_ID()); bytes32 publicInputHash = LibPublicInput.hashPublicInputs( _tran, address(this), address(0), _ctx.prover, _ctx.metaHash, taikoChainId() @@ -77,9 +75,7 @@ contract Risc0Verifier is EssentialContract, IVerifier { (bool success,) = resolve(LibStrings.B_RISCZERO_GROTH16_VERIFIER, false).staticcall( abi.encodeCall(IRiscZeroVerifier.verify, (seal, imageId, journalDigest)) ); - if (!success) { - revert RISC_ZERO_INVALID_PROOF(); - } + require(success, RISC_ZERO_INVALID_PROOF()); } /// @inheritdoc IVerifier @@ -94,13 +90,9 @@ contract Risc0Verifier is EssentialContract, IVerifier { abi.decode(_proof.data, (bytes, bytes32, bytes32)); // Check if the aggregation program is trusted - if (!isImageTrusted[aggregationImageId]) { - revert RISC_ZERO_INVALID_AGGREGATION_IMAGE_ID(); - } + require(isImageTrusted[aggregationImageId], RISC_ZERO_INVALID_AGGREGATION_IMAGE_ID()); // Check if the block proving program is trusted - if (!isImageTrusted[blockImageId]) { - revert RISC_ZERO_INVALID_BLOCK_PROOF_IMAGE_ID(); - } + require(isImageTrusted[blockImageId], RISC_ZERO_INVALID_BLOCK_PROOF_IMAGE_ID()); // Collect public inputs bytes32[] memory publicInputs = new bytes32[](_ctxs.length + 1); @@ -126,9 +118,7 @@ contract Risc0Verifier is EssentialContract, IVerifier { (bool success,) = resolve(LibStrings.B_RISCZERO_GROTH16_VERIFIER, false).staticcall( abi.encodeCall(IRiscZeroVerifier.verify, (seal, aggregationImageId, journalDigest)) ); - if (!success) { - revert RISC_ZERO_INVALID_PROOF(); - } + require(success, RISC_ZERO_INVALID_PROOF()); } function taikoChainId() internal view virtual returns (uint64) { diff --git a/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol b/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol index 4583f79cc99..1044bec19b4 100644 --- a/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/SgxVerifier.sol @@ -106,7 +106,7 @@ contract SgxVerifier is EssentialContract, IVerifier { for (uint256 i; i < _ids.length; ++i) { uint256 idx = _ids[i]; - if (instances[idx].addr == address(0)) revert SGX_INVALID_INSTANCE(); + require(instances[idx].addr != address(0), SGX_INVALID_INSTANCE()); emit InstanceDeleted(idx, instances[idx].addr); @@ -123,13 +123,11 @@ contract SgxVerifier is EssentialContract, IVerifier { { address automataDcapAttestation = resolve(LibStrings.B_AUTOMATA_DCAP_ATTESTATION, true); - if (automataDcapAttestation == address(0)) { - revert SGX_RA_NOT_SUPPORTED(); - } + require(automataDcapAttestation != address(0), SGX_RA_NOT_SUPPORTED()); (bool verified,) = IAttestation(automataDcapAttestation).verifyParsedQuote(_attestation); - if (!verified) revert SGX_INVALID_ATTESTATION(); + require(verified, SGX_INVALID_ATTESTATION()); address[] memory addresses = new address[](1); addresses[0] = address(bytes20(_attestation.localEnclaveReport.reportData)); @@ -151,7 +149,7 @@ contract SgxVerifier is EssentialContract, IVerifier { // Size is: 89 bytes // 4 bytes + 20 bytes + 65 bytes (signature) = 89 - if (_proof.data.length != 89) revert SGX_INVALID_PROOF(); + require(_proof.data.length == 89, SGX_INVALID_PROOF()); uint32 id = uint32(bytes4(_proof.data[:4])); address newInstance = address(bytes20(_proof.data[4:24])); @@ -163,7 +161,7 @@ contract SgxVerifier is EssentialContract, IVerifier { _proof.data[24:] ); - if (!_isInstanceValid(id, oldInstance)) revert SGX_INVALID_INSTANCE(); + require(_isInstanceValid(id, oldInstance), SGX_INVALID_INSTANCE()); if (newInstance != oldInstance && newInstance != address(0)) { _replaceInstance(id, oldInstance, newInstance); @@ -180,7 +178,7 @@ contract SgxVerifier is EssentialContract, IVerifier { { // Size is: 109 bytes // 4 bytes + 20 bytes + 20 bytes + 65 bytes (signature) = 109 - if (_proof.data.length != 109) revert SGX_INVALID_PROOF(); + require(_proof.data.length == 109, SGX_INVALID_PROOF()); uint32 id = uint32(bytes4(_proof.data[:4])); address oldInstance = address(bytes20(_proof.data[4:24])); @@ -207,11 +205,9 @@ contract SgxVerifier is EssentialContract, IVerifier { bytes32 signatureHash = keccak256(abi.encodePacked(publicInputs)); // Verify the blocks - if (oldInstance != ECDSA.recover(signatureHash, signature)) { - revert SGX_INVALID_PROOF(); - } + require(oldInstance == ECDSA.recover(signatureHash, signature), SGX_INVALID_PROOF()); - if (!_isInstanceValid(id, oldInstance)) revert SGX_INVALID_INSTANCE(); + require(_isInstanceValid(id, oldInstance), SGX_INVALID_INSTANCE()); if (newInstance != oldInstance && newInstance != address(0)) { _replaceInstance(id, oldInstance, newInstance); @@ -238,11 +234,11 @@ contract SgxVerifier is EssentialContract, IVerifier { } for (uint256 i; i < _instances.length; ++i) { - if (addressRegistered[_instances[i]]) revert SGX_ALREADY_ATTESTED(); + require(!addressRegistered[_instances[i]], SGX_ALREADY_ATTESTED()); addressRegistered[_instances[i]] = true; - if (_instances[i] == address(0)) revert SGX_INVALID_INSTANCE(); + require(_instances[i] != address(0), SGX_INVALID_INSTANCE()); instances[nextInstanceId] = Instance(_instances[i], validSince); ids[i] = nextInstanceId; @@ -261,8 +257,8 @@ contract SgxVerifier is EssentialContract, IVerifier { } function _isInstanceValid(uint256 id, address instance) private view returns (bool) { - if (instance == address(0)) return false; - if (instance != instances[id].addr) return false; + require(instance != address(0), SGX_INVALID_INSTANCE()); + require(instance == instances[id].addr, SGX_INVALID_INSTANCE()); return instances[id].validSince <= block.timestamp && block.timestamp <= instances[id].validSince + INSTANCE_EXPIRY; } diff --git a/packages/protocol/contracts/layer1/verifiers/SgxVerifierBase.sol b/packages/protocol/contracts/layer1/verifiers/SgxVerifierBase.sol new file mode 100644 index 00000000000..451d88604a3 --- /dev/null +++ b/packages/protocol/contracts/layer1/verifiers/SgxVerifierBase.sol @@ -0,0 +1,169 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "src/shared/common/EssentialContract.sol"; +import "src/shared/common/LibStrings.sol"; +import "../automata-attestation/interfaces/IAttestation.sol"; +import "../automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; + +/// @title SgxVerifierBase +/// @dev Please see references below: +/// - Reference #1: https://ethresear.ch/t/2fa-zk-rollups-using-sgx/14462 +/// - Reference #2: https://github.com/gramineproject/gramine/discussions/1579 +/// @custom:security-contact security@taiko.xyz +abstract contract SgxVerifierBase is EssentialContract { + /// @dev Each public-private key pair (Ethereum address) is generated within + /// the SGX program when it boots up. The off-chain remote attestation + /// ensures the validity of the program hash and has the capability of + /// bootstrapping the network with trustworthy instances. + struct Instance { + address addr; + uint64 validSince; + } + + /// @notice The expiry time for the SGX instance. + uint64 public constant INSTANCE_EXPIRY = 365 days; + + /// @notice A security feature, a delay until an instance is enabled when using onchain RA + /// verification + uint64 public constant INSTANCE_VALIDITY_DELAY = 0; + + /// @dev For gas savings, we shall assign each SGX instance with an id that when we need to + /// set a new pub key, just write storage once. + /// Slot 1. + uint256 public nextInstanceId; + + /// @dev One SGX instance is uniquely identified (on-chain) by it's ECDSA public key + /// (or rather ethereum address). Once that address is used (by proof verification) it has to be + /// overwritten by a new one (representing the same instance). This is due to side-channel + /// protection. Also this public key shall expire after some time + /// (for now it is a long enough 6 months setting). + /// Slot 2. + mapping(uint256 instanceId => Instance instance) public instances; + + /// @dev One address shall be registered (during attestation) only once, otherwise it could + /// bypass this contract's expiry check by always registering with the same attestation and + /// getting multiple valid instanceIds. While during proving, it is technically possible to + /// register the old addresses, it is less of a problem, because the instanceId would be the + /// same for those addresses and if deleted - the attestation cannot be reused anyways. + /// Slot 3. + mapping(address instanceAddress => bool alreadyAttested) public addressRegistered; + + uint256[47] private __gap; + + /// @notice Emitted when a new SGX instance is added to the registry, or replaced. + /// @param id The ID of the SGX instance. + /// @param instance The address of the SGX instance. + /// @param replaced The address of the SGX instance that was replaced. If it is the first + /// instance, this value is zero address. + /// @param validSince The time since the instance is valid. + event InstanceAdded( + uint256 indexed id, address indexed instance, address indexed replaced, uint256 validSince + ); + + /// @notice Emitted when an SGX instance is deleted from the registry. + /// @param id The ID of the SGX instance. + /// @param instance The address of the SGX instance. + event InstanceDeleted(uint256 indexed id, address indexed instance); + + error SGX_ALREADY_ATTESTED(); + error SGX_INVALID_ATTESTATION(); + error SGX_INVALID_INSTANCE(); + error SGX_INVALID_PROOF(); + error SGX_RA_NOT_SUPPORTED(); + + /// @notice Register an SGX instance after the attestation is verified + /// @param _attestation The parsed attestation quote. + /// @return The respective instanceId + function registerInstance(V3Struct.ParsedV3QuoteStruct calldata _attestation) + external + returns (uint256) + { + address automataDcapAttestation = resolve(LibStrings.B_AUTOMATA_DCAP_ATTESTATION, true); + + require(automataDcapAttestation != address(0), SGX_RA_NOT_SUPPORTED()); + + (bool verified,) = IAttestation(automataDcapAttestation).verifyParsedQuote(_attestation); + + require(verified, SGX_INVALID_ATTESTATION()); + + address[] memory addresses = new address[](1); + addresses[0] = address(bytes20(_attestation.localEnclaveReport.reportData)); + + return _addInstances(addresses, false)[0]; + } + + /// @notice Adds trusted SGX instances to the registry. + /// @param _instances The address array of trusted SGX instances. + /// @return The respective instanceId array per addresses. + function addInstances(address[] calldata _instances) + external + onlyOwner + returns (uint256[] memory) + { + return _addInstances(_instances, true); + } + + /// @notice Deletes SGX instances from the registry. + /// @param _ids The ids array of SGX instances. + function deleteInstances(uint256[] calldata _ids) + external + onlyFromOwnerOrNamed(LibStrings.B_SGX_WATCHDOG) + { + for (uint256 i; i < _ids.length; ++i) { + uint256 idx = _ids[i]; + + require(instances[idx].addr != address(0), SGX_INVALID_INSTANCE()); + + emit InstanceDeleted(idx, instances[idx].addr); + + delete instances[idx]; + } + } + + function _addInstances( + address[] memory _instances, + bool instantValid + ) + internal + returns (uint256[] memory ids) + { + ids = new uint256[](_instances.length); + + uint64 validSince = uint64(block.timestamp); + + if (!instantValid) { + validSince += INSTANCE_VALIDITY_DELAY; + } + + for (uint256 i; i < _instances.length; ++i) { + require(!addressRegistered[_instances[i]], SGX_ALREADY_ATTESTED()); + + addressRegistered[_instances[i]] = true; + + require(_instances[i] != address(0), SGX_INVALID_INSTANCE()); + + instances[nextInstanceId] = Instance(_instances[i], validSince); + ids[i] = nextInstanceId; + + emit InstanceAdded(nextInstanceId, _instances[i], address(0), validSince); + + ++nextInstanceId; + } + } + + function _replaceInstance(uint256 id, address oldInstance, address newInstance) internal { + // Replacing an instance means, it went through a cooldown (if added by on-chain RA) so no + // need to have a cooldown + instances[id] = Instance(newInstance, uint64(block.timestamp)); + emit InstanceAdded(id, newInstance, oldInstance, block.timestamp); + } + + function _isInstanceValid(uint256 id, address instance) internal view returns (bool) { + if (instance == address(0)) return false; + if (instance != instances[id].addr) return false; + return instances[id].validSince <= block.timestamp + && block.timestamp <= instances[id].validSince + INSTANCE_EXPIRY; + } +} diff --git a/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol b/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol index 345d354cbd2..da4d2ef4bda 100644 --- a/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol +++ b/packages/protocol/contracts/layer1/verifiers/compose/ComposeVerifier.sol @@ -19,14 +19,13 @@ abstract contract ComposeVerifier is EssentialContract, IVerifier { bytes proof; } - error CV_DUPLICATE_SUBPROOF(); error CV_INVALID_CALLER(); error CV_INVALID_SUB_VERIFIER(); error CV_INVALID_SUBPROOF_LENGTH(); error CV_SUB_VERIFIER_NOT_FOUND(); modifier onlyAuthorizedCaller() { - if (!isCallerAuthorized(msg.sender)) revert CV_INVALID_CALLER(); + require(isCallerAuthorized(msg.sender), CV_INVALID_CALLER()); _; } @@ -50,10 +49,10 @@ abstract contract ComposeVerifier is EssentialContract, IVerifier { (address[] memory verifiers, uint256 numSubProofs_) = getSubVerifiersAndThreshold(); SubProof[] memory subProofs = abi.decode(_proof.data, (SubProof[])); - if (subProofs.length != numSubProofs_) revert CV_INVALID_SUBPROOF_LENGTH(); + require(subProofs.length == numSubProofs_, CV_INVALID_SUBPROOF_LENGTH()); for (uint256 i; i < subProofs.length; ++i) { - if (subProofs[i].verifier == address(0)) revert CV_INVALID_SUB_VERIFIER(); + require(subProofs[i].verifier != address(0), CV_INVALID_SUB_VERIFIER()); // find the verifier bool verifierFound; @@ -64,7 +63,7 @@ abstract contract ComposeVerifier is EssentialContract, IVerifier { } } - if (!verifierFound) revert CV_SUB_VERIFIER_NOT_FOUND(); + require(verifierFound, CV_SUB_VERIFIER_NOT_FOUND()); IVerifier(subProofs[i].verifier).verifyProof( _ctx, _tran, TaikoData.TierProof(_proof.tier, subProofs[i].proof) @@ -84,10 +83,10 @@ abstract contract ComposeVerifier is EssentialContract, IVerifier { (address[] memory verifiers, uint256 numSubProofs_) = getSubVerifiersAndThreshold(); SubProof[] memory subProofs = abi.decode(_proof.data, (SubProof[])); - if (subProofs.length != numSubProofs_) revert CV_INVALID_SUBPROOF_LENGTH(); + require(subProofs.length == numSubProofs_, CV_INVALID_SUBPROOF_LENGTH()); for (uint256 i; i < subProofs.length; ++i) { - if (subProofs[i].verifier == address(0)) revert CV_DUPLICATE_SUBPROOF(); + require(subProofs[i].verifier != address(0), CV_INVALID_SUB_VERIFIER()); // find the verifier bool verifierFound; @@ -98,7 +97,7 @@ abstract contract ComposeVerifier is EssentialContract, IVerifier { } } - if (!verifierFound) revert CV_SUB_VERIFIER_NOT_FOUND(); + require(verifierFound, CV_SUB_VERIFIER_NOT_FOUND()); IVerifier(subProofs[i].verifier).verifyBatchProof( _ctxs, TaikoData.TierProof(_proof.tier, subProofs[i].proof) diff --git a/packages/protocol/contracts/layer2/based/Lib1559Math.sol b/packages/protocol/contracts/layer2/based/LibEIP1559.sol similarity index 93% rename from packages/protocol/contracts/layer2/based/Lib1559Math.sol rename to packages/protocol/contracts/layer2/based/LibEIP1559.sol index 99502d13dd3..14dca051fb0 100644 --- a/packages/protocol/contracts/layer2/based/Lib1559Math.sol +++ b/packages/protocol/contracts/layer2/based/LibEIP1559.sol @@ -4,14 +4,15 @@ pragma solidity ^0.8.24; import "@solady/src/utils/FixedPointMathLib.sol"; import "src/shared/common/LibMath.sol"; -/// @title Lib1559Math +/// @title LibEIP1559 /// @notice Implements e^(x) based bonding curve for EIP-1559 /// @dev See https://ethresear.ch/t/make-eip-1559-more-like-an-amm-curve/9082 but some minor /// difference as stated in docs/eip1559_on_l2.md. /// @custom:security-contact security@taiko.xyz -library Lib1559Math { +library LibEIP1559 { using LibMath for uint256; + /// @notice The maximum allowable input value for the exp() function. uint128 public constant MAX_EXP_INPUT = 135_305_999_368_893_231_588; error EIP1559_INVALID_PARAMS(); @@ -41,7 +42,7 @@ library Lib1559Math { } /// @dev Returns the new gas excess that will keep the basefee the same. - /// `_newGasTarget * ln(_newGasTarget / _target) + _gasExcess * _newGasTarget / _target` + /// `_newGasTarget * ln(_newGasTarget / _gasTarget) + _gasExcess * _newGasTarget / _gasTarget` function adjustExcess( uint64 _gasExcess, uint64 _gasTarget, diff --git a/packages/protocol/contracts/layer2/based/LibL2Config.sol b/packages/protocol/contracts/layer2/based/LibL2Config.sol index e4ad74e2cc9..f1a7586d7f7 100644 --- a/packages/protocol/contracts/layer2/based/LibL2Config.sol +++ b/packages/protocol/contracts/layer2/based/LibL2Config.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; +/// @dev DEPRECATED but used by node/client for syncing old blocks /// @title LibL2Config library LibL2Config { struct Config { diff --git a/packages/protocol/contracts/layer2/based/TaikoL2.sol b/packages/protocol/contracts/layer2/based/TaikoL2.sol index ff7ba2c657d..d2befc46d41 100644 --- a/packages/protocol/contracts/layer2/based/TaikoL2.sol +++ b/packages/protocol/contracts/layer2/based/TaikoL2.sol @@ -9,7 +9,7 @@ import "src/shared/common/EssentialContract.sol"; import "src/shared/common/LibStrings.sol"; import "src/shared/common/LibAddress.sol"; import "src/shared/signal/ISignalService.sol"; -import "./Lib1559Math.sol"; +import "./LibEIP1559.sol"; import "./LibL2Config.sol"; import "./IBlockHash.sol"; @@ -41,7 +41,11 @@ contract TaikoL2 is EssentialContract, IBlockHash { /// @notice The last synced L1 block height. uint64 public lastSyncedBlock; + + /// @notice The last L2 block's timestamp. uint64 public parentTimestamp; + + /// @notice The last L2 block's gas target. uint64 public parentGasTarget; /// @notice The L1's chain ID. @@ -106,6 +110,7 @@ contract TaikoL2 is EssentialContract, IBlockHash { (publicInputHash,) = _calcPublicInputHash(block.number); } + /// @dev DEPRECATED but used by node/client for syncing old blocks /// @notice Anchors the latest L1 block details to L2 for cross-layer /// message verification. /// @dev This function can be called freely as the golden touch private key is publicly known, @@ -160,6 +165,15 @@ contract TaikoL2 is EssentialContract, IBlockHash { emit Anchored(parentHash, newGasExcess); } + /// @notice Anchors the latest L1 block details to L2 for cross-layer + /// message verification. + /// @dev This function can be called freely as the golden touch private key is publicly known, + /// but the Taiko node guarantees the first transaction of each block is always this anchor + /// transaction, and any subsequent calls will revert with L2_PUBLIC_INPUT_HASH_MISMATCH. + /// @param _anchorBlockId The `anchorBlockId` value in this block's metadata. + /// @param _anchorStateRoot The state root for the L1 block with id equals `_anchorBlockId`. + /// @param _parentGasUsed The gas used in the parent block. + /// @param _baseFeeConfig The base fee configuration. function anchorV2( uint64 _anchorBlockId, bytes32 _anchorStateRoot, @@ -230,7 +244,9 @@ contract TaikoL2 is EssentialContract, IBlockHash { emit Anchored(parentHash, parentGasExcess); } - /// @notice Withdraw token or Ether from this address + /// @notice Withdraw token or Ether from this address. + /// Note: This contract receives a portion of L2 base fees, while the remainder is directed to + /// L2 block's coinbase address. /// @param _token Token address or address(0) if Ether. /// @param _to Withdraw to address. function withdraw( @@ -238,11 +254,11 @@ contract TaikoL2 is EssentialContract, IBlockHash { address _to ) external + nonZeroAddr(_to) whenNotPaused onlyFromOwnerOrNamed(LibStrings.B_WITHDRAWER) nonReentrant { - if (_to == address(0)) revert L2_INVALID_PARAM(); if (_token == address(0)) { _to.sendEtherAndVerify(address(this).balance); } else { @@ -250,10 +266,9 @@ contract TaikoL2 is EssentialContract, IBlockHash { } } + /// @dev DEPRECATED but used by node/client for syncing old blocks /// @notice Gets the basefee and gas excess using EIP-1559 configuration for /// the given parameters. - /// @dev This function will deprecate after Ontake fork, node/client shall use calculateBaseFee - /// instead for base fee prediction. /// @param _anchorBlockId The synced L1 height in the next Taiko block /// @param _parentGasUsed Gas used in the parent block. /// @return basefee_ The calculated EIP-1559 base fee per gas. @@ -266,9 +281,9 @@ contract TaikoL2 is EssentialContract, IBlockHash { view returns (uint256 basefee_, uint64 parentGasExcess_) { - LibL2Config.Config memory config = getConfig(); + LibL2Config.Config memory config = LibL2Config.get(); - (basefee_, parentGasExcess_) = Lib1559Math.calc1559BaseFee( + (basefee_, parentGasExcess_) = LibEIP1559.calc1559BaseFee( uint256(config.gasTargetPerL1Block) * config.basefeeAdjustmentQuotient, parentGasExcess, uint64(_anchorBlockId - lastSyncedBlock) * config.gasTargetPerL1Block, @@ -284,12 +299,6 @@ contract TaikoL2 is EssentialContract, IBlockHash { return _blockhashes[_blockId]; } - /// @notice Returns EIP1559 related configurations. - /// @return config_ struct containing configuration parameters. - function getConfig() public view virtual returns (LibL2Config.Config memory) { - return LibL2Config.get(); - } - /// @notice Returns the new gas excess that will keep the basefee the same. /// @param _currGasExcess The current gas excess value. /// @param _currGasTarget The current gas target. @@ -304,7 +313,7 @@ contract TaikoL2 is EssentialContract, IBlockHash { pure returns (uint64 newGasExcess_) { - return Lib1559Math.adjustExcess(_currGasExcess, _currGasTarget, _newGasTarget); + return LibEIP1559.adjustExcess(_currGasExcess, _currGasTarget, _newGasTarget); } /// @notice Tells if we need to validate basefee (for simulation). @@ -313,6 +322,14 @@ contract TaikoL2 is EssentialContract, IBlockHash { return false; } + /// @notice Returns the parent timestamp. + /// @return The timestamp of the parent block. + function getParentTimestamp() public view returns (uint64) { + return parentTimestamp; + } + + /// @notice Returns the Ontake fork height. + /// @return The Ontake fork height. function ontakeForkHeight() public pure virtual returns (uint64) { return 0; } @@ -346,11 +363,18 @@ contract TaikoL2 is EssentialContract, IBlockHash { uint256 gasTarget = uint256(_baseFeeConfig.gasIssuancePerSecond) * _baseFeeConfig.adjustmentQuotient; - return Lib1559Math.calc1559BaseFee( + return LibEIP1559.calc1559BaseFee( gasTarget, _parentGasExcess, gasIssuance, _parentGasUsed, _baseFeeConfig.minGasExcess ); } + /// @notice Calculates the public input hash for the given block ID. + /// @dev This function computes two public input hashes: one for the previous state and one for + /// the new state. + /// It uses a ring buffer to store the previous 255 block hashes and the current chain ID. + /// @param _blockId The ID of the block for which the public input hash is calculated. + /// @return publicInputHashOld The public input hash for the previous state. + /// @return publicInputHashNew The public input hash for the new state. function _calcPublicInputHash(uint256 _blockId) private view diff --git a/packages/protocol/contracts/layer2/devnet/DevnetTaikoL2.sol b/packages/protocol/contracts/layer2/devnet/DevnetTaikoL2.sol index bf3328a15cb..129438bc756 100644 --- a/packages/protocol/contracts/layer2/devnet/DevnetTaikoL2.sol +++ b/packages/protocol/contracts/layer2/devnet/DevnetTaikoL2.sol @@ -7,6 +7,6 @@ import "../based/TaikoL2.sol"; /// @custom:security-contact security@taiko.xyz contract DevnetTaikoL2 is TaikoL2 { function ontakeForkHeight() public pure override returns (uint64) { - return 2; + return 0; } } diff --git a/packages/protocol/contracts/shared/bridge/Bridge.sol b/packages/protocol/contracts/shared/bridge/Bridge.sol index 9805db23013..eb18c5ef7a6 100644 --- a/packages/protocol/contracts/shared/bridge/Bridge.sol +++ b/packages/protocol/contracts/shared/bridge/Bridge.sol @@ -469,7 +469,7 @@ contract Bridge is EssentialContract, IBridge { /// @dev Considering that the watchdog is a hot wallet, in case its private key is leaked, we /// only allow watchdog to pause the bridge, but does not allow it to unpause the bridge. function _authorizePause(address addr, bool toPause) internal view override { - // Owner and chain_pauser can pause/unpause the bridge. + // Owner and chain watchdog can pause/unpause the bridge. if (addr == owner() || addr == resolve(LibStrings.B_CHAIN_WATCHDOG, true)) return; // bridge_watchdog can pause the bridge, but cannot unpause it. diff --git a/packages/protocol/contracts/shared/common/AddressManager.sol b/packages/protocol/contracts/shared/common/AddressManager.sol index 0fe5dddc5c7..ac0ab0ae7ea 100644 --- a/packages/protocol/contracts/shared/common/AddressManager.sol +++ b/packages/protocol/contracts/shared/common/AddressManager.sol @@ -48,7 +48,7 @@ contract AddressManager is EssentialContract, IAddressManager { onlyOwner { address oldAddress = __addresses[_chainId][_name]; - if (_newAddress == oldAddress) revert AM_ADDRESS_ALREADY_SET(); + require(_newAddress != oldAddress, AM_ADDRESS_ALREADY_SET()); __addresses[_chainId][_name] = _newAddress; emit AddressSet(_chainId, _name, _newAddress, oldAddress); } diff --git a/packages/protocol/contracts/shared/common/AddressResolver.sol b/packages/protocol/contracts/shared/common/AddressResolver.sol index d00705f9255..ebfaec3a8be 100644 --- a/packages/protocol/contracts/shared/common/AddressResolver.sol +++ b/packages/protocol/contracts/shared/common/AddressResolver.sol @@ -22,7 +22,7 @@ abstract contract AddressResolver is IAddressResolver, Initializable { /// name. /// @param _name The name to check against. modifier onlyFromNamed(bytes32 _name) { - if (msg.sender != resolve(_name, true)) revert RESOLVER_DENIED(); + require(msg.sender == resolve(_name, true), RESOLVER_DENIED()); _; } @@ -31,7 +31,7 @@ abstract contract AddressResolver is IAddressResolver, Initializable { /// @param _name The name to check against. modifier onlyFromOptionalNamed(bytes32 _name) { address addr = resolve(_name, true); - if (addr != address(0) && msg.sender != addr) revert RESOLVER_DENIED(); + require(addr == address(0) || msg.sender == addr, RESOLVER_DENIED()); _; } @@ -40,9 +40,10 @@ abstract contract AddressResolver is IAddressResolver, Initializable { /// @param _name1 The first name to check against. /// @param _name2 The second name to check against. modifier onlyFromNamedEither(bytes32 _name1, bytes32 _name2) { - if (msg.sender != resolve(_name1, true) && msg.sender != resolve(_name2, true)) { - revert RESOLVER_DENIED(); - } + require( + msg.sender == resolve(_name1, true) || msg.sender == resolve(_name2, true), + RESOLVER_DENIED() + ); _; } @@ -73,9 +74,8 @@ abstract contract AddressResolver is IAddressResolver, Initializable { /// @dev Initialization method for setting up AddressManager reference. /// @param _addressManager Address of the AddressManager. function __AddressResolver_init(address _addressManager) internal virtual onlyInitializing { - if (block.chainid > type(uint64).max) { - revert RESOLVER_UNEXPECTED_CHAINID(); - } + require(block.chainid <= type(uint64).max, RESOLVER_UNEXPECTED_CHAINID()); + addressManager = _addressManager; } @@ -97,14 +97,12 @@ abstract contract AddressResolver is IAddressResolver, Initializable { { addr_ = _getAddress(_chainId, _name); - if (!_allowZeroAddress && addr_ == address(0)) { - revert RESOLVER_ZERO_ADDR(_chainId, _name); - } + require(_allowZeroAddress || addr_ != address(0), RESOLVER_ZERO_ADDR(_chainId, _name)); } function _getAddress(uint64 _chainId, bytes32 _name) internal view virtual returns (address) { address _addressManager = addressManager; - if (_addressManager == address(0)) revert RESOLVER_INVALID_MANAGER(); + require(_addressManager != address(0), RESOLVER_INVALID_MANAGER()); return IAddressManager(_addressManager).getAddress(_chainId, _name); } diff --git a/packages/protocol/contracts/shared/common/EssentialContract.sol b/packages/protocol/contracts/shared/common/EssentialContract.sol index 777ce8809ff..654393b21e7 100644 --- a/packages/protocol/contracts/shared/common/EssentialContract.sol +++ b/packages/protocol/contracts/shared/common/EssentialContract.sol @@ -8,13 +8,13 @@ import "./AddressResolver.sol"; /// @title EssentialContract /// @custom:security-contact security@taiko.xyz abstract contract EssentialContract is UUPSUpgradeable, Ownable2StepUpgradeable, AddressResolver { - uint8 private constant _FALSE = 1; - uint8 private constant _TRUE = 2; + uint8 internal constant _FALSE = 1; + uint8 internal constant _TRUE = 2; /// @dev Slot 1. - uint8 private __reentry; - uint8 private __paused; - uint64 public lastUnpausedAt; + uint8 internal __reentry; + uint8 internal __paused; + uint64 internal __lastUnpausedAt; uint256[49] private __gap; @@ -35,7 +35,7 @@ abstract contract EssentialContract is UUPSUpgradeable, Ownable2StepUpgradeable, /// @dev Modifier that ensures the caller is the owner or resolved address of a given name. /// @param _name The name to check against. modifier onlyFromOwnerOrNamed(bytes32 _name) { - if (msg.sender != owner() && msg.sender != resolve(_name, true)) revert RESOLVER_DENIED(); + require(msg.sender == owner() || msg.sender == resolve(_name, true), RESOLVER_DENIED()); _; } @@ -45,29 +45,29 @@ abstract contract EssentialContract is UUPSUpgradeable, Ownable2StepUpgradeable, } modifier nonReentrant() { - if (_loadReentryLock() == _TRUE) revert REENTRANT_CALL(); + require(_loadReentryLock() != _TRUE, REENTRANT_CALL()); _storeReentryLock(_TRUE); _; _storeReentryLock(_FALSE); } modifier whenPaused() { - if (!paused()) revert INVALID_PAUSE_STATUS(); + require(paused(), INVALID_PAUSE_STATUS()); _; } modifier whenNotPaused() { - if (paused()) revert INVALID_PAUSE_STATUS(); + require(!paused(), INVALID_PAUSE_STATUS()); _; } modifier nonZeroAddr(address _addr) { - if (_addr == address(0)) revert ZERO_ADDRESS(); + require(_addr != address(0), ZERO_ADDRESS()); _; } modifier nonZeroValue(uint256 _value) { - if (_value == 0) revert ZERO_VALUE(); + require(_value != 0, ZERO_VALUE()); _; } @@ -102,6 +102,10 @@ abstract contract EssentialContract is UUPSUpgradeable, Ownable2StepUpgradeable, return __paused == _TRUE; } + function lastUnpausedAt() public view virtual returns (uint64) { + return __lastUnpausedAt; + } + function inNonReentrant() public view returns (bool) { return _loadReentryLock() == _TRUE; } @@ -133,7 +137,7 @@ abstract contract EssentialContract is UUPSUpgradeable, Ownable2StepUpgradeable, function _unpause() internal whenPaused { __paused = _FALSE; - lastUnpausedAt = uint64(block.timestamp); + __lastUnpausedAt = uint64(block.timestamp); emit Unpaused(msg.sender); } diff --git a/packages/protocol/contracts/shared/common/LibAddress.sol b/packages/protocol/contracts/shared/common/LibAddress.sol index 6e14eddfff7..5bc0cd324ae 100644 --- a/packages/protocol/contracts/shared/common/LibAddress.sol +++ b/packages/protocol/contracts/shared/common/LibAddress.sol @@ -27,7 +27,7 @@ library LibAddress { returns (bool success_) { // Check for zero-address transactions - if (_to == address(0)) revert ETH_TRANSFER_FAILED(); + require(_to != address(0), ETH_TRANSFER_FAILED()); // dispatch message to recipient // by assembly calling "handle" function // we call via assembly to avoid memcopying a very large returndata @@ -52,9 +52,7 @@ library LibAddress { /// @param _gasLimit The max amount gas to pay for this transaction. function sendEtherAndVerify(address _to, uint256 _amount, uint256 _gasLimit) internal { if (_amount == 0) return; - if (!sendEther(_to, _amount, _gasLimit, "")) { - revert ETH_TRANSFER_FAILED(); - } + require(sendEther(_to, _amount, _gasLimit, ""), ETH_TRANSFER_FAILED()); } /// @dev Sends Ether to the specified address. This method will revert if sending ether fails. diff --git a/packages/protocol/contracts/shared/common/LibBytes.sol b/packages/protocol/contracts/shared/common/LibBytes.sol index e8818321561..39c0bf442fb 100644 --- a/packages/protocol/contracts/shared/common/LibBytes.sol +++ b/packages/protocol/contracts/shared/common/LibBytes.sol @@ -34,7 +34,7 @@ library LibBytes { function revertWithExtractedError(bytes memory _returnData) internal pure { // If the _res length is less than 68, then // the transaction failed with custom error or silently (without a revert message) - if (_returnData.length < 68) revert INNER_ERROR(_returnData); + require(_returnData.length >= 68, INNER_ERROR(_returnData)); assembly { // Slice the sighash. diff --git a/packages/protocol/contracts/shared/common/LibStrings.sol b/packages/protocol/contracts/shared/common/LibStrings.sol index db4c00a20ae..b4e6093bfbe 100644 --- a/packages/protocol/contracts/shared/common/LibStrings.sol +++ b/packages/protocol/contracts/shared/common/LibStrings.sol @@ -14,7 +14,7 @@ library LibStrings { bytes32 internal constant B_ERC1155_VAULT = bytes32("erc1155_vault"); bytes32 internal constant B_ERC20_VAULT = bytes32("erc20_vault"); bytes32 internal constant B_ERC721_VAULT = bytes32("erc721_vault"); - bytes32 internal constant B_PRECONF_REGISTRY = bytes32("preconf_registry"); + bytes32 internal constant B_PRECONF_TASK_MANAGER = bytes32("preconf_task_manager"); bytes32 internal constant B_PROVER_ASSIGNMENT = bytes32("PROVER_ASSIGNMENT"); bytes32 internal constant B_PROVER_SET = bytes32("prover_set"); bytes32 internal constant B_QUOTA_MANAGER = bytes32("quota_manager"); diff --git a/packages/protocol/contracts/shared/common/LibTrieProof.sol b/packages/protocol/contracts/shared/common/LibTrieProof.sol index bb3cc7e0d9e..d65e7c4f9ec 100644 --- a/packages/protocol/contracts/shared/common/LibTrieProof.sol +++ b/packages/protocol/contracts/shared/common/LibTrieProof.sol @@ -47,7 +47,7 @@ library LibTrieProof { bytes memory rlpAccount = SecureMerkleTrie.get(abi.encodePacked(_addr), _accountProof, _rootHash); - if (rlpAccount.length == 0) revert LTP_INVALID_ACCOUNT_PROOF(); + require(rlpAccount.length != 0, LTP_INVALID_ACCOUNT_PROOF()); RLPReader.RLPItem[] memory accountState = RLPReader.readList(rlpAccount); @@ -61,6 +61,6 @@ library LibTrieProof { bytes.concat(_slot), RLPWriter.writeUint(uint256(_value)), _storageProof, storageRoot_ ); - if (!verified) revert LTP_INVALID_INCLUSION_PROOF(); + require(verified, LTP_INVALID_INCLUSION_PROOF()); } } diff --git a/packages/protocol/foundry.toml b/packages/protocol/foundry.toml index 7012fe4b58d..f66986cfb74 100644 --- a/packages/protocol/foundry.toml +++ b/packages/protocol/foundry.toml @@ -8,10 +8,9 @@ ffi = true memory_limit = 2_073_741_824 solc_version = "0.8.27" remappings = [ - "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/", - "openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/", - "@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/", - "openzeppelin/contracts/=node_modules/@openzeppelin/contracts/", + "openzeppelin/=node_modules/@openzeppelin/", + "@openzeppelin=node_modules/@openzeppelin", + "@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/", "@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/", "@solady/=node_modules/solady/", "@optimism/=node_modules/optimism/", @@ -19,9 +18,11 @@ remappings = [ "forge-std/=node_modules/forge-std/", "ds-test/=node_modules/ds-test/src/", "@p256-verifier/contracts/=node_modules/p256-verifier/src/", + "eigenlayer-middleware/=node_modules/eigenlayer-middleware/", + "eigenlayer-contracts/=node_modules/eigenlayer-contracts/", "src/=contracts/", "test/=test/", - "script/=script/" + "script/=script/", ] # Do not change the block_gas_limit value, TaikoL2.t.sol depends on it. diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 864bcdb5467..06ef101d309 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -44,6 +44,8 @@ "@openzeppelin/contracts": "4.9.6", "@openzeppelin/contracts-upgradeable": "4.9.6", "ds-test": "github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0", + "eigenlayer-contracts": "github:Layr-labs/eigenlayer-contracts#dev", + "eigenlayer-middleware": "github:layr-Labs/eigenlayer-middleware#mainnet", "forge-std": "github:foundry-rs/forge-std#v1.7.5", "merkletreejs": "^0.4.0", "optimism": "github:ethereum-optimism/optimism#v1.8.0", diff --git a/packages/protocol/script/layer1/preconf/BaseScript.sol b/packages/protocol/script/layer1/preconf/BaseScript.sol new file mode 100644 index 00000000000..e0a8926d9ae --- /dev/null +++ b/packages/protocol/script/layer1/preconf/BaseScript.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "forge-std/src/Script.sol"; +import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +contract BaseScript is Script { + modifier broadcast() { + uint256 privateKey = vm.envUint("PRIVATE_KEY"); + require(privateKey != 0, "BaseScript: invalid private key"); + + vm.startBroadcast(); + _; + vm.stopBroadcast(); + } + + function deployProxy( + address _impl, + address _admin, + bytes memory _data + ) + internal + returns (address) + { + TransparentUpgradeableProxy proxy = new TransparentUpgradeableProxy(_impl, _admin, _data); + return address(proxy); + } +} diff --git a/packages/protocol/script/layer1/preconf/deployment/DeployAVS.s.sol b/packages/protocol/script/layer1/preconf/deployment/DeployAVS.s.sol new file mode 100644 index 00000000000..702f4df46a4 --- /dev/null +++ b/packages/protocol/script/layer1/preconf/deployment/DeployAVS.s.sol @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "forge-std/src/Script.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +import "src/layer1/based/ITaikoL1.sol"; +import "src/layer1/preconf/impl/PreconfRegistry.sol"; +import "src/layer1/preconf/avs-mvp/PreconfServiceManager.sol"; +import "src/layer1/preconf/avs-mvp/iface/IAVSDirectory.sol"; +import "src/layer1/preconf/avs-mvp/iface/ISlasher.sol"; +import "src/layer1/preconf/impl/PreconfTaskManager.sol"; + +import "../BaseScript.sol"; +import "../misc/EmptyContract.sol"; + +contract DeployAVS is BaseScript { + // Required by service manager + address public implDirectory = vm.envAddress("AVS_DIRECTORY"); + address public slasher = vm.envAddress("SLASHER"); + + // Required by task manager + address public taikoL1 = vm.envAddress("TAIKO_L1"); + address public taikoToken = vm.envAddress("TAIKO_TOKEN"); + uint256 public beaconGenesisTimestamp = vm.envUint("BEACON_GENESIS_TIMESTAMP"); + address public beaconBlockRootContract = vm.envAddress("BEACON_BLOCK_ROOT_CONTRACT"); + + function run() external broadcast { + EmptyContract emptyContract = new EmptyContract(); + ProxyAdmin proxyAdmin = new ProxyAdmin(); + + // Deploy proxies with empty implementations + address preconfRegistry = deployProxy(address(emptyContract), address(proxyAdmin), ""); + address preconfServiceManager = deployProxy(address(emptyContract), address(proxyAdmin), ""); + address preconfTaskManager = deployProxy(address(emptyContract), address(proxyAdmin), ""); + + // Deploy implementations + PreconfRegistry preconfRegistryImpl = + new PreconfRegistry(IPreconfServiceManager(preconfServiceManager)); + PreconfServiceManager preconfServiceManagerImpl = new PreconfServiceManager( + preconfRegistry, preconfTaskManager, IAVSDirectory(implDirectory), ISlasher(slasher) + ); + PreconfTaskManager preconfTaskManagerImpl = new PreconfTaskManager( + IPreconfServiceManager(preconfServiceManager), + IPreconfRegistry(preconfRegistry), + ITaikoL1(taikoL1), + beaconGenesisTimestamp, + beaconBlockRootContract + ); + + // Upgrade proxies with implementations + proxyAdmin.upgradeAndCall( + ITransparentUpgradeableProxy(preconfRegistry), + address(preconfRegistryImpl), + abi.encodeCall(PreconfRegistry.init, ()) + ); + proxyAdmin.upgrade( + ITransparentUpgradeableProxy(preconfServiceManager), address(preconfServiceManagerImpl) + ); + proxyAdmin.upgradeAndCall( + ITransparentUpgradeableProxy(preconfTaskManager), + address(preconfTaskManagerImpl), + abi.encodeCall(PreconfTaskManager.init, IERC20(taikoToken)) + ); + + console2.log("Proxy admin: ", address(proxyAdmin)); + console2.log("Preconf Registry: ", preconfRegistry); + console2.log("Preconf Service Manager: ", preconfServiceManager); + console2.log("Preconf Task Manager: ", preconfTaskManager); + } +} diff --git a/packages/protocol/script/layer1/preconf/deployment/DeployEigenlayerMVP.s.sol b/packages/protocol/script/layer1/preconf/deployment/DeployEigenlayerMVP.s.sol new file mode 100644 index 00000000000..cec20b27f87 --- /dev/null +++ b/packages/protocol/script/layer1/preconf/deployment/DeployEigenlayerMVP.s.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "forge-std/src/Script.sol"; +import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +import "src/layer1/preconf/avs-mvp/impl/DelegationManager.sol"; +import "src/layer1/preconf/avs-mvp/impl/StrategyManager.sol"; +import "src/layer1/preconf/avs-mvp/impl/Slasher.sol"; +import "src/layer1/preconf/avs-mvp/impl/AVSDirectory.sol"; + +import "../BaseScript.sol"; +import "../misc/EmptyContract.sol"; + +contract DeployEigenlayerMVP is BaseScript { + function run() external broadcast { + EmptyContract emptyContract = new EmptyContract(); + ProxyAdmin proxyAdmin = new ProxyAdmin(); + + // Deploy proxies with empty implementations + address avsDirectory = deployProxy(address(emptyContract), address(proxyAdmin), ""); + address delegationManager = deployProxy(address(emptyContract), address(proxyAdmin), ""); + address strategyManager = deployProxy(address(emptyContract), address(proxyAdmin), ""); + address slasher = deployProxy(address(emptyContract), address(proxyAdmin), ""); + + // Deploy implementations + AVSDirectory avsDirectoryImpl = new AVSDirectory(); + DelegationManager delegationManagerImpl = + new DelegationManager(IStrategyManager(strategyManager)); + StrategyManager strategyManagerImpl = + new StrategyManager(IDelegationManager(delegationManager)); + Slasher slasherImpl = new Slasher(); + + // Upgrade proxies with implementations + proxyAdmin.upgrade(ITransparentUpgradeableProxy(avsDirectory), address(avsDirectoryImpl)); + proxyAdmin.upgrade( + ITransparentUpgradeableProxy(delegationManager), address(delegationManagerImpl) + ); + proxyAdmin.upgrade( + ITransparentUpgradeableProxy(strategyManager), address(strategyManagerImpl) + ); + proxyAdmin.upgrade(ITransparentUpgradeableProxy(slasher), address(slasherImpl)); + + console2.log("AVS Directory: ", avsDirectory); + console2.log("Delegation Manager: ", delegationManager); + console2.log("Strategy Manager: ", strategyManager); + console2.log("Slasher: ", slasher); + } +} diff --git a/packages/protocol/script/layer1/preconf/deployment/deploy_avs.sh b/packages/protocol/script/layer1/preconf/deployment/deploy_avs.sh new file mode 100644 index 00000000000..eb494a26207 --- /dev/null +++ b/packages/protocol/script/layer1/preconf/deployment/deploy_avs.sh @@ -0,0 +1,17 @@ +set -e + +: "${PRIVATE_KEY:?Environment variable PRIVATE_KEY is required}" +: "${FORK_URL:?Environment variable FORK_URL is required}" +: "${AVS_DIRECTORY:?Environment variable AVS_DIRECTORY is required}" +: "${SLASHER:?Environment variable SLASHER is required}" +: "${TAIKO_L1:?Environment variable TAIKO_L1 is required}" +: "${TAIKO_TOKEN:?Environment variable TAIKO_TOKEN is required}" +: "${BEACON_GENESIS_TIMESTAMP:?Environment variable BEACON_GENESIS_TIMESTAMP is required}" +: "${BEACON_BLOCK_ROOT_CONTRACT:?Environment variable BEACON_BLOCK_ROOT_CONTRACT is required}" +echo "BEACON_GENESIS_TIMESTAMP: $BEACON_GENESIS_TIMESTAMP" + +forge script scripts/deployment/DeployAVS.s.sol:DeployAVS \ + --fork-url $FORK_URL \ + --broadcast \ + --skip-simulation \ + --private-key $PRIVATE_KEY \ No newline at end of file diff --git a/packages/protocol/script/layer1/preconf/deployment/deploy_eigenlayer_mvp.sh b/packages/protocol/script/layer1/preconf/deployment/deploy_eigenlayer_mvp.sh new file mode 100644 index 00000000000..b0465281eb1 --- /dev/null +++ b/packages/protocol/script/layer1/preconf/deployment/deploy_eigenlayer_mvp.sh @@ -0,0 +1,10 @@ +set -e + +: "${PRIVATE_KEY:?Environment variable PRIVATE_KEY is required}" +: "${FORK_URL:?Environment variable FORK_URL is required}" + +forge script scripts/deployment/DeployEigenlayerMVP.s.sol:DeployEigenlayerMVP \ + --rpc-url $FORK_URL \ + --broadcast \ + --skip-simulation \ + --private-key $PRIVATE_KEY \ No newline at end of file diff --git a/packages/protocol/script/layer1/preconf/deployment/mock/DeployMockAVS.s.sol b/packages/protocol/script/layer1/preconf/deployment/mock/DeployMockAVS.s.sol new file mode 100644 index 00000000000..a0dbcb9d095 --- /dev/null +++ b/packages/protocol/script/layer1/preconf/deployment/mock/DeployMockAVS.s.sol @@ -0,0 +1,75 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "forge-std/src/Script.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +import "src/layer1/based/ITaikoL1.sol"; +import "src/layer1/preconf/mock/MockPreconfRegistry.sol"; +import "src/layer1/preconf/impl/PreconfTaskManager.sol"; +import "src/layer1/preconf/iface/IPreconfRegistry.sol"; +import "src/layer1/preconf/iface/IPreconfTaskManager.sol"; +import "src/layer1/preconf/avs-mvp/iface/IAVSDirectory.sol"; +import "src/layer1/preconf/avs-mvp/iface/ISlasher.sol"; +import "src/layer1/preconf/avs-mvp/PreconfServiceManager.sol"; + +import "../../BaseScript.sol"; +import "../../misc/EmptyContract.sol"; + +contract DeployMockAVS is BaseScript { + // Required by service manager + address public avsDirectory = vm.envAddress("AVS_DIRECTORY"); + address public slasher = vm.envAddress("SLASHER"); + + // Required by task manager + address public taikoL1 = vm.envAddress("TAIKO_L1"); + address public taikoToken = vm.envAddress("TAIKO_TOKEN"); + uint256 public beaconGenesisTimestamp = vm.envUint("BEACON_GENESIS_TIMESTAMP"); + address public beaconBlockRootContract = vm.envAddress("BEACON_BLOCK_ROOT_CONTRACT"); + + function run() external broadcast { + EmptyContract emptyContract = new EmptyContract(); + ProxyAdmin proxyAdmin = new ProxyAdmin(); + + // Deploy proxies with empty implementations + address preconfRegistry = deployProxy(address(emptyContract), address(proxyAdmin), ""); + address preconfServiceManager = deployProxy(address(emptyContract), address(proxyAdmin), ""); + address preconfTaskManager = deployProxy(address(emptyContract), address(proxyAdmin), ""); + + // Deploy implementations + MockPreconfRegistry preconfRegistryImpl = + new MockPreconfRegistry(IPreconfServiceManager(preconfServiceManager)); + PreconfServiceManager preconfServiceManagerImpl = new PreconfServiceManager( + preconfRegistry, preconfTaskManager, IAVSDirectory(avsDirectory), ISlasher(slasher) + ); + PreconfTaskManager preconfTaskManagerImpl = new PreconfTaskManager( + IPreconfServiceManager(preconfServiceManager), + IPreconfRegistry(preconfRegistry), + ITaikoL1(taikoL1), + beaconGenesisTimestamp, + beaconBlockRootContract + ); + + // Upgrade proxies with implementations + proxyAdmin.upgradeAndCall( + ITransparentUpgradeableProxy(preconfRegistry), + address(preconfRegistryImpl), + abi.encodeCall(MockPreconfRegistry.init, ()) + ); + proxyAdmin.upgrade( + ITransparentUpgradeableProxy(preconfServiceManager), address(preconfServiceManagerImpl) + ); + proxyAdmin.upgradeAndCall( + ITransparentUpgradeableProxy(preconfTaskManager), + address(preconfTaskManagerImpl), + abi.encodeCall(PreconfTaskManager.init, IERC20(taikoToken)) + ); + + console2.log("Proxy admin: ", address(proxyAdmin)); + console2.log("Preconf Registry: ", preconfRegistry); + console2.log("Preconf Service Manager: ", preconfServiceManager); + console2.log("Preconf Task Manager: ", preconfTaskManager); + } +} diff --git a/packages/protocol/script/layer1/preconf/deployment/mock/DeployMockTaikoToken.s.sol b/packages/protocol/script/layer1/preconf/deployment/mock/DeployMockTaikoToken.s.sol new file mode 100644 index 00000000000..a9a8428beea --- /dev/null +++ b/packages/protocol/script/layer1/preconf/deployment/mock/DeployMockTaikoToken.s.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "forge-std/src/Script.sol"; +import "src/layer1/preconf/mock/MockTaikoToken.sol"; +import "../../BaseScript.sol"; + +contract DeployMockTaikoToken is BaseScript { + function run() external broadcast { + MockTaikoToken myContract = new MockTaikoToken(); + console2.log("MockTaikoToken:", address(myContract)); + } +} diff --git a/packages/protocol/script/layer1/preconf/misc/EmptyContract.sol b/packages/protocol/script/layer1/preconf/misc/EmptyContract.sol new file mode 100644 index 00000000000..c1158fe8b1f --- /dev/null +++ b/packages/protocol/script/layer1/preconf/misc/EmptyContract.sol @@ -0,0 +1,5 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +/// @dev This is solely used as a placeholder during empty proxy deployment +contract EmptyContract { } diff --git a/packages/protocol/test/genesis/data/genesis.json b/packages/protocol/test/genesis/data/genesis.json deleted file mode 100644 index dd2018cf98e..00000000000 --- a/packages/protocol/test/genesis/data/genesis.json +++ /dev/null @@ -1,242 +0,0 @@ - -{ - "config": { - "chainId": 167, - "homesteadBlock": 0, - "eip150Block": 0, - "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "eip155Block": 0, - "eip158Block": 0, - "byzantiumBlock": 0, - "constantinopleBlock": 0, - "petersburgBlock": 0, - "istanbulBlock": 0, - "muirGlacierBlock": 0, - "berlinBlock": 0, - "clique": { - "period": 0, - "epoch": 30000 - } - }, - "gasLimit": "30000000", - "difficulty": "1", - "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "alloc": - -{ - "0xDf08F82De32B8d460adbE8D72043E3a7e25A3B39": { - "balance": "0x3635c9adc5dea00000" - }, - "0x79fcdef22feed20eddacbb2587640e45491b757f": { - "balance": "0x3635c9adc5dea00000" - }, - "0x0167000000000000000000000000000000000006": { - "contractName": "SharedAddressManagerImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610301578063a86f9d9e1461031e578063d8f4648f1461033d578063e07baba61461035c578063e30c39781461039b578063f2fde38b146103b8575f5ffd5b80635c975abb14610291578063715018a6146102b157806379ba5097146102c55780638456cb59146102d95780638abf6077146102ed575f5ffd5b80633ab76e9f116100ee5780633ab76e9f1461020a5780633eb6b8cf146102295780633f4ba83a146102485780634f1ef2861461025c57806352d1902d1461026f575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c75780633659cfe6146101eb575b5f5ffd5b348015610135575f5ffd5b5061013e6103d7565b005b34801561014b575f5ffd5b5061013e61015a36600461110e565b610487565b34801561016a575f5ffd5b506101aa610179366004611145565b67ffffffffffffffff919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d2575f5ffd5b506101db61055f565b60405190151581526020016101be565b3480156101f6575f5ffd5b5061013e61020536600461110e565b610577565b348015610215575f5ffd5b506097546101aa906001600160a01b031681565b348015610234575f5ffd5b506101aa61024336600461117c565b61063e565b348015610253575f5ffd5b5061013e610654565b61013e61026a3660046111c9565b610668565b34801561027a575f5ffd5b5061028361071d565b6040519081526020016101be565b34801561029c575f5ffd5b506101db60c954610100900460ff1660021490565b3480156102bc575f5ffd5b5061013e6107ce565b3480156102d0575f5ffd5b5061013e6107df565b3480156102e4575f5ffd5b5061013e610856565b3480156102f8575f5ffd5b506101aa610869565b34801561030c575f5ffd5b506033546001600160a01b03166101aa565b348015610329575f5ffd5b506101aa61033836600461128f565b610877565b348015610348575f5ffd5b5061013e6103573660046112b9565b610883565b348015610367575f5ffd5b5060c9546103829062010000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101be565b3480156103a6575f5ffd5b506065546001600160a01b03166101aa565b3480156103c3575f5ffd5b5061013e6103d236600461110e565b610961565b6103df6109d2565b5f54600290610100900460ff161580156103ff57505f5460ff8083169116105b6104245760405162461bcd60e51b815260040161041b906112f6565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156104a557505f54600160ff909116105b806104be5750303b1580156104be57505f5460ff166001145b6104da5760405162461bcd60e51b815260040161041b906112f6565b5f805460ff1916600117905580156104fb575f805461ff0019166101001790555b61050482610a2c565b609780546001600160a01b03191630179055801561055b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261056e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000061630036105bf5760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670000000000000000000000000000000000066001600160a01b03166105f1610a8a565b6001600160a01b0316146106175760405162461bcd60e51b815260040161041b90611390565b61062081610aa5565b604080515f8082526020820190925261063b91839190610aad565b50565b5f61064a848484610c1c565b90505b9392505050565b61065c610c6f565b610666335f610d00565b565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000061630036106b05760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670000000000000000000000000000000000066001600160a01b03166106e2610a8a565b6001600160a01b0316146107085760405162461bcd60e51b815260040161041b90611390565b61071182610aa5565b61055b82826001610aad565b5f306001600160a01b037f000000000000000000000000016700000000000000000000000000000000000616146107bc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161041b565b505f5160206114c95f395f51905f5290565b6107d66109d2565b6106665f610d19565b60655433906001600160a01b0316811461084d5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161041b565b61063b81610d19565b61085e610d32565b610666336001610d00565b5f610872610a8a565b905090565b5f61064d468484610c1c565b61088b6109d2565b67ffffffffffffffff83165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108dd5760405163a883089360e01b815260040160405180910390fd5b67ffffffffffffffff84165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109696109d2565b606580546001600160a01b0383166001600160a01b0319909116811790915561099a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161041b565b5f54610100900460ff16610a525760405162461bcd60e51b815260040161041b906113dc565b610a5a610da3565b610a786001600160a01b03821615610a725781610d19565b33610d19565b5060c9805461ff001916610100179055565b5f5160206114c95f395f51905f52546001600160a01b031690565b61063b6109d2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610ae557610ae083610dc9565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b3f575060408051601f3d908101601f19168201909252610b3c91810190611427565b60015b610ba25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161041b565b5f5160206114c95f395f51905f528114610c105760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161041b565b50610ae0838383610e64565b5f610c278484610e8e565b905081158015610c3e57506001600160a01b038116155b1561064d57604051632b0d65db60e01b815267ffffffffffffffff851660048201526024810184905260440161041b565b610c8360c954610100900460ff1660021490565b610ca05760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff0019909116620100004267ffffffffffffffff1602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561063b81610f39565b610d4660c954610100900460ff1660021490565b15610d645760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cf6565b5f54610100900460ff166106665760405162461bcd60e51b815260040161041b906113dc565b6001600160a01b0381163b610e365760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161041b565b5f5160206114c95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610e6d83610f8a565b5f82511180610e795750805b15610ae057610e888383610fc9565b50505050565b6097545f906001600160a01b031680610eba57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b815267ffffffffffffffff85166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f31919061143e565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610f9381610dc9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061064d83836040518060600160405280602781526020016114e96027913960605f5f856001600160a01b031685604051611005919061147b565b5f60405180830381855af49150503d805f811461103d576040519150601f19603f3d011682016040523d82523d5f602084013e611042565b606091505b50915091506110538683838761105d565b9695505050505050565b606083156110cb5782515f036110c4576001600160a01b0385163b6110c45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161041b565b5081610f31565b610f3183838151156110e05781518083602001fd5b8060405162461bcd60e51b815260040161041b9190611496565b6001600160a01b038116811461063b575f5ffd5b5f6020828403121561111e575f5ffd5b813561064d816110fa565b803567ffffffffffffffff81168114611140575f5ffd5b919050565b5f5f60408385031215611156575f5ffd5b61115f83611129565b946020939093013593505050565b80358015158114611140575f5ffd5b5f5f5f6060848603121561118e575f5ffd5b61119784611129565b9250602084013591506111ac6040850161116d565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156111da575f5ffd5b82356111e5816110fa565b9150602083013567ffffffffffffffff811115611200575f5ffd5b8301601f81018513611210575f5ffd5b803567ffffffffffffffff81111561122a5761122a6111b5565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611259576112596111b5565b604052818152828201602001871015611270575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156112a0575f5ffd5b823591506112b06020840161116d565b90509250929050565b5f5f5f606084860312156112cb575f5ffd5b6112d484611129565b92506020840135915060408401356112eb816110fa565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611437575f5ffd5b5051919050565b5f6020828403121561144e575f5ffd5b815161064d816110fa565b5f5b8381101561147357818101518382015260200161145b565b50505f910152565b5f825161148c818460208701611459565b9190910192915050565b602081525f82518060208401526114b4816040850160208701611459565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220086d22e71c4d170ad7ce74f948ce47f2f39076babb18c7b950d99c756006877464736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000006": { - "contractName": "SharedAddressManager", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0xee78643889fcb54c297d0ecf866d9df7d829a8c978e52394d135cdb40a501e38": "0x0000000000000000000000001670000000000000000000000000000000000001", - "0x1b59c5b714a9474274d08839cd27e78ebbcde0eb67d55f88e6a8162fdf746fb6": "0x0000000000000000000000001670000000000000000000000000000000000002", - "0x86f2835ec2a9687ca2e2a16b9bca18cc21a3eb0801913c2c1024c94dae29a56f": "0x0000000000000000000000001670000000000000000000000000000000000003", - "0xceda61f04213e952bfa0631c1d6a46e0243feddef01b15830df6d44a883942ef": "0x0000000000000000000000001670000000000000000000000000000000000004", - "0xd724ebf31fb7ffa376a4d5d51b51967009df0c86a4dfef5f55507cde2eb36739": "0x0000000000000000000000001670000000000000000000000000000000000005", - "0x7c370492eefc4caa8cbb896169c5fc4597f28c57333bb43e31066f4f66652c55": "0x0000000000000000000000000167000000000000000000000000000000010096", - "0xe6965834a21a9e0a0de81d5e0ea99e149f660508a785a52be0ad77b96b5b1c5c": "0x0000000000000000000000000167000000000000000000000000000000010097", - "0x83e96d9214b47c6368e642dca9daced8ea339555eb83dac20d7cbfb0cc0f5c7b": "0x0000000000000000000000000167000000000000000000000000000000010098", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000006" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000000001": { - "contractName": "BridgeImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x60806040526004361061021d575f3560e01c806382b5e8891161011e578063b8acae0e116100a8578063e07baba61161006d578063e07baba61461066b578063e30c3978146106a8578063eefbf17e146106c5578063f09a4016146106eb578063f2fde38b1461070a575f5ffd5b8063b8acae0e146105af578063be880c81146105ce578063c012fa77146105e4578063d0496d6a14610603578063d1aaa5df1461064b575f5ffd5b80638e3881a9116100ee5780638e3881a9146104fe578063913b16cb1461053c5780639efc7a2e1461055b578063a730cdfb1461057a578063a86f9d9e14610590575f5ffd5b806382b5e8891461049a5780638456cb59146104b95780638abf6077146104cd5780638da5cb5b146104e1575f5ffd5b80633f4ba83a116101aa5780635c975abb1161016f5780635c975abb146103ff57806360620c6b1461041f578063715018a61461043e57806379ba5097146104525780637cbadfaa14610466575f5ffd5b80633f4ba83a14610381578063422770fa146103955780634f1ef286146103b957806352d1902d146103cc5780635862f6e1146103e0575f5ffd5b80633075db56116101f05780633075db56146102ad5780633659cfe6146102d15780633ab76e9f146102f05780633c6cf473146103275780633eb6b8cf14610362575f5ffd5b80630432873c14610221578063069489a2146102425780631bdb0037146102565780632035065e14610280575b5f5ffd5b34801561022c575f5ffd5b5061024061023b366004612f67565b610729565b005b34801561024d575f5ffd5b50610240610a27565b610269610264366004612fb5565b610ade565b604051610277929190613141565b60405180910390f35b34801561028b575f5ffd5b5061029f61029a366004613159565b610e94565b604051610277929190613216565b3480156102b8575f5ffd5b506102c1611344565b6040519015158152602001610277565b3480156102dc575f5ffd5b506102406102eb366004613265565b61135c565b3480156102fb575f5ffd5b5060975461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610277565b348015610332575f5ffd5b50610355610341366004613280565b60fc6020525f908152604090205460ff1681565b6040516102779190613297565b34801561036d575f5ffd5b5061030f61037c3660046132bb565b611423565b34801561038c575f5ffd5b50610240611439565b3480156103a0575f5ffd5b506103ab62030d4081565b604051908152602001610277565b6102406103c73660046133be565b61144d565b3480156103d7575f5ffd5b506103ab611506565b3480156103eb575f5ffd5b506102c16103fa366004613159565b6115b8565b34801561040a575f5ffd5b506102c160c954610100900460ff1660021490565b34801561042a575f5ffd5b506102c1610439366004612fb5565b611623565b348015610449575f5ffd5b506102406116f1565b34801561045d575f5ffd5b50610240611702565b348015610471575f5ffd5b50610485610480366004613280565b611779565b60405163ffffffff9091168152602001610277565b3480156104a5575f5ffd5b506102406104b4366004613265565b611791565b3480156104c4575f5ffd5b50610240611811565b3480156104d8575f5ffd5b5061030f611824565b3480156104ec575f5ffd5b506033546001600160a01b031661030f565b348015610509575f5ffd5b5061051d61051836600461340a565b611832565b6040805192151583526001600160a01b03909116602083015201610277565b348015610547575f5ffd5b50610240610556366004612fb5565b61185e565b348015610566575f5ffd5b50610240610575366004613159565b611a4d565b348015610585575f5ffd5b506104856201d4c081565b34801561059b575f5ffd5b5061030f6105aa366004613423565b611d51565b3480156105ba575f5ffd5b506102c16105c9366004613159565b611d5d565b3480156105d9575f5ffd5b50610485620c350081565b3480156105ef575f5ffd5b506103ab6105fe366004613546565b611dbe565b34801561060e575f5ffd5b50610617611ded565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610277565b348015610656575f5ffd5b506103ab610665366004613280565b60031890565b348015610676575f5ffd5b5060c954610690906201000090046001600160401b031681565b6040516001600160401b039091168152602001610277565b3480156106b3575f5ffd5b506065546001600160a01b031661030f565b3480156106d0575f5ffd5b5060fb5461069090600160401b90046001600160401b031681565b3480156106f6575f5ffd5b50610240610705366004613577565b611e94565b348015610715575f5ffd5b50610240610724366004613265565b611f5b565b61073960e0830160c0840161340a565b46816001600160401b03161461076257604051631c6c777560e31b815260040160405180910390fd5b61077260a084016080850161340a565b6001600160401b0381161580610790575046816001600160401b0316145b156107ae57604051631c6c777560e31b815260040160405180910390fd5b6107c260c954610100900460ff1660021490565b156107e05760405163bae6e2a960e01b815260040160405180910390fd5b60026107ee60c95460ff1690565b60ff160361080f5760405163dfc60d8560e01b815260040160405180910390fd5b6108196002611fcc565b5f6108266105fe866135a3565b9050610833816001611fe2565b610841856101200135612034565b61085e576040516335856fbd60e21b815260040160405180910390fd5b5f6108838661087e6d7369676e616c5f7365727669636560901b5f611d51565b6120d5565b156108ce576108c78661012001356188b860405180602001604052805f8152508960e00160208101906108b69190613265565b6001600160a01b03169291906121cc565b9050610948565b6108de60608701604088016135ae565b63ffffffff1615806108ed5750845b801561091b5750610905610100870160e08801613265565b6001600160a01b0316336001600160a01b031614155b15610939576040516372b6e1c360e11b815260040160405180910390fd5b61094586835a5f612209565b90505b801561095e5761095982600261232d565b610a15565b84156109fc5761096f82600361232d565b61098a6d7369676e616c5f7365727669636560901b5f611d51565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af11580156109d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f691906135c7565b50610a15565b60405163161e3ead60e01b815260040160405180910390fd5b5050610a216001611fcc565b50505050565b610a2f6123ea565b5f54600290610100900460ff16158015610a4f57505f5460ff8083169116105b610a745760405162461bcd60e51b8152600401610a6b906135de565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610b4460c0840160a08501613265565b6001600160a01b038116610b6b5760405163538ba4f960e01b815260040160405180910390fd5b610b7c610100850160e08601613265565b6001600160a01b038116610ba35760405163538ba4f960e01b815260040160405180910390fd5b610bb360e0860160c0870161340a565b6001600160401b0381161580610bd1575046816001600160401b0316145b15610bef57604051631c6c777560e31b815260040160405180910390fd5b610c0360c954610100900460ff1660021490565b15610c215760405163bae6e2a960e01b815260040160405180910390fd5b6002610c2f60c95460ff1690565b60ff1603610c505760405163dfc60d8560e01b815260040160405180910390fd5b610c5a6002611fcc565b610c6a60608701604088016135ae565b63ffffffff165f03610cb257610c86604087016020880161340a565b6001600160401b031615610cad5760405163c9f5178760e01b815260040160405180910390fd5b610cda565b610cbb86612444565b5f03610cda576040516308c2ad5360e01b815260040160405180910390fd5b5f610cee61051860e0890160c08a0161340a565b50905080610d0f57604051631c6c777560e31b815260040160405180910390fd5b34610d206040890160208a0161340a565b610d38906001600160401b03166101208a0135613640565b14610d5657604051634ac2abdf60e11b815260040160405180910390fd5b610d5f876135a3565b60fb8054919650600160401b9091046001600160401b0316906008610d8383613653565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610dbe85611dbe565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610df0919061367d565b60405180910390a2610e136d7369676e616c5f7365727669636560901b5f611d51565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610e4091815260200190565b6020604051808303815f875af1158015610e5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8091906135c7565b5050610e8c6001611fcc565b505050915091565b5f5f610eaa60c954610100900460ff1660021490565b15610ec85760405163bae6e2a960e01b815260040160405180910390fd5b6002610ed660c95460ff1690565b60ff1603610ef75760405163dfc60d8560e01b815260040160405180910390fd5b610f016002611fcc565b5f5a905046610f1660e0880160c0890161340a565b6001600160401b031614610f3d57604051631c6c777560e31b815260040160405180910390fd5b610f4d60a087016080880161340a565b6001600160401b03161580610f79575046610f6e60a088016080890161340a565b6001600160401b0316145b15610f9757604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610fcb610100880160e08901613265565b6001600160a01b031633148015606083015261103a57610ff160608801604089016135ae565b63ffffffff165f03611016576040516372b6e1c360e11b815260040160405180910390fd5b62030d4085111561103a57604051631e3b03c960e01b815260040160405180910390fd5b5f6110476105fe896135a3565b9050611053815f611fe2565b5f61106f6d7369676e616c5f7365727669636560901b5f611d51565b63ffffffff881660208501529050611099818361109260a08d0160808e0161340a565b8b8b612497565b63ffffffff166040808501919091526110d8906110bb908b0160208c0161340a565b6110d3906001600160401b03166101208c0135613640565b612034565b6110f5576040516335856fbd60e21b815260040160405180910390fd5b5f6111008a836120d5565b1561111957506002955060019450610120890135611160565b5f8460600151611129575a611132565b6111328b612444565b90506111448b85838860600151612209565b1561115557600297505f965061115e565b60019750600296505b505b61117060408b0160208c0161340a565b6001600160401b0316156112c15761118e60408b0160208c0161340a565b6111a1906001600160401b031682613640565b9050836060015180156111c857506111bf60608b0160408c016135ae565b63ffffffff1615155b156112c157604084015163ffffffff16614e20025a6111f56111ee6101408e018e61368f565b9050612542565b63ffffffff9081168801919091036201d4c00181168087525f91839161121e9183919061256a16565b0390505f61123260608e0160408f016135ae565b63ffffffff168d602001602081019061124b919061340a565b6001600160401b0316830281611263576112636136d8565b0490505f48830290505f6112a78f6020016020810190611283919061340a565b6001600160401b03168484101561129f5784840160011c6112a1565b845b9061257f565b958690039590506112bb33826188b8612593565b50505050505b6112e9816188b86112d96101008e0160e08f01613265565b6001600160a01b03169190612593565b6112f3838861232d565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b86604051611325929190613870565b60405180910390a2505050505061133c6001611fcc565b935093915050565b5f600261135360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000011630036113a45760405162461bcd60e51b8152600401610a6b906138c4565b7f00000000000000000000000001670000000000000000000000000000000000016001600160a01b03166113d66125d6565b6001600160a01b0316146113fc5760405162461bcd60e51b8152600401610a6b90613910565b611405816125f1565b604080515f80825260208201909252611420918391906125f9565b50565b5f61142f848484612763565b90505b9392505050565b6114416127b5565b61144b335f612845565b565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000011630036114955760405162461bcd60e51b8152600401610a6b906138c4565b7f00000000000000000000000001670000000000000000000000000000000000016001600160a01b03166114c76125d6565b6001600160a01b0316146114ed5760405162461bcd60e51b8152600401610a6b90613910565b6114f6826125f1565b611502828260016125f9565b5050565b5f306001600160a01b037f000000000000000000000000016700000000000000000000000000000000000116146115a55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a6b565b505f516020613b2a5f395f51905f525b90565b5f466115ca60a086016080870161340a565b6001600160401b0316146115df57505f611432565b61142f6115fd6d7369676e616c5f7365727669636560901b5f611d51565b61160c6106656105fe886135a3565b61161c60e0880160c0890161340a565b86866128f2565b5f4661163560a084016080850161340a565b6001600160401b03161461164a57505f919050565b6116656d7369676e616c5f7365727669636560901b5f611d51565b6001600160a01b03166332676bc6306116806105fe866135a3565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa1580156116c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116eb919061395c565b92915050565b6116f96123ea565b61144b5f612974565b60655433906001600160a01b031681146117705760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a6b565b61142081612974565b5f620c350061178783612542565b6116eb9190613977565b806001600160a01b0381166117b95760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b1580156117f7575f5ffd5b505af1158015611809573d5f5f3e3d5ffd5b505050505050565b61181961298d565b61144b336001612845565b5f61182d6125d6565b905090565b5f5f611849836562726964676560d01b6001611423565b6001600160a01b038116151594909350915050565b61186e60e0820160c0830161340a565b46816001600160401b03161461189757604051631c6c777560e31b815260040160405180910390fd5b6118a760a083016080840161340a565b6001600160401b03811615806118c5575046816001600160401b0316145b156118e357604051631c6c777560e31b815260040160405180910390fd5b6118f760c954610100900460ff1660021490565b156119155760405163bae6e2a960e01b815260040160405180910390fd5b600261192360c95460ff1690565b60ff16036119445760405163dfc60d8560e01b815260040160405180910390fd5b61194e6002611fcc565b61195f610100840160e08501613265565b6001600160a01b0316336001600160a01b031614611990576040516372b6e1c360e11b815260040160405180910390fd5b5f61199d6105fe856135a3565b90506119aa816001611fe2565b6119b581600361232d565b6119d06d7369676e616c5f7365727669636560901b5f611d51565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611a18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3c91906135c7565b5050611a486001611fcc565b505050565b611a5d60a084016080850161340a565b46816001600160401b031614611a8657604051631c6c777560e31b815260040160405180910390fd5b611a9660e0850160c0860161340a565b6001600160401b0381161580611ab4575046816001600160401b0316145b15611ad257604051631c6c777560e31b815260040160405180910390fd5b611ae660c954610100900460ff1660021490565b15611b045760405163bae6e2a960e01b815260040160405180910390fd5b6002611b1260c95460ff1690565b60ff1603611b335760405163dfc60d8560e01b815260040160405180910390fd5b611b3d6002611fcc565b5f611b4a6105fe876135a3565b9050611b56815f611fe2565b5f611b726d7369676e616c5f7365727669636560901b5f611d51565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611bbe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be2919061395c565b611bff5760405163ab035ad560e01b815260040160405180910390fd5b611c1e8160038418611c1760e08b0160c08c0161340a565b8989612497565b50611c2a82600461232d565b611c38876101200135612034565b611c55576040516335856fbd60e21b815260040160405180910390fd5b611c7e62bc399d60e11b611c6f60808a0160608b01613265565b6001600160a01b0316906129fe565b15611d2257611c9d8230611c9860a08b0160808c0161340a565b612a8b565b611cad6080880160608901613265565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611ce0929190613993565b5f604051808303818588803b158015611cf7575f5ffd5b505af1158015611d09573d5f5f3e3d5ffd5b5050505050611d1d5f195f1b5f1980612a8b565b611d3e565b611d3e6101208801356188b86112d960c08b0160a08c01613265565b5050611d4a6001611fcc565b5050505050565b5f611432468484612763565b5f46611d6f60e0860160c0870161340a565b6001600160401b031614611d8457505f611432565b61142f611da26d7369676e616c5f7365727669636560901b5f611d51565b611dae6105fe876135a3565b61161c60a088016080890161340a565b5f81604051602001611dd091906139b4565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611e64604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611e76575080515f19145b156115b557604051635ceed17360e01b815260040160405180910390fd5b5f54610100900460ff1615808015611eb257505f54600160ff909116105b80611ecb5750303b158015611ecb57505f5460ff166001145b611ee75760405162461bcd60e51b8152600401610a6b906135de565b5f805460ff191660011790558015611f08575f805461ff0019166101001790555b611f128383612ae0565b8015611a48575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611f636123ea565b606580546001600160a01b0383166001600160a01b03199091168117909155611f946033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b806004811115611ff457611ff46131ee565b5f83815260fc602052604090205460ff166004811115612016576120166131ee565b14611502576040516319d893ad60e21b815260040160405180910390fd5b5f5f6120516c38bab7ba30afb6b0b730b3b2b960991b6001611d51565b90506001600160a01b03811661206a5750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b1580156120af575f5ffd5b505af19250505080156120c0575060015b6120cc57505f92915050565b50600192915050565b5f806120e961012085016101008601613265565b6001600160a01b0316036120ff575060016116eb565b3061211261012085016101008601613265565b6001600160a01b031603612128575060016116eb565b6001600160a01b03821661214461012085016101008601613265565b6001600160a01b03160361215a575060016116eb565b600461216a61014085018561368f565b9050101580156121a15750637f07c94760e01b61218b61014085018561368f565b612194916139ea565b6001600160e01b03191614155b801561143257506114326121bd61012085016101008601613265565b6001600160a01b03163b151590565b5f6001600160a01b0385166121f457604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f3061221b6080870160608801613265565b6001600160a01b03160361223157612231613a22565b610120850135158015612251575061224d61014086018661368f565b1590505b1561225e57506001612325565b825f0361226c57505f612325565b612290846122806080880160608901613265565b611c9860a0890160808a0161340a565b5f6122a361012087016101008801613265565b90506101208601355f6122ba61014089018961368f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515612314576123148188612b1a565b6123205f198080612a8b565b505050505b949350505050565b80600481111561233f5761233f6131ee565b5f83815260fc602052604090205460ff166004811115612361576123616131ee565b0361237f576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff191660018360048111156123a9576123a96131ee565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516123de9190613297565b60405180910390a25050565b6033546001600160a01b0316331461144b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a6b565b5f8061245e61245761014085018561368f565b9050611779565b63ffffffff1690508061248f61247a60608601604087016135ae565b63ffffffff168361256a90919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856124bc876562726964676560d01b5f611423565b8887876040518663ffffffff1660e01b81526004016124df959493929190613a36565b6020604051808303815f875af1925050508015612519575060408051601f3d908101601f19168201909252612516918101906135c7565b60015b612536576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f815f0361255157505f919050565b60046020601f8401046020026101a001901b9050919050565b5f8183116125785781611432565b5090919050565b5f81831161258d5782611432565b50919050565b815f0361259f57505050565b6125b983838360405180602001604052805f8152506121cc565b611a4857604051634c67134d60e11b815260040160405180910390fd5b5f516020613b2a5f395f51905f52546001600160a01b031690565b6114206123ea565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561262c57611a4883612b2e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612686575060408051601f3d908101601f19168201909252612683918101906135c7565b60015b6126e95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a6b565b5f516020613b2a5f395f51905f5281146127575760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a6b565b50611a48838383612bc9565b5f61276e8484612bed565b90508115801561278557506001600160a01b038116155b1561143257604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610a6b565b6127c960c954610100900460ff1660021490565b6127e65760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6033546001600160a01b038381169116148061288d57506128786d636861696e5f7761746368646f6760901b6001611d51565b6001600160a01b0316826001600160a01b0316145b15612896575050565b8080156128d057506128bb6e6272696467655f7761746368646f6760881b6001611d51565b6001600160a01b0316826001600160a01b0316145b156128d9575050565b604051630d85cccf60e11b815260040160405180910390fd5b5f856001600160a01b031663ce9d082085612917876562726964676560d01b5f611423565b8887876040518663ffffffff1660e01b815260040161293a959493929190613a36565b5f6040518083038186803b158015612950575f5ffd5b505afa925050508015612961575060015b61296c57505f612539565b506001612539565b606580546001600160a01b031916905561142081612c8f565b6129a160c954610100900460ff1660021490565b156129bf5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161283b565b5f6001600160a01b0383163b612a1557505f6116eb565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa925050508015612a7f575060408051601f3d908101601f19168201909252612a7c9181019061395c565b60015b156116eb579392505050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b806001600160a01b038116612b085760405163538ba4f960e01b815260040160405180910390fd5b612b1183612ce0565b611a4882612d3e565b612b25603f82613a77565b82101561150257fe5b6001600160a01b0381163b612b9b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a6b565b5f516020613b2a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612bd283612dae565b5f82511180612bde5750805b15611a4857610a218383612ded565b6097545f906001600160a01b031680612c1957604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612c6b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123259190613a96565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16612d065760405162461bcd60e51b8152600401610a6b90613ab1565b612d0e612e12565b612d2c6001600160a01b03821615612d265781612974565b33612974565b5060c9805461ff001916610100179055565b5f54610100900460ff16612d645760405162461bcd60e51b8152600401610a6b90613ab1565b6001600160401b03461115612d8c5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b612db781612b2e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114328383604051806060016040528060278152602001613b4a60279139612e38565b5f54610100900460ff1661144b5760405162461bcd60e51b8152600401610a6b90613ab1565b60605f5f856001600160a01b031685604051612e549190613afc565b5f60405180830381855af49150503d805f8114612e8c576040519150601f19603f3d011682016040523d82523d5f602084013e612e91565b606091505b5091509150612ea286838387612eac565b9695505050505050565b60608315612f1a5782515f03612f13576001600160a01b0385163b612f135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a6b565b5081612325565b6123258383815115612f2f5781518083602001fd5b8060405162461bcd60e51b8152600401610a6b9190613b17565b5f610160828403121561258d575f5ffd5b8015158114611420575f5ffd5b5f5f60408385031215612f78575f5ffd5b82356001600160401b03811115612f8d575f5ffd5b612f9985828601612f49565b9250506020830135612faa81612f5a565b809150509250929050565b5f60208284031215612fc5575f5ffd5b81356001600160401b03811115612fda575f5ffd5b61232584828501612f49565b5f5b83811015613000578181015183820152602001612fe8565b50505f910152565b5f815180845261301f816020860160208601612fe6565b601f01601f19169290920160200192915050565b80516001600160401b031682525f602082015161305b60208501826001600160401b03169052565b506040820151613073604085018263ffffffff169052565b50606082015161308e60608501826001600160a01b03169052565b5060808201516130a960808501826001600160401b03169052565b5060a08201516130c460a08501826001600160a01b03169052565b5060c08201516130df60c08501826001600160401b03169052565b5060e08201516130fa60e08501826001600160a01b03169052565b506101008201516131176101008501826001600160a01b03169052565b50610120820151610120840152610140820151610160610140850152612325610160850182613008565b828152604060208201525f61142f6040830184613033565b5f5f5f6040848603121561316b575f5ffd5b83356001600160401b03811115613180575f5ffd5b61318c86828701612f49565b93505060208401356001600160401b038111156131a7575f5ffd5b8401601f810186136131b7575f5ffd5b80356001600160401b038111156131cc575f5ffd5b8660208284010111156131dd575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b60058110613212576132126131ee565b9052565b604081016132248285613202565b60048310613234576132346131ee565b8260208301529392505050565b6001600160a01b0381168114611420575f5ffd5b803561326081613241565b919050565b5f60208284031215613275575f5ffd5b813561143281613241565b5f60208284031215613290575f5ffd5b5035919050565b602081016116eb8284613202565b80356001600160401b0381168114613260575f5ffd5b5f5f5f606084860312156132cd575f5ffd5b6132d6846132a5565b92506020840135915060408401356132ed81612f5a565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561332f5761332f6132f8565b60405290565b5f82601f830112613344575f5ffd5b81356001600160401b0381111561335d5761335d6132f8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561338b5761338b6132f8565b6040528181528382016020018510156133a2575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156133cf575f5ffd5b82356133da81613241565b915060208301356001600160401b038111156133f4575f5ffd5b61340085828601613335565b9150509250929050565b5f6020828403121561341a575f5ffd5b611432826132a5565b5f5f60408385031215613434575f5ffd5b823591506020830135612faa81612f5a565b803563ffffffff81168114613260575f5ffd5b5f610160828403121561346a575f5ffd5b61347261330c565b905061347d826132a5565b815261348b602083016132a5565b602082015261349c60408301613446565b60408201526134ad60608301613255565b60608201526134be608083016132a5565b60808201526134cf60a08301613255565b60a08201526134e060c083016132a5565b60c08201526134f160e08301613255565b60e08201526135036101008301613255565b61010082015261012082810135908201526101408201356001600160401b0381111561352d575f5ffd5b61353984828501613335565b6101408301525092915050565b5f60208284031215613556575f5ffd5b81356001600160401b0381111561356b575f5ffd5b61232584828501613459565b5f5f60408385031215613588575f5ffd5b823561359381613241565b91506020830135612faa81613241565b5f6116eb3683613459565b5f602082840312156135be575f5ffd5b61143282613446565b5f602082840312156135d7575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116eb576116eb61362c565b5f6001600160401b0382166001600160401b0381036136745761367461362c565b60010192915050565b602081525f6114326020830184613033565b5f5f8335601e198436030181126136a4575f5ffd5b8301803591506001600160401b038211156136bd575f5ffd5b6020019150368190038213156136d1575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e19843603018112613701575f5ffd5b83016020810192503590506001600160401b0381111561371f575f5ffd5b8036038213156136d1575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b61376f82613762836132a5565b6001600160401b03169052565b5f61377c602083016132a5565b6001600160401b0316602084015261379660408301613446565b63ffffffff1660408401526137ad60608301613255565b6001600160a01b031660608401526137c7608083016132a5565b6001600160401b031660808401526137e160a08301613255565b6001600160a01b031660a08401526137fb60c083016132a5565b6001600160401b031660c084015261381560e08301613255565b6001600160a01b031660e08401526138306101008301613255565b6001600160a01b031661010084015261012082810135908401526138586101408301836136ec565b6101606101408601526125396101608601828461372d565b60a081525f61388260a0830185613755565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f6020828403121561396c575f5ffd5b815161143281612f5a565b63ffffffff81811683821601908111156116eb576116eb61362c565b604081525f6139a56040830185613755565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114326080830184613033565b80356001600160e01b03198116906004841015613a1b576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f613a6c60808301848661372d565b979650505050505050565b5f82613a9157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215613aa6575f5ffd5b815161143281613241565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f8251613b0d818460208701612fe6565b9190910192915050565b602081525f611432602083018461300856fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206ccb67f04aaf63488576bbb651d54656794e2eac08c3401a79a0cda25cd7f6e664736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000001": { - "contractName": "Bridge", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000001" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x033b2dc55cae685664a00000" - }, - "0x0167000000000000000000000000000000000002": { - "contractName": "ERC20VaultImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x6080604052600436106101ba575f3560e01c806367090ccf116100f25780639aa8605c11610092578063e07baba611610062578063e07baba6146104e3578063e30c397814610520578063f09a40161461053d578063f2fde38b1461055c575f5ffd5b80639aa8605c1461045e578063a86f9d9e1461048e578063b84d9ffe146104ad578063d56ad7ac146104cd575f5ffd5b80637f07c947116100cd5780637f07c947146104065780638456cb59146104195780638abf60771461042d5780638da5cb5b14610441575f5ffd5b806367090ccf1461039e578063715018a6146103de57806379ba5097146103f2575f5ffd5b80633659cfe61161015d5780633f4ba83a116101385780633f4ba83a146103435780634f1ef2861461035757806352d1902d1461036a5780635c975abb1461037e575f5ffd5b80633659cfe6146102e65780633ab76e9f146103055780633eb6b8cf14610324575f5ffd5b806306fdde031161019857806306fdde031461024c5780630e7eeb791461026c5780630ecd8be91461029b5780633075db56146102d2575f5ffd5b80630178733a146101be57806301ffc9a7146101d3578063066fe7b414610207575b5f5ffd5b6101d16101cc36600461330a565b61057b565b005b3480156101de575f5ffd5b506101f26101ed366004613350565b610709565b60405190151581526020015b60405180910390f35b348015610212575f5ffd5b5061023e61022136600461338b565b61013060209081525f928352604080842090915290825290205481565b6040519081526020016101fe565b348015610257575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b61023e565b348015610277575f5ffd5b506101f26102863660046133b9565b61012f6020525f908152604090205460ff1681565b3480156102a6575f5ffd5b506102ba6102b53660046133d4565b610759565b6040516001600160a01b0390911681526020016101fe565b3480156102dd575f5ffd5b506101f2610e67565b3480156102f1575f5ffd5b506101d16103003660046133b9565b610e7f565b348015610310575f5ffd5b506097546102ba906001600160a01b031681565b34801561032f575f5ffd5b506102ba61033e36600461343c565b610f4f565b34801561034e575f5ffd5b506101d1610f65565b6101d1610365366004613584565b610f79565b348015610375575f5ffd5b5061023e61102e565b348015610389575f5ffd5b506101f260c954610100900460ff1660021490565b3480156103a9575f5ffd5b506102ba6103b836600461338b565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b3480156103e9575f5ffd5b506101d16110df565b3480156103fd575f5ffd5b506101d16110f0565b6101d16104143660046135d0565b611167565b348015610424575f5ffd5b506101d16112b7565b348015610438575f5ffd5b506102ba6112ca565b34801561044c575f5ffd5b506033546001600160a01b03166102ba565b348015610469575f5ffd5b5061047d6104783660046133b9565b6112d8565b6040516101fe959493929190613689565b348015610499575f5ffd5b506102ba6104a83660046136e2565b61142d565b6104c06104bb366004613705565b611439565b6040516101fe919061371e565b3480156104d8575f5ffd5b5061023e6276a70081565b3480156104ee575f5ffd5b5060c954610508906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101fe565b34801561052b575f5ffd5b506065546001600160a01b03166102ba565b348015610548575f5ffd5b506101d161055736600461380e565b61187c565b348015610567575f5ffd5b506101d16105763660046133b9565b61198b565b61058f60c954610100900460ff1660021490565b156105ad5760405163bae6e2a960e01b815260040160405180910390fd5b60026105bb60c95460ff1690565b60ff16036105dc5760405163dfc60d8560e01b815260040160405180910390fd5b6105e660026119fc565b6105ee611a12565b505f6105fe61014084018461382a565b61060c916004908290613873565b810190610619919061389a565b90505f5f828060200190518101906106319190613946565b9350505091505f610655838760a001602081019061064f91906133b9565b84611b08565b905061067f61012087013561067060c0890160a08a016133b9565b6001600160a01b031690611bb0565b61068f60c0870160a088016133b9565b6001600160a01b0316857f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd5856020015184866040516106ef939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a35050505061070560016119fc565b5050565b5f6001600160e01b0319821662bc399d60e11b148061073857506001600160e01b03198216637f07c94760e01b145b8061075357506001600160e01b031982166301ffc9a760e01b145b92915050565b5f610762611bbb565b600261077060c95460ff1690565b60ff16036107915760405163dfc60d8560e01b815260040160405180910390fd5b61079b60026119fc565b6001600160a01b03821615806107d157506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b806107e457506001600160a01b0382163b155b156108025760405163dc63f98760e01b815260040160405180910390fd5b5f61081360408501602086016133b9565b6001600160a01b0316148061083c5750466108316020850185613a3a565b6001600160401b0316145b1561085a57604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff1615610894576040516375c42fc160e01b815260040160405180910390fd5b5f610130816108a66020870187613a3a565b6001600160401b031681526020019081526020015f205f8560200160208101906108d091906133b9565b6001600160a01b0316815260208101919091526040015f205490506108f86276a70082613a69565b4210156109185760405163231d35fb60e11b815260040160405180910390fd5b61012e5f6109296020870187613a3a565b6001600160401b031681526020019081526020015f205f85602001602081019061095391906133b9565b6001600160a01b03908116825260208201929092526040015f20541691508115610cb9576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff1690820152600183018054929391926060840191906109e290613a7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0e90613a7c565b8015610a595780601f10610a3057610100808354040283529160200191610a59565b820191905f5260205f20905b815481529060010190602001808311610a3c57829003601f168201915b50505050508152602001600282018054610a7290613a7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e90613a7c565b8015610ae95780601f10610ac057610100808354040283529160200191610ae9565b820191905f5260205f20905b815481529060010190602001808311610acc57829003601f168201915b505050505081525050905080604051602001610b059190613b13565b6040516020818303038152906040528051906020012085604051602001610b2c9190613b99565b6040516020818303038152906040528051906020012014610b6057604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610b9460018301826132b2565b610ba1600283015f6132b2565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610bd79063b8f2e0c560e01b611c15565b8015610bf85750610bf86001600160a01b03851663b8f2e0c560e01b611c15565b15610cb75760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610c43575f5ffd5b505af1158015610c55573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610ca0575f5ffd5b505af1158015610cb2573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610cdd8282613d3c565b5083905061012e5f610cf26020880188613a3a565b6001600160401b031681526020019081526020015f205f866020016020810190610d1c91906133b9565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610d759190613a3a565b6001600160401b031681526020019081526020015f205f866020016020810190610d9f91906133b9565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610dd591906133b9565b6001600160a01b0316610deb6020860186613a3a565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610e2460608a018a61382a565b610e3160808c018c61382a565b610e4160608e0160408f01613dfa565b604051610e549796959493929190613e15565b60405180910390a35061075360016119fc565b5f6002610e7660c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000002163003610ed05760405162461bcd60e51b8152600401610ec790613e6c565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000000026001600160a01b0316610f02611ca2565b6001600160a01b031614610f285760405162461bcd60e51b8152600401610ec790613eb8565b610f3181611cbd565b604080515f80825260208201909252610f4c91839190611cc5565b50565b5f610f5b848484611e2f565b90505b9392505050565b610f6d611e81565b610f77335f611f11565b565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000002163003610fc15760405162461bcd60e51b8152600401610ec790613e6c565b7f00000000000000000000000001670000000000000000000000000000000000026001600160a01b0316610ff3611ca2565b6001600160a01b0316146110195760405162461bcd60e51b8152600401610ec790613eb8565b61102282611cbd565b61070582826001611cc5565b5f306001600160a01b037f000000000000000000000000016700000000000000000000000000000000000216146110cd5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ec7565b505f5160206149985f395f51905f5290565b6110e7611bbb565b610f775f611f19565b60655433906001600160a01b0316811461115e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ec7565b610f4c81611f19565b61117b60c954610100900460ff1660021490565b156111995760405163bae6e2a960e01b815260040160405180910390fd5b60026111a760c95460ff1690565b60ff16036111c85760405163dfc60d8560e01b815260040160405180910390fd5b6111d260026119fc565b5f8080806111e285870187613f0f565b93509350935093505f6111f3611f32565b90506111fe83612051565b5f61120a868585611b08565b905061121f6001600160a01b03851634611bb0565b836001600160a01b0316856001600160a01b0316835f01517f75a051823424fc80e92556c41cb0ad977ae1dcb09c68a9c38acab86b11a69f8985604001518a60200151868960405161129f94939291906001600160401b039490941684526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a450505050505061070560016119fc565b6112bf61208d565b610f77336001611f11565b5f6112d3611ca2565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161132090613a7c565b80601f016020809104026020016040519081016040528092919081815260200182805461134c90613a7c565b80156113975780601f1061136e57610100808354040283529160200191611397565b820191905f5260205f20905b81548152906001019060200180831161137a57829003601f168201915b5050505050908060020180546113ac90613a7c565b80601f01602080910402602001604051908101604052809291908181526020018280546113d890613a7c565b80156114235780601f106113fa57610100808354040283529160200191611423565b820191905f5260205f20905b81548152906001019060200180831161140657829003601f168201915b5050505050905085565b5f610f5e468484611e2f565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526114a760c954610100900460ff1660021490565b156114c55760405163bae6e2a960e01b815260040160405180910390fd5b60026114d360c95460ff1690565b60ff16036114f45760405163dfc60d8560e01b815260040160405180910390fd5b6114fe60026119fc565b8160c001355f0361152257604051634299323b60e11b815260040160405180910390fd5b5f61153360a08401608085016133b9565b6001600160a01b03160361155a576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f61156e60a08501608086016133b9565b6001600160a01b0316815260208101919091526040015f205460ff16156115a8576040516375c42fc160e01b815260040160405180910390fd5b6115b86080830160608401613a3a565b6001600160401b03163410156115e157604051630178ce0b60e31b815260040160405180910390fd5b5f5f5f6115ed856120fe565b6040805161016081019091525f8082529396509194509250602081016116196080890160608a01613a3a565b6001600160401b0316815260200161163760c0890160a08a01614014565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061166890890189613a3a565b6001600160401b031681526020015f6001600160a01b031688602001602081019061169391906133b9565b6001600160a01b0316036116a757336116b7565b6116b76040890160208a016133b9565b6001600160a01b031681526020908101906116ee906116d8908a018a613a3a565b6a195c98cc8c17dd985d5b1d60aa1b5b5f610f4f565b6001600160a01b0316815260200161170c6080890160608a01613a3a565b61171f906001600160401b03163461402f565b815260200185905290505f61173d6562726964676560d01b8261142d565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401611769919061371e565b5f6040518083038185885af1158015611784573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526117ac919081019061404d565b965090506117c060608801604089016133b9565b6001600160a01b03168660a001516001600160a01b0316827f256f5c87f6ab8d238ac244067613227eb6e2cd65299121135d4f778e8581e03d875f01518b5f01602081019061180f9190613a3a565b89602001518d608001602081019061182791906133b9565b604080516001600160401b0395861681529390941660208401526001600160a01b03918216838501521660608201526080810189905290519081900360a00190a4505050505061187760016119fc565b919050565b5f54610100900460ff161580801561189a57505f54600160ff909116105b806118b35750303b1580156118b357505f5460ff166001145b6119165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec7565b5f805460ff191660011790558015611937575f805461ff0019166101001790555b6119418383612598565b8015611986575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611993611bbb565b606580546001600160a01b0383166001600160a01b031990911681179091556119c46033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611a4381600161142d565b6001600160a01b0316336001600160a01b031614611a7457604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611ab0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ad4919061416d565b60208101519092506001600160a01b03163314611b0457604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611b3b57506020830151611b366001600160a01b03821684846125d2565b611ba6565b611b4484612635565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015611b8f575f5ffd5b505af1158015611ba1573d5f5f3e3d5ffd5b505050505b610f5e8183612677565b61070582825a612706565b6033546001600160a01b03163314610f775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec7565b5f6001600160a01b0383163b611c2c57505f610753565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa925050508015611c96575060408051601f3d908101601f19168201909252611c93918101906141d5565b60015b15610753579392505050565b5f5160206149985f395f51905f52546001600160a01b031690565b610f4c611bbb565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611cf85761198683612749565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d52575060408051601f3d908101601f19168201909252611d4f918101906141f0565b60015b611db55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ec7565b5f5160206149985f395f51905f528114611e235760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ec7565b506119868383836127e4565b5f611e3a848461280e565b905081158015611e5157506001600160a01b038116155b15610f5e57604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610ec7565b611e9560c954610100900460ff1660021490565b611eb25760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610705611bbb565b606580546001600160a01b0319169055610f4c816128b8565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611f6381600161142d565b6001600160a01b0316336001600160a01b031614611f9457604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff4919061416d565b91505f61201483604001516116e86a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b03161461204c57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b038116158061206f57506001600160a01b03811630145b15610f4c57604051635b50f3f960e01b815260040160405180910390fd5b6120a160c954610100900460ff1660021490565b156120bf5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611f07565b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f8061012d8161214060a08801608089016133b9565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615612376576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff1691810191909152600182018054839160608401916121c090613a7c565b80601f01602080910402602001604051908101604052809291908181526020018280546121ec90613a7c565b80156122375780601f1061220e57610100808354040283529160200191612237565b820191905f5260205f20905b81548152906001019060200180831161221a57829003601f168201915b5050505050815260200160028201805461225090613a7c565b80601f016020809104026020016040519081016040528092919081815260200182805461227c90613a7c565b80156122c75780601f1061229e576101008083540402835291602001916122c7565b820191905f5260205f20905b8154815290600101906020018083116122aa57829003601f168201915b505050505081525050925061230033308760c001358860800160208101906122ef91906133b9565b6001600160a01b0316929190612909565b61231060a08601608087016133b9565b604051630852cd8d60e31b815260c087013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b158015612354575f5ffd5b505af1158015612366573d5f5f3e3d5ffd5b505050508460c001359150612518565b6040518060a00160405280466001600160401b031681526020018660800160208101906123a391906133b9565b6001600160a01b031681526020016123c96123c460a0890160808a016133b9565b612941565b60ff1681526020016123e96123e460a0890160808a016133b9565b6129f5565b815260200161240661240160a0890160808a016133b9565b612a9f565b905292505f61241b60a08701608088016133b9565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612462573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248691906141f0565b90506124a16001600160a01b038316333060c08b0135612909565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156124e5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061250991906141f0565b612513919061402f565b935050505b30637f07c947843361253060608a0160408b016133b9565b866040516020016125449493929190614207565b60408051601f19818403018152908290526125619160240161423c565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509350509193909250565b806001600160a01b0381166125c05760405163538ba4f960e01b815260040160405180910390fd5b6125c983612ae5565b61198682612b43565b6040516001600160a01b03831660248201526044810182905261198690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612bb3565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b03908116855292529091205416806118775761075382612c86565b5f6126936c38bab7ba30afb6b0b730b3b2b960991b600161142d565b90506001600160a01b03811615611986576040516315c638fb60e31b81526001600160a01b0384811660048301526024820184905282169063ae31c7d8906044015f604051808303815f87803b1580156126eb575f5ffd5b505af11580156126fd573d5f5f3e3d5ffd5b50505050505050565b815f0361271257505050565b61272c83838360405180602001604052805f815250612e88565b61198657604051634c67134d60e11b815260040160405180910390fd5b6001600160a01b0381163b6127b65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ec7565b5f5160206149985f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6127ed83612ec5565b5f825111806127f95750805b15611986576128088383612f04565b50505050565b6097545f906001600160a01b03168061283a57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561288c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128b0919061424e565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526128089085906323b872dd60e01b906084016125fe565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b038616916129869190614269565b5f60405180830381855afa9150503d805f81146129be576040519150601f19603f3d011682016040523d82523d5f602084013e6129c3565b606091505b50915091508180156129d6575080516020145b6129e15760126128b0565b808060200190518101906128b09190614284565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612a3b9190614269565b5f60405180830381855afa9150503d805f8114612a73576040519150601f19603f3d011682016040523d82523d5f602084013e612a78565b606091505b509150915081612a965760405180602001604052805f8152506128b0565b6128b081612f29565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612a3b9190614269565b5f54610100900460ff16612b0b5760405162461bcd60e51b8152600401610ec79061429f565b612b13613096565b612b316001600160a01b03821615612b2b5781611f19565b33611f19565b5060c9805461ff001916610100179055565b5f54610100900460ff16612b695760405162461bcd60e51b8152600401610ec79061429f565b6001600160401b03461115612b915760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f612c07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130bc9092919063ffffffff16565b905080515f1480612c27575080806020019051810190612c2791906141d5565b6119865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ec7565b5f5f612c9a6033546001600160a01b031690565b60975460208501518551604080880151606089015160808a01519251612cd097966001600160a01b0316959493906024016142ea565b60408051601f198184030181529190526020810180516001600160e01b031663bb86ef9360e01b1790529050612d166c0627269646765645f657263323609c1b5f61142d565b81604051612d23906132e9565b612d2e929190614355565b604051809103905ff080158015612d47573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b03909116179190911791909116919091178155606085015191935084916001820190612dc99082614378565b5060808201516002820190612dde9082614378565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea130907993612e7a9391929190614432565b60405180910390a450919050565b5f6001600160a01b038516612eb057604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b612ece81612749565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610f5e83836040518060600160405280602781526020016149b8602791396130ca565b60606040825110612f485781806020019051810190610753919061446a565b8151602003613083575f5b60208160ff16108015612f885750828160ff1681518110612f7657612f7661449b565b01602001516001600160f81b03191615155b15612f9f5780612f97816144af565b915050612f53565b5f8160ff166001600160401b03811115612fbb57612fbb61347b565b6040519080825280601f01601f191660200182016040528015612fe5576020820181803683370190505b5090505f91505b60208260ff161080156130215750838260ff168151811061300f5761300f61449b565b01602001516001600160f81b03191615155b15610f5e57838260ff168151811061303b5761303b61449b565b602001015160f81c60f81b818360ff168151811061305b5761305b61449b565b60200101906001600160f81b03191690815f1a9053508161307b816144af565b925050612fec565b505060408051602081019091525f815290565b5f54610100900460ff16610f775760405162461bcd60e51b8152600401610ec79061429f565b6060610f5b84845f8561313e565b60605f5f856001600160a01b0316856040516130e69190614269565b5f60405180830381855af49150503d805f811461311e576040519150601f19603f3d011682016040523d82523d5f602084013e613123565b606091505b509150915061313486838387613215565b9695505050505050565b60608247101561319f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ec7565b5f5f866001600160a01b031685876040516131ba9190614269565b5f6040518083038185875af1925050503d805f81146131f4576040519150601f19603f3d011682016040523d82523d5f602084013e6131f9565b606091505b509150915061320a87838387613215565b979650505050505050565b606083156132835782515f0361327c576001600160a01b0385163b61327c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ec7565b50816128b0565b6128b083838151156132985781518083602001fd5b8060405162461bcd60e51b8152600401610ec7919061423c565b5080546132be90613a7c565b5f825580601f106132cd575050565b601f0160209004905f5260205f2090810190610f4c91906132f6565b6104ca806144ce83390190565b5b80821115611b04575f81556001016132f7565b5f5f6040838503121561331b575f5ffd5b82356001600160401b03811115613330575f5ffd5b83016101608186031215613342575f5ffd5b946020939093013593505050565b5f60208284031215613360575f5ffd5b81356001600160e01b031981168114610f5e575f5ffd5b6001600160a01b0381168114610f4c575f5ffd5b5f5f6040838503121561339c575f5ffd5b8235915060208301356133ae81613377565b809150509250929050565b5f602082840312156133c9575f5ffd5b8135610f5e81613377565b5f5f604083850312156133e5575f5ffd5b82356001600160401b038111156133fa575f5ffd5b830160a0818603121561340b575f5ffd5b915060208301356133ae81613377565b6001600160401b0381168114610f4c575f5ffd5b8015158114610f4c575f5ffd5b5f5f5f6060848603121561344e575f5ffd5b83356134598161341b565b92506020840135915060408401356134708161342f565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156134b1576134b161347b565b60405290565b60405161016081016001600160401b03811182821017156134b1576134b161347b565b604051601f8201601f191681016001600160401b03811182821017156135025761350261347b565b604052919050565b5f6001600160401b038211156135225761352261347b565b50601f01601f191660200190565b5f82601f83011261353f575f5ffd5b8135602083015f6135576135528461350a565b6134da565b905082815285838301111561356a575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215613595575f5ffd5b82356135a081613377565b915060208301356001600160401b038111156135ba575f5ffd5b6135c685828601613530565b9150509250929050565b5f5f602083850312156135e1575f5ffd5b82356001600160401b038111156135f6575f5ffd5b8301601f81018513613606575f5ffd5b80356001600160401b0381111561361b575f5ffd5b85602082840101111561362c575f5ffd5b6020919091019590945092505050565b5f5b8381101561365657818101518382015260200161363e565b50505f910152565b5f815180845261367581602086016020860161363c565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f906136c49083018561365e565b82810360808401526136d6818561365e565b98975050505050505050565b5f5f604083850312156136f3575f5ffd5b8235915060208301356133ae8161342f565b5f60e0828403128015613716575f5ffd5b509092915050565b602081526137386020820183516001600160401b03169052565b5f602083015161375360408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526128b061018084018261365e565b5f5f6040838503121561381f575f5ffd5b823561340b81613377565b5f5f8335601e1984360301811261383f575f5ffd5b8301803591506001600160401b03821115613858575f5ffd5b60200191503681900382131561386c575f5ffd5b9250929050565b5f5f85851115613881575f5ffd5b8386111561388d575f5ffd5b5050820193919092039150565b5f602082840312156138aa575f5ffd5b81356001600160401b038111156138bf575f5ffd5b6128b084828501613530565b80516118778161341b565b805161187781613377565b60ff81168114610f4c575f5ffd5b8051611877816138e1565b5f82601f830112613909575f5ffd5b8151602083015f61391c6135528461350a565b905082815285838301111561392f575f5ffd5b61393d83602083018461363c565b95945050505050565b5f5f5f5f60808587031215613959575f5ffd5b84516001600160401b0381111561396e575f5ffd5b850160a0818803121561397f575f5ffd5b61398761348f565b81516139928161341b565b815260208201516139a281613377565b60208201526139b3604083016138ef565b604082015260608201516001600160401b038111156139d0575f5ffd5b6139dc898285016138fa565b60608301525060808201516001600160401b038111156139fa575f5ffd5b613a06898285016138fa565b6080830152509450613a1c9050602086016138d6565b9250613a2a604086016138d6565b6060959095015193969295505050565b5f60208284031215613a4a575f5ffd5b8135610f5e8161341b565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561075357610753613a55565b600181811c90821680613a9057607f821691505b602082108103613aae57634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a06060850152613afa60a085018261365e565b90506080830151848203608086015261393d828261365e565b602081525f610f5e6020830184613ab4565b8035611877816138e1565b5f5f8335601e19843603018112613b45575f5ffd5b83016020810192503590506001600160401b03811115613b63575f5ffd5b80360382131561386c575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235613ba98161341b565b6001600160401b0381166020840152506020830135613bc781613377565b6001600160a01b0316604083810191909152830135613be5816138e1565b60ff8116606084015250613bfc6060840184613b30565b60a06080850152613c1160c085018284613b71565b915050613c216080850185613b30565b848303601f190160a0860152613134838284613b71565b601f82111561198657805f5260205f20601f840160051c81016020851015613c5d5750805b601f840160051c820191505b81811015613c7c575f8155600101613c69565b5050505050565b6001600160401b03831115613c9a57613c9a61347b565b613cae83613ca88354613a7c565b83613c38565b5f601f841160018114613cdf575f8515613cc85750838201355b5f19600387901b1c1916600186901b178355613c7c565b5f83815260208120601f198716915b82811015613d0e5786850135825560209485019460019092019101613cee565b5086821015613d2a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135613d478161341b565b6001600160401b03811690508154816001600160401b031982161783556020840135613d7281613377565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f90830135613da9816138e1565b825460ff60e01b191660e09190911b60ff60e01b1617825550613dcf606083018361382a565b613ddd818360018601613c83565b5050613dec608083018361382a565b612808818360028601613c83565b5f60208284031215613e0a575f5ffd5b8135610f5e816138e1565b6001600160a01b0388811682528716602082015260a0604082018190525f90613e419083018789613b71565b8281036060840152613e54818688613b71565b91505060ff8316608083015298975050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b803561187781613377565b5f5f5f5f60808587031215613f22575f5ffd5b84356001600160401b03811115613f37575f5ffd5b850160a08188031215613f48575f5ffd5b613f5061348f565b8135613f5b8161341b565b81526020820135613f6b81613377565b6020820152613f7c60408301613b25565b604082015260608201356001600160401b03811115613f99575f5ffd5b613fa589828501613530565b60608301525060808201356001600160401b03811115613fc3575f5ffd5b613fcf89828501613530565b6080830152509450613fe5905060208601613f04565b9250613ff360408601613f04565b9396929550929360600135925050565b63ffffffff81168114610f4c575f5ffd5b5f60208284031215614024575f5ffd5b8135610f5e81614003565b8181038181111561075357610753613a55565b805161187781614003565b5f5f6040838503121561405e575f5ffd5b825160208401519092506001600160401b0381111561407b575f5ffd5b8301610160818603121561408d575f5ffd5b6140956134b7565b61409e826138cb565b81526140ac602083016138cb565b60208201526140bd60408301614042565b60408201526140ce606083016138d6565b60608201526140df608083016138cb565b60808201526140f060a083016138d6565b60a082015261410160c083016138cb565b60c082015261411260e083016138d6565b60e082015261412461010083016138d6565b61010082015261012082810151908201526101408201516001600160401b0381111561414e575f5ffd5b61415a878285016138fa565b6101408301525080925050509250929050565b5f606082840312801561417e575f5ffd5b50604051606081016001600160401b03811182821017156141a1576141a161347b565b6040528251815260208301516141b681613377565b602082015260408301516141c98161341b565b60408201529392505050565b5f602082840312156141e5575f5ffd5b8151610f5e8161342f565b5f60208284031215614200575f5ffd5b5051919050565b608081525f6142196080830187613ab4565b6001600160a01b0395861660208401529390941660408201526060015292915050565b602081525f610f5e602083018461365e565b5f6020828403121561425e575f5ffd5b8151610f5e81613377565b5f825161427a81846020870161363c565b9190910192915050565b5f60208284031215614294575f5ffd5b8151610f5e816138e1565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0388811682528781166020830152861660408201526001600160401b038516606082015260ff8416608082015260e060a082018190525f906143359083018561365e565b82810360c0840152614347818561365e565b9a9950505050505050505050565b6001600160a01b03831681526040602082018190525f90610f5b9083018461365e565b81516001600160401b038111156143915761439161347b565b6143a58161439f8454613a7c565b84613c38565b6020601f8211600181146143d7575f83156143c05750848201515b5f19600385901b1c1916600184901b178455613c7c565b5f84815260208120601f198516915b8281101561440657878501518255602094850194600190920191016143e6565b508482101561442357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f614444606083018661365e565b8281036020840152614456818661365e565b91505060ff83166040830152949350505050565b5f6020828403121561447a575f5ffd5b81516001600160401b0381111561448f575f5ffd5b6128b0848285016138fa565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff81036144c4576144c4613a55565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b8d385d4f2d6cc75f0553b0f75a9defc23ce602bcb05516f25f5e40cac657bef64736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000002": { - "contractName": "ERC20Vault", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000201", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000002" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000000003": { - "contractName": "ERC721VaultImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x60806040526004361061017b575f3560e01c806367090ccf116100cd5780638da5cb5b11610087578063e07baba611610062578063e07baba614610449578063e30c397814610486578063f09a4016146104a3578063f2fde38b146104c2575f5ffd5b80638da5cb5b146103de5780639aa8605c146103fb578063a86f9d9e1461042a575f5ffd5b806367090ccf1461033b578063715018a61461037b57806379ba50971461038f5780637f07c947146103a35780638456cb59146103b65780638abf6077146103ca575f5ffd5b80633659cfe6116101385780633f4ba83a116101135780633f4ba83a146102e05780634f1ef286146102f457806352d1902d146103075780635c975abb1461031b575f5ffd5b80633659cfe61461026b5780633ab76e9f1461028a5780633eb6b8cf146102c1575f5ffd5b80630178733a1461017f57806301ffc9a71461019457806306fdde03146101c8578063150b7a02146101f35780631f59a830146102375780633075db5614610257575b5f5ffd5b61019261018d3660046128ea565b6104e1565b005b34801561019f575f5ffd5b506101b36101ae366004612930565b610694565b60405190151581526020015b60405180910390f35b3480156101d3575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b6040519081526020016101bf565b3480156101fe575f5ffd5b5061021e61020d3660046129ba565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016101bf565b61024a610245366004612a27565b6106e4565b6040516101bf9190612aab565b348015610262575f5ffd5b506101b3610b6a565b348015610276575f5ffd5b50610192610285366004612b9b565b610b82565b348015610295575f5ffd5b506097546102a9906001600160a01b031681565b6040516001600160a01b0390911681526020016101bf565b3480156102cc575f5ffd5b506102a96102db366004612be2565b610c52565b3480156102eb575f5ffd5b50610192610c68565b610192610302366004612d4d565b610c7c565b348015610312575f5ffd5b506101e5610d31565b348015610326575f5ffd5b506101b360c954610100900460ff1660021490565b348015610346575f5ffd5b506102a9610355366004612d99565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610386575f5ffd5b50610192610de2565b34801561039a575f5ffd5b50610192610df3565b6101926103b1366004612dc7565b610e6a565b3480156103c1575f5ffd5b50610192610fd3565b3480156103d5575f5ffd5b506102a9610fe6565b3480156103e9575f5ffd5b506033546001600160a01b03166102a9565b348015610406575f5ffd5b5061041a610415366004612b9b565b610ff4565b6040516101bf9493929190612e05565b348015610435575f5ffd5b506102a9610444366004612e54565b61113f565b348015610454575f5ffd5b5060c95461046e906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101bf565b348015610491575f5ffd5b506065546001600160a01b03166102a9565b3480156104ae575f5ffd5b506101926104bd366004612e77565b61114b565b3480156104cd575f5ffd5b506101926104dc366004612b9b565b61125a565b6104f560c954610100900460ff1660021490565b156105135760405163bae6e2a960e01b815260040160405180910390fd5b600261052160c95460ff1690565b60ff16036105425760405163dfc60d8560e01b815260040160405180910390fd5b61054c60026112cb565b6105546112e1565b505f610564610140840184612ea3565b610572916004908290612ee5565b81019061057f9190612f0c565b90505f5f828060200190518101906105979190613026565b9350505091505f6105bb838760a00160208101906105b59190612b9b565b846113d7565b90506105e56101208701356105d660c0890160a08a01612b9b565b6001600160a01b03169061154e565b6105f560c0870160a08801612b9b565b6001600160a01b0316857fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b0381111561064057610640612c21565b604051908082528060200260200182016040528015610669578160200160208202803683370190505b5060405161067a9493929190613165565b60405180910390a35050505061069060016112cb565b5050565b5f6001600160e01b0319821662bc399d60e11b14806106c357506001600160e01b03198216637f07c94760e01b145b806106de57506001600160e01b031982166301ffc9a760e01b145b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261075260c954610100900460ff1660021490565b156107705760405163bae6e2a960e01b815260040160405180910390fd5b61077982613219565b8060e00151518160c0015151146107a35760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107ce576040516303f8a7d360e01b815260040160405180910390fd5b60026107dc60c95460ff1690565b60ff16036107fd5760405163dfc60d8560e01b815260040160405180910390fd5b61080760026112cb565b61081760808401606085016132ec565b6001600160401b031634101561084057604051630178ce0b60e31b815260040160405180910390fd5b5f5b61084f60c0850185613307565b90508110156108a35761086560e0850185613307565b828181106108755761087561334c565b905060200201355f1461089b57604051634299323b60e11b815260040160405180910390fd5b600101610842565b506108ce6380ac58cd60e01b6108bf60a0860160808701612b9b565b6001600160a01b031690611559565b6108eb57604051633ee915f560e11b815260040160405180910390fd5b5f5f6108f6856115e6565b6040805161016081019091525f808252929450909250602081016109206080890160608a016132ec565b6001600160401b0316815260200161093e60c0890160a08a01613360565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061096f908901896132ec565b6001600160401b031681526020015f6001600160a01b031688602001602081019061099a9190612b9b565b6001600160a01b0316036109ae57336109be565b6109be6040890160208a01612b9b565b6001600160a01b031681526020908101906109f6906109df908a018a6132ec565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f610c52565b6001600160a01b03168152602001610a146080890160608a016132ec565b610a27906001600160401b03163461338f565b815260200184905290505f610a456562726964676560d01b8261113f565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a719190612aab565b5f6040518083038185885af1158015610a8c573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610ab491908101906133ad565b96509050610ac86060880160408901612b9b565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610b1e9190612b9b565b610b2b60c08f018f613307565b8f8060e00190610b3b9190613307565b604051610b4e97969594939291906134fd565b60405180910390a450505050610b6460016112cb565b50919050565b5f6002610b7960c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000003163003610bd35760405162461bcd60e51b8152600401610bca90613559565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000000036001600160a01b0316610c05611ac8565b6001600160a01b031614610c2b5760405162461bcd60e51b8152600401610bca906135a5565b610c3481611ae3565b604080515f80825260208201909252610c4f91839190611aeb565b50565b5f610c5e848484611c55565b90505b9392505050565b610c70611ca7565b610c7a335f611d37565b565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000003163003610cc45760405162461bcd60e51b8152600401610bca90613559565b7f00000000000000000000000001670000000000000000000000000000000000036001600160a01b0316610cf6611ac8565b6001600160a01b031614610d1c5760405162461bcd60e51b8152600401610bca906135a5565b610d2582611ae3565b61069082826001611aeb565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000000031614610dd05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610bca565b505f516020613ff95f395f51905f5290565b610dea611d3b565b610c7a5f611d95565b60655433906001600160a01b03168114610e615760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610bca565b610c4f81611d95565b610e7e60c954610100900460ff1660021490565b15610e9c5760405163bae6e2a960e01b815260040160405180910390fd5b6002610eaa60c95460ff1690565b60ff1603610ecb5760405163dfc60d8560e01b815260040160405180910390fd5b610ed560026112cb565b5f808080610ee5858701876135f1565b93509350935093505f610ef6611dae565b9050610f0183611ece565b5f610f0d8685856113d7565b9050610f226001600160a01b0385163461154e565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b03811115610f8057610f80612c21565b604051908082528060200260200182016040528015610fa9578160200160208202803683370190505b50604051610fbb9594939291906136ea565b60405180910390a450505050505061069060016112cb565b610fdb611f0a565b610c7a336001611d37565b5f610fef611ac8565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061103290613742565b80601f016020809104026020016040519081016040528092919081815260200182805461105e90613742565b80156110a95780601f10611080576101008083540402835291602001916110a9565b820191905f5260205f20905b81548152906001019060200180831161108c57829003601f168201915b5050505050908060020180546110be90613742565b80601f01602080910402602001604051908101604052809291908181526020018280546110ea90613742565b80156111355780601f1061110c57610100808354040283529160200191611135565b820191905f5260205f20905b81548152906001019060200180831161111857829003601f168201915b5050505050905084565b5f610c61468484611c55565b5f54610100900460ff161580801561116957505f54600160ff909116105b806111825750303b15801561118257505f5460ff166001145b6111e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bca565b5f805460ff191660011790558015611206575f805461ff0019166101001790555b6112108383611f7b565b8015611255575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611262611d3b565b606580546001600160a01b0383166001600160a01b031990911681179091556112936033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61131281600161113f565b6001600160a01b0316336001600160a01b03161461134357604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561137f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a39190613774565b60208101519092506001600160a01b031633146113d357604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b03160361149d575060208301515f5b825181101561149757816001600160a01b03166342842e0e308686858151811061141f5761141f61334c565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b158015611476575f5ffd5b505af1158015611488573d5f5f3e3d5ffd5b505050508060010190506113f3565b50610c61565b6114a684611fb5565b90505f5b825181101561154657816001600160a01b03166340c10f19858584815181106114d5576114d561334c565b60200260200101516040518363ffffffff1660e01b815260040161150e9291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b158015611525575f5ffd5b505af1158015611537573d5f5f3e3d5ffd5b505050508060010190506114aa565b509392505050565b61069082825a611ffc565b5f6001600160a01b0383163b61157057505f6106de565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa9250505080156115da575060408051601f3d908101601f191682019092526115d7918101906137dc565b60015b156106de579392505050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161161c60a0870160808801612b9b565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118fd576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b0316602082015260018301805491928492908401919061168d90613742565b80601f01602080910402602001604051908101604052809291908181526020018280546116b990613742565b80156117045780601f106116db57610100808354040283529160200191611704565b820191905f5260205f20905b8154815290600101906020018083116116e757829003601f168201915b5050505050815260200160028201805461171d90613742565b80601f016020809104026020016040519081016040528092919081815260200182805461174990613742565b80156117945780601f1061176b57610100808354040283529160200191611794565b820191905f5260205f20905b81548152906001019060200180831161177757829003601f168201915b50505050508152505091505f5b6117ae60c0860186613307565b90508110156118f7576117c760a0860160808701612b9b565b6001600160a01b03166342842e0e33306117e460c08a018a613307565b868181106117f4576117f461334c565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611848575f5ffd5b505af115801561185a573d5f5f3e3d5ffd5b5061186f9250505060a0860160808701612b9b565b6001600160a01b03166342966c6861188a60c0880188613307565b8481811061189a5761189a61334c565b905060200201356040518263ffffffff1660e01b81526004016118bf91815260200190565b5f604051808303815f87803b1580156118d6575f5ffd5b505af11580156118e8573d5f5f3e3d5ffd5b505050508060010190506117a1565b50611a3d565b6040518060800160405280466001600160401b0316815260200185608001602081019061192a9190612b9b565b6001600160a01b0316815260200161195061194b60a0880160808901612b9b565b61203f565b815260200161196d61196860a0880160808901612b9b565b6120f1565b905291505f5b61198060c0860186613307565b9050811015611a3b5761199960a0860160808701612b9b565b6001600160a01b03166342842e0e33306119b660c08a018a613307565b868181106119c6576119c661334c565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611a1a575f5ffd5b505af1158015611a2c573d5f5f3e3d5ffd5b50505050806001019050611973565b505b5030637f07c9478233611a566060880160408901612b9b565b611a6360c0890189613307565b604051602001611a779594939291906137f7565b60408051601f1981840301815290829052611a9491602401613888565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f516020613ff95f395f51905f52546001600160a01b031690565b610c4f611d3b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b1e5761125583612137565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b78575060408051601f3d908101601f19168201909252611b759181019061389a565b60015b611bdb5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bca565b5f516020613ff95f395f51905f528114611c495760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bca565b506112558383836121d2565b5f611c6084846121fc565b905081158015611c7757506001600160a01b038116155b15610c6157604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610bca565b611cbb60c954610100900460ff1660021490565b611cd85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106905b6033546001600160a01b03163314610c7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bca565b606580546001600160a01b0319169055610c4f8161229e565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611ddf81600161113f565b6001600160a01b0316336001600160a01b031614611e1057604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e709190613774565b91505f611e9183604001516109f06b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b031614611ec957604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611eec57506001600160a01b03811630145b15610c4f57604051635b50f3f960e01b815260040160405180910390fd5b611f1e60c954610100900460ff1660021490565b15611f3c5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611d2d565b806001600160a01b038116611fa35760405163538ba4f960e01b815260040160405180910390fd5b611fac836122ef565b6112558261234d565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611ff7576106de826123bd565b919050565b815f0361200857505050565b61202283838360405180602001604052805f815250612598565b61125557604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b0386169161208591906138b1565b5f60405180830381855afa9150503d805f81146120bd576040519150601f19603f3d011682016040523d82523d5f602084013e6120c2565b606091505b5091509150816120e05760405180602001604052805f8152506120e9565b6120e9816125d5565b949350505050565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b0386169161208591906138b1565b6001600160a01b0381163b6121a45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bca565b5f516020613ff95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6121db83612742565b5f825111806121e75750805b15611255576121f68383612781565b50505050565b6097545f906001600160a01b03168061222857604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561227a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e991906138cc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166123155760405162461bcd60e51b8152600401610bca906138e7565b61231d6127a6565b61233b6001600160a01b038216156123355781611d95565b33611d95565b5060c9805461ff001916610100179055565b5f54610100900460ff166123735760405162461bcd60e51b8152600401610bca906138e7565b6001600160401b0346111561239b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123d16033546001600160a01b031690565b609754602085015185516040808801516060890151915161240296956001600160a01b031694939290602401613932565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b17905290506124496d627269646765645f65726337323160901b5f61113f565b81604051612456906128dd565b612461929190613993565b604051809103905ff08015801561247a573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124de9082613a01565b50606082015160028201906124f39082613a01565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261258a9290613abb565b60405180910390a450919050565b5f6001600160a01b0385166125c057604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106125f457818060200190518101906106de9190613adf565b815160200361272f575f5b60208160ff161080156126345750828160ff16815181106126225761262261334c565b01602001516001600160f81b03191615155b1561264b578061264381613b10565b9150506125ff565b5f8160ff166001600160401b0381111561266757612667612c21565b6040519080825280601f01601f191660200182016040528015612691576020820181803683370190505b5090505f91505b60208260ff161080156126cd5750838260ff16815181106126bb576126bb61334c565b01602001516001600160f81b03191615155b15610c6157838260ff16815181106126e7576126e761334c565b602001015160f81c60f81b818360ff16815181106127075761270761334c565b60200101906001600160f81b03191690815f1a9053508161272781613b10565b925050612698565b505060408051602081019091525f815290565b61274b81612137565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c618383604051806060016040528060278152602001614019602791396127cc565b5f54610100900460ff16610c7a5760405162461bcd60e51b8152600401610bca906138e7565b60605f5f856001600160a01b0316856040516127e891906138b1565b5f60405180830381855af49150503d805f8114612820576040519150601f19603f3d011682016040523d82523d5f602084013e612825565b606091505b509150915061283686838387612840565b9695505050505050565b606083156128ae5782515f036128a7576001600160a01b0385163b6128a75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bca565b50816120e9565b6120e983838151156128c35781518083602001fd5b8060405162461bcd60e51b8152600401610bca9190613888565b6104ca80613b2f83390190565b5f5f604083850312156128fb575f5ffd5b82356001600160401b03811115612910575f5ffd5b83016101608186031215612922575f5ffd5b946020939093013593505050565b5f60208284031215612940575f5ffd5b81356001600160e01b031981168114610c61575f5ffd5b6001600160a01b0381168114610c4f575f5ffd5b8035611ff781612957565b5f5f83601f840112612986575f5ffd5b5081356001600160401b0381111561299c575f5ffd5b6020830191508360208285010111156129b3575f5ffd5b9250929050565b5f5f5f5f5f608086880312156129ce575f5ffd5b85356129d981612957565b945060208601356129e981612957565b93506040860135925060608601356001600160401b03811115612a0a575f5ffd5b612a1688828901612976565b969995985093965092949392505050565b5f60208284031215612a37575f5ffd5b81356001600160401b03811115612a4c575f5ffd5b82016101008185031215610c61575f5ffd5b5f5b83811015612a78578181015183820152602001612a60565b50505f910152565b5f8151808452612a97816020860160208601612a5e565b601f01601f19169290920160200192915050565b60208152612ac56020820183516001600160401b03169052565b5f6020830151612ae060408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526120e9610180840182612a80565b5f60208284031215612bab575f5ffd5b8135610c6181612957565b6001600160401b0381168114610c4f575f5ffd5b8035611ff781612bb6565b8015158114610c4f575f5ffd5b5f5f5f60608486031215612bf4575f5ffd5b8335612bff81612bb6565b9250602084013591506040840135612c1681612bd5565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612c5757612c57612c21565b60405290565b60405161010081016001600160401b0381118282101715612c5757612c57612c21565b60405161016081016001600160401b0381118282101715612c5757612c57612c21565b604051601f8201601f191681016001600160401b0381118282101715612ccb57612ccb612c21565b604052919050565b5f6001600160401b03821115612ceb57612ceb612c21565b50601f01601f191660200190565b5f82601f830112612d08575f5ffd5b8135602083015f612d20612d1b84612cd3565b612ca3565b9050828152858383011115612d33575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612d5e575f5ffd5b8235612d6981612957565b915060208301356001600160401b03811115612d83575f5ffd5b612d8f85828601612cf9565b9150509250929050565b5f5f60408385031215612daa575f5ffd5b823591506020830135612dbc81612957565b809150509250929050565b5f5f60208385031215612dd8575f5ffd5b82356001600160401b03811115612ded575f5ffd5b612df985828601612976565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612e3790830185612a80565b8281036060840152612e498185612a80565b979650505050505050565b5f5f60408385031215612e65575f5ffd5b823591506020830135612dbc81612bd5565b5f5f60408385031215612e88575f5ffd5b8235612e9381612957565b91506020830135612dbc81612957565b5f5f8335601e19843603018112612eb8575f5ffd5b8301803591506001600160401b03821115612ed1575f5ffd5b6020019150368190038213156129b3575f5ffd5b5f5f85851115612ef3575f5ffd5b83861115612eff575f5ffd5b5050820193919092039150565b5f60208284031215612f1c575f5ffd5b81356001600160401b03811115612f31575f5ffd5b6120e984828501612cf9565b8051611ff781612bb6565b8051611ff781612957565b5f82601f830112612f62575f5ffd5b8151602083015f612f75612d1b84612cd3565b9050828152858383011115612f88575f5ffd5b612f96836020830184612a5e565b95945050505050565b5f6001600160401b03821115612fb757612fb7612c21565b5060051b60200190565b5f82601f830112612fd0575f5ffd5b8151612fde612d1b82612f9f565b8082825260208201915060208360051b860101925085831115612fff575f5ffd5b602085015b8381101561301c578051835260209283019201613004565b5095945050505050565b5f5f5f5f60808587031215613039575f5ffd5b84516001600160401b0381111561304e575f5ffd5b85016080818803121561305f575f5ffd5b613067612c35565b815161307281612bb6565b8152602082015161308281612957565b602082015260408201516001600160401b0381111561309f575f5ffd5b6130ab89828501612f53565b60408301525060608201516001600160401b038111156130c9575f5ffd5b6130d589828501612f53565b60608301525094506130eb905060208601612f48565b92506130f960408601612f48565b915060608501516001600160401b03811115613113575f5ffd5b61311f87828801612fc1565b91505092959194509250565b5f8151808452602084019350602083015f5b8281101561315b57815186526020958601959091019060010161313d565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906131909083018561312b565b8281036060840152612e49818561312b565b63ffffffff81168114610c4f575f5ffd5b8035611ff7816131a2565b5f82601f8301126131cd575f5ffd5b81356131db612d1b82612f9f565b8082825260208201915060208360051b8601019250858311156131fc575f5ffd5b602085015b8381101561301c578035835260209283019201613201565b5f610100823603121561322a575f5ffd5b613232612c5d565b61323b83612bca565b81526132496020840161296b565b602082015261325a6040840161296b565b604082015261326b60608401612bca565b606082015261327c6080840161296b565b608082015261328d60a084016131b3565b60a082015260c08301356001600160401b038111156132aa575f5ffd5b6132b6368286016131be565b60c08301525060e08301356001600160401b038111156132d4575f5ffd5b6132e0368286016131be565b60e08301525092915050565b5f602082840312156132fc575f5ffd5b8135610c6181612bb6565b5f5f8335601e1984360301811261331c575f5ffd5b8301803591506001600160401b03821115613335575f5ffd5b6020019150600581901b36038213156129b3575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613370575f5ffd5b8135610c61816131a2565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106de576106de61337b565b8051611ff7816131a2565b5f5f604083850312156133be575f5ffd5b825160208401519092506001600160401b038111156133db575f5ffd5b830161016081860312156133ed575f5ffd5b6133f5612c80565b6133fe82612f3d565b815261340c60208301612f3d565b602082015261341d604083016133a2565b604082015261342e60608301612f48565b606082015261343f60808301612f3d565b608082015261345060a08301612f48565b60a082015261346160c08301612f3d565b60c082015261347260e08301612f48565b60e08201526134846101008301612f48565b61010082015261012082810151908201526101408201516001600160401b038111156134ae575f5ffd5b6134ba87828501612f53565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156134e4575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061353890830186886134cd565b828103608084015261354b8185876134cd565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f60808587031215613604575f5ffd5b84356001600160401b03811115613619575f5ffd5b85016080818803121561362a575f5ffd5b613632612c35565b813561363d81612bb6565b8152602082013561364d81612957565b602082015260408201356001600160401b0381111561366a575f5ffd5b61367689828501612cf9565b60408301525060608201356001600160401b03811115613694575f5ffd5b6136a089828501612cf9565b60608301525094506136b690506020860161296b565b92506136c46040860161296b565b915060608501356001600160401b038111156136de575f5ffd5b61311f878288016131be565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f906137249083018561312b565b8281036080840152613736818561312b565b98975050505050505050565b600181811c9082168061375657607f821691505b602082108103610b6457634e487b7160e01b5f52602260045260245ffd5b5f6060828403128015613785575f5ffd5b50604051606081016001600160401b03811182821017156137a8576137a8612c21565b6040528251815260208301516137bd81612957565b602082015260408301516137d081612bb6565b60408201529392505050565b5f602082840312156137ec575f5ffd5b8151610c6181612bd5565b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c0840152613838610100840182612a80565b90506060880151607f198483030160e08501526138558282612a80565b6001600160a01b0389811660208701528816604086015291506138759050565b82810360608401526137368185876134cd565b602081525f610c616020830184612a80565b5f602082840312156138aa575f5ffd5b5051919050565b5f82516138c2818460208701612a5e565b9190910192915050565b5f602082840312156138dc575f5ffd5b8151610c6181612957565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f9061397490830185612a80565b82810360a08401526139868185612a80565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c5e90830184612a80565b601f82111561125557805f5260205f20601f840160051c810160208510156139db5750805b601f840160051c820191505b818110156139fa575f81556001016139e7565b5050505050565b81516001600160401b03811115613a1a57613a1a612c21565b613a2e81613a288454613742565b846139b6565b6020601f821160018114613a60575f8315613a495750848201515b5f19600385901b1c1916600184901b1784556139fa565b5f84815260208120601f198516915b82811015613a8f5787850151825560209485019460019092019101613a6f565b5084821015613aac57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613acd6040830185612a80565b8281036020840152612f968185612a80565b5f60208284031215613aef575f5ffd5b81516001600160401b03811115613b04575f5ffd5b6120e984828501612f53565b5f60ff821660ff8103613b2557613b2561337b565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122055e523a48576516437df6fcf2810806cc0aeefb1755d2891dc02a161b66f632464736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000003": { - "contractName": "ERC721Vault", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000003" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000000004": { - "contractName": "ERC1155VaultImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x608060405260043610610195575f3560e01c8063715018a6116100e7578063a86f9d9e11610087578063e30c397811610062578063e30c3978146104a4578063f09a4016146104c1578063f23a6e61146104e0578063f2fde38b1461050c575f5ffd5b8063a86f9d9e14610401578063bc197c8114610420578063e07baba614610467575f5ffd5b80638456cb59116100c25780638456cb591461038d5780638abf6077146103a15780638da5cb5b146103b55780639aa8605c146103d2575f5ffd5b8063715018a61461035257806379ba5097146103665780637f07c9471461037a575f5ffd5b80633ab76e9f116101525780634f1ef2861161012d5780634f1ef286146102cb57806352d1902d146102de5780635c975abb146102f257806367090ccf14610312575f5ffd5b80633ab76e9f146102615780633eb6b8cf146102985780633f4ba83a146102b7575f5ffd5b80630178733a1461019957806301ffc9a7146101ae57806306fdde03146101e25780631f59a8301461020e5780633075db561461022e5780633659cfe614610242575b5f5ffd5b6101ac6101a7366004612861565b61052b565b005b3480156101b9575f5ffd5b506101cd6101c83660046128a7565b6106a1565b60405190151581526020015b60405180910390f35b3480156101ed575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b6040519081526020016101d9565b61022161021c3660046128ce565b6106c0565b6040516101d99190612952565b348015610239575f5ffd5b506101cd610b47565b34801561024d575f5ffd5b506101ac61025c366004612a61565b610b5f565b34801561026c575f5ffd5b50609754610280906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b3480156102a3575f5ffd5b506102806102b2366004612aa8565b610c2f565b3480156102c2575f5ffd5b506101ac610c45565b6101ac6102d9366004612c13565b610c59565b3480156102e9575f5ffd5b50610200610d0e565b3480156102fd575f5ffd5b506101cd60c954610100900460ff1660021490565b34801561031d575f5ffd5b5061028061032c366004612c5f565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561035d575f5ffd5b506101ac610dbf565b348015610371575f5ffd5b506101ac610dd0565b6101ac610388366004612cd1565b610e47565b348015610398575f5ffd5b506101ac610f73565b3480156103ac575f5ffd5b50610280610f86565b3480156103c0575f5ffd5b506033546001600160a01b0316610280565b3480156103dd575f5ffd5b506103f16103ec366004612a61565b610f94565b6040516101d99493929190612d0f565b34801561040c575f5ffd5b5061028061041b366004612d5e565b6110df565b34801561042b575f5ffd5b5061044e61043a366004612dc1565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016101d9565b348015610472575f5ffd5b5060c95461048c906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101d9565b3480156104af575f5ffd5b506065546001600160a01b0316610280565b3480156104cc575f5ffd5b506101ac6104db366004612e81565b6110eb565b3480156104eb575f5ffd5b5061044e6104fa366004612ead565b63f23a6e6160e01b9695505050505050565b348015610517575f5ffd5b506101ac610526366004612a61565b611202565b61053f60c954610100900460ff1660021490565b1561055d5760405163bae6e2a960e01b815260040160405180910390fd5b600261056b60c95460ff1690565b60ff160361058c5760405163dfc60d8560e01b815260040160405180910390fd5b6105966002611273565b61059e611289565b505f6105ae610140840184612f23565b6105bc916004908290612f65565b8101906105c99190612f8c565b90505f5f5f838060200190518101906105e291906130a6565b94509450505092505f610609848860a00160208101906106029190612a61565b858561137f565b905061063361012088013561062460c08a0160a08b01612a61565b6001600160a01b03169061146f565b61064360c0880160a08901612a61565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8660200151848787604051610686949392919061320e565b60405180910390a3505050505061069d6001611273565b5050565b5f6106ab8261147a565b806106ba57506106ba826114c9565b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261072e60c954610100900460ff1660021490565b1561074c5760405163bae6e2a960e01b815260040160405180910390fd5b610755826132c2565b8060e00151518160c00151511461077f5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107aa576040516303f8a7d360e01b815260040160405180910390fd5b60026107b860c95460ff1690565b60ff16036107d95760405163dfc60d8560e01b815260040160405180910390fd5b6107e36002611273565b6107f36080840160608501613395565b6001600160401b031634101561081c57604051630178ce0b60e31b815260040160405180910390fd5b5f5b61082b60e08501856133b0565b905081101561087f5761084160e08501856133b0565b82818110610851576108516133f5565b905060200201355f0361087757604051634299323b60e11b815260040160405180910390fd5b60010161081e565b506108aa636cdb3d1360e11b61089b60a0860160808701612a61565b6001600160a01b0316906114fd565b6108c757604051633ee915f560e11b815260040160405180910390fd5b5f5f6108d28561158a565b6040805161016081019091525f808252929450909250602081016108fc6080890160608a01613395565b6001600160401b0316815260200161091a60c0890160a08a01613409565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061094b90890189613395565b6001600160401b031681526020015f6001600160a01b03168860200160208101906109769190612a61565b6001600160a01b03160361098a573361099a565b61099a6040890160208a01612a61565b6001600160a01b031681526020908101906109d3906109bb908a018a613395565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f610c2f565b6001600160a01b031681526020016109f16080890160608a01613395565b610a04906001600160401b031634613438565b815260200184905290505f610a226562726964676560d01b826110df565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a4e9190612952565b5f6040518083038185885af1158015610a69573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610a919190810190613456565b96509050610aa56060880160408901612a61565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610afb9190612a61565b610b0860c08f018f6133b0565b8f8060e00190610b1891906133b0565b604051610b2b97969594939291906135a6565b60405180910390a450505050610b416001611273565b50919050565b5f6002610b5660c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000004163003610bb05760405162461bcd60e51b8152600401610ba790613602565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000000046001600160a01b0316610be2611a4a565b6001600160a01b031614610c085760405162461bcd60e51b8152600401610ba79061364e565b610c1181611a65565b604080515f80825260208201909252610c2c91839190611a6d565b50565b5f610c3b848484611bd7565b90505b9392505050565b610c4d611c29565b610c57335f611cb9565b565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000004163003610ca15760405162461bcd60e51b8152600401610ba790613602565b7f00000000000000000000000001670000000000000000000000000000000000046001600160a01b0316610cd3611a4a565b6001600160a01b031614610cf95760405162461bcd60e51b8152600401610ba79061364e565b610d0282611a65565b61069d82826001611a6d565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000000041614610dad5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ba7565b505f5160206141d45f395f51905f5290565b610dc7611cbd565b610c575f611d17565b60655433906001600160a01b03168114610e3e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ba7565b610c2c81611d17565b610e5b60c954610100900460ff1660021490565b15610e795760405163bae6e2a960e01b815260040160405180910390fd5b6002610e8760c95460ff1690565b60ff1603610ea85760405163dfc60d8560e01b815260040160405180910390fd5b610eb26002611273565b5f80808080610ec38688018861369a565b945094509450945094505f610ed6611d30565b9050610ee184611e51565b5f610eee8786868661137f565b9050610f036001600160a01b0386163461146f565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a604051610f5a9594939291906137bb565b60405180910390a45050505050505061069d6001611273565b610f7b611e8d565b610c57336001611cb9565b5f610f8f611a4a565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b0316929190610fd290613813565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffe90613813565b80156110495780601f1061102057610100808354040283529160200191611049565b820191905f5260205f20905b81548152906001019060200180831161102c57829003601f168201915b50505050509080600201805461105e90613813565b80601f016020809104026020016040519081016040528092919081815260200182805461108a90613813565b80156110d55780601f106110ac576101008083540402835291602001916110d5565b820191905f5260205f20905b8154815290600101906020018083116110b857829003601f168201915b5050505050905084565b5f610c3e468484611bd7565b5f54610100900460ff161580801561110957505f54600160ff909116105b806111225750303b15801561112257505f5460ff166001145b6111855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ba7565b5f805460ff1916600117905580156111a6575f805461ff0019166101001790555b6111b08383611efe565b6111b8611f38565b80156111fd575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61120a611cbd565b606580546001600160a01b0383166001600160a01b0319909116811790915561123b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b6112ba8160016110df565b6001600160a01b0316336001600160a01b0316146112eb57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611327573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134b9190613845565b60208101519092506001600160a01b0316331461137b57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46855f01516001600160401b0316036113fd57506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d6906113cb9030908890889088906004016138ad565b5f604051808303815f87803b1580156113e2575f5ffd5b505af11580156113f4573d5f5f3e3d5ffd5b50505050611467565b61140685611f5e565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a159061143990879087908790600401613906565b5f604051808303815f87803b158015611450575f5ffd5b505af1158015611462573d5f5f3e3d5ffd5b505050505b949350505050565b61069d82825a611fa5565b5f6001600160e01b0319821662bc399d60e11b14806114a957506001600160e01b03198216637f07c94760e01b145b806106ba57506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b14806106ba57506301ffc9a760e01b6001600160e01b03198316146106ba565b5f6001600160a01b0383163b61151457505f6106ba565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa92505050801561157e575060408051601f3d908101601f1916820190925261157b9181019061393b565b60015b156106ba579392505050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d816115c060a0870160808801612a61565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118b3576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b0316602082015260018301805491928492908401919061163190613813565b80601f016020809104026020016040519081016040528092919081815260200182805461165d90613813565b80156116a85780601f1061167f576101008083540402835291602001916116a8565b820191905f5260205f20905b81548152906001019060200180831161168b57829003601f168201915b505050505081526020016002820180546116c190613813565b80601f01602080910402602001604051908101604052809291908181526020018280546116ed90613813565b80156117385780601f1061170f57610100808354040283529160200191611738565b820191905f5260205f20905b81548152906001019060200180831161171b57829003601f168201915b50505050508152505091508360800160208101906117569190612a61565b6001600160a01b0316632eb2c2d6333061177360c08901896133b0565b61178060e08b018b6133b0565b6040518763ffffffff1660e01b81526004016117a196959493929190613956565b5f604051808303815f87803b1580156117b8575f5ffd5b505af11580156117ca573d5f5f3e3d5ffd5b505050505f5b6117dd60c08601866133b0565b90508110156118ad576117f660a0860160808701612a61565b6001600160a01b031663b390c0ab61181160c08801886133b0565b84818110611821576118216133f5565b90506020020135878060e0019061183891906133b0565b85818110611848576118486133f5565b905060200201356040518363ffffffff1660e01b8152600401611875929190918252602082015260400190565b5f604051808303815f87803b15801561188c575f5ffd5b505af115801561189e573d5f5f3e3d5ffd5b505050508060010190506117d0565b506119b0565b6040518060800160405280466001600160401b031681526020018560800160208101906118e09190612a61565b6001600160a01b0316815260200161190661190160a0880160808901612a61565b611fe8565b815260200161192361191e60a0880160808901612a61565b612092565b9052915061193760a0850160808601612a61565b6001600160a01b0316632eb2c2d6333061195460c08901896133b0565b61196160e08b018b6133b0565b6040518763ffffffff1660e01b815260040161198296959493929190613956565b5f604051808303815f87803b158015611999575f5ffd5b505af11580156119ab573d5f5f3e3d5ffd5b505050505b5030637f07c94782336119c96060880160408901612a61565b6119d660c08901896133b0565b6119e360e08b018b6133b0565b6040516020016119f997969594939291906139b3565b60408051601f1981840301815290829052611a1691602401613a63565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f5160206141d45f395f51905f52546001600160a01b031690565b610c2c611cbd565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611aa0576111fd836120d8565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611afa575060408051601f3d908101601f19168201909252611af791810190613a75565b60015b611b5d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ba7565b5f5160206141d45f395f51905f528114611bcb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ba7565b506111fd838383612173565b5f611be2848461219d565b905081158015611bf957506001600160a01b038116155b15610c3e57604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610ba7565b611c3d60c954610100900460ff1660021490565b611c5a5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b61069d5b6033546001600160a01b03163314610c575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ba7565b606580546001600160a01b0319169055610c2c8161223f565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611d618160016110df565b6001600160a01b0316336001600160a01b031614611d9257604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611dce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df29190613845565b91505f611e1483604001516109cd6c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611e4c57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611e6f57506001600160a01b03811630145b15610c2c57604051635b50f3f960e01b815260040160405180910390fd5b611ea160c954610100900460ff1660021490565b15611ebf5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611caf565b806001600160a01b038116611f265760405163538ba4f960e01b815260040160405180910390fd5b611f2f83612290565b6111fd826122ee565b5f54610100900460ff16610c575760405162461bcd60e51b8152600401610ba790613a8c565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611fa0576106ba8261235e565b919050565b815f03611fb157505050565b611fcb83838360405180602001604052805f81525061253a565b6111fd57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b0386169161202e9190613ad7565b5f60405180830381855afa9150503d805f8114612066576040519150601f19603f3d011682016040523d82523d5f602084013e61206b565b606091505b5091509150816120895760405180602001604052805f815250611467565b61146781612577565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b0386169161202e9190613ad7565b6001600160a01b0381163b6121455760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ba7565b5f5160206141d45f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61217c836126e4565b5f825111806121885750805b156111fd576121978383612723565b50505050565b6097545f906001600160a01b0316806121c957604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561221b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114679190613af2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166122b65760405162461bcd60e51b8152600401610ba790613a8c565b6122be611f38565b6122dc6001600160a01b038216156122d65781611d17565b33611d17565b5060c9805461ff001916610100179055565b5f54610100900460ff166123145760405162461bcd60e51b8152600401610ba790613a8c565b6001600160401b0346111561233c5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123726033546001600160a01b031690565b60975460208501518551604080880151606089015191516123a396956001600160a01b031694939290602401613b0d565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b17905290506123eb6e627269646765645f6572633131353560881b5f6110df565b816040516123f890612854565b612403929190613b6e565b604051809103905ff08015801561241c573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124809082613bdc565b50606082015160028201906124959082613bdc565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261252c9290613c96565b60405180910390a450919050565b5f6001600160a01b03851661256257604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b6060604082511061259657818060200190518101906106ba9190613cba565b81516020036126d1575f5b60208160ff161080156125d65750828160ff16815181106125c4576125c46133f5565b01602001516001600160f81b03191615155b156125ed57806125e581613ceb565b9150506125a1565b5f8160ff166001600160401b0381111561260957612609612ae7565b6040519080825280601f01601f191660200182016040528015612633576020820181803683370190505b5090505f91505b60208260ff1610801561266f5750838260ff168151811061265d5761265d6133f5565b01602001516001600160f81b03191615155b15610c3e57838260ff1681518110612689576126896133f5565b602001015160f81c60f81b818360ff16815181106126a9576126a96133f5565b60200101906001600160f81b03191690815f1a905350816126c981613ceb565b92505061263a565b505060408051602081019091525f815290565b6126ed816120d8565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c3e83836040518060600160405280602781526020016141f46027913960605f5f856001600160a01b03168560405161275f9190613ad7565b5f60405180830381855af49150503d805f8114612797576040519150601f19603f3d011682016040523d82523d5f602084013e61279c565b606091505b50915091506127ad868383876127b7565b9695505050505050565b606083156128255782515f0361281e576001600160a01b0385163b61281e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ba7565b5081611467565b611467838381511561283a5781518083602001fd5b8060405162461bcd60e51b8152600401610ba79190613a63565b6104ca80613d0a83390190565b5f5f60408385031215612872575f5ffd5b82356001600160401b03811115612887575f5ffd5b83016101608186031215612899575f5ffd5b946020939093013593505050565b5f602082840312156128b7575f5ffd5b81356001600160e01b031981168114610c3e575f5ffd5b5f602082840312156128de575f5ffd5b81356001600160401b038111156128f3575f5ffd5b82016101008185031215610c3e575f5ffd5b5f5b8381101561291f578181015183820152602001612907565b50505f910152565b5f815180845261293e816020860160208601612905565b601f01601f19169290920160200192915050565b6020815261296c6020820183516001600160401b03169052565b5f602083015161298760408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152611467610180840182612927565b6001600160a01b0381168114610c2c575f5ffd5b8035611fa081612a42565b5f60208284031215612a71575f5ffd5b8135610c3e81612a42565b6001600160401b0381168114610c2c575f5ffd5b8035611fa081612a7c565b8015158114610c2c575f5ffd5b5f5f5f60608486031215612aba575f5ffd5b8335612ac581612a7c565b9250602084013591506040840135612adc81612a9b565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612b1d57612b1d612ae7565b60405290565b60405161010081016001600160401b0381118282101715612b1d57612b1d612ae7565b60405161016081016001600160401b0381118282101715612b1d57612b1d612ae7565b604051601f8201601f191681016001600160401b0381118282101715612b9157612b91612ae7565b604052919050565b5f6001600160401b03821115612bb157612bb1612ae7565b50601f01601f191660200190565b5f82601f830112612bce575f5ffd5b8135602083015f612be6612be184612b99565b612b69565b9050828152858383011115612bf9575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612c24575f5ffd5b8235612c2f81612a42565b915060208301356001600160401b03811115612c49575f5ffd5b612c5585828601612bbf565b9150509250929050565b5f5f60408385031215612c70575f5ffd5b823591506020830135612c8281612a42565b809150509250929050565b5f5f83601f840112612c9d575f5ffd5b5081356001600160401b03811115612cb3575f5ffd5b602083019150836020828501011115612cca575f5ffd5b9250929050565b5f5f60208385031215612ce2575f5ffd5b82356001600160401b03811115612cf7575f5ffd5b612d0385828601612c8d565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612d4190830185612927565b8281036060840152612d538185612927565b979650505050505050565b5f5f60408385031215612d6f575f5ffd5b823591506020830135612c8281612a9b565b5f5f83601f840112612d91575f5ffd5b5081356001600160401b03811115612da7575f5ffd5b6020830191508360208260051b8501011115612cca575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612dd8575f5ffd5b8835612de381612a42565b97506020890135612df381612a42565b965060408901356001600160401b03811115612e0d575f5ffd5b612e198b828c01612d81565b90975095505060608901356001600160401b03811115612e37575f5ffd5b612e438b828c01612d81565b90955093505060808901356001600160401b03811115612e61575f5ffd5b612e6d8b828c01612c8d565b999c989b5096995094979396929594505050565b5f5f60408385031215612e92575f5ffd5b8235612e9d81612a42565b91506020830135612c8281612a42565b5f5f5f5f5f5f60a08789031215612ec2575f5ffd5b8635612ecd81612a42565b95506020870135612edd81612a42565b9450604087013593506060870135925060808701356001600160401b03811115612f05575f5ffd5b612f1189828a01612c8d565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612f38575f5ffd5b8301803591506001600160401b03821115612f51575f5ffd5b602001915036819003821315612cca575f5ffd5b5f5f85851115612f73575f5ffd5b83861115612f7f575f5ffd5b5050820193919092039150565b5f60208284031215612f9c575f5ffd5b81356001600160401b03811115612fb1575f5ffd5b61146784828501612bbf565b8051611fa081612a7c565b8051611fa081612a42565b5f82601f830112612fe2575f5ffd5b8151602083015f612ff5612be184612b99565b9050828152858383011115613008575f5ffd5b613016836020830184612905565b95945050505050565b5f6001600160401b0382111561303757613037612ae7565b5060051b60200190565b5f82601f830112613050575f5ffd5b815161305e612be18261301f565b8082825260208201915060208360051b86010192508583111561307f575f5ffd5b602085015b8381101561309c578051835260209283019201613084565b5095945050505050565b5f5f5f5f5f60a086880312156130ba575f5ffd5b85516001600160401b038111156130cf575f5ffd5b8601608081890312156130e0575f5ffd5b6130e8612afb565b81516130f381612a7c565b8152602082015161310381612a42565b602082015260408201516001600160401b03811115613120575f5ffd5b61312c8a828501612fd3565b60408301525060608201516001600160401b0381111561314a575f5ffd5b6131568a828501612fd3565b606083015250955061316c905060208701612fc8565b935061317a60408701612fc8565b925060608601516001600160401b03811115613194575f5ffd5b6131a088828901613041565b92505060808601516001600160401b038111156131bb575f5ffd5b6131c788828901613041565b9150509295509295909350565b5f8151808452602084019350602083015f5b828110156132045781518652602095860195909101906001016131e6565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f90613239908301856131d4565b8281036060840152612d5381856131d4565b63ffffffff81168114610c2c575f5ffd5b8035611fa08161324b565b5f82601f830112613276575f5ffd5b8135613284612be18261301f565b8082825260208201915060208360051b8601019250858311156132a5575f5ffd5b602085015b8381101561309c5780358352602092830192016132aa565b5f61010082360312156132d3575f5ffd5b6132db612b23565b6132e483612a90565b81526132f260208401612a56565b602082015261330360408401612a56565b604082015261331460608401612a90565b606082015261332560808401612a56565b608082015261333660a0840161325c565b60a082015260c08301356001600160401b03811115613353575f5ffd5b61335f36828601613267565b60c08301525060e08301356001600160401b0381111561337d575f5ffd5b61338936828601613267565b60e08301525092915050565b5f602082840312156133a5575f5ffd5b8135610c3e81612a7c565b5f5f8335601e198436030181126133c5575f5ffd5b8301803591506001600160401b038211156133de575f5ffd5b6020019150600581901b3603821315612cca575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613419575f5ffd5b8135610c3e8161324b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106ba576106ba613424565b8051611fa08161324b565b5f5f60408385031215613467575f5ffd5b825160208401519092506001600160401b03811115613484575f5ffd5b83016101608186031215613496575f5ffd5b61349e612b46565b6134a782612fbd565b81526134b560208301612fbd565b60208201526134c66040830161344b565b60408201526134d760608301612fc8565b60608201526134e860808301612fbd565b60808201526134f960a08301612fc8565b60a082015261350a60c08301612fbd565b60c082015261351b60e08301612fc8565b60e082015261352d6101008301612fc8565b61010082015261012082810151908201526101408201516001600160401b03811115613557575f5ffd5b61356387828501612fd3565b6101408301525080925050509250929050565b8183525f6001600160fb1b0383111561358d575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f906135e19083018688613576565b82810360808401526135f4818587613576565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f5f60a086880312156136ae575f5ffd5b85356001600160401b038111156136c3575f5ffd5b8601608081890312156136d4575f5ffd5b6136dc612afb565b81356136e781612a7c565b815260208201356136f781612a42565b602082015260408201356001600160401b03811115613714575f5ffd5b6137208a828501612bbf565b60408301525060608201356001600160401b0381111561373e575f5ffd5b61374a8a828501612bbf565b6060830152509550613760905060208701612a56565b935061376e60408701612a56565b925060608601356001600160401b03811115613788575f5ffd5b61379488828901613267565b92505060808601356001600160401b038111156137af575f5ffd5b6131c788828901613267565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f906137f5908301856131d4565b828103608084015261380781856131d4565b98975050505050505050565b600181811c9082168061382757607f821691505b602082108103610b4157634e487b7160e01b5f52602260045260245ffd5b5f6060828403128015613856575f5ffd5b50604051606081016001600160401b038111828210171561387957613879612ae7565b60405282518152602083015161388e81612a42565b602082015260408301516138a181612a7c565b60408201529392505050565b6001600160a01b0385811682528416602082015260a0604082018190525f906138d8908301856131d4565b82810360608401526138ea81856131d4565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f90613929908301856131d4565b82810360408401526127ad81856131d4565b5f6020828403121561394b575f5ffd5b8151610c3e81612a9b565b6001600160a01b0387811682528616602082015260a0604082018190525f906139829083018688613576565b8281036060840152613995818587613576565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f906139f6610120840182612927565b905060608a0151609f1984830301610100850152613a148282612927565b915050613a2c602084018a6001600160a01b03169052565b6001600160a01b03881660408401528281036060840152613a4e818789613576565b905082810360808401526135f4818587613576565b602081525f610c3e6020830184612927565b5f60208284031215613a85575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f8251613ae8818460208701612905565b9190910192915050565b5f60208284031215613b02575f5ffd5b8151610c3e81612a42565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f90613b4f90830185612927565b82810360a0840152613b618185612927565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c3b90830184612927565b601f8211156111fd57805f5260205f20601f840160051c81016020851015613bb65750805b601f840160051c820191505b81811015613bd5575f8155600101613bc2565b5050505050565b81516001600160401b03811115613bf557613bf5612ae7565b613c0981613c038454613813565b84613b91565b6020601f821160018114613c3b575f8315613c245750848201515b5f19600385901b1c1916600184901b178455613bd5565b5f84815260208120601f198516915b82811015613c6a5787850151825560209485019460019092019101613c4a565b5084821015613c8757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613ca86040830185612927565b82810360208401526130168185612927565b5f60208284031215613cca575f5ffd5b81516001600160401b03811115613cdf575f5ffd5b61146784828501612fd3565b5f60ff821660ff8103613d0057613d00613424565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e67f8ea00e362cad72cd2e8e61f89b237848f76dd2a93bc34c0064a232f8158c64736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000004": { - "contractName": "ERC1155Vault", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000004" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010096": { - "contractName": "BridgedERC20", - "storage": {}, - "code": "0x608060405260043610610233575f3560e01c806370a0823111610129578063a77f1516116100a8578063dd62ed3e1161006d578063dd62ed3e14610684578063e07baba6146106a3578063e30c3978146106e0578063f12506c1146106fd578063f2fde38b14610711575f5ffd5b8063a77f1516146105e7578063a86f9d9e14610608578063a9059cbb14610627578063b8f2e0c514610646578063bb86ef9314610665575f5ffd5b80638456cb59116100ee5780638456cb591461056f5780638abf6077146105835780638da5cb5b1461059757806395d89b41146105b4578063a457c2d7146105c8575f5ffd5b806370a08231146104d3578063715018a61461050757806379ba50971461051b5780637cf8ed0d1461052f5780637e4746341461054f575f5ffd5b806339509351116101b557806342966c681161017a57806342966c681461045757806349d12605146104765780634f1ef2861461048c57806352d1902d1461049f5780635c975abb146104b3575f5ffd5b806339509351146103af5780633ab76e9f146103ce5780633eb6b8cf146104055780633f4ba83a1461042457806340c10f1914610438575f5ffd5b806323b872dd116101fb57806323b872dd146102ea57806326afaadd146103095780633075db561461034d578063313ce567146103615780633659cfe61461038e575f5ffd5b806301ffc9a71461023757806306fdde031461026b578063095ea7b31461028c5780630ae74548146102ab57806318160ddd146102cc575b5f5ffd5b348015610242575f5ffd5b5061025661025136600461218c565b610730565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061027f6107d2565b60405161026291906121d5565b348015610297575f5ffd5b506102566102a636600461221b565b610862565b3480156102b6575f5ffd5b5061012f5461025690600160a01b900460ff1681565b3480156102d7575f5ffd5b5060fd545b604051908152602001610262565b3480156102f5575f5ffd5b50610256610304366004612245565b610879565b348015610314575f5ffd5b5061032e61012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610262565b348015610358575f5ffd5b5061025661089e565b34801561036c575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610262565b348015610399575f5ffd5b506103ad6103a8366004612283565b6108b6565b005b3480156103ba575f5ffd5b506102566103c936600461221b565b610986565b3480156103d9575f5ffd5b506097546103ed906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b348015610410575f5ffd5b506103ed61041f3660046122b2565b6109a7565b34801561042f575f5ffd5b506103ad6109bb565b348015610443575f5ffd5b506103ad61045236600461221b565b6109cf565b348015610462575f5ffd5b506103ad6104713660046122f8565b610ae9565b348015610481575f5ffd5b506102dc61012e5481565b6103ad61049a366004612323565b610c26565b3480156104aa575f5ffd5b506102dc610cdb565b3480156104be575f5ffd5b5061025660c954610100900460ff1660021490565b3480156104de575f5ffd5b506102dc6104ed366004612283565b6001600160a01b03165f90815260fb602052604090205490565b348015610512575f5ffd5b506103ad610d8c565b348015610526575f5ffd5b506103ad610d9d565b34801561053a575f5ffd5b5061012d546103ed906001600160a01b031681565b34801561055a575f5ffd5b5061012f546103ed906001600160a01b031681565b34801561057a575f5ffd5b506103ad610e14565b34801561058e575f5ffd5b506103ed610e27565b3480156105a2575f5ffd5b506033546001600160a01b03166103ed565b3480156105bf575f5ffd5b5061027f610e35565b3480156105d3575f5ffd5b506102566105e236600461221b565b610e44565b3480156105f2575f5ffd5b5061012d5461037c90600160a01b900460ff1681565b348015610613575f5ffd5b506103ed6106223660046123e6565b610ec9565b348015610632575f5ffd5b5061025661064136600461221b565b610ed5565b348015610651575f5ffd5b506103ad610660366004612410565b610ee2565b348015610670575f5ffd5b506103ad61067f36600461247e565b61105f565b34801561068f575f5ffd5b506102dc61069e366004612544565b61121f565b3480156106ae575f5ffd5b5060c9546106c8906201000090046001600160401b031681565b6040516001600160401b039091168152602001610262565b3480156106eb575f5ffd5b506065546001600160a01b03166103ed565b348015610708575f5ffd5b50610256611249565b34801561071c575f5ffd5b506103ad61072b366004612283565b611274565b5f6001600160e01b0319821663093e326b60e21b148061076057506001600160e01b0319821663bb86ef9360e01b145b8061077b57506001600160e01b0319821663b8f2e0c560e01b145b8061079657506001600160e01b031982166336372b0760e01b145b806107b157506001600160e01b0319821663a219a02560e01b145b806107cc57506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe80546107e19061257b565b80601f016020809104026020016040519081016040528092919081815260200182805461080d9061257b565b80156108585780601f1061082f57610100808354040283529160200191610858565b820191905f5260205f20905b81548152906001019060200180831161083b57829003601f168201915b5050505050905090565b5f3361086f8185856112e5565b5060019392505050565b5f33610886858285611408565b610891858585611480565b60019150505b9392505050565b5f60026108ad60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100961630036109075760405162461bcd60e51b81526004016108fe906125b3565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000100966001600160a01b0316610939611634565b6001600160a01b03161461095f5760405162461bcd60e51b81526004016108fe906125ff565b6109688161164f565b604080515f8082526020820190925261098391839190611657565b50565b5f3361086f818585610998838361121f565b6109a2919061264b565b6112e5565b5f6109b38484846117c1565b949350505050565b6109c3611813565b6109cd335f6118a3565b565b6109e360c954610100900460ff1660021490565b15610a015760405163bae6e2a960e01b815260040160405180910390fd5b6002610a0f60c95460ff1690565b60ff1603610a305760405163dfc60d8560e01b815260040160405180910390fd5b610a3a60026118ab565b610a42611249565b15610a605760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610ac757826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610aba91815260200190565b60405180910390a3610ad0565b610ad0336118c1565b610ada838361193d565b50610ae560016118ab565b5050565b610afd60c954610100900460ff1660021490565b15610b1b5760405163bae6e2a960e01b815260040160405180910390fd5b6002610b2960c95460ff1690565b60ff1603610b4a5760405163dfc60d8560e01b815260040160405180910390fd5b610b5460026118ab565b610b5c611249565b15610c095761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610bed575f5ffd5b505af1158015610bff573d5f5f3e3d5ffd5b5050505050610c12565b610c12336118c1565b610c1c3382611a07565b61098360016118ab565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000010096163003610c6e5760405162461bcd60e51b81526004016108fe906125b3565b7f00000000000000000000000001670000000000000000000000000000000100966001600160a01b0316610ca0611634565b6001600160a01b031614610cc65760405162461bcd60e51b81526004016108fe906125ff565b610ccf8261164f565b610ae582826001611657565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000100961614610d7a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108fe565b505f5160206128085f395f51905f5290565b610d94611b44565b6109cd5f611b9e565b60655433906001600160a01b03168114610e0b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016108fe565b61098381611b9e565b610e1c611bb7565b6109cd3360016118a3565b5f610e30611634565b905090565b606060ff80546107e19061257b565b5f3381610e51828661121f565b905083811015610eb15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108fe565b610ebe82868684036112e5565b506001949350505050565b5f6108974684846117c1565b5f3361086f818585611480565b610ef660c954610100900460ff1660021490565b15610f145760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b610f2e816001610ec9565b6001600160a01b0316336001600160a01b031614610f5f57604051630d85cccf60e11b815260040160405180910390fd5b6002610f6d60c95460ff1690565b60ff1603610f8e5760405163dfc60d8560e01b815260040160405180910390fd5b610f9860026118ab565b61012f546001600160a01b038481169116148015610fc9575061012f60149054906101000a900460ff161515821515145b15610fe75760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a161105a60016118ab565b505050565b5f54610100900460ff161580801561107d57505f54600160ff909116105b806110965750303b15801561109657505f5460ff166001145b6110f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108fe565b5f805460ff19166001179055801561111a575f805461ff0019166101001790555b6111248888611c28565b61112e8a8a611c64565b61119f83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611c9e92505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790558015611213575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b031615801590610e3057505061012f54600160a01b900460ff161590565b61127c611b44565b606580546001600160a01b0383166001600160a01b031990911681179091556112ad6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b0383166113475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108fe565b6001600160a01b0382166113a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108fe565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611413848461121f565b90505f19811461147a578181101561146d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108fe565b61147a84848484036112e5565b50505050565b6001600160a01b0383166114e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108fe565b6001600160a01b0382166115465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108fe565b611551838383611cce565b6001600160a01b0383165f90815260fb6020526040902054818110156115c85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108fe565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116279086815260200190565b60405180910390a361147a565b5f5160206128085f395f51905f52546001600160a01b031690565b610983611b44565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561168a5761105a83611d09565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116e4575060408051601f3d908101601f191682019092526116e19181019061266a565b60015b6117475760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108fe565b5f5160206128085f395f51905f5281146117b55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108fe565b5061105a838383611da4565b5f6117cc8484611dc8565b9050811580156117e357506001600160a01b038116155b1561089757604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016108fe565b61182760c954610100900460ff1660021490565b6118445760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610ae5611b44565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b6118e26033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161415801561191f5750611909816001610ec9565b6001600160a01b0316336001600160a01b031614155b15610ae557604051630d85cccf60e11b815260040160405180910390fd5b6001600160a01b0382166119935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108fe565b61199e5f8383611cce565b8060fd5f8282546119af919061264b565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611a675760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108fe565b611a72825f83611cce565b6001600160a01b0382165f90815260fb602052604090205481811015611ae55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108fe565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6033546001600160a01b031633146109cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fe565b606580546001600160a01b031916905561098381611e6a565b611bcb60c954610100900460ff1660021490565b15611be95760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611899565b6001600160a01b0382161580611c3c575080155b80611c4657504681145b15610ae55760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611c8c5760405163538ba4f960e01b815260040160405180910390fd5b611c9583611ebb565b61105a82611f19565b5f54610100900460ff16611cc45760405162461bcd60e51b81526004016108fe90612681565b610ae58282611f89565b611ce260c954610100900460ff1660021490565b15611d005760405163bae6e2a960e01b815260040160405180910390fd5b61105a82611fc8565b6001600160a01b0381163b611d765760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108fe565b5f5160206128085f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611dad83611ff1565b5f82511180611db95750805b1561105a5761147a8383612030565b6097545f906001600160a01b031680611df457604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e46573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b391906126cc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611ee15760405162461bcd60e51b81526004016108fe90612681565b611ee9612055565b611f076001600160a01b03821615611f015781611b9e565b33611b9e565b5060c9805461ff001916610100179055565b5f54610100900460ff16611f3f5760405162461bcd60e51b81526004016108fe90612681565b6001600160401b03461115611f675760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff16611faf5760405162461bcd60e51b81526004016108fe90612681565b60fe611fbb8382612732565b5060ff61105a8282612732565b306001600160a01b0382160361098357604051630c292c9d60e21b815260040160405180910390fd5b611ffa81611d09565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061089783836040518060600160405280602781526020016128286027913961207b565b5f54610100900460ff166109cd5760405162461bcd60e51b81526004016108fe90612681565b60605f5f856001600160a01b03168560405161209791906127ec565b5f60405180830381855af49150503d805f81146120cf576040519150601f19603f3d011682016040523d82523d5f602084013e6120d4565b606091505b50915091506120e5868383876120ef565b9695505050505050565b6060831561215d5782515f03612156576001600160a01b0385163b6121565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108fe565b50816109b3565b6109b383838151156121725781518083602001fd5b8060405162461bcd60e51b81526004016108fe91906121d5565b5f6020828403121561219c575f5ffd5b81356001600160e01b031981168114610897575f5ffd5b5f5b838110156121cd5781810151838201526020016121b5565b50505f910152565b602081525f82518060208401526121f38160408501602087016121b3565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610983575f5ffd5b5f5f6040838503121561222c575f5ffd5b823561223781612207565b946020939093013593505050565b5f5f5f60608486031215612257575f5ffd5b833561226281612207565b9250602084013561227281612207565b929592945050506040919091013590565b5f60208284031215612293575f5ffd5b813561089781612207565b803580151581146122ad575f5ffd5b919050565b5f5f5f606084860312156122c4575f5ffd5b83356001600160401b03811681146122da575f5ffd5b9250602084013591506122ef6040850161229e565b90509250925092565b5f60208284031215612308575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612334575f5ffd5b823561233f81612207565b915060208301356001600160401b03811115612359575f5ffd5b8301601f81018513612369575f5ffd5b80356001600160401b038111156123825761238261230f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156123b0576123b061230f565b6040528181528282016020018710156123c7575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156123f7575f5ffd5b823591506124076020840161229e565b90509250929050565b5f5f60408385031215612421575f5ffd5b823561242c81612207565b91506124076020840161229e565b5f5f83601f84011261244a575f5ffd5b5081356001600160401b03811115612460575f5ffd5b602083019150836020828501011115612477575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60e08a8c031215612496575f5ffd5b89356124a181612207565b985060208a01356124b181612207565b975060408a01356124c181612207565b965060608a0135955060808a013560ff811681146124dd575f5ffd5b945060a08a01356001600160401b038111156124f7575f5ffd5b6125038c828d0161243a565b90955093505060c08a01356001600160401b03811115612521575f5ffd5b61252d8c828d0161243a565b915080935050809150509295985092959850929598565b5f5f60408385031215612555575f5ffd5b823561256081612207565b9150602083013561257081612207565b809150509250929050565b600181811c9082168061258f57607f821691505b6020821081036125ad57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b808201808211156107cc57634e487b7160e01b5f52601160045260245ffd5b5f6020828403121561267a575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156126dc575f5ffd5b815161089781612207565b601f82111561105a57805f5260205f20601f840160051c8101602085101561270c5750805b601f840160051c820191505b8181101561272b575f8155600101612718565b5050505050565b81516001600160401b0381111561274b5761274b61230f565b61275f81612759845461257b565b846126e7565b6020601f821160018114612791575f831561277a5750848201515b5f19600385901b1c1916600184901b17845561272b565b5f84815260208120601f198516915b828110156127c057878501518255602094850194600190920191016127a0565b50848210156127dd57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516127fd8184602087016121b3565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206de11e098828560ed8b32ec4c49b5259fec7bac640db1effdfd9fcc5e0efa77b64736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010097": { - "contractName": "BridgedERC721", - "storage": {}, - "code": "0x608060405260043610610207575f3560e01c80636352211e11610113578063a22cb4651161009d578063e07baba61161006d578063e07baba6146105c3578063e30c397814610600578063e985e9c51461061d578063ef8c4ae614610665578063f2fde38b14610684575f5ffd5b8063a22cb46514610547578063a86f9d9e14610566578063b88d4fde14610585578063c87b56dd146105a4575f5ffd5b80637cf8ed0d116100e35780637cf8ed0d146104ce5780638456cb59146104ee5780638abf6077146105025780638da5cb5b1461051657806395d89b4114610533575f5ffd5b80636352211e1461046857806370a0823114610487578063715018a6146104a657806379ba5097146104ba575f5ffd5b80633eb6b8cf1161019457806342966c681161016457806342966c68146103de57806349d12605146103fd5780634f1ef2861461042157806352d1902d146104345780635c975abb14610448575f5ffd5b80633eb6b8cf1461036d5780633f4ba83a1461038c57806340c10f19146103a057806342842e0e146103bf575f5ffd5b806323b872dd116101da57806323b872dd146102b857806326afaadd146102d75780633075db561461031b5780633659cfe61461032f5780633ab76e9f1461034e575f5ffd5b806301ffc9a71461020b57806306fdde031461023f578063081812fc14610260578063095ea7b314610297575b5f5ffd5b348015610216575f5ffd5b5061022a61022536600461253b565b6106a3565b60405190151581526020015b60405180910390f35b34801561024a575f5ffd5b506102536106e8565b60405161023691906125a3565b34801561026b575f5ffd5b5061027f61027a3660046125b5565b610779565b6040516001600160a01b039091168152602001610236565b3480156102a2575f5ffd5b506102b66102b13660046125e0565b61079f565b005b3480156102c3575f5ffd5b506102b66102d236600461260a565b6108b8565b3480156102e2575f5ffd5b506102fc61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610236565b348015610326575f5ffd5b5061022a6108e9565b34801561033a575f5ffd5b506102b6610349366004612648565b610901565b348015610359575f5ffd5b5060975461027f906001600160a01b031681565b348015610378575f5ffd5b5061027f610387366004612677565b6109c8565b348015610397575f5ffd5b506102b66109de565b3480156103ab575f5ffd5b506102b66103ba3660046125e0565b6109f2565b3480156103ca575f5ffd5b506102b66103d936600461260a565b610abd565b3480156103e9575f5ffd5b506102b66103f83660046125b5565b610ad7565b348015610408575f5ffd5b506104136101605481565b604051908152602001610236565b6102b661042f36600461275a565b610bd6565b34801561043f575f5ffd5b50610413610c8b565b348015610453575f5ffd5b5061022a60c954610100900460ff1660021490565b348015610473575f5ffd5b5061027f6104823660046125b5565b610d3c565b348015610492575f5ffd5b506104136104a1366004612648565b610d9c565b3480156104b1575f5ffd5b506102b6610e21565b3480156104c5575f5ffd5b506102b6610e32565b3480156104d9575f5ffd5b5061015f5461027f906001600160a01b031681565b3480156104f9575f5ffd5b506102b6610ea9565b34801561050d575f5ffd5b5061027f610ebc565b348015610521575f5ffd5b506033546001600160a01b031661027f565b34801561053e575f5ffd5b50610253610eca565b348015610552575f5ffd5b506102b66105613660046127a6565b610eda565b348015610571575f5ffd5b5061027f6105803660046127d9565b610ee5565b348015610590575f5ffd5b506102b661059f3660046127fa565b610ef1565b3480156105af575f5ffd5b506102536105be3660046125b5565b610f29565b3480156105ce575f5ffd5b5060c9546105e8906201000090046001600160401b031681565b6040516001600160401b039091168152602001610236565b34801561060b575f5ffd5b506065546001600160a01b031661027f565b348015610628575f5ffd5b5061022a610637366004612861565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b348015610670575f5ffd5b506102b661067f3660046128dc565b610f52565b34801561068f575f5ffd5b506102b661069e366004612648565b611104565b5f6001600160e01b0319821663093e326b60e21b14806106d357506001600160e01b031982166377c6257360e11b145b806106e257506106e282611175565b92915050565b606061012d80546106f890612989565b80601f016020809104026020016040519081016040528092919081815260200182805461072490612989565b801561076f5780601f106107465761010080835404028352916020019161076f565b820191905f5260205f20905b81548152906001019060200180831161075257829003601f168201915b5050505050905090565b5f610783826111c4565b505f90815261013160205260409020546001600160a01b031690565b5f6107a982610d3c565b9050806001600160a01b0316836001600160a01b03160361081b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061083757506108378133610637565b6108a95760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610812565b6108b38383611223565b505050565b6108c23382611291565b6108de5760405162461bcd60e51b8152600401610812906129c1565b6108b383838361130f565b5f60026108f860c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100971630036109495760405162461bcd60e51b815260040161081290612a0e565b7f00000000000000000000000001670000000000000000000000000000000100976001600160a01b031661097b611481565b6001600160a01b0316146109a15760405162461bcd60e51b815260040161081290612a5a565b6109aa8161149c565b604080515f808252602082019092526109c5918391906114a4565b50565b5f6109d484848461160e565b90505b9392505050565b6109e6611660565b6109f0335f6116f0565b565b610a0660c954610100900460ff1660021490565b15610a245760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610a3f816001610ee5565b6001600160a01b0316336001600160a01b031614610a7057604051630d85cccf60e11b815260040160405180910390fd5b6002610a7e60c95460ff1690565b60ff1603610a9f5760405163dfc60d8560e01b815260040160405180910390fd5b610aa960026116f8565b610ab3838361170e565b6108b360016116f8565b6108b383838360405180602001604052805f815250610ef1565b610aeb60c954610100900460ff1660021490565b15610b095760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610b24816001610ee5565b6001600160a01b0316336001600160a01b031614610b5557604051630d85cccf60e11b815260040160405180910390fd5b6002610b6360c95460ff1690565b60ff1603610b845760405163dfc60d8560e01b815260040160405180910390fd5b610b8e60026116f8565b33610b9883610d3c565b6001600160a01b031614610bbf5760405163358bf3d960e01b815260040160405180910390fd5b610bc882611727565b610bd260016116f8565b5050565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000010097163003610c1e5760405162461bcd60e51b815260040161081290612a0e565b7f00000000000000000000000001670000000000000000000000000000000100976001600160a01b0316610c50611481565b6001600160a01b031614610c765760405162461bcd60e51b815260040161081290612a5a565b610c7f8261149c565b610bd2828260016114a4565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000100971614610d2a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610812565b505f516020612e175f395f51905f5290565b5f81815261012f60205260408120546001600160a01b0316806106e25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610812565b5f6001600160a01b038216610e055760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610812565b506001600160a01b03165f908152610130602052604090205490565b610e296117c9565b6109f05f611823565b60655433906001600160a01b03168114610ea05760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610812565b6109c581611823565b610eb161183c565b6109f03360016116f0565b5f610ec5611481565b905090565b606061012e80546106f890612989565b610bd23383836118ad565b5f6109d746848461160e565b610efb3383611291565b610f175760405162461bcd60e51b8152600401610812906129c1565b610f238484848461197b565b50505050565b61015f54610160546060916106e2916001600160a01b0390911690610f4d856119ae565b611a3d565b5f54610100900460ff1615808015610f7057505f54600160ff909116105b80610f895750303b158015610f8957505f5460ff166001145b610fec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610812565b5f805460ff19166001179055801561100d575f805461ff0019166101001790555b6110178787611a87565b6110218989611ac3565b61109283838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611afd92505050565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905580156110f9575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61110c6117c9565b606580546001600160a01b0383166001600160a01b0319909116811790915561113d6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b14806111a557506001600160e01b03198216635b5e139f60e01b145b806106e257506301ffc9a760e01b6001600160e01b03198316146106e2565b5f81815261012f60205260409020546001600160a01b03166109c55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610812565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061125882610d3c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f61129c83610d3c565b9050806001600160a01b0316846001600160a01b031614806112e357506001600160a01b038082165f908152610132602090815260408083209388168352929052205460ff165b806113075750836001600160a01b03166112fc84610779565b6001600160a01b0316145b949350505050565b826001600160a01b031661132282610d3c565b6001600160a01b0316146113485760405162461bcd60e51b815260040161081290612aa6565b6001600160a01b0382166113aa5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610812565b6113b78383836001611b2d565b826001600160a01b03166113ca82610d3c565b6001600160a01b0316146113f05760405162461bcd60e51b815260040161081290612aa6565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612e175f395f51905f52546001600160a01b031690565b6109c56117c9565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114d7576108b383611b6d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611531575060408051601f3d908101601f1916820190925261152e91810190612aeb565b60015b6115945760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610812565b5f516020612e175f395f51905f5281146116025760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610812565b506108b3838383611c08565b5f6116198484611c2c565b90508115801561163057506001600160a01b038116155b156109d757604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610812565b61167460c954610100900460ff1660021490565b6116915760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610bd26117c9565b60c9805460ff191660ff92909216919091179055565b610bd2828260405180602001604052805f815250611cce565b5f61173182610d3c565b9050611740815f846001611b2d565b61174982610d3c565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b031633146109f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610812565b606580546001600160a01b03191690556109c581611d00565b61185060c954610100900460ff1660021490565b1561186e5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016116e6565b816001600160a01b0316836001600160a01b03160361190e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610812565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61198684848461130f565b61199284848484611d51565b610f235760405162461bcd60e51b815260040161081290612b02565b60605f6119ba83611e4e565b60010190505f816001600160401b038111156119d8576119d86126bd565b6040519080825280601f01601f191660200182016040528015611a02576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a0c57509392505050565b6060611a53846001600160a01b03166014611f25565b611a5c846119ae565b83604051602001611a6f93929190612b54565b60405160208183030381529060405290509392505050565b6001600160a01b0382161580611a9b575080155b80611aa557504681145b15610bd25760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611aeb5760405163538ba4f960e01b815260040160405180910390fd5b611af4836120ba565b6108b382612118565b5f54610100900460ff16611b235760405162461bcd60e51b815260040161081290612bdc565b610bd28282612188565b611b4160c954610100900460ff1660021490565b15611b5f5760405163bae6e2a960e01b815260040160405180910390fd5b611b68836121c9565b610f23565b6001600160a01b0381163b611bda5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610812565b5f516020612e175f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611c11836121f2565b5f82511180611c1d5750805b156108b357610f238383612231565b6097545f906001600160a01b031680611c5857604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611caa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113079190612c27565b611cd88383612256565b611ce45f848484611d51565b6108b35760405162461bcd60e51b815260040161081290612b02565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611e4357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d94903390899088908890600401612c42565b6020604051808303815f875af1925050508015611dce575060408051601f3d908101601f19168201909252611dcb91810190612c74565b60015b611e29573d808015611dfb576040519150601f19603f3d011682016040523d82523d5f602084013e611e00565b606091505b5080515f03611e215760405162461bcd60e51b815260040161081290612b02565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611307565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e8c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611eb8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611ed657662386f26fc10000830492506010015b6305f5e1008310611eee576305f5e100830492506008015b6127108310611f0257612710830492506004015b60648310611f14576064830492506002015b600a83106106e25760010192915050565b60605f611f33836002612ca3565b611f3e906002612cba565b6001600160401b03811115611f5557611f556126bd565b6040519080825280601f01601f191660200182016040528015611f7f576020820181803683370190505b509050600360fc1b815f81518110611f9957611f99612ccd565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611fc757611fc7612ccd565b60200101906001600160f81b03191690815f1a9053505f611fe9846002612ca3565b611ff4906001612cba565b90505b600181111561206b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061202857612028612ccd565b1a60f81b82828151811061203e5761203e612ccd565b60200101906001600160f81b03191690815f1a90535060049490941c9361206481612ce1565b9050611ff7565b5083156109d75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610812565b5f54610100900460ff166120e05760405162461bcd60e51b815260040161081290612bdc565b6120e86123ef565b6121066001600160a01b038216156121005781611823565b33611823565b5060c9805461ff001916610100179055565b5f54610100900460ff1661213e5760405162461bcd60e51b815260040161081290612bdc565b6001600160401b034611156121665760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff166121ae5760405162461bcd60e51b815260040161081290612bdc565b61012d6121bb8382612d41565b5061012e6108b38282612d41565b306001600160a01b038216036109c557604051630c292c9d60e21b815260040160405180910390fd5b6121fb81611b6d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606109d78383604051806060016040528060278152602001612e3760279139612415565b6001600160a01b0382166122ac5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610812565b5f81815261012f60205260409020546001600160a01b0316156123115760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610812565b61231e5f83836001611b2d565b5f81815261012f60205260409020546001600160a01b0316156123835760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610812565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f54610100900460ff166109f05760405162461bcd60e51b815260040161081290612bdc565b60605f5f856001600160a01b0316856040516124319190612dfb565b5f60405180830381855af49150503d805f8114612469576040519150601f19603f3d011682016040523d82523d5f602084013e61246e565b606091505b509150915061247f86838387612489565b9695505050505050565b606083156124f75782515f036124f0576001600160a01b0385163b6124f05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610812565b5081611307565b611307838381511561250c5781518083602001fd5b8060405162461bcd60e51b815260040161081291906125a3565b6001600160e01b0319811681146109c5575f5ffd5b5f6020828403121561254b575f5ffd5b81356109d781612526565b5f5b83811015612570578181015183820152602001612558565b50505f910152565b5f815180845261258f816020860160208601612556565b601f01601f19169290920160200192915050565b602081525f6109d76020830184612578565b5f602082840312156125c5575f5ffd5b5035919050565b6001600160a01b03811681146109c5575f5ffd5b5f5f604083850312156125f1575f5ffd5b82356125fc816125cc565b946020939093013593505050565b5f5f5f6060848603121561261c575f5ffd5b8335612627816125cc565b92506020840135612637816125cc565b929592945050506040919091013590565b5f60208284031215612658575f5ffd5b81356109d7816125cc565b80358015158114612672575f5ffd5b919050565b5f5f5f60608486031215612689575f5ffd5b83356001600160401b038116811461269f575f5ffd5b9250602084013591506126b460408501612663565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126126e0575f5ffd5b81356001600160401b038111156126f9576126f96126bd565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612727576127276126bd565b60405281815283820160200185101561273e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561276b575f5ffd5b8235612776816125cc565b915060208301356001600160401b03811115612790575f5ffd5b61279c858286016126d1565b9150509250929050565b5f5f604083850312156127b7575f5ffd5b82356127c2816125cc565b91506127d060208401612663565b90509250929050565b5f5f604083850312156127ea575f5ffd5b823591506127d060208401612663565b5f5f5f5f6080858703121561280d575f5ffd5b8435612818816125cc565b93506020850135612828816125cc565b92506040850135915060608501356001600160401b03811115612849575f5ffd5b612855878288016126d1565b91505092959194509250565b5f5f60408385031215612872575f5ffd5b823561287d816125cc565b9150602083013561288d816125cc565b809150509250929050565b5f5f83601f8401126128a8575f5ffd5b5081356001600160401b038111156128be575f5ffd5b6020830191508360208285010111156128d5575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156128f3575f5ffd5b88356128fe816125cc565b9750602089013561290e816125cc565b9650604089013561291e816125cc565b95506060890135945060808901356001600160401b0381111561293f575f5ffd5b61294b8b828c01612898565b90955093505060a08901356001600160401b03811115612969575f5ffd5b6129758b828c01612898565b999c989b5096995094979396929594505050565b600181811c9082168061299d57607f821691505b6020821081036129bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215612afb575f5ffd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612b77816009850160208901612556565b600160fe1b6009918401918201528451612b9881600a840160208901612556565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612bcf816013840160208801612556565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612c37575f5ffd5b81516109d7816125cc565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061247f90830184612578565b5f60208284031215612c84575f5ffd5b81516109d781612526565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106e2576106e2612c8f565b808201808211156106e2576106e2612c8f565b634e487b7160e01b5f52603260045260245ffd5b5f81612cef57612cef612c8f565b505f190190565b601f8211156108b357805f5260205f20601f840160051c81016020851015612d1b5750805b601f840160051c820191505b81811015612d3a575f8155600101612d27565b5050505050565b81516001600160401b03811115612d5a57612d5a6126bd565b612d6e81612d688454612989565b84612cf6565b6020601f821160018114612da0575f8315612d895750848201515b5f19600385901b1c1916600184901b178455612d3a565b5f84815260208120601f198516915b82811015612dcf5787850151825560209485019460019092019101612daf565b5084821015612dec57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612e0c818460208701612556565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205ca793a2312f9b2fc8fc6bda4c8492cc141ddbe707fcc60e6d2cb7bff225a87a64736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010098": { - "contractName": "BridgedERC1155", - "storage": {}, - "code": "0x6080604052600436106101e5575f3560e01c8063715018a611610108578063a86f9d9e1161009d578063e30c39781161006d578063e30c39781461056f578063e985e9c51461058c578063ef8c4ae6146105d4578063f242432a146105f3578063f2fde38b14610612575f5ffd5b8063a86f9d9e146104d5578063b390c0ab146104f4578063d81d0a1514610513578063e07baba614610532575f5ffd5b80638abf6077116100d85780638abf6077146104715780638da5cb5b1461048557806395d89b41146104a2578063a22cb465146104b6575f5ffd5b8063715018a61461041557806379ba5097146104295780637cf8ed0d1461043d5780638456cb591461045d575f5ffd5b80633ab76e9f1161017e5780634e1273f41161014e5780634e1273f4146103a25780634f1ef286146103ce57806352d1902d146103e15780635c975abb146103f5575f5ffd5b80633ab76e9f146103225780633eb6b8cf146103595780633f4ba83a1461037857806349d126051461038c575f5ffd5b806326afaadd116101b957806326afaadd1461028a5780632eb2c2d6146102ce5780633075db56146102ef5780633659cfe614610303575f5ffd5b8062fdd58e146101e957806301ffc9a71461021b57806306fdde031461024a5780630e89341c1461026b575b5f5ffd5b3480156101f4575f5ffd5b506102086102033660046126ae565b610631565b6040519081526020015b60405180910390f35b348015610226575f5ffd5b5061023a6102353660046126ed565b6106cb565b6040519015158152602001610212565b348015610255575f5ffd5b5061025e61070a565b6040516102129190612755565b348015610276575f5ffd5b5061025e610285366004612767565b610797565b348015610295575f5ffd5b506102af61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610212565b3480156102d9575f5ffd5b506102ed6102e83660046128c0565b61082a565b005b3480156102fa575f5ffd5b5061023a610876565b34801561030e575f5ffd5b506102ed61031d366004612970565b61088e565b34801561032d575f5ffd5b50609754610341906001600160a01b031681565b6040516001600160a01b039091168152602001610212565b348015610364575f5ffd5b5061034161037336600461299f565b610955565b348015610383575f5ffd5b506102ed61096b565b348015610397575f5ffd5b506102086101605481565b3480156103ad575f5ffd5b506103c16103bc3660046129e5565b61097f565b6040516102129190612aee565b6102ed6103dc366004612b00565b610a9e565b3480156103ec575f5ffd5b50610208610b57565b348015610400575f5ffd5b5061023a60c954610100900460ff1660021490565b348015610420575f5ffd5b506102ed610c09565b348015610434575f5ffd5b506102ed610c1a565b348015610448575f5ffd5b5061015f54610341906001600160a01b031681565b348015610468575f5ffd5b506102ed610c91565b34801561047c575f5ffd5b50610341610ca4565b348015610490575f5ffd5b506033546001600160a01b0316610341565b3480156104ad575f5ffd5b5061025e610cb2565b3480156104c1575f5ffd5b506102ed6104d0366004612b42565b610cc0565b3480156104e0575f5ffd5b506103416104ef366004612b75565b610ccb565b3480156104ff575f5ffd5b506102ed61050e366004612b96565b610cd7565b34801561051e575f5ffd5b506102ed61052d366004612bfd565b610da9565b34801561053d575f5ffd5b5060c954610557906201000090046001600160401b031681565b6040516001600160401b039091168152602001610212565b34801561057a575f5ffd5b506065546001600160a01b0316610341565b348015610597575f5ffd5b5061023a6105a6366004612c7d565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b3480156105df575f5ffd5b506102ed6105ee366004612cf1565b610eed565b3480156105fe575f5ffd5b506102ed61060d366004612d9e565b61106d565b34801561061d575f5ffd5b506102ed61062c366004612970565b6110b2565b5f6001600160a01b0383166106a05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b14806106fb57506001600160e01b031982166377c6257360e11b145b806106c557506106c582611123565b610162805461071890612df5565b80601f016020809104026020016040519081016040528092919081815260200182805461074490612df5565b801561078f5780601f106107665761010080835404028352916020019161078f565b820191905f5260205f20905b81548152906001019060200180831161077257829003601f168201915b505050505081565b606061012f80546107a790612df5565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390612df5565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b50505050509050919050565b6001600160a01b038516331480610846575061084685336105a6565b6108625760405162461bcd60e51b815260040161069790612e2d565b61086f8585858585611172565b5050505050565b5f600261088560c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100981630036108d65760405162461bcd60e51b815260040161069790612e7b565b7f00000000000000000000000001670000000000000000000000000000000100986001600160a01b031661090861130d565b6001600160a01b03161461092e5760405162461bcd60e51b815260040161069790612ec7565b61093781611328565b604080515f8082526020820190925261095291839190611330565b50565b5f61096184848461149a565b90505b9392505050565b6109736114ec565b61097d335f61157c565b565b606081518351146109e45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610697565b5f83516001600160401b038111156109fe576109fe61277e565b604051908082528060200260200182016040528015610a27578160200160208202803683370190505b5090505f5b8451811015610a9657610a71858281518110610a4a57610a4a612f13565b6020026020010151858381518110610a6457610a64612f13565b6020026020010151610631565b828281518110610a8357610a83612f13565b6020908102919091010152600101610a2c565b509392505050565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000010098163003610ae65760405162461bcd60e51b815260040161069790612e7b565b7f00000000000000000000000001670000000000000000000000000000000100986001600160a01b0316610b1861130d565b6001600160a01b031614610b3e5760405162461bcd60e51b815260040161069790612ec7565b610b4782611328565b610b5382826001611330565b5050565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000100981614610bf65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610697565b505f5160206134ec5f395f51905f525b90565b610c11611580565b61097d5f6115da565b60655433906001600160a01b03168114610c885760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610697565b610952816115da565b610c996115f3565b61097d33600161157c565b5f610cad61130d565b905090565b610161805461071890612df5565b610b53338383611664565b5f61096446848461149a565b610ceb60c954610100900460ff1660021490565b15610d095760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610d25816001610ccb565b6001600160a01b0316336001600160a01b031614610d5657604051630d85cccf60e11b815260040160405180910390fd5b6002610d6460c95460ff1690565b60ff1603610d855760405163dfc60d8560e01b815260040160405180910390fd5b610d8f6002611744565b610d9a33848461175a565b610da46001611744565b505050565b610dbd60c954610100900460ff1660021490565b15610ddb5760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610df7816001610ccb565b6001600160a01b0316336001600160a01b031614610e2857604051630d85cccf60e11b815260040160405180910390fd5b6002610e3660c95460ff1690565b60ff1603610e575760405163dfc60d8560e01b815260040160405180910390fd5b610e616002611744565b610edb868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f920182905250604080516020810190915290815292506118ee915050565b610ee56001611744565b505050505050565b5f54610100900460ff1615808015610f0b57505f54600160ff909116105b80610f245750303b158015610f2457505f5460ff166001145b610f875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610697565b5f805460ff191660011790558015610fa8575f805461ff0019166101001790555b610fb28787611a70565b610fbc8989611aac565b610fdd610fd8888860405180602001604052805f815250611ae6565b611b30565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905561016161100d858783612f6b565b5061016261101c838583612f6b565b508015611062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6001600160a01b038516331480611089575061108985336105a6565b6110a55760405162461bcd60e51b815260040161069790612e2d565b61086f8585858585611b5f565b6110ba611580565b606580546001600160a01b0383166001600160a01b031990911681179091556110eb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061115357506001600160e01b031982166303a24d0760e21b145b806106c557506301ffc9a760e01b6001600160e01b03198316146106c5565b81518351146111935760405162461bcd60e51b815260040161069790613024565b6001600160a01b0384166111b95760405162461bcd60e51b81526004016106979061306c565b336111c8818787878787611c8e565b5f5b84518110156112a7575f8582815181106111e6576111e6612f13565b602002602001015190505f85838151811061120357611203612f13565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e1683529093529190912054909150818110156112545760405162461bcd60e51b8152600401610697906130b1565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061129390849061310f565b9091555050600190930192506111ca915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112f7929190613122565b60405180910390a4610ee5818787878787611cce565b5f5160206134ec5f395f51905f52546001600160a01b031690565b610952611580565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561136357610da483611e28565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113bd575060408051601f3d908101601f191682019092526113ba9181019061314f565b60015b6114205760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610697565b5f5160206134ec5f395f51905f52811461148e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610697565b50610da4838383611ec3565b5f6114a58484611eed565b9050811580156114bc57506001600160a01b038116155b1561096457604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610697565b61150060c954610100900460ff1660021490565b61151d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610b535b6033546001600160a01b0316331461097d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610697565b606580546001600160a01b031916905561095281611f97565b61160760c954610100900460ff1660021490565b156116255760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611572565b816001600160a01b0316836001600160a01b0316036116d75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610697565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166117bc5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610697565b335f6117c784611fe8565b90505f6117d384611fe8565b90506117f183875f858560405180602001604052805f815250611c8e565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156118705760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610697565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b03841661194e5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610697565b815183511461196f5760405162461bcd60e51b815260040161069790613024565b3361197e815f87878787611c8e565b5f5b8451811015611a0a5783818151811061199b5761199b612f13565b602002602001015161012d5f8784815181106119b9576119b9612f13565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f8282546119fd919061310f565b9091555050600101611980565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a5a929190613122565b60405180910390a461086f815f87878787611cce565b6001600160a01b0382161580611a84575080155b80611a8e57504681145b15610b535760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611ad45760405163538ba4f960e01b815260040160405180910390fd5b611add83612031565b610da48261208f565b6060611afc846001600160a01b031660146120ff565b611b0584612294565b83604051602001611b1893929190613166565b60405160208183030381529060405290509392505050565b5f54610100900460ff16611b565760405162461bcd60e51b8152600401610697906131ee565b61095281612323565b6001600160a01b038416611b855760405162461bcd60e51b81526004016106979061306c565b335f611b9085611fe8565b90505f611b9c85611fe8565b9050611bac838989858589611c8e565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611bef5760405162461bcd60e51b8152600401610697906130b1565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611c2e90849061310f565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611062848a8a8a8a8a612352565b611ca260c954610100900460ff1660021490565b15611cc05760405163bae6e2a960e01b815260040160405180910390fd5b611cc98461240c565b610ee5565b6001600160a01b0384163b15610ee55760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611d129089908990889088908890600401613239565b6020604051808303815f875af1925050508015611d4c575060408051601f3d908101601f19168201909252611d4991810190613296565b60015b611df857611d586132b1565b806308c379a003611d915750611d6c6132c9565b80611d775750611d93565b8060405162461bcd60e51b81526004016106979190612755565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610697565b6001600160e01b0319811663bc197c8160e01b146118e55760405162461bcd60e51b815260040161069790613343565b6001600160a01b0381163b611e955760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610697565b5f5160206134ec5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611ecc83612435565b5f82511180611ed85750805b15610da457611ee78383612474565b50505050565b6097545f906001600160a01b031680611f1957604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611f6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8f919061338b565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f8151811061202057612020612f13565b602090810291909101015292915050565b5f54610100900460ff166120575760405162461bcd60e51b8152600401610697906131ee565b61205f612499565b61207d6001600160a01b0382161561207757816115da565b336115da565b5060c9805461ff001916610100179055565b5f54610100900460ff166120b55760405162461bcd60e51b8152600401610697906131ee565b6001600160401b034611156120dd5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61210d8360026133a6565b61211890600261310f565b6001600160401b0381111561212f5761212f61277e565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b509050600360fc1b815f8151811061217357612173612f13565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106121a1576121a1612f13565b60200101906001600160f81b03191690815f1a9053505f6121c38460026133a6565b6121ce90600161310f565b90505b6001811115612245576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061220257612202612f13565b1a60f81b82828151811061221857612218612f13565b60200101906001600160f81b03191690815f1a90535060049490941c9361223e816133bd565b90506121d1565b5083156109645760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610697565b60605f6122a0836124bf565b60010190505f816001600160401b038111156122be576122be61277e565b6040519080825280601f01601f1916602001820160405280156122e8576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846122f257509392505050565b5f54610100900460ff166123495760405162461bcd60e51b8152600401610697906131ee565b61095281612596565b6001600160a01b0384163b15610ee55760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061239690899089908890889088906004016133d2565b6020604051808303815f875af19250505080156123d0575060408051601f3d908101601f191682019092526123cd91810190613296565b60015b6123dc57611d586132b1565b6001600160e01b0319811663f23a6e6160e01b146118e55760405162461bcd60e51b815260040161069790613343565b306001600160a01b0382160361095257604051630c292c9d60e21b815260040160405180910390fd5b61243e81611e28565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610964838360405180606001604052806027815260200161350c602791396125a3565b5f54610100900460ff1661097d5760405162461bcd60e51b8152600401610697906131ee565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124fd5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612529576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061254757662386f26fc10000830492506010015b6305f5e100831061255f576305f5e100830492506008015b612710831061257357612710830492506004015b60648310612585576064830492506002015b600a83106106c55760010192915050565b61012f610b538282613416565b60605f5f856001600160a01b0316856040516125bf91906134d0565b5f60405180830381855af49150503d805f81146125f7576040519150601f19603f3d011682016040523d82523d5f602084013e6125fc565b606091505b509150915061260d86838387612617565b9695505050505050565b606083156126855782515f0361267e576001600160a01b0385163b61267e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610697565b5081611f8f565b611f8f8383815115611d775781518083602001fd5b6001600160a01b0381168114610952575f5ffd5b5f5f604083850312156126bf575f5ffd5b82356126ca8161269a565b946020939093013593505050565b6001600160e01b031981168114610952575f5ffd5b5f602082840312156126fd575f5ffd5b8135610964816126d8565b5f5b8381101561272257818101518382015260200161270a565b50505f910152565b5f8151808452612741816020860160208601612708565b601f01601f19169290920160200192915050565b602081525f610964602083018461272a565b5f60208284031215612777575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156127b7576127b761277e565b6040525050565b5f6001600160401b038211156127d6576127d661277e565b5060051b60200190565b5f82601f8301126127ef575f5ffd5b81356127fa816127be565b6040516128078282612792565b80915082815260208101915060208360051b86010192508583111561282a575f5ffd5b602085015b8381101561284757803583526020928301920161282f565b5095945050505050565b5f82601f830112612860575f5ffd5b81356001600160401b038111156128795761287961277e565b604051612890601f8301601f191660200182612792565b8181528460208386010111156128a4575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156128d4575f5ffd5b85356128df8161269a565b945060208601356128ef8161269a565b935060408601356001600160401b03811115612909575f5ffd5b612915888289016127e0565b93505060608601356001600160401b03811115612930575f5ffd5b61293c888289016127e0565b92505060808601356001600160401b03811115612957575f5ffd5b61296388828901612851565b9150509295509295909350565b5f60208284031215612980575f5ffd5b81356109648161269a565b8035801515811461299a575f5ffd5b919050565b5f5f5f606084860312156129b1575f5ffd5b83356001600160401b03811681146129c7575f5ffd5b9250602084013591506129dc6040850161298b565b90509250925092565b5f5f604083850312156129f6575f5ffd5b82356001600160401b03811115612a0b575f5ffd5b8301601f81018513612a1b575f5ffd5b8035612a26816127be565b604051612a338282612792565b80915082815260208101915060208360051b850101925087831115612a56575f5ffd5b6020840193505b82841015612a81578335612a708161269a565b825260209384019390910190612a5d565b945050505060208301356001600160401b03811115612a9e575f5ffd5b612aaa858286016127e0565b9150509250929050565b5f8151808452602084019350602083015f5b82811015612ae4578151865260209586019590910190600101612ac6565b5093949350505050565b602081525f6109646020830184612ab4565b5f5f60408385031215612b11575f5ffd5b8235612b1c8161269a565b915060208301356001600160401b03811115612b36575f5ffd5b612aaa85828601612851565b5f5f60408385031215612b53575f5ffd5b8235612b5e8161269a565b9150612b6c6020840161298b565b90509250929050565b5f5f60408385031215612b86575f5ffd5b82359150612b6c6020840161298b565b5f5f60408385031215612ba7575f5ffd5b50508035926020909101359150565b5f5f83601f840112612bc6575f5ffd5b5081356001600160401b03811115612bdc575f5ffd5b6020830191508360208260051b8501011115612bf6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215612c11575f5ffd5b8535612c1c8161269a565b945060208601356001600160401b03811115612c36575f5ffd5b612c4288828901612bb6565b90955093505060408601356001600160401b03811115612c60575f5ffd5b612c6c88828901612bb6565b969995985093965092949392505050565b5f5f60408385031215612c8e575f5ffd5b8235612c998161269a565b91506020830135612ca98161269a565b809150509250929050565b5f5f83601f840112612cc4575f5ffd5b5081356001600160401b03811115612cda575f5ffd5b602083019150836020828501011115612bf6575f5ffd5b5f5f5f5f5f5f5f5f60c0898b031215612d08575f5ffd5b8835612d138161269a565b97506020890135612d238161269a565b96506040890135612d338161269a565b95506060890135945060808901356001600160401b03811115612d54575f5ffd5b612d608b828c01612cb4565b90955093505060a08901356001600160401b03811115612d7e575f5ffd5b612d8a8b828c01612cb4565b999c989b5096995094979396929594505050565b5f5f5f5f5f60a08688031215612db2575f5ffd5b8535612dbd8161269a565b94506020860135612dcd8161269a565b9350604086013592506060860135915060808601356001600160401b03811115612957575f5ffd5b600181811c90821680612e0957607f821691505b602082108103612e2757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f821115610da457805f5260205f20601f840160051c81016020851015612f4c5750805b601f840160051c820191505b8181101561086f575f8155600101612f58565b6001600160401b03831115612f8257612f8261277e565b612f9683612f908354612df5565b83612f27565b5f601f841160018114612fc7575f8515612fb05750838201355b5f19600387901b1c1916600186901b17835561086f565b5f83815260208120601f198716915b82811015612ff65786850135825560209485019460019092019101612fd6565b5086821015613012575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106c5576106c56130fb565b604081525f6131346040830185612ab4565b82810360208401526131468185612ab4565b95945050505050565b5f6020828403121561315f575f5ffd5b5051919050565b6832ba3432b932bab69d60b91b81525f8451613189816009850160208901612708565b600160fe1b60099184019182015284516131aa81600a840160208901612708565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b600182015283516131e1816013840160208801612708565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f9061326490830186612ab4565b82810360608401526132768186612ab4565b9050828103608084015261328a818561272a565b98975050505050505050565b5f602082840312156132a6575f5ffd5b8151610964816126d8565b5f60033d1115610c065760045f5f3e505f5160e01c90565b5f60443d10156132d65790565b6040513d600319016004823e80513d60248201116001600160401b03821117156132ff57505090565b80820180516001600160401b0381111561331a575050505090565b3d8401600319018282016020011115613334575050505090565b610a9660208285010185612792565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b5f6020828403121561339b575f5ffd5b81516109648161269a565b80820281158282048414176106c5576106c56130fb565b5f816133cb576133cb6130fb565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f9061340b9083018461272a565b979650505050505050565b81516001600160401b0381111561342f5761342f61277e565b6134438161343d8454612df5565b84612f27565b6020601f821160018114613475575f831561345e5750848201515b5f19600385901b1c1916600184901b17845561086f565b5f84815260208120601f198516915b828110156134a45787850151825560209485019460019092019101613484565b50848210156134c157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516134e1818460208701612708565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220056c58b99db557dce285f996f441ca995a4a77b2754e41fc6af5e46a7185c22664736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000000005": { - "contractName": "SignalServiceImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x6080604052600436106101c5575f3560e01c806379ba5097116100f2578063a86f9d9e11610092578063e30c397811610062578063e30c39781461052f578063f09a40161461054c578063f2fde38b1461056b578063fe9fbb801461058a575f5ffd5b8063a86f9d9e1461048e578063ce9d0820146104ad578063dfc8ff1d146104cc578063e07baba61461050a575f5ffd5b80638da5cb5b116100cd5780638da5cb5b14610414578063910af6ed1461043157806391f3f74b146104505780639b527cfa1461046f575f5ffd5b806379ba5097146103d85780638456cb59146103ec5780638abf607714610400575f5ffd5b80633eb6b8cf1161016857806352d1902d1161013857806352d1902d146103715780635c975abb1461038557806366ca2bc0146103a5578063715018a6146103c4575f5ffd5b80633eb6b8cf146102fe5780633f4ba83a1461031d5780634f1ef286146103315780634f90a67414610344575f5ffd5b8063355bcc3d116101a3578063355bcc3d146102325780633659cfe6146102895780633ab76e9f146102a85780633ced0e08146102df575f5ffd5b80632d1fb389146101c95780633075db56146101ea57806332676bc614610213575b5f5ffd5b3480156101d4575f5ffd5b506101e86101e336600461351b565b6105b8565b005b3480156101f5575f5ffd5b506101fe61065e565b60405190151581526020015b60405180910390f35b34801561021e575f5ffd5b506101fe61022d36600461354e565b610676565b34801561023d575f5ffd5b5061027161024c36600461358e565b60fb60209081525f92835260408084209091529082529020546001600160401b031681565b6040516001600160401b03909116815260200161020a565b348015610294575f5ffd5b506101e86102a33660046135a8565b61068c565b3480156102b3575f5ffd5b506097546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102ea575f5ffd5b506101fe6102f93660046135c3565b61075c565b348015610309575f5ffd5b506102c7610318366004613604565b6107a3565b348015610328575f5ffd5b506101e86107b9565b6101e861033f366004613714565b6107cd565b34801561034f575f5ffd5b5061036361035e3660046135c3565b610886565b60405190815260200161020a565b34801561037c575f5ffd5b506103636108cc565b348015610390575f5ffd5b506101fe60c954610100900460ff1660021490565b3480156103b0575f5ffd5b506103636103bf366004613760565b61097d565b3480156103cf575f5ffd5b506101e8610989565b3480156103e3575f5ffd5b506101e861099a565b3480156103f7575f5ffd5b506101e8610a11565b34801561040b575f5ffd5b506102c7610a24565b34801561041f575f5ffd5b506033546001600160a01b03166102c7565b34801561043c575f5ffd5b5061036361044b366004613777565b610a32565b34801561045b575f5ffd5b5061036361046a36600461380c565b610b0d565b34801561047a575f5ffd5b50610363610489366004613848565b610b78565b348015610499575f5ffd5b506102c76104a8366004613878565b610ba4565b3480156104b8575f5ffd5b506101e86104c7366004613777565b610bb0565b3480156104d7575f5ffd5b506104eb6104e6366004613848565b610bc6565b604080516001600160401b03909316835260208301919091520161020a565b348015610515575f5ffd5b5060c954610271906201000090046001600160401b031681565b34801561053a575f5ffd5b506065546001600160a01b03166102c7565b348015610557575f5ffd5b506101e8610566366004613899565b610c5a565b348015610576575f5ffd5b506101e86105853660046135a8565b610d69565b348015610595575f5ffd5b506101fe6105a43660046135a8565b60fc6020525f908152604090205460ff1681565b6105c0610dda565b6001600160a01b0382165f90815260fc602052604090205481151560ff909116151503610600576040516398f26f4560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260fc6020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b5f600261066d60c95460ff1690565b60ff1614905090565b5f6106818383610e34565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000051630036106dd5760405162461bcd60e51b81526004016106d4906138d0565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000000056001600160a01b031661070f610e96565b6001600160a01b0316146107355760405162461bcd60e51b81526004016106d49061391c565b61073e81610eb1565b604080515f8082526020820190925261075991839190610eb9565b50565b5f8180820361077e5760405163ec73295960e01b815260040160405180910390fd5b5f61078a878787610b78565b9050836107973083610e34565b14979650505050505050565b5f6107af848484611023565b90505b9392505050565b6107c1611075565b6107cb335f611105565b565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000051630036108155760405162461bcd60e51b81526004016106d4906138d0565b7f00000000000000000000000001670000000000000000000000000000000000056001600160a01b0316610847610e96565b6001600160a01b03161461086d5760405162461bcd60e51b81526004016106d49061391c565b61087682610eb1565b61088282826001610eb9565b5050565b335f90815260fc602052604081205460ff166108b557604051631f67751f60e01b815260040160405180910390fd5b6108c18585858561111e565b90505b949350505050565b5f306001600160a01b037f0000000000000000000000000167000000000000000000000000000000000005161461096b5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d4565b505f516020613eb05f395f51905f5290565b5f610686338384611200565b610991610dda565b6107cb5f6112d9565b60655433906001600160a01b03168114610a085760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106d4565b610759816112d9565b610a196112f2565b6107cb336001611105565b5f610a2d610e96565b905090565b5f610a4760c954610100900460ff1660021490565b15610a655760405163bae6e2a960e01b815260040160405180910390fd5b6002610a7360c95460ff1690565b60ff1603610a945760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660021790555f610ab187878787876001611363565b90505f5b8151811015610af457610ae0828281518110610ad357610ad3613968565b602002602001015161181f565b610aea9084613990565b9250600101610ab5565b505060c9805460ff191660011790555b95945050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062015b6040516020818303038152906040528051906020012090509392505050565b604080516001600160401b03808616602083015291810184905290821660608201525f90608001610b59565b5f6107b2468484611023565b610bbe85858585855f611363565b505050505050565b5f5f826001600160401b03165f03610c02576001600160401b038086165f90815260fb6020908152604080832088845290915290205416610c04565b825b91506001600160401b03821615610c52575f610c21868685610b78565b9050610c2d3082610e34565b91505f829003610c505760405163738afa0560e01b815260040160405180910390fd5b505b935093915050565b5f54610100900460ff1615808015610c7857505f54600160ff909116105b80610c915750303b158015610c9157505f5460ff166001145b610cf45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d4565b5f805460ff191660011790558015610d15575f805461ff0019166101001790555b610d1f8383611963565b8015610d64575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610d71610dda565b606580546001600160a01b0383166001600160a01b03199091168117909155610da26033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146107cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d4565b5f826001600160a01b038116610e5d5760405163538ba4f960e01b815260040160405180910390fd5b825f819003610e7f5760405163ec73295960e01b815260040160405180910390fd5b5f610e8b468787610b0d565b549695505050505050565b5f516020613eb05f395f51905f52546001600160a01b031690565b610759610dda565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610eec57610d648361199d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f46575060408051601f3d908101601f19168201909252610f43918101906139a3565b60015b610fa95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106d4565b5f516020613eb05f395f51905f5281146110175760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106d4565b50610d64838383611a38565b5f61102e8484611a62565b90508115801561104557506001600160a01b038116155b156107b257604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016106d4565b61108960c954610100900460ff1660021490565b6110a65760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b5f61112a858585610b78565b9050611137308284611200565b506001600160401b038581165f90815260fb60209081526040808320888452909152902054818516911610156111a1576001600160401b038581165f90815260fb602090815260408083208884529091529020805467ffffffffffffffff19169185169190911790555b83836001600160401b0316866001600160401b03167fde247c825b1fb2d7ff9e0e771cba6f9e757ad04479fcdc135d88ae91fd50b37d85856040516111f0929190918252602082015260400190565b60405180910390a4949350505050565b5f836001600160a01b0381166112295760405163538ba4f960e01b815260040160405180910390fd5b835f81900361124b5760405163ec73295960e01b815260040160405180910390fd5b835f81900361126d5760405163ec73295960e01b815260040160405180910390fd5b611278468888610b0d565b858155604080516001600160a01b038a16815260208101899052908101829052606081018790529094507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a15050509392505050565b606580546001600160a01b031916905561075981611b04565b61130660c954610100900460ff1660021490565b156113245760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016110fb565b6060856001600160a01b03811661138d5760405163538ba4f960e01b815260040160405180910390fd5b855f8190036113af5760405163ec73295960e01b815260040160405180910390fd5b5f6113bc86880188613a77565b905080515f036113df57604051630b92daef60e21b815260040160405180910390fd5b5f600182516113ee9190613bbd565b6001600160401b038111156114055761140561363d565b60405190808252806020026020018201604052801561142e578160200160208202803683370190505b50905085156114c15781516001600160401b038111156114505761145061363d565b6040519080825280602002602001820160405280156114bd57816020015b6114aa6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b81526020019060019003908161146e5790505b5094505b8a8a8a805f6114e2856d7369676e616c5f7365727669636560901b836107a3565b9050306001600160a01b0382160361150d57604051637556223560e11b815260040160405180910390fd5b6115456040805160c0810182525f80825260208201819052918101829052906060820190815260200160608152602001606081525090565b5f5f5f5f5b8b518110156117d3578b818151811061156557611565613968565b602002602001015194505f5b818110156115cf57855f01516001600160401b03168c828151811061159857611598613968565b60200260200101516001600160401b0316036115c7576040516348362c2760e11b815260040160405180910390fd5b600101611571565b506115de8a8a8a8a898b611b55565b93508a5181149150811561161e5784516001600160401b03164614611616576040516338bf822760e21b815260040160405180910390fd5b3095506116c9565b845f01518b828151811061163457611634613968565b6001600160401b0392831660209182029290920101528551161580611662575084516001600160401b031646145b1561168057604051637556223560e11b815260040160405180910390fd5b845161169e906d7369676e616c5f7365727669636560901b5f6107a3565b9550306001600160a01b038716036116c957604051637556223560e11b815260040160405180910390fd5b608085015151151592508f1561175d576040518060e00160405280866040015181526020018581526020018b6001600160401b0316815260200186602001516001600160401b03168152602001841515815260200183151581526020018660600151600381111561173c5761173c613bd0565b8152508f828151811061175157611751613968565b60200260200101819052505b6117b88a8461178c577fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf56117ae565b7f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1695b8760200151610b78565b604086015186519b509699509750949550879460010161154a565b508515806117ea57506117e63088610e34565b8614155b156118085760405163738afa0560e01b815260040160405180910390fd5b505050505050505050505050509695505050505050565b5f8060038360c00151600381111561183957611839613bd0565b148061185a575060028360c00151600381111561185857611858613bd0565b145b905080801561186a575082608001515b801561187857508260a00151155b156118ba57600191506118b883604001517f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1698560600151865f015161111e565b505b5f60038460c0015160038111156118d3576118d3613bd0565b14806118f4575060018460c0015160038111156118f2576118f2613bd0565b145b9050808015611910575083608001518061191057508360a00151155b1561195c57611920600184613990565b925061195a84604001517fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf58660600151876020015161111e565b505b5050919050565b806001600160a01b03811661198b5760405163538ba4f960e01b815260040160405180910390fd5b61199483611bf4565b610d6482611c52565b6001600160a01b0381163b611a0a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106d4565b5f516020613eb05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611a4183611cc2565b5f82511180611a4d5750805b15610d6457611a5c8383611d01565b50505050565b6097545f906001600160a01b031680611a8e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611ae0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c49190613be4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f856001600160a01b038116611b7e5760405163538ba4f960e01b815260040160405180910390fd5b855f819003611ba05760405163ec73295960e01b815260040160405180910390fd5b855f819003611bc25760405163ec73295960e01b815260040160405180910390fd5b611be6866040015186611bd68d8d8d610b0d565b8a8a608001518b60a00151611d26565b9a9950505050505050505050565b5f54610100900460ff16611c1a5760405162461bcd60e51b81526004016106d490613bff565b611c22611e33565b611c406001600160a01b03821615611c3a57816112d9565b336112d9565b5060c9805461ff001916610100179055565b5f54610100900460ff16611c785760405162461bcd60e51b81526004016106d490613bff565b6001600160401b03461115611ca05760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b611ccb8161199d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606107b28383604051806060016040528060278152602001613ed060279139611e59565b5f82515f14611dce576040516bffffffffffffffffffffffff19606088901b1660208201525f90611d6a90603401604051602081830303815290604052858a611ecd565b905080515f03611d8d57604051630414cd5b60e31b815260040160405180910390fd5b5f611d9782611ee6565b9050611dbc81600281518110611daf57611daf613968565b6020026020010151611ef9565b611dc590613c4a565b92505050611dd1565b50855b5f611e0886604051602001611de891815260200190565b60408051601f19818403018152919052611e0187611f78565b8585611f8b565b905080611e2857604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b5f54610100900460ff166107cb5760405162461bcd60e51b81526004016106d490613bff565b60605f5f856001600160a01b031685604051611e759190613c92565b5f60405180830381855af49150503d805f8114611ead576040519150601f19603f3d011682016040523d82523d5f602084013e611eb2565b606091505b5091509150611ec386838387611fa4565b9695505050505050565b60605f611ed98561201c565b9050610b0481858561204e565b6060610686611ef4836128bc565b61290e565b60605f5f5f611f0785612a8c565b919450925090505f816001811115611f2157611f21613bd0565b14611f3f576040516307fe6cb960e21b815260040160405180910390fd5b611f498284613990565b855114611f6957604051630b8aa6f760e31b815260040160405180910390fd5b610b0485602001518484612d6f565b6060610686611f8683612dff565b612f13565b5f5f611f968661201c565b9050611ec381868686612f6b565b606083156120125782515f0361200b576001600160a01b0385163b61200b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d4565b50816108c4565b6108c48383612f91565b6060818051906020012060405160200161203891815260200190565b6040516020818303038152906040529050919050565b60605f8451116120985760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106d4565b5f6120a284612fbb565b90505f6120ae8661309e565b90505f846040516020016120c491815260200190565b60408051601f1981840301815291905290505f805b8451811015612865575f8582815181106120f5576120f5613968565b6020026020010151905084518311156121675760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106d4565b825f0361220557805180516020918201206040516121b49261218e92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6122005760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106d4565b6122fb565b80515160201161228b578051805160209182012060405161222f9261218e92910190815260200190565b6122005760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106d4565b8051845160208087019190912082519190920120146122fb5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106d4565b61230760106001613990565b8160200151510361249f5784518303612439576123348160200151601081518110611daf57611daf613968565b96505f8751116123ac5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106d4565b600186516123ba9190613bbd565b821461242e5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106d4565b5050505050506107b2565b5f85848151811061244c5761244c613968565b602001015160f81c60f81b60f81c90505f82602001518260ff168151811061247657612476613968565b60200260200101519050612489816130ff565b9550612496600186613990565b9450505061285c565b600281602001515103612803575f6124b682613123565b90505f815f815181106124cb576124cb613968565b016020015160f81c90505f6124e1600283613cc1565b6124ec906002613ce2565b90505f6124fc848360ff16613146565b90505f6125098a89613146565b90505f612516838361317b565b90508083511461258e5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106d4565b60ff8516600214806125a3575060ff85166003145b15612743578082511461261e5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106d4565b6126388760200151600181518110611daf57611daf613968565b9c505f8d51116126b05760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106d4565b60018c516126be9190613bbd565b88146127325760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106d4565b5050505050505050505050506107b2565b60ff85161580612756575060ff85166001145b1561279557612782876020015160018151811061277557612775613968565b60200260200101516130ff565b995061278e818a613990565b98506127f8565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106d4565b50505050505061285c565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106d4565b506001016120d9565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106d4565b604080518082019091525f808252602082015281515f036128f057604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f61291c85612a8c565b91945092509050600181600181111561293757612937613bd0565b14612955576040516325ce355f60e11b815260040160405180910390fd5b84516129618385613990565b1461297f57604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f80825260208201528152602001906001900390816129965790505093505f835b8651811015612a80575f5f612a056040518060400160405280858c5f01516129e99190613bbd565b8152602001858c602001516129fe9190613990565b9052612a8c565b509150915060405180604001604052808383612a219190613990565b8152602001848b60200151612a369190613990565b815250888581518110612a4b57612a4b613968565b6020908102919091010152612a61600185613990565b9350612a6d8183613990565b612a779084613990565b925050506129c1565b50845250919392505050565b5f5f5f835f01515f03612ab257604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111612ad4575f60015f9450945094505050612d68565b60b78111612b69575f612ae8608083613bbd565b905080875f015111612b0d576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015612b395750600160ff1b6001600160f81b03198216105b15612b575760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250612d68915050565b60bf8111612c47575f612b7d60b783613bbd565b905080875f015111612ba2576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612bd25760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612c015760405163babb01dd60e01b815260040160405180910390fd5b612c0b8184613990565b895111612c2b576040516366c9448560e01b815260040160405180910390fd5b612c36836001613990565b975095505f9450612d689350505050565b60f78111612c91575f612c5b60c083613bbd565b905080875f015111612c80576040516366c9448560e01b815260040160405180910390fd5b600195509350849250612d68915050565b5f612c9d60f783613bbd565b905080875f015111612cc2576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612cf25760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612d215760405163babb01dd60e01b815260040160405180910390fd5b612d2b8184613990565b895111612d4b576040516366c9448560e01b815260040160405180910390fd5b612d56836001613990565b9750955060019450612d689350505050565b9193909250565b6060816001600160401b03811115612d8957612d8961363d565b6040519080825280601f01601f191660200182016040528015612db3576020820181803683370190505b50905081156107b2575f612dc78486613990565b9050602082015f5b84811015612de7578281015182820152602001612dcf565b84811115612df5575f858301525b5050509392505050565b60605f82604051602001612e1591815260200190565b60408051601f1981840301815291905290505f5b6020811015612e6157818181518110612e4457612e44613968565b01602001516001600160f81b0319165f03612e6157600101612e29565b612e6c816020613bbd565b6001600160401b03811115612e8357612e8361363d565b6040519080825280601f01601f191660200182016040528015612ead576020820181803683370190505b5092505f5b835181101561195a578282612ec681613cfb565b935081518110612ed857612ed8613968565b602001015160f81c60f81b848281518110612ef557612ef5613968565b60200101906001600160f81b03191690815f1a905350600101612eb2565b606081516001148015612f3f57506080825f81518110612f3557612f35613968565b016020015160f81c105b15612f48575090565b612f54825160806131fe565b82604051602001612038929190613d13565b919050565b5f6108c184612f7b87868661204e565b8051602091820120825192909101919091201490565b815115612fa15781518083602001fd5b8060405162461bcd60e51b81526004016106d49190613d41565b8051606090806001600160401b03811115612fd857612fd861363d565b60405190808252806020026020018201604052801561301d57816020015b6040805180820190915260608082526020820152815260200190600190039081612ff65790505b5091505f5b8181101561195c57604051806040016040528085838151811061304757613047613968565b6020026020010151815260200161307686848151811061306957613069613968565b6020026020010151611ee6565b81525083828151811061308b5761308b613968565b6020908102919091010152600101613022565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b838110156130f4578060011b8201818401515f1a8060041c8253600f8116600183015350506001016130c7565b509295945050505050565b60606020825f01511061311a5761311582611ef9565b610686565b610686826133a3565b606061068661314183602001515f81518110611daf57611daf613968565b61309e565b606082518210613164575060408051602081019091525f8152610686565b6107b283838486516131769190613bbd565b6133b7565b5f5f825184511061318d578251613190565b83515b90505b80821080156131e757508282815181106131af576131af613968565b602001015160f81c60f81b6001600160f81b0319168483815181106131d6576131d6613968565b01602001516001600160f81b031916145b156131f757816001019150613193565b5092915050565b6060603883101561326257604080516001808252818301909252906020820181803683370190505090506132328284613d73565b60f81b815f8151811061324757613247613968565b60200101906001600160f81b03191690815f1a905350610686565b5f60015b6132708186613d8c565b15613296578161327f81613cfb565b925061328f905061010082613d9f565b9050613266565b6132a1826001613990565b6001600160401b038111156132b8576132b861363d565b6040519080825280601f01601f1916602001820160405280156132e2576020820181803683370190505b5092506132ef8483613d73565b6132fa906037613d73565b60f81b835f8151811061330f5761330f613968565b60200101906001600160f81b03191690815f1a905350600190505b81811161339b5761010061333e8284613bbd565b61334a90610100613e91565b6133549087613d8c565b61335e9190613e9c565b60f81b83828151811061337357613373613968565b60200101906001600160f81b03191690815f1a9053508061339381613cfb565b91505061332a565b505092915050565b606061068682602001515f845f0151612d6f565b60608182601f0110156133fd5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d4565b8282840110156134405760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d4565b818301845110156134875760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106d4565b6060821580156134a55760405191505f8252602082016040526134ef565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156134de5780518352602092830192016134c6565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b0381168114610759575f5ffd5b80358015158114612f66575f5ffd5b5f5f6040838503121561352c575f5ffd5b8235613537816134f8565b91506135456020840161350c565b90509250929050565b5f5f6040838503121561355f575f5ffd5b823561356a816134f8565b946020939093013593505050565b80356001600160401b0381168114612f66575f5ffd5b5f5f6040838503121561359f575f5ffd5b61356a83613578565b5f602082840312156135b8575f5ffd5b81356107b2816134f8565b5f5f5f5f608085870312156135d6575f5ffd5b6135df85613578565b9350602085013592506135f460408601613578565b9396929550929360600135925050565b5f5f5f60608486031215613616575f5ffd5b61361f84613578565b9250602084013591506136346040850161350c565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156136735761367361363d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156136a1576136a161363d565b604052919050565b5f82601f8301126136b8575f5ffd5b81356001600160401b038111156136d1576136d161363d565b6136e4601f8201601f1916602001613679565b8181528460208386010111156136f8575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613725575f5ffd5b8235613730816134f8565b915060208301356001600160401b0381111561374a575f5ffd5b613756858286016136a9565b9150509250929050565b5f60208284031215613770575f5ffd5b5035919050565b5f5f5f5f5f6080868803121561378b575f5ffd5b61379486613578565b945060208601356137a4816134f8565b93506040860135925060608601356001600160401b038111156137c5575f5ffd5b8601601f810188136137d5575f5ffd5b80356001600160401b038111156137ea575f5ffd5b8860208284010111156137fb575f5ffd5b959894975092955050506020019190565b5f5f5f6060848603121561381e575f5ffd5b61382784613578565b92506020840135613837816134f8565b929592945050506040919091013590565b5f5f5f6060848603121561385a575f5ffd5b61386384613578565b92506020840135915061363460408501613578565b5f5f60408385031215613889575f5ffd5b823591506135456020840161350c565b5f5f604083850312156138aa575f5ffd5b82356138b5816134f8565b915060208301356138c5816134f8565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106865761068661397c565b5f602082840312156139b3575f5ffd5b5051919050565b5f6001600160401b038211156139d2576139d261363d565b5060051b60200190565b803560048110612f66575f5ffd5b5f82601f8301126139f9575f5ffd5b8135613a0c613a07826139ba565b613679565b8082825260208201915060208360051b860101925085831115613a2d575f5ffd5b602085015b83811015613a6d5780356001600160401b03811115613a4f575f5ffd5b613a5e886020838a01016136a9565b84525060209283019201613a32565b5095945050505050565b5f60208284031215613a87575f5ffd5b81356001600160401b03811115613a9c575f5ffd5b8201601f81018413613aac575f5ffd5b8035613aba613a07826139ba565b8082825260208201915060208360051b850101925086831115613adb575f5ffd5b602084015b83811015611e285780356001600160401b03811115613afd575f5ffd5b850160c0818a03601f19011215613b12575f5ffd5b613b1a613651565b613b2660208301613578565b8152613b3460408301613578565b602082015260608201356040820152613b4f608083016139dc565b606082015260a08201356001600160401b03811115613b6c575f5ffd5b613b7b8b6020838601016139ea565b60808301525060c08201356001600160401b03811115613b99575f5ffd5b613ba88b6020838601016139ea565b60a08301525084525060209283019201613ae0565b818103818111156106865761068661397c565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215613bf4575f5ffd5b81516107b2816134f8565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80516020808301519190811015613c6a575f198160200360031b1b821691505b50919050565b5f5b83811015613c8a578181015183820152602001613c72565b50505f910152565b5f8251613ca3818460208701613c70565b9190910192915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff831680613cd357613cd3613cad565b8060ff84160691505092915050565b60ff82811682821603908111156106865761068661397c565b5f60018201613d0c57613d0c61397c565b5060010190565b5f8351613d24818460208801613c70565b835190830190613d38818360208801613c70565b01949350505050565b602081525f8251806020840152613d5f816040850160208701613c70565b601f01601f19169190910160400192915050565b60ff81811683821601908111156106865761068661397c565b5f82613d9a57613d9a613cad565b500490565b80820281158282048414176106865761068661397c565b6001815b6001841115610c5257808504811115613dd557613dd561397c565b6001841615613de357908102905b60019390931c928002613dba565b5f82613dff57506001610686565b81613e0b57505f610686565b8160018114613e215760028114613e2b57613e47565b6001915050610686565b60ff841115613e3c57613e3c61397c565b50506001821b610686565b5060208310610133831016604e8410600b8410161715613e6a575081810a610686565b613e765f198484613db6565b805f1904821115613e8957613e8961397c565b029392505050565b5f6107b28383613df1565b5f82613eaa57613eaa613cad565b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122088e374295b28e7ad8361a3b961be9595b9248bb8792c867a5bea9cc2824409f764736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000005": { - "contractName": "SignalService", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000000006", - "0xdf3a3dd9c4001d1115304f0841a31ee7b79b184f45ef381343fdf0ae529fbcb4": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000005" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010001": { - "contractName": "TaikoL2Impl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x6080604052600436106101fc575f3560e01c80638456cb5911610113578063da69d3db1161009d578063e902461a1161006d578063e902461a146105ca578063ee82ac5e146105e9578063f2fde38b14610608578063f940e38514610627578063fd85eb2d14610646575f5ffd5b8063da69d3db14610554578063dac5df7814610573578063e07baba614610588578063e30c3978146105ad575f5ffd5b8063a7137c0f116100e3578063a7137c0f1461047c578063a7e022d1146104a2578063a86f9d9e146104de578063b8c7b30c146104fd578063c3f909d41461051c575f5ffd5b80638456cb59146104125780638abf6077146104265780638da5cb5b1461043a5780639ee512f214610457575f5ffd5b80633eb6b8cf11610194578063539b8ade11610164578063539b8ade146103855780635950f9f1146103ab5780635c975abb146103ca578063715018a6146103ea57806379ba5097146103fe575f5ffd5b80633eb6b8cf1461031d5780633f4ba83a1461033c5780634f1ef2861461035057806352d1902d14610363575f5ffd5b806333d5ac9b116101cf57806333d5ac9b1461028d578063356aec04146102b35780633659cfe6146102c55780633ab76e9f146102e6575f5ffd5b806312622e5b14610200578063136dc4a81461023c5780632f9804731461025b5780633075db5614610279575b5f5ffd5b34801561020b575f5ffd5b5060fe5461021f906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b348015610247575f5ffd5b5061021f6102563660046125c0565b610665565b348015610266575f5ffd5b505f5b6040519015158152602001610233565b348015610284575f5ffd5b5061026961067b565b348015610298575f5ffd5b5060fd5461021f90600160401b90046001600160401b031681565b3480156102be575f5ffd5b505f61021f565b3480156102d0575f5ffd5b506102e46102df366004612614565b610693565b005b3480156102f1575f5ffd5b50609754610305906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610328575f5ffd5b5061030561033736600461263c565b610763565b348015610347575f5ffd5b506102e461076f565b6102e461035e36600461268d565b610783565b34801561036e575f5ffd5b5061037761083c565b604051908152602001610233565b348015610390575f5ffd5b5060fd5461021f90600160801b90046001600160401b031681565b3480156103b6575f5ffd5b506102e46103c5366004612750565b6108ed565b3480156103d5575f5ffd5b5061026960c954610100900460ff1660021490565b3480156103f5575f5ffd5b506102e4610af6565b348015610409575f5ffd5b506102e4610b07565b34801561041d575f5ffd5b506102e4610b7e565b348015610431575f5ffd5b50610305610b91565b348015610445575f5ffd5b506033546001600160a01b0316610305565b348015610462575f5ffd5b5061030571777735367b36bc9b61c50022d9d0700db4ec81565b348015610487575f5ffd5b5060fd5461021f90600160c01b90046001600160401b031681565b3480156104ad575f5ffd5b506104c16104bc3660046127b8565b610b9f565b604080519283526001600160401b03909116602083015201610233565b3480156104e9575f5ffd5b506103056104f83660046127e9565b610c15565b348015610508575f5ffd5b5060fd5461021f906001600160401b031681565b348015610527575f5ffd5b50610530610c2a565b60408051825163ffffffff16815260209283015160ff169281019290925201610233565b34801561055f575f5ffd5b506102e461056e366004612817565b610c5b565b34801561057e575f5ffd5b5061037760fc5481565b348015610593575f5ffd5b5060c95461021f906201000090046001600160401b031681565b3480156105b8575f5ffd5b506065546001600160a01b0316610305565b3480156105d5575f5ffd5b506104c16105e436600461285f565b610d2b565b3480156105f4575f5ffd5b506103776106033660046128a7565b610e0d565b348015610613575f5ffd5b506102e4610622366004612614565b610e45565b348015610632575f5ffd5b506102e46106413660046128be565b610eb6565b348015610651575f5ffd5b506102e46106603660046128ea565b611075565b5f6106718484846114df565b90505b9392505050565b5f600261068a60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100011630036106e45760405162461bcd60e51b81526004016106db9061292b565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000100016001600160a01b031661071661159a565b6001600160a01b03161461073c5760405162461bcd60e51b81526004016106db90612977565b610745816115b5565b604080515f80825260208201909252610760918391906115bd565b50565b5f610671848484611727565b610777611779565b610781335f611809565b565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100011630036107cb5760405162461bcd60e51b81526004016106db9061292b565b7f00000000000000000000000001670000000000000000000000000000000100016001600160a01b03166107fd61159a565b6001600160a01b0316146108235760405162461bcd60e51b81526004016106db90612977565b61082c826115b5565b610838828260016115bd565b5050565b5f306001600160a01b037f000000000000000000000000016700000000000000000000000000000001000116146108db5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106db565b505f516020612c045f395f51905f5290565b5f54610100900460ff161580801561090b57505f54600160ff909116105b806109245750303b15801561092457505f5460ff166001145b6109875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106db565b5f805460ff1916600117905580156109a8575f805461ff0019166101001790555b6109b28585611811565b6001600160401b03831615806109d0575046836001600160401b0316145b156109ee576040516308279a2560e31b815260040160405180910390fd5b600146111580610a0457506001600160401b0346115b15610a2257604051638f972ecb60e01b815260040160405180910390fd5b4315610a6c5743600103610a53575f610a3c6001436129d7565b5f81815260fb602052604090209040905550610a6c565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd805492851692909116919091179055610aa64361184b565b5060fc558015610aef575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610afe6118db565b6107815f611935565b60655433906001600160a01b03168114610b755760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106db565b61076081611935565b610b8661194e565b610781336001611809565b5f610b9a61159a565b905090565b5f5f5f610baa610c2a565b9050610c09816020015160ff16825f015163ffffffff16610bcb91906129ea565b60fd5483516001600160401b038083169263ffffffff90921691610bf891600160401b909104168a612a01565b610c029190612a20565b875f6119bf565b90969095509350505050565b5f610c21468484611727565b90505b92915050565b604080518082019091525f8082526020820152610b9a60408051808201909152630393870081526008602082015290565b825f819003610c7d5760405163ec73295960e01b815260040160405180910390fd5b826001600160401b0316805f03610ca75760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec14610cd957604051636494e9f760e01b815260040160405180910390fd5b6002610ce760c95460ff1690565b60ff1603610d085760405163dfc60d8560e01b815260040160405180910390fd5b610d126002611a48565b604051631799c89b60e01b815260040160405180910390fd5b5f8080610d3e6060880160408901612a60565b610d4e9063ffffffff1687612a20565b9050610d6060a0880160808901612a60565b63ffffffff1615801590610d915750610d7f60a0880160808901612a60565b63ffffffff16816001600160401b0316115b15610daf57610da660a0880160808901612a60565b63ffffffff1690505b5f610dbd6020890189612a79565b60ff16610dd060608a0160408b01612a60565b63ffffffff16610de091906129ea565b9050610dfe81878488610df960808e0160608f01612a99565b6119bf565b93509350505094509492505050565b5f438210610e1c57505f919050565b43610e2983610100612ab2565b10610e3357504090565b505f90815260fb602052604090205490565b610e4d6118db565b606580546001600160a01b0383166001600160a01b03199091168117909155610e7e6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610eca60c954610100900460ff1660021490565b15610ee85760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b610f086033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614158015610f455750610f2f816001610c15565b6001600160a01b0316336001600160a01b031614155b15610f6357604051630d85cccf60e11b815260040160405180910390fd5b6002610f7160c95460ff1690565b60ff1603610f925760405163dfc60d8560e01b815260040160405180910390fd5b610f9c6002611a48565b6001600160a01b038216610fc35760405163053fd54760e01b815260040160405180910390fd5b6001600160a01b038316610fe957610fe46001600160a01b03831647611a5e565b611066565b6040516370a0823160e01b81523060048201526110669083906001600160a01b038616906370a0823190602401602060405180830381865afa158015611031573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110559190612a49565b6001600160a01b0386169190611a69565b6110706001611a48565b505050565b825f8190036110975760405163ec73295960e01b815260040160405180910390fd5b846001600160401b0316805f036110c15760405163ec73295960e01b815260040160405180910390fd5b6110d16060840160408501612a60565b63ffffffff16805f036110f75760405163ec73295960e01b815260040160405180910390fd5b6111046020850185612a79565b60ff16805f036111275760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec1461115957604051636494e9f760e01b815260040160405180910390fd5b600261116760c95460ff1690565b60ff16036111885760405163dfc60d8560e01b815260040160405180910390fd5b6111926002611a48565b5f61119e6001436129d7565b90505f5f6111ab8361184b565b915091508160fc54146111d15760405163d719258d60e01b815260040160405180910390fd5b60fc55505f6111e36020880188612a79565b60ff166111f66060890160408a01612a60565b63ffffffff166112069190612a20565b60fd549091506001600160401b03808316600160c01b90920416146112a15760fd54600160c01b90046001600160401b0316156112805760fd5461125e906001600160401b0380821691600160c01b90041683610665565b60fd805467ffffffffffffffff19166001600160401b03929092169190911790555b60fd80546001600160c01b0316600160c01b6001600160401b038416021790555b5060fd545f9081906112db9089906112c990600160801b90046001600160401b0316426129d7565b60fd546001600160401b03168c610d2b565b915091506112e65f90565b1580156112f35750814814155b15611311576040516336d54d4f60e11b815260040160405180910390fd5b60fd805467ffffffffffffffff19166001600160401b039283161790819055600160401b90048116908b16111590506114365761135f6d7369676e616c5f7365727669636560901b5f610c15565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1696024820152908b166044820152606481018a90526001600160a01b039190911690634f90a674906084016020604051808303815f875af11580156113e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140a9190612a49565b5060fd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c16021790555b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe4936114c1938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a150506114d56001611a48565b5050505050505050565b5f826001600160401b03165f036114f7575080610674565b670de0b6b3a76400005f6001600160401b0380861690611519908616846129ea565b6115239190612ad9565b90506001600160ff1b0381111561154d57604051636296f1b960e11b815260040160405180910390fd5b5f61155782611abb565b90505f828802828702015f81126001811461157657858204925061157a565b5f92505b5061158e9050816001600160401b03611cd8565b98975050505050505050565b5f516020612c045f395f51905f52546001600160a01b031690565b6107606118db565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156115f05761107083611cec565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561164a575060408051601f3d908101601f1916820190925261164791810190612a49565b60015b6116ad5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106db565b5f516020612c045f395f51905f52811461171b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106db565b50611070838383611d87565b5f6117328484611db1565b90508115801561174957506001600160a01b038116155b1561067457604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016106db565b61178d60c954610100900460ff1660021490565b6117aa5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6108386118db565b806001600160a01b0381166118395760405163538ba4f960e01b815260040160405180910390fd5b61184283611e5b565b61107082611eb9565b5f5f611855612585565b5f5b60ff8110801561186a5750806001018510155b1561189b575f198186030180408360ff8306610100811061188d5761188d612aec565b602002015250600101611857565b5046611fe0820152612000812092508340816118b860ff87612b00565b61010081106118c9576118c9612aec565b60200201526120009020919391925050565b6033546001600160a01b031633146107815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106db565b606580546001600160a01b031916905561076081611f29565b61196260c954610100900460ff1660021490565b156119805760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016117ff565b5f80806119db63ffffffff86166001600160401b038916612ab2565b9050856001600160401b031681116119f4576001611a07565b611a076001600160401b038716826129d7565b9050611a266001600160401b03611a2083878316611f7a565b90611cd8565b9150611a3b826001600160401b031689611f8f565b9250509550959350505050565b60c9805460ff191660ff92909216919091179055565b61083882825a611fbe565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611070908490612001565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611b1757631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f818311611ce65782610c21565b50919050565b6001600160a01b0381163b611d595760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106db565b5f516020612c045f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d90836120d4565b5f82511180611d9c5750805b1561107057611dab8383612113565b50505050565b6097545f906001600160a01b031680611ddd57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e2f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e539190612b13565b949350505050565b5f54610100900460ff16611e815760405162461bcd60e51b81526004016106db90612b2e565b611e89612138565b611ea76001600160a01b03821615611ea15781611935565b33611935565b5060c9805461ff001916610100179055565b5f54610100900460ff16611edf5760405162461bcd60e51b81526004016106db90612b2e565b6001600160401b03461115611f075760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818311611f885781610c21565b5090919050565b5f5f82611f9c858561215e565b611fa69190612ad9565b90508015611fb45780611e53565b5060019392505050565b815f03611fca57505050565b611fe483838360405180602001604052805f8152506121d8565b61107057604051634c67134d60e11b815260040160405180910390fd5b5f612055826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122159092919063ffffffff16565b905080515f14806120755750808060200190518101906120759190612b79565b6110705760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106db565b6120dd81611cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c218383604051806060016040528060278152602001612c2460279139612223565b5f54610100900460ff166107815760405162461bcd60e51b81526004016106db90612b2e565b5f815f0361217f57604051636296f1b960e11b815260040160405180910390fd5b5f8261219385670de0b6b3a76400006129ea565b61219d9190612ad9565b9050680755bf798b4a1bf1e48111156121bc5750680755bf798b4a1bf1e45b670de0b6b3a76400006121ce82612297565b611e539190612ad9565b5f6001600160a01b03851661220057604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606061067184845f85612411565b60605f5f856001600160a01b03168560405161223f9190612bb6565b5f60405180830381855af49150503d805f8114612277576040519150601f19603f3d011682016040523d82523d5f602084013e61227c565b606091505b509150915061228d868383876124e8565b9695505050505050565b5f68023f2fa8f6da5b9d281982136122ae57919050565b680755bf798b4a1bf1e582126122cb5763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6060824710156124725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106db565b5f5f866001600160a01b0316858760405161248d9190612bb6565b5f6040518083038185875af1925050503d805f81146124c7576040519150601f19603f3d011682016040523d82523d5f602084013e6124cc565b606091505b50915091506124dd878383876124e8565b979650505050505050565b606083156125565782515f0361254f576001600160a01b0385163b61254f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106db565b5081611e53565b611e53838381511561256b5781518083602001fd5b8060405162461bcd60e51b81526004016106db9190612bd1565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b03811681146125bb575f5ffd5b919050565b5f5f5f606084860312156125d2575f5ffd5b6125db846125a5565b92506125e9602085016125a5565b91506125f7604085016125a5565b90509250925092565b6001600160a01b0381168114610760575f5ffd5b5f60208284031215612624575f5ffd5b813561067481612600565b8015158114610760575f5ffd5b5f5f5f6060848603121561264e575f5ffd5b612657846125a5565b925060208401359150604084013561266e8161262f565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561269e575f5ffd5b82356126a981612600565b915060208301356001600160401b038111156126c3575f5ffd5b8301601f810185136126d3575f5ffd5b80356001600160401b038111156126ec576126ec612679565b604051601f8201601f19908116603f011681016001600160401b038111828210171561271a5761271a612679565b604052818152828201602001871015612731575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60808587031215612763575f5ffd5b843561276e81612600565b9350602085013561277e81612600565b925061278c604086016125a5565b915061279a606086016125a5565b905092959194509250565b803563ffffffff811681146125bb575f5ffd5b5f5f604083850312156127c9575f5ffd5b6127d2836125a5565b91506127e0602084016127a5565b90509250929050565b5f5f604083850312156127fa575f5ffd5b82359150602083013561280c8161262f565b809150509250929050565b5f5f5f5f6080858703121561282a575f5ffd5b8435935060208501359250612841604086016125a5565b915061279a606086016127a5565b5f60a08284031215611ce6575f5ffd5b5f5f5f5f6101008587031215612873575f5ffd5b61287d868661284f565b935061288b60a086016125a5565b925061289960c086016125a5565b915061279a60e086016127a5565b5f602082840312156128b7575f5ffd5b5035919050565b5f5f604083850312156128cf575f5ffd5b82356128da81612600565b9150602083013561280c81612600565b5f5f5f5f61010085870312156128fe575f5ffd5b612907856125a5565b93506020850135925061291c604086016127a5565b915061279a866060870161284f565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c2457610c246129c3565b8082028115828204841417610c2457610c246129c3565b6001600160401b038281168282160390811115610c2457610c246129c3565b6001600160401b038181168382160290811690818114612a4257612a426129c3565b5092915050565b5f60208284031215612a59575f5ffd5b5051919050565b5f60208284031215612a70575f5ffd5b610c21826127a5565b5f60208284031215612a89575f5ffd5b813560ff81168114610674575f5ffd5b5f60208284031215612aa9575f5ffd5b610c21826125a5565b80820180821115610c2457610c246129c3565b634e487b7160e01b5f52601260045260245ffd5b5f82612ae757612ae7612ac5565b500490565b634e487b7160e01b5f52603260045260245ffd5b5f82612b0e57612b0e612ac5565b500690565b5f60208284031215612b23575f5ffd5b815161067481612600565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612b89575f5ffd5b81516106748161262f565b5f5b83811015612bae578181015183820152602001612b96565b50505f910152565b5f8251612bc7818460208701612b94565b9190910192915050565b602081525f8251806020840152612bef816040850160208701612b94565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220effaa84efcacfc056fb02202f151620faec2208bfd9251bf5034a0d35854a32e64736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000010001": { - "contractName": "TaikoL2", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000010002", - "0x00000000000000000000000000000000000000000000000000000000000000fe": "0x0000000000000000000000000000000000000000000000000000000000007a69", - "0x00000000000000000000000000000000000000000000000000000000000000fd": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x00000000000000000000000000000000000000000000000000000000000000fc": "0x56648745cb667f52a0ae5eb338ad021411cede74141e72933401adba6c132b01", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000010001" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010002": { - "contractName": "RollupAddressManagerImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610301578063a86f9d9e1461031e578063d8f4648f1461033d578063e07baba61461035c578063e30c39781461039b578063f2fde38b146103b8575f5ffd5b80635c975abb14610291578063715018a6146102b157806379ba5097146102c55780638456cb59146102d95780638abf6077146102ed575f5ffd5b80633ab76e9f116100ee5780633ab76e9f1461020a5780633eb6b8cf146102295780633f4ba83a146102485780634f1ef2861461025c57806352d1902d1461026f575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c75780633659cfe6146101eb575b5f5ffd5b348015610135575f5ffd5b5061013e6103d7565b005b34801561014b575f5ffd5b5061013e61015a36600461110e565b610487565b34801561016a575f5ffd5b506101aa610179366004611145565b67ffffffffffffffff919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d2575f5ffd5b506101db61055f565b60405190151581526020016101be565b3480156101f6575f5ffd5b5061013e61020536600461110e565b610577565b348015610215575f5ffd5b506097546101aa906001600160a01b031681565b348015610234575f5ffd5b506101aa61024336600461117c565b61063e565b348015610253575f5ffd5b5061013e610654565b61013e61026a3660046111c9565b610668565b34801561027a575f5ffd5b5061028361071d565b6040519081526020016101be565b34801561029c575f5ffd5b506101db60c954610100900460ff1660021490565b3480156102bc575f5ffd5b5061013e6107ce565b3480156102d0575f5ffd5b5061013e6107df565b3480156102e4575f5ffd5b5061013e610856565b3480156102f8575f5ffd5b506101aa610869565b34801561030c575f5ffd5b506033546001600160a01b03166101aa565b348015610329575f5ffd5b506101aa61033836600461128f565b610877565b348015610348575f5ffd5b5061013e6103573660046112b9565b610883565b348015610367575f5ffd5b5060c9546103829062010000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101be565b3480156103a6575f5ffd5b506065546001600160a01b03166101aa565b3480156103c3575f5ffd5b5061013e6103d236600461110e565b610961565b6103df6109d2565b5f54600290610100900460ff161580156103ff57505f5460ff8083169116105b6104245760405162461bcd60e51b815260040161041b906112f6565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156104a557505f54600160ff909116105b806104be5750303b1580156104be57505f5460ff166001145b6104da5760405162461bcd60e51b815260040161041b906112f6565b5f805460ff1916600117905580156104fb575f805461ff0019166101001790555b61050482610a2c565b609780546001600160a01b03191630179055801561055b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261056e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100021630036105bf5760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670000000000000000000000000000000100026001600160a01b03166105f1610a8a565b6001600160a01b0316146106175760405162461bcd60e51b815260040161041b90611390565b61062081610aa5565b604080515f8082526020820190925261063b91839190610aad565b50565b5f61064a848484610c1c565b90505b9392505050565b61065c610c6f565b610666335f610d00565b565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100021630036106b05760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670000000000000000000000000000000100026001600160a01b03166106e2610a8a565b6001600160a01b0316146107085760405162461bcd60e51b815260040161041b90611390565b61071182610aa5565b61055b82826001610aad565b5f306001600160a01b037f000000000000000000000000016700000000000000000000000000000001000216146107bc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161041b565b505f5160206114c95f395f51905f5290565b6107d66109d2565b6106665f610d19565b60655433906001600160a01b0316811461084d5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161041b565b61063b81610d19565b61085e610d32565b610666336001610d00565b5f610872610a8a565b905090565b5f61064d468484610c1c565b61088b6109d2565b67ffffffffffffffff83165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108dd5760405163a883089360e01b815260040160405180910390fd5b67ffffffffffffffff84165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109696109d2565b606580546001600160a01b0383166001600160a01b0319909116811790915561099a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161041b565b5f54610100900460ff16610a525760405162461bcd60e51b815260040161041b906113dc565b610a5a610da3565b610a786001600160a01b03821615610a725781610d19565b33610d19565b5060c9805461ff001916610100179055565b5f5160206114c95f395f51905f52546001600160a01b031690565b61063b6109d2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610ae557610ae083610dc9565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b3f575060408051601f3d908101601f19168201909252610b3c91810190611427565b60015b610ba25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161041b565b5f5160206114c95f395f51905f528114610c105760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161041b565b50610ae0838383610e64565b5f610c278484610e8e565b905081158015610c3e57506001600160a01b038116155b1561064d57604051632b0d65db60e01b815267ffffffffffffffff851660048201526024810184905260440161041b565b610c8360c954610100900460ff1660021490565b610ca05760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff0019909116620100004267ffffffffffffffff1602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561063b81610f39565b610d4660c954610100900460ff1660021490565b15610d645760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cf6565b5f54610100900460ff166106665760405162461bcd60e51b815260040161041b906113dc565b6001600160a01b0381163b610e365760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161041b565b5f5160206114c95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610e6d83610f8a565b5f82511180610e795750805b15610ae057610e888383610fc9565b50505050565b6097545f906001600160a01b031680610eba57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b815267ffffffffffffffff85166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f31919061143e565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610f9381610dc9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061064d83836040518060600160405280602781526020016114e96027913960605f5f856001600160a01b031685604051611005919061147b565b5f60405180830381855af49150503d805f811461103d576040519150601f19603f3d011682016040523d82523d5f602084013e611042565b606091505b50915091506110538683838761105d565b9695505050505050565b606083156110cb5782515f036110c4576001600160a01b0385163b6110c45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161041b565b5081610f31565b610f3183838151156110e05781518083602001fd5b8060405162461bcd60e51b815260040161041b9190611496565b6001600160a01b038116811461063b575f5ffd5b5f6020828403121561111e575f5ffd5b813561064d816110fa565b803567ffffffffffffffff81168114611140575f5ffd5b919050565b5f5f60408385031215611156575f5ffd5b61115f83611129565b946020939093013593505050565b80358015158114611140575f5ffd5b5f5f5f6060848603121561118e575f5ffd5b61119784611129565b9250602084013591506111ac6040850161116d565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156111da575f5ffd5b82356111e5816110fa565b9150602083013567ffffffffffffffff811115611200575f5ffd5b8301601f81018513611210575f5ffd5b803567ffffffffffffffff81111561122a5761122a6111b5565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611259576112596111b5565b604052818152828201602001871015611270575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156112a0575f5ffd5b823591506112b06020840161116d565b90509250929050565b5f5f5f606084860312156112cb575f5ffd5b6112d484611129565b92506020840135915060408401356112eb816110fa565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611437575f5ffd5b5051919050565b5f6020828403121561144e575f5ffd5b815161064d816110fa565b5f5b8381101561147357818101518382015260200161145b565b50505f910152565b5f825161148c818460208701611459565b9190910192915050565b602081525f82518060208401526114b4816040850160208701611459565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220086d22e71c4d170ad7ce74f948ce47f2f39076babb18c7b950d99c756006877464736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000010002": { - "contractName": "RollupAddressManager", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x6f603ad772aee14bf097b20bcdc2c1ce5646bfcfbe0e42c192e55416269268c9": "0x0000000000000000000000001670000000000000000000000000000000010001", - "0xee78643889fcb54c297d0ecf866d9df7d829a8c978e52394d135cdb40a501e38": "0x0000000000000000000000001670000000000000000000000000000000000001", - "0xd724ebf31fb7ffa376a4d5d51b51967009df0c86a4dfef5f55507cde2eb36739": "0x0000000000000000000000001670000000000000000000000000000000000005", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000010002" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0xbB21206518394cd6DaF38A6C31A3B1461b77CBC8": { - "contractName": "LibNetwork", - "storage": {}, - "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204213774d0b1a3b266888223284a425ae694a8c5e97b18403ec7f442200eae55a64736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010099": { - "contractName": "RegularERC20", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000003": "0x526567756c617245524332300000000000000000000000000000000000000018", - "0x0000000000000000000000000000000000000000000000000000000000000004": "0x52474c0000000000000000000000000000000000000000000000000000000006", - "0x0000000000000000000000000000000000000000000000000000000000000002": "0x00000000000000000000000000000000000000000000000000000000001f4000", - "0x1fe6b582a6b4d9b61da9024a045cb9bafc343b4b12713ba001e47b3500867413": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0xaaa7f9b700b86a1f8ec5dacd0ca81e3b1ea8214dae2b1856095f9d44c1f5b380": "0x00000000000000000000000000000000000000000000000000000000000fa000" - }, - "code": "0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf919061068a565b60405180910390f35b6100db6100d63660046106f0565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610718565b610244565b604051601281526020016100bf565b6100db61012d3660046106f0565b610267565b6100ef610140366004610752565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db6101703660046106f0565b610297565b6100db6101833660046106f0565b610316565b6100ef610196366004610772565b610323565b6060600380546101aa906107a3565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107a3565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107db565b61034d565b6060600480546101aa906107a3565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104e2565b602081525f82518060208401525f5b818110156106b65760208186018101516040868401015201610699565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106eb575f5ffd5b919050565b5f5f60408385031215610701575f5ffd5b61070a836106d5565b946020939093013593505050565b5f5f5f6060848603121561072a575f5ffd5b610733846106d5565b9250610741602085016106d5565b929592945050506040919091013590565b5f60208284031215610762575f5ffd5b61076b826106d5565b9392505050565b5f5f60408385031215610783575f5ffd5b61078c836106d5565b915061079a602084016106d5565b90509250929050565b600181811c908216806107b757607f821691505b6020821081036107d557634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220a1403924b9774521e0b2e4d325575d166c7612abf0d4b532ee23317cd4225a6b64736f6c634300081b0033", - "balance": "0x0" - } -}} diff --git a/packages/protocol/test/genesis/data/genesis_alloc.json b/packages/protocol/test/genesis/data/genesis_alloc.json deleted file mode 100644 index f1a0cdd0d91..00000000000 --- a/packages/protocol/test/genesis/data/genesis_alloc.json +++ /dev/null @@ -1,217 +0,0 @@ -{ - "0xDf08F82De32B8d460adbE8D72043E3a7e25A3B39": { - "balance": "0x3635c9adc5dea00000" - }, - "0x79fcdef22feed20eddacbb2587640e45491b757f": { - "balance": "0x3635c9adc5dea00000" - }, - "0x0167000000000000000000000000000000000006": { - "contractName": "SharedAddressManagerImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610301578063a86f9d9e1461031e578063d8f4648f1461033d578063e07baba61461035c578063e30c39781461039b578063f2fde38b146103b8575f5ffd5b80635c975abb14610291578063715018a6146102b157806379ba5097146102c55780638456cb59146102d95780638abf6077146102ed575f5ffd5b80633ab76e9f116100ee5780633ab76e9f1461020a5780633eb6b8cf146102295780633f4ba83a146102485780634f1ef2861461025c57806352d1902d1461026f575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c75780633659cfe6146101eb575b5f5ffd5b348015610135575f5ffd5b5061013e6103d7565b005b34801561014b575f5ffd5b5061013e61015a36600461110e565b610487565b34801561016a575f5ffd5b506101aa610179366004611145565b67ffffffffffffffff919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d2575f5ffd5b506101db61055f565b60405190151581526020016101be565b3480156101f6575f5ffd5b5061013e61020536600461110e565b610577565b348015610215575f5ffd5b506097546101aa906001600160a01b031681565b348015610234575f5ffd5b506101aa61024336600461117c565b61063e565b348015610253575f5ffd5b5061013e610654565b61013e61026a3660046111c9565b610668565b34801561027a575f5ffd5b5061028361071d565b6040519081526020016101be565b34801561029c575f5ffd5b506101db60c954610100900460ff1660021490565b3480156102bc575f5ffd5b5061013e6107ce565b3480156102d0575f5ffd5b5061013e6107df565b3480156102e4575f5ffd5b5061013e610856565b3480156102f8575f5ffd5b506101aa610869565b34801561030c575f5ffd5b506033546001600160a01b03166101aa565b348015610329575f5ffd5b506101aa61033836600461128f565b610877565b348015610348575f5ffd5b5061013e6103573660046112b9565b610883565b348015610367575f5ffd5b5060c9546103829062010000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101be565b3480156103a6575f5ffd5b506065546001600160a01b03166101aa565b3480156103c3575f5ffd5b5061013e6103d236600461110e565b610961565b6103df6109d2565b5f54600290610100900460ff161580156103ff57505f5460ff8083169116105b6104245760405162461bcd60e51b815260040161041b906112f6565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156104a557505f54600160ff909116105b806104be5750303b1580156104be57505f5460ff166001145b6104da5760405162461bcd60e51b815260040161041b906112f6565b5f805460ff1916600117905580156104fb575f805461ff0019166101001790555b61050482610a2c565b609780546001600160a01b03191630179055801561055b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261056e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000061630036105bf5760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670000000000000000000000000000000000066001600160a01b03166105f1610a8a565b6001600160a01b0316146106175760405162461bcd60e51b815260040161041b90611390565b61062081610aa5565b604080515f8082526020820190925261063b91839190610aad565b50565b5f61064a848484610c1c565b90505b9392505050565b61065c610c6f565b610666335f610d00565b565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000061630036106b05760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670000000000000000000000000000000000066001600160a01b03166106e2610a8a565b6001600160a01b0316146107085760405162461bcd60e51b815260040161041b90611390565b61071182610aa5565b61055b82826001610aad565b5f306001600160a01b037f000000000000000000000000016700000000000000000000000000000000000616146107bc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161041b565b505f5160206114c95f395f51905f5290565b6107d66109d2565b6106665f610d19565b60655433906001600160a01b0316811461084d5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161041b565b61063b81610d19565b61085e610d32565b610666336001610d00565b5f610872610a8a565b905090565b5f61064d468484610c1c565b61088b6109d2565b67ffffffffffffffff83165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108dd5760405163a883089360e01b815260040160405180910390fd5b67ffffffffffffffff84165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109696109d2565b606580546001600160a01b0383166001600160a01b0319909116811790915561099a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161041b565b5f54610100900460ff16610a525760405162461bcd60e51b815260040161041b906113dc565b610a5a610da3565b610a786001600160a01b03821615610a725781610d19565b33610d19565b5060c9805461ff001916610100179055565b5f5160206114c95f395f51905f52546001600160a01b031690565b61063b6109d2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610ae557610ae083610dc9565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b3f575060408051601f3d908101601f19168201909252610b3c91810190611427565b60015b610ba25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161041b565b5f5160206114c95f395f51905f528114610c105760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161041b565b50610ae0838383610e64565b5f610c278484610e8e565b905081158015610c3e57506001600160a01b038116155b1561064d57604051632b0d65db60e01b815267ffffffffffffffff851660048201526024810184905260440161041b565b610c8360c954610100900460ff1660021490565b610ca05760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff0019909116620100004267ffffffffffffffff1602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561063b81610f39565b610d4660c954610100900460ff1660021490565b15610d645760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cf6565b5f54610100900460ff166106665760405162461bcd60e51b815260040161041b906113dc565b6001600160a01b0381163b610e365760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161041b565b5f5160206114c95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610e6d83610f8a565b5f82511180610e795750805b15610ae057610e888383610fc9565b50505050565b6097545f906001600160a01b031680610eba57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b815267ffffffffffffffff85166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f31919061143e565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610f9381610dc9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061064d83836040518060600160405280602781526020016114e96027913960605f5f856001600160a01b031685604051611005919061147b565b5f60405180830381855af49150503d805f811461103d576040519150601f19603f3d011682016040523d82523d5f602084013e611042565b606091505b50915091506110538683838761105d565b9695505050505050565b606083156110cb5782515f036110c4576001600160a01b0385163b6110c45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161041b565b5081610f31565b610f3183838151156110e05781518083602001fd5b8060405162461bcd60e51b815260040161041b9190611496565b6001600160a01b038116811461063b575f5ffd5b5f6020828403121561111e575f5ffd5b813561064d816110fa565b803567ffffffffffffffff81168114611140575f5ffd5b919050565b5f5f60408385031215611156575f5ffd5b61115f83611129565b946020939093013593505050565b80358015158114611140575f5ffd5b5f5f5f6060848603121561118e575f5ffd5b61119784611129565b9250602084013591506111ac6040850161116d565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156111da575f5ffd5b82356111e5816110fa565b9150602083013567ffffffffffffffff811115611200575f5ffd5b8301601f81018513611210575f5ffd5b803567ffffffffffffffff81111561122a5761122a6111b5565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611259576112596111b5565b604052818152828201602001871015611270575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156112a0575f5ffd5b823591506112b06020840161116d565b90509250929050565b5f5f5f606084860312156112cb575f5ffd5b6112d484611129565b92506020840135915060408401356112eb816110fa565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611437575f5ffd5b5051919050565b5f6020828403121561144e575f5ffd5b815161064d816110fa565b5f5b8381101561147357818101518382015260200161145b565b50505f910152565b5f825161148c818460208701611459565b9190910192915050565b602081525f82518060208401526114b4816040850160208701611459565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220086d22e71c4d170ad7ce74f948ce47f2f39076babb18c7b950d99c756006877464736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000006": { - "contractName": "SharedAddressManager", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0xee78643889fcb54c297d0ecf866d9df7d829a8c978e52394d135cdb40a501e38": "0x0000000000000000000000001670000000000000000000000000000000000001", - "0x1b59c5b714a9474274d08839cd27e78ebbcde0eb67d55f88e6a8162fdf746fb6": "0x0000000000000000000000001670000000000000000000000000000000000002", - "0x86f2835ec2a9687ca2e2a16b9bca18cc21a3eb0801913c2c1024c94dae29a56f": "0x0000000000000000000000001670000000000000000000000000000000000003", - "0xceda61f04213e952bfa0631c1d6a46e0243feddef01b15830df6d44a883942ef": "0x0000000000000000000000001670000000000000000000000000000000000004", - "0xd724ebf31fb7ffa376a4d5d51b51967009df0c86a4dfef5f55507cde2eb36739": "0x0000000000000000000000001670000000000000000000000000000000000005", - "0x7c370492eefc4caa8cbb896169c5fc4597f28c57333bb43e31066f4f66652c55": "0x0000000000000000000000000167000000000000000000000000000000010096", - "0xe6965834a21a9e0a0de81d5e0ea99e149f660508a785a52be0ad77b96b5b1c5c": "0x0000000000000000000000000167000000000000000000000000000000010097", - "0x83e96d9214b47c6368e642dca9daced8ea339555eb83dac20d7cbfb0cc0f5c7b": "0x0000000000000000000000000167000000000000000000000000000000010098", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000006" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000000001": { - "contractName": "BridgeImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x60806040526004361061021d575f3560e01c806382b5e8891161011e578063b8acae0e116100a8578063e07baba61161006d578063e07baba61461066b578063e30c3978146106a8578063eefbf17e146106c5578063f09a4016146106eb578063f2fde38b1461070a575f5ffd5b8063b8acae0e146105af578063be880c81146105ce578063c012fa77146105e4578063d0496d6a14610603578063d1aaa5df1461064b575f5ffd5b80638e3881a9116100ee5780638e3881a9146104fe578063913b16cb1461053c5780639efc7a2e1461055b578063a730cdfb1461057a578063a86f9d9e14610590575f5ffd5b806382b5e8891461049a5780638456cb59146104b95780638abf6077146104cd5780638da5cb5b146104e1575f5ffd5b80633f4ba83a116101aa5780635c975abb1161016f5780635c975abb146103ff57806360620c6b1461041f578063715018a61461043e57806379ba5097146104525780637cbadfaa14610466575f5ffd5b80633f4ba83a14610381578063422770fa146103955780634f1ef286146103b957806352d1902d146103cc5780635862f6e1146103e0575f5ffd5b80633075db56116101f05780633075db56146102ad5780633659cfe6146102d15780633ab76e9f146102f05780633c6cf473146103275780633eb6b8cf14610362575f5ffd5b80630432873c14610221578063069489a2146102425780631bdb0037146102565780632035065e14610280575b5f5ffd5b34801561022c575f5ffd5b5061024061023b366004612f67565b610729565b005b34801561024d575f5ffd5b50610240610a27565b610269610264366004612fb5565b610ade565b604051610277929190613141565b60405180910390f35b34801561028b575f5ffd5b5061029f61029a366004613159565b610e94565b604051610277929190613216565b3480156102b8575f5ffd5b506102c1611344565b6040519015158152602001610277565b3480156102dc575f5ffd5b506102406102eb366004613265565b61135c565b3480156102fb575f5ffd5b5060975461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610277565b348015610332575f5ffd5b50610355610341366004613280565b60fc6020525f908152604090205460ff1681565b6040516102779190613297565b34801561036d575f5ffd5b5061030f61037c3660046132bb565b611423565b34801561038c575f5ffd5b50610240611439565b3480156103a0575f5ffd5b506103ab62030d4081565b604051908152602001610277565b6102406103c73660046133be565b61144d565b3480156103d7575f5ffd5b506103ab611506565b3480156103eb575f5ffd5b506102c16103fa366004613159565b6115b8565b34801561040a575f5ffd5b506102c160c954610100900460ff1660021490565b34801561042a575f5ffd5b506102c1610439366004612fb5565b611623565b348015610449575f5ffd5b506102406116f1565b34801561045d575f5ffd5b50610240611702565b348015610471575f5ffd5b50610485610480366004613280565b611779565b60405163ffffffff9091168152602001610277565b3480156104a5575f5ffd5b506102406104b4366004613265565b611791565b3480156104c4575f5ffd5b50610240611811565b3480156104d8575f5ffd5b5061030f611824565b3480156104ec575f5ffd5b506033546001600160a01b031661030f565b348015610509575f5ffd5b5061051d61051836600461340a565b611832565b6040805192151583526001600160a01b03909116602083015201610277565b348015610547575f5ffd5b50610240610556366004612fb5565b61185e565b348015610566575f5ffd5b50610240610575366004613159565b611a4d565b348015610585575f5ffd5b506104856201d4c081565b34801561059b575f5ffd5b5061030f6105aa366004613423565b611d51565b3480156105ba575f5ffd5b506102c16105c9366004613159565b611d5d565b3480156105d9575f5ffd5b50610485620c350081565b3480156105ef575f5ffd5b506103ab6105fe366004613546565b611dbe565b34801561060e575f5ffd5b50610617611ded565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610277565b348015610656575f5ffd5b506103ab610665366004613280565b60031890565b348015610676575f5ffd5b5060c954610690906201000090046001600160401b031681565b6040516001600160401b039091168152602001610277565b3480156106b3575f5ffd5b506065546001600160a01b031661030f565b3480156106d0575f5ffd5b5060fb5461069090600160401b90046001600160401b031681565b3480156106f6575f5ffd5b50610240610705366004613577565b611e94565b348015610715575f5ffd5b50610240610724366004613265565b611f5b565b61073960e0830160c0840161340a565b46816001600160401b03161461076257604051631c6c777560e31b815260040160405180910390fd5b61077260a084016080850161340a565b6001600160401b0381161580610790575046816001600160401b0316145b156107ae57604051631c6c777560e31b815260040160405180910390fd5b6107c260c954610100900460ff1660021490565b156107e05760405163bae6e2a960e01b815260040160405180910390fd5b60026107ee60c95460ff1690565b60ff160361080f5760405163dfc60d8560e01b815260040160405180910390fd5b6108196002611fcc565b5f6108266105fe866135a3565b9050610833816001611fe2565b610841856101200135612034565b61085e576040516335856fbd60e21b815260040160405180910390fd5b5f6108838661087e6d7369676e616c5f7365727669636560901b5f611d51565b6120d5565b156108ce576108c78661012001356188b860405180602001604052805f8152508960e00160208101906108b69190613265565b6001600160a01b03169291906121cc565b9050610948565b6108de60608701604088016135ae565b63ffffffff1615806108ed5750845b801561091b5750610905610100870160e08801613265565b6001600160a01b0316336001600160a01b031614155b15610939576040516372b6e1c360e11b815260040160405180910390fd5b61094586835a5f612209565b90505b801561095e5761095982600261232d565b610a15565b84156109fc5761096f82600361232d565b61098a6d7369676e616c5f7365727669636560901b5f611d51565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af11580156109d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f691906135c7565b50610a15565b60405163161e3ead60e01b815260040160405180910390fd5b5050610a216001611fcc565b50505050565b610a2f6123ea565b5f54600290610100900460ff16158015610a4f57505f5460ff8083169116105b610a745760405162461bcd60e51b8152600401610a6b906135de565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610b4460c0840160a08501613265565b6001600160a01b038116610b6b5760405163538ba4f960e01b815260040160405180910390fd5b610b7c610100850160e08601613265565b6001600160a01b038116610ba35760405163538ba4f960e01b815260040160405180910390fd5b610bb360e0860160c0870161340a565b6001600160401b0381161580610bd1575046816001600160401b0316145b15610bef57604051631c6c777560e31b815260040160405180910390fd5b610c0360c954610100900460ff1660021490565b15610c215760405163bae6e2a960e01b815260040160405180910390fd5b6002610c2f60c95460ff1690565b60ff1603610c505760405163dfc60d8560e01b815260040160405180910390fd5b610c5a6002611fcc565b610c6a60608701604088016135ae565b63ffffffff165f03610cb257610c86604087016020880161340a565b6001600160401b031615610cad5760405163c9f5178760e01b815260040160405180910390fd5b610cda565b610cbb86612444565b5f03610cda576040516308c2ad5360e01b815260040160405180910390fd5b5f610cee61051860e0890160c08a0161340a565b50905080610d0f57604051631c6c777560e31b815260040160405180910390fd5b34610d206040890160208a0161340a565b610d38906001600160401b03166101208a0135613640565b14610d5657604051634ac2abdf60e11b815260040160405180910390fd5b610d5f876135a3565b60fb8054919650600160401b9091046001600160401b0316906008610d8383613653565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610dbe85611dbe565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610df0919061367d565b60405180910390a2610e136d7369676e616c5f7365727669636560901b5f611d51565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610e4091815260200190565b6020604051808303815f875af1158015610e5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8091906135c7565b5050610e8c6001611fcc565b505050915091565b5f5f610eaa60c954610100900460ff1660021490565b15610ec85760405163bae6e2a960e01b815260040160405180910390fd5b6002610ed660c95460ff1690565b60ff1603610ef75760405163dfc60d8560e01b815260040160405180910390fd5b610f016002611fcc565b5f5a905046610f1660e0880160c0890161340a565b6001600160401b031614610f3d57604051631c6c777560e31b815260040160405180910390fd5b610f4d60a087016080880161340a565b6001600160401b03161580610f79575046610f6e60a088016080890161340a565b6001600160401b0316145b15610f9757604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610fcb610100880160e08901613265565b6001600160a01b031633148015606083015261103a57610ff160608801604089016135ae565b63ffffffff165f03611016576040516372b6e1c360e11b815260040160405180910390fd5b62030d4085111561103a57604051631e3b03c960e01b815260040160405180910390fd5b5f6110476105fe896135a3565b9050611053815f611fe2565b5f61106f6d7369676e616c5f7365727669636560901b5f611d51565b63ffffffff881660208501529050611099818361109260a08d0160808e0161340a565b8b8b612497565b63ffffffff166040808501919091526110d8906110bb908b0160208c0161340a565b6110d3906001600160401b03166101208c0135613640565b612034565b6110f5576040516335856fbd60e21b815260040160405180910390fd5b5f6111008a836120d5565b1561111957506002955060019450610120890135611160565b5f8460600151611129575a611132565b6111328b612444565b90506111448b85838860600151612209565b1561115557600297505f965061115e565b60019750600296505b505b61117060408b0160208c0161340a565b6001600160401b0316156112c15761118e60408b0160208c0161340a565b6111a1906001600160401b031682613640565b9050836060015180156111c857506111bf60608b0160408c016135ae565b63ffffffff1615155b156112c157604084015163ffffffff16614e20025a6111f56111ee6101408e018e61368f565b9050612542565b63ffffffff9081168801919091036201d4c00181168087525f91839161121e9183919061256a16565b0390505f61123260608e0160408f016135ae565b63ffffffff168d602001602081019061124b919061340a565b6001600160401b0316830281611263576112636136d8565b0490505f48830290505f6112a78f6020016020810190611283919061340a565b6001600160401b03168484101561129f5784840160011c6112a1565b845b9061257f565b958690039590506112bb33826188b8612593565b50505050505b6112e9816188b86112d96101008e0160e08f01613265565b6001600160a01b03169190612593565b6112f3838861232d565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b86604051611325929190613870565b60405180910390a2505050505061133c6001611fcc565b935093915050565b5f600261135360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000011630036113a45760405162461bcd60e51b8152600401610a6b906138c4565b7f00000000000000000000000001670000000000000000000000000000000000016001600160a01b03166113d66125d6565b6001600160a01b0316146113fc5760405162461bcd60e51b8152600401610a6b90613910565b611405816125f1565b604080515f80825260208201909252611420918391906125f9565b50565b5f61142f848484612763565b90505b9392505050565b6114416127b5565b61144b335f612845565b565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000011630036114955760405162461bcd60e51b8152600401610a6b906138c4565b7f00000000000000000000000001670000000000000000000000000000000000016001600160a01b03166114c76125d6565b6001600160a01b0316146114ed5760405162461bcd60e51b8152600401610a6b90613910565b6114f6826125f1565b611502828260016125f9565b5050565b5f306001600160a01b037f000000000000000000000000016700000000000000000000000000000000000116146115a55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a6b565b505f516020613b2a5f395f51905f525b90565b5f466115ca60a086016080870161340a565b6001600160401b0316146115df57505f611432565b61142f6115fd6d7369676e616c5f7365727669636560901b5f611d51565b61160c6106656105fe886135a3565b61161c60e0880160c0890161340a565b86866128f2565b5f4661163560a084016080850161340a565b6001600160401b03161461164a57505f919050565b6116656d7369676e616c5f7365727669636560901b5f611d51565b6001600160a01b03166332676bc6306116806105fe866135a3565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa1580156116c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116eb919061395c565b92915050565b6116f96123ea565b61144b5f612974565b60655433906001600160a01b031681146117705760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a6b565b61142081612974565b5f620c350061178783612542565b6116eb9190613977565b806001600160a01b0381166117b95760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b1580156117f7575f5ffd5b505af1158015611809573d5f5f3e3d5ffd5b505050505050565b61181961298d565b61144b336001612845565b5f61182d6125d6565b905090565b5f5f611849836562726964676560d01b6001611423565b6001600160a01b038116151594909350915050565b61186e60e0820160c0830161340a565b46816001600160401b03161461189757604051631c6c777560e31b815260040160405180910390fd5b6118a760a083016080840161340a565b6001600160401b03811615806118c5575046816001600160401b0316145b156118e357604051631c6c777560e31b815260040160405180910390fd5b6118f760c954610100900460ff1660021490565b156119155760405163bae6e2a960e01b815260040160405180910390fd5b600261192360c95460ff1690565b60ff16036119445760405163dfc60d8560e01b815260040160405180910390fd5b61194e6002611fcc565b61195f610100840160e08501613265565b6001600160a01b0316336001600160a01b031614611990576040516372b6e1c360e11b815260040160405180910390fd5b5f61199d6105fe856135a3565b90506119aa816001611fe2565b6119b581600361232d565b6119d06d7369676e616c5f7365727669636560901b5f611d51565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611a18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3c91906135c7565b5050611a486001611fcc565b505050565b611a5d60a084016080850161340a565b46816001600160401b031614611a8657604051631c6c777560e31b815260040160405180910390fd5b611a9660e0850160c0860161340a565b6001600160401b0381161580611ab4575046816001600160401b0316145b15611ad257604051631c6c777560e31b815260040160405180910390fd5b611ae660c954610100900460ff1660021490565b15611b045760405163bae6e2a960e01b815260040160405180910390fd5b6002611b1260c95460ff1690565b60ff1603611b335760405163dfc60d8560e01b815260040160405180910390fd5b611b3d6002611fcc565b5f611b4a6105fe876135a3565b9050611b56815f611fe2565b5f611b726d7369676e616c5f7365727669636560901b5f611d51565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611bbe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be2919061395c565b611bff5760405163ab035ad560e01b815260040160405180910390fd5b611c1e8160038418611c1760e08b0160c08c0161340a565b8989612497565b50611c2a82600461232d565b611c38876101200135612034565b611c55576040516335856fbd60e21b815260040160405180910390fd5b611c7e62bc399d60e11b611c6f60808a0160608b01613265565b6001600160a01b0316906129fe565b15611d2257611c9d8230611c9860a08b0160808c0161340a565b612a8b565b611cad6080880160608901613265565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611ce0929190613993565b5f604051808303818588803b158015611cf7575f5ffd5b505af1158015611d09573d5f5f3e3d5ffd5b5050505050611d1d5f195f1b5f1980612a8b565b611d3e565b611d3e6101208801356188b86112d960c08b0160a08c01613265565b5050611d4a6001611fcc565b5050505050565b5f611432468484612763565b5f46611d6f60e0860160c0870161340a565b6001600160401b031614611d8457505f611432565b61142f611da26d7369676e616c5f7365727669636560901b5f611d51565b611dae6105fe876135a3565b61161c60a088016080890161340a565b5f81604051602001611dd091906139b4565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611e64604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611e76575080515f19145b156115b557604051635ceed17360e01b815260040160405180910390fd5b5f54610100900460ff1615808015611eb257505f54600160ff909116105b80611ecb5750303b158015611ecb57505f5460ff166001145b611ee75760405162461bcd60e51b8152600401610a6b906135de565b5f805460ff191660011790558015611f08575f805461ff0019166101001790555b611f128383612ae0565b8015611a48575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611f636123ea565b606580546001600160a01b0383166001600160a01b03199091168117909155611f946033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b806004811115611ff457611ff46131ee565b5f83815260fc602052604090205460ff166004811115612016576120166131ee565b14611502576040516319d893ad60e21b815260040160405180910390fd5b5f5f6120516c38bab7ba30afb6b0b730b3b2b960991b6001611d51565b90506001600160a01b03811661206a5750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b1580156120af575f5ffd5b505af19250505080156120c0575060015b6120cc57505f92915050565b50600192915050565b5f806120e961012085016101008601613265565b6001600160a01b0316036120ff575060016116eb565b3061211261012085016101008601613265565b6001600160a01b031603612128575060016116eb565b6001600160a01b03821661214461012085016101008601613265565b6001600160a01b03160361215a575060016116eb565b600461216a61014085018561368f565b9050101580156121a15750637f07c94760e01b61218b61014085018561368f565b612194916139ea565b6001600160e01b03191614155b801561143257506114326121bd61012085016101008601613265565b6001600160a01b03163b151590565b5f6001600160a01b0385166121f457604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f3061221b6080870160608801613265565b6001600160a01b03160361223157612231613a22565b610120850135158015612251575061224d61014086018661368f565b1590505b1561225e57506001612325565b825f0361226c57505f612325565b612290846122806080880160608901613265565b611c9860a0890160808a0161340a565b5f6122a361012087016101008801613265565b90506101208601355f6122ba61014089018961368f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515612314576123148188612b1a565b6123205f198080612a8b565b505050505b949350505050565b80600481111561233f5761233f6131ee565b5f83815260fc602052604090205460ff166004811115612361576123616131ee565b0361237f576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff191660018360048111156123a9576123a96131ee565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516123de9190613297565b60405180910390a25050565b6033546001600160a01b0316331461144b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a6b565b5f8061245e61245761014085018561368f565b9050611779565b63ffffffff1690508061248f61247a60608601604087016135ae565b63ffffffff168361256a90919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856124bc876562726964676560d01b5f611423565b8887876040518663ffffffff1660e01b81526004016124df959493929190613a36565b6020604051808303815f875af1925050508015612519575060408051601f3d908101601f19168201909252612516918101906135c7565b60015b612536576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f815f0361255157505f919050565b60046020601f8401046020026101a001901b9050919050565b5f8183116125785781611432565b5090919050565b5f81831161258d5782611432565b50919050565b815f0361259f57505050565b6125b983838360405180602001604052805f8152506121cc565b611a4857604051634c67134d60e11b815260040160405180910390fd5b5f516020613b2a5f395f51905f52546001600160a01b031690565b6114206123ea565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561262c57611a4883612b2e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612686575060408051601f3d908101601f19168201909252612683918101906135c7565b60015b6126e95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a6b565b5f516020613b2a5f395f51905f5281146127575760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a6b565b50611a48838383612bc9565b5f61276e8484612bed565b90508115801561278557506001600160a01b038116155b1561143257604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610a6b565b6127c960c954610100900460ff1660021490565b6127e65760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6033546001600160a01b038381169116148061288d57506128786d636861696e5f7761746368646f6760901b6001611d51565b6001600160a01b0316826001600160a01b0316145b15612896575050565b8080156128d057506128bb6e6272696467655f7761746368646f6760881b6001611d51565b6001600160a01b0316826001600160a01b0316145b156128d9575050565b604051630d85cccf60e11b815260040160405180910390fd5b5f856001600160a01b031663ce9d082085612917876562726964676560d01b5f611423565b8887876040518663ffffffff1660e01b815260040161293a959493929190613a36565b5f6040518083038186803b158015612950575f5ffd5b505afa925050508015612961575060015b61296c57505f612539565b506001612539565b606580546001600160a01b031916905561142081612c8f565b6129a160c954610100900460ff1660021490565b156129bf5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161283b565b5f6001600160a01b0383163b612a1557505f6116eb565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa925050508015612a7f575060408051601f3d908101601f19168201909252612a7c9181019061395c565b60015b156116eb579392505050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b806001600160a01b038116612b085760405163538ba4f960e01b815260040160405180910390fd5b612b1183612ce0565b611a4882612d3e565b612b25603f82613a77565b82101561150257fe5b6001600160a01b0381163b612b9b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a6b565b5f516020613b2a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612bd283612dae565b5f82511180612bde5750805b15611a4857610a218383612ded565b6097545f906001600160a01b031680612c1957604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612c6b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123259190613a96565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16612d065760405162461bcd60e51b8152600401610a6b90613ab1565b612d0e612e12565b612d2c6001600160a01b03821615612d265781612974565b33612974565b5060c9805461ff001916610100179055565b5f54610100900460ff16612d645760405162461bcd60e51b8152600401610a6b90613ab1565b6001600160401b03461115612d8c5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b612db781612b2e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114328383604051806060016040528060278152602001613b4a60279139612e38565b5f54610100900460ff1661144b5760405162461bcd60e51b8152600401610a6b90613ab1565b60605f5f856001600160a01b031685604051612e549190613afc565b5f60405180830381855af49150503d805f8114612e8c576040519150601f19603f3d011682016040523d82523d5f602084013e612e91565b606091505b5091509150612ea286838387612eac565b9695505050505050565b60608315612f1a5782515f03612f13576001600160a01b0385163b612f135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a6b565b5081612325565b6123258383815115612f2f5781518083602001fd5b8060405162461bcd60e51b8152600401610a6b9190613b17565b5f610160828403121561258d575f5ffd5b8015158114611420575f5ffd5b5f5f60408385031215612f78575f5ffd5b82356001600160401b03811115612f8d575f5ffd5b612f9985828601612f49565b9250506020830135612faa81612f5a565b809150509250929050565b5f60208284031215612fc5575f5ffd5b81356001600160401b03811115612fda575f5ffd5b61232584828501612f49565b5f5b83811015613000578181015183820152602001612fe8565b50505f910152565b5f815180845261301f816020860160208601612fe6565b601f01601f19169290920160200192915050565b80516001600160401b031682525f602082015161305b60208501826001600160401b03169052565b506040820151613073604085018263ffffffff169052565b50606082015161308e60608501826001600160a01b03169052565b5060808201516130a960808501826001600160401b03169052565b5060a08201516130c460a08501826001600160a01b03169052565b5060c08201516130df60c08501826001600160401b03169052565b5060e08201516130fa60e08501826001600160a01b03169052565b506101008201516131176101008501826001600160a01b03169052565b50610120820151610120840152610140820151610160610140850152612325610160850182613008565b828152604060208201525f61142f6040830184613033565b5f5f5f6040848603121561316b575f5ffd5b83356001600160401b03811115613180575f5ffd5b61318c86828701612f49565b93505060208401356001600160401b038111156131a7575f5ffd5b8401601f810186136131b7575f5ffd5b80356001600160401b038111156131cc575f5ffd5b8660208284010111156131dd575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b60058110613212576132126131ee565b9052565b604081016132248285613202565b60048310613234576132346131ee565b8260208301529392505050565b6001600160a01b0381168114611420575f5ffd5b803561326081613241565b919050565b5f60208284031215613275575f5ffd5b813561143281613241565b5f60208284031215613290575f5ffd5b5035919050565b602081016116eb8284613202565b80356001600160401b0381168114613260575f5ffd5b5f5f5f606084860312156132cd575f5ffd5b6132d6846132a5565b92506020840135915060408401356132ed81612f5a565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561332f5761332f6132f8565b60405290565b5f82601f830112613344575f5ffd5b81356001600160401b0381111561335d5761335d6132f8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561338b5761338b6132f8565b6040528181528382016020018510156133a2575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156133cf575f5ffd5b82356133da81613241565b915060208301356001600160401b038111156133f4575f5ffd5b61340085828601613335565b9150509250929050565b5f6020828403121561341a575f5ffd5b611432826132a5565b5f5f60408385031215613434575f5ffd5b823591506020830135612faa81612f5a565b803563ffffffff81168114613260575f5ffd5b5f610160828403121561346a575f5ffd5b61347261330c565b905061347d826132a5565b815261348b602083016132a5565b602082015261349c60408301613446565b60408201526134ad60608301613255565b60608201526134be608083016132a5565b60808201526134cf60a08301613255565b60a08201526134e060c083016132a5565b60c08201526134f160e08301613255565b60e08201526135036101008301613255565b61010082015261012082810135908201526101408201356001600160401b0381111561352d575f5ffd5b61353984828501613335565b6101408301525092915050565b5f60208284031215613556575f5ffd5b81356001600160401b0381111561356b575f5ffd5b61232584828501613459565b5f5f60408385031215613588575f5ffd5b823561359381613241565b91506020830135612faa81613241565b5f6116eb3683613459565b5f602082840312156135be575f5ffd5b61143282613446565b5f602082840312156135d7575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116eb576116eb61362c565b5f6001600160401b0382166001600160401b0381036136745761367461362c565b60010192915050565b602081525f6114326020830184613033565b5f5f8335601e198436030181126136a4575f5ffd5b8301803591506001600160401b038211156136bd575f5ffd5b6020019150368190038213156136d1575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e19843603018112613701575f5ffd5b83016020810192503590506001600160401b0381111561371f575f5ffd5b8036038213156136d1575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b61376f82613762836132a5565b6001600160401b03169052565b5f61377c602083016132a5565b6001600160401b0316602084015261379660408301613446565b63ffffffff1660408401526137ad60608301613255565b6001600160a01b031660608401526137c7608083016132a5565b6001600160401b031660808401526137e160a08301613255565b6001600160a01b031660a08401526137fb60c083016132a5565b6001600160401b031660c084015261381560e08301613255565b6001600160a01b031660e08401526138306101008301613255565b6001600160a01b031661010084015261012082810135908401526138586101408301836136ec565b6101606101408601526125396101608601828461372d565b60a081525f61388260a0830185613755565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f6020828403121561396c575f5ffd5b815161143281612f5a565b63ffffffff81811683821601908111156116eb576116eb61362c565b604081525f6139a56040830185613755565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114326080830184613033565b80356001600160e01b03198116906004841015613a1b576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f613a6c60808301848661372d565b979650505050505050565b5f82613a9157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215613aa6575f5ffd5b815161143281613241565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f8251613b0d818460208701612fe6565b9190910192915050565b602081525f611432602083018461300856fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206ccb67f04aaf63488576bbb651d54656794e2eac08c3401a79a0cda25cd7f6e664736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000001": { - "contractName": "Bridge", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000001" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x033b2dc55cae685664a00000" - }, - "0x0167000000000000000000000000000000000002": { - "contractName": "ERC20VaultImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x6080604052600436106101ba575f3560e01c806367090ccf116100f25780639aa8605c11610092578063e07baba611610062578063e07baba6146104e3578063e30c397814610520578063f09a40161461053d578063f2fde38b1461055c575f5ffd5b80639aa8605c1461045e578063a86f9d9e1461048e578063b84d9ffe146104ad578063d56ad7ac146104cd575f5ffd5b80637f07c947116100cd5780637f07c947146104065780638456cb59146104195780638abf60771461042d5780638da5cb5b14610441575f5ffd5b806367090ccf1461039e578063715018a6146103de57806379ba5097146103f2575f5ffd5b80633659cfe61161015d5780633f4ba83a116101385780633f4ba83a146103435780634f1ef2861461035757806352d1902d1461036a5780635c975abb1461037e575f5ffd5b80633659cfe6146102e65780633ab76e9f146103055780633eb6b8cf14610324575f5ffd5b806306fdde031161019857806306fdde031461024c5780630e7eeb791461026c5780630ecd8be91461029b5780633075db56146102d2575f5ffd5b80630178733a146101be57806301ffc9a7146101d3578063066fe7b414610207575b5f5ffd5b6101d16101cc36600461330a565b61057b565b005b3480156101de575f5ffd5b506101f26101ed366004613350565b610709565b60405190151581526020015b60405180910390f35b348015610212575f5ffd5b5061023e61022136600461338b565b61013060209081525f928352604080842090915290825290205481565b6040519081526020016101fe565b348015610257575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b61023e565b348015610277575f5ffd5b506101f26102863660046133b9565b61012f6020525f908152604090205460ff1681565b3480156102a6575f5ffd5b506102ba6102b53660046133d4565b610759565b6040516001600160a01b0390911681526020016101fe565b3480156102dd575f5ffd5b506101f2610e67565b3480156102f1575f5ffd5b506101d16103003660046133b9565b610e7f565b348015610310575f5ffd5b506097546102ba906001600160a01b031681565b34801561032f575f5ffd5b506102ba61033e36600461343c565b610f4f565b34801561034e575f5ffd5b506101d1610f65565b6101d1610365366004613584565b610f79565b348015610375575f5ffd5b5061023e61102e565b348015610389575f5ffd5b506101f260c954610100900460ff1660021490565b3480156103a9575f5ffd5b506102ba6103b836600461338b565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b3480156103e9575f5ffd5b506101d16110df565b3480156103fd575f5ffd5b506101d16110f0565b6101d16104143660046135d0565b611167565b348015610424575f5ffd5b506101d16112b7565b348015610438575f5ffd5b506102ba6112ca565b34801561044c575f5ffd5b506033546001600160a01b03166102ba565b348015610469575f5ffd5b5061047d6104783660046133b9565b6112d8565b6040516101fe959493929190613689565b348015610499575f5ffd5b506102ba6104a83660046136e2565b61142d565b6104c06104bb366004613705565b611439565b6040516101fe919061371e565b3480156104d8575f5ffd5b5061023e6276a70081565b3480156104ee575f5ffd5b5060c954610508906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101fe565b34801561052b575f5ffd5b506065546001600160a01b03166102ba565b348015610548575f5ffd5b506101d161055736600461380e565b61187c565b348015610567575f5ffd5b506101d16105763660046133b9565b61198b565b61058f60c954610100900460ff1660021490565b156105ad5760405163bae6e2a960e01b815260040160405180910390fd5b60026105bb60c95460ff1690565b60ff16036105dc5760405163dfc60d8560e01b815260040160405180910390fd5b6105e660026119fc565b6105ee611a12565b505f6105fe61014084018461382a565b61060c916004908290613873565b810190610619919061389a565b90505f5f828060200190518101906106319190613946565b9350505091505f610655838760a001602081019061064f91906133b9565b84611b08565b905061067f61012087013561067060c0890160a08a016133b9565b6001600160a01b031690611bb0565b61068f60c0870160a088016133b9565b6001600160a01b0316857f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd5856020015184866040516106ef939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a35050505061070560016119fc565b5050565b5f6001600160e01b0319821662bc399d60e11b148061073857506001600160e01b03198216637f07c94760e01b145b8061075357506001600160e01b031982166301ffc9a760e01b145b92915050565b5f610762611bbb565b600261077060c95460ff1690565b60ff16036107915760405163dfc60d8560e01b815260040160405180910390fd5b61079b60026119fc565b6001600160a01b03821615806107d157506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b806107e457506001600160a01b0382163b155b156108025760405163dc63f98760e01b815260040160405180910390fd5b5f61081360408501602086016133b9565b6001600160a01b0316148061083c5750466108316020850185613a3a565b6001600160401b0316145b1561085a57604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff1615610894576040516375c42fc160e01b815260040160405180910390fd5b5f610130816108a66020870187613a3a565b6001600160401b031681526020019081526020015f205f8560200160208101906108d091906133b9565b6001600160a01b0316815260208101919091526040015f205490506108f86276a70082613a69565b4210156109185760405163231d35fb60e11b815260040160405180910390fd5b61012e5f6109296020870187613a3a565b6001600160401b031681526020019081526020015f205f85602001602081019061095391906133b9565b6001600160a01b03908116825260208201929092526040015f20541691508115610cb9576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff1690820152600183018054929391926060840191906109e290613a7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0e90613a7c565b8015610a595780601f10610a3057610100808354040283529160200191610a59565b820191905f5260205f20905b815481529060010190602001808311610a3c57829003601f168201915b50505050508152602001600282018054610a7290613a7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e90613a7c565b8015610ae95780601f10610ac057610100808354040283529160200191610ae9565b820191905f5260205f20905b815481529060010190602001808311610acc57829003601f168201915b505050505081525050905080604051602001610b059190613b13565b6040516020818303038152906040528051906020012085604051602001610b2c9190613b99565b6040516020818303038152906040528051906020012014610b6057604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610b9460018301826132b2565b610ba1600283015f6132b2565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610bd79063b8f2e0c560e01b611c15565b8015610bf85750610bf86001600160a01b03851663b8f2e0c560e01b611c15565b15610cb75760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610c43575f5ffd5b505af1158015610c55573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610ca0575f5ffd5b505af1158015610cb2573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610cdd8282613d3c565b5083905061012e5f610cf26020880188613a3a565b6001600160401b031681526020019081526020015f205f866020016020810190610d1c91906133b9565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610d759190613a3a565b6001600160401b031681526020019081526020015f205f866020016020810190610d9f91906133b9565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610dd591906133b9565b6001600160a01b0316610deb6020860186613a3a565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610e2460608a018a61382a565b610e3160808c018c61382a565b610e4160608e0160408f01613dfa565b604051610e549796959493929190613e15565b60405180910390a35061075360016119fc565b5f6002610e7660c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000002163003610ed05760405162461bcd60e51b8152600401610ec790613e6c565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000000026001600160a01b0316610f02611ca2565b6001600160a01b031614610f285760405162461bcd60e51b8152600401610ec790613eb8565b610f3181611cbd565b604080515f80825260208201909252610f4c91839190611cc5565b50565b5f610f5b848484611e2f565b90505b9392505050565b610f6d611e81565b610f77335f611f11565b565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000002163003610fc15760405162461bcd60e51b8152600401610ec790613e6c565b7f00000000000000000000000001670000000000000000000000000000000000026001600160a01b0316610ff3611ca2565b6001600160a01b0316146110195760405162461bcd60e51b8152600401610ec790613eb8565b61102282611cbd565b61070582826001611cc5565b5f306001600160a01b037f000000000000000000000000016700000000000000000000000000000000000216146110cd5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ec7565b505f5160206149985f395f51905f5290565b6110e7611bbb565b610f775f611f19565b60655433906001600160a01b0316811461115e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ec7565b610f4c81611f19565b61117b60c954610100900460ff1660021490565b156111995760405163bae6e2a960e01b815260040160405180910390fd5b60026111a760c95460ff1690565b60ff16036111c85760405163dfc60d8560e01b815260040160405180910390fd5b6111d260026119fc565b5f8080806111e285870187613f0f565b93509350935093505f6111f3611f32565b90506111fe83612051565b5f61120a868585611b08565b905061121f6001600160a01b03851634611bb0565b836001600160a01b0316856001600160a01b0316835f01517f75a051823424fc80e92556c41cb0ad977ae1dcb09c68a9c38acab86b11a69f8985604001518a60200151868960405161129f94939291906001600160401b039490941684526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a450505050505061070560016119fc565b6112bf61208d565b610f77336001611f11565b5f6112d3611ca2565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161132090613a7c565b80601f016020809104026020016040519081016040528092919081815260200182805461134c90613a7c565b80156113975780601f1061136e57610100808354040283529160200191611397565b820191905f5260205f20905b81548152906001019060200180831161137a57829003601f168201915b5050505050908060020180546113ac90613a7c565b80601f01602080910402602001604051908101604052809291908181526020018280546113d890613a7c565b80156114235780601f106113fa57610100808354040283529160200191611423565b820191905f5260205f20905b81548152906001019060200180831161140657829003601f168201915b5050505050905085565b5f610f5e468484611e2f565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526114a760c954610100900460ff1660021490565b156114c55760405163bae6e2a960e01b815260040160405180910390fd5b60026114d360c95460ff1690565b60ff16036114f45760405163dfc60d8560e01b815260040160405180910390fd5b6114fe60026119fc565b8160c001355f0361152257604051634299323b60e11b815260040160405180910390fd5b5f61153360a08401608085016133b9565b6001600160a01b03160361155a576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f61156e60a08501608086016133b9565b6001600160a01b0316815260208101919091526040015f205460ff16156115a8576040516375c42fc160e01b815260040160405180910390fd5b6115b86080830160608401613a3a565b6001600160401b03163410156115e157604051630178ce0b60e31b815260040160405180910390fd5b5f5f5f6115ed856120fe565b6040805161016081019091525f8082529396509194509250602081016116196080890160608a01613a3a565b6001600160401b0316815260200161163760c0890160a08a01614014565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061166890890189613a3a565b6001600160401b031681526020015f6001600160a01b031688602001602081019061169391906133b9565b6001600160a01b0316036116a757336116b7565b6116b76040890160208a016133b9565b6001600160a01b031681526020908101906116ee906116d8908a018a613a3a565b6a195c98cc8c17dd985d5b1d60aa1b5b5f610f4f565b6001600160a01b0316815260200161170c6080890160608a01613a3a565b61171f906001600160401b03163461402f565b815260200185905290505f61173d6562726964676560d01b8261142d565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401611769919061371e565b5f6040518083038185885af1158015611784573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526117ac919081019061404d565b965090506117c060608801604089016133b9565b6001600160a01b03168660a001516001600160a01b0316827f256f5c87f6ab8d238ac244067613227eb6e2cd65299121135d4f778e8581e03d875f01518b5f01602081019061180f9190613a3a565b89602001518d608001602081019061182791906133b9565b604080516001600160401b0395861681529390941660208401526001600160a01b03918216838501521660608201526080810189905290519081900360a00190a4505050505061187760016119fc565b919050565b5f54610100900460ff161580801561189a57505f54600160ff909116105b806118b35750303b1580156118b357505f5460ff166001145b6119165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec7565b5f805460ff191660011790558015611937575f805461ff0019166101001790555b6119418383612598565b8015611986575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611993611bbb565b606580546001600160a01b0383166001600160a01b031990911681179091556119c46033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611a4381600161142d565b6001600160a01b0316336001600160a01b031614611a7457604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611ab0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ad4919061416d565b60208101519092506001600160a01b03163314611b0457604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611b3b57506020830151611b366001600160a01b03821684846125d2565b611ba6565b611b4484612635565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015611b8f575f5ffd5b505af1158015611ba1573d5f5f3e3d5ffd5b505050505b610f5e8183612677565b61070582825a612706565b6033546001600160a01b03163314610f775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec7565b5f6001600160a01b0383163b611c2c57505f610753565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa925050508015611c96575060408051601f3d908101601f19168201909252611c93918101906141d5565b60015b15610753579392505050565b5f5160206149985f395f51905f52546001600160a01b031690565b610f4c611bbb565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611cf85761198683612749565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d52575060408051601f3d908101601f19168201909252611d4f918101906141f0565b60015b611db55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ec7565b5f5160206149985f395f51905f528114611e235760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ec7565b506119868383836127e4565b5f611e3a848461280e565b905081158015611e5157506001600160a01b038116155b15610f5e57604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610ec7565b611e9560c954610100900460ff1660021490565b611eb25760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610705611bbb565b606580546001600160a01b0319169055610f4c816128b8565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611f6381600161142d565b6001600160a01b0316336001600160a01b031614611f9457604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff4919061416d565b91505f61201483604001516116e86a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b03161461204c57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b038116158061206f57506001600160a01b03811630145b15610f4c57604051635b50f3f960e01b815260040160405180910390fd5b6120a160c954610100900460ff1660021490565b156120bf5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611f07565b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f8061012d8161214060a08801608089016133b9565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615612376576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff1691810191909152600182018054839160608401916121c090613a7c565b80601f01602080910402602001604051908101604052809291908181526020018280546121ec90613a7c565b80156122375780601f1061220e57610100808354040283529160200191612237565b820191905f5260205f20905b81548152906001019060200180831161221a57829003601f168201915b5050505050815260200160028201805461225090613a7c565b80601f016020809104026020016040519081016040528092919081815260200182805461227c90613a7c565b80156122c75780601f1061229e576101008083540402835291602001916122c7565b820191905f5260205f20905b8154815290600101906020018083116122aa57829003601f168201915b505050505081525050925061230033308760c001358860800160208101906122ef91906133b9565b6001600160a01b0316929190612909565b61231060a08601608087016133b9565b604051630852cd8d60e31b815260c087013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b158015612354575f5ffd5b505af1158015612366573d5f5f3e3d5ffd5b505050508460c001359150612518565b6040518060a00160405280466001600160401b031681526020018660800160208101906123a391906133b9565b6001600160a01b031681526020016123c96123c460a0890160808a016133b9565b612941565b60ff1681526020016123e96123e460a0890160808a016133b9565b6129f5565b815260200161240661240160a0890160808a016133b9565b612a9f565b905292505f61241b60a08701608088016133b9565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612462573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248691906141f0565b90506124a16001600160a01b038316333060c08b0135612909565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156124e5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061250991906141f0565b612513919061402f565b935050505b30637f07c947843361253060608a0160408b016133b9565b866040516020016125449493929190614207565b60408051601f19818403018152908290526125619160240161423c565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509350509193909250565b806001600160a01b0381166125c05760405163538ba4f960e01b815260040160405180910390fd5b6125c983612ae5565b61198682612b43565b6040516001600160a01b03831660248201526044810182905261198690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612bb3565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b03908116855292529091205416806118775761075382612c86565b5f6126936c38bab7ba30afb6b0b730b3b2b960991b600161142d565b90506001600160a01b03811615611986576040516315c638fb60e31b81526001600160a01b0384811660048301526024820184905282169063ae31c7d8906044015f604051808303815f87803b1580156126eb575f5ffd5b505af11580156126fd573d5f5f3e3d5ffd5b50505050505050565b815f0361271257505050565b61272c83838360405180602001604052805f815250612e88565b61198657604051634c67134d60e11b815260040160405180910390fd5b6001600160a01b0381163b6127b65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ec7565b5f5160206149985f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6127ed83612ec5565b5f825111806127f95750805b15611986576128088383612f04565b50505050565b6097545f906001600160a01b03168061283a57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561288c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128b0919061424e565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526128089085906323b872dd60e01b906084016125fe565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b038616916129869190614269565b5f60405180830381855afa9150503d805f81146129be576040519150601f19603f3d011682016040523d82523d5f602084013e6129c3565b606091505b50915091508180156129d6575080516020145b6129e15760126128b0565b808060200190518101906128b09190614284565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612a3b9190614269565b5f60405180830381855afa9150503d805f8114612a73576040519150601f19603f3d011682016040523d82523d5f602084013e612a78565b606091505b509150915081612a965760405180602001604052805f8152506128b0565b6128b081612f29565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612a3b9190614269565b5f54610100900460ff16612b0b5760405162461bcd60e51b8152600401610ec79061429f565b612b13613096565b612b316001600160a01b03821615612b2b5781611f19565b33611f19565b5060c9805461ff001916610100179055565b5f54610100900460ff16612b695760405162461bcd60e51b8152600401610ec79061429f565b6001600160401b03461115612b915760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f612c07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130bc9092919063ffffffff16565b905080515f1480612c27575080806020019051810190612c2791906141d5565b6119865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ec7565b5f5f612c9a6033546001600160a01b031690565b60975460208501518551604080880151606089015160808a01519251612cd097966001600160a01b0316959493906024016142ea565b60408051601f198184030181529190526020810180516001600160e01b031663bb86ef9360e01b1790529050612d166c0627269646765645f657263323609c1b5f61142d565b81604051612d23906132e9565b612d2e929190614355565b604051809103905ff080158015612d47573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b03909116179190911791909116919091178155606085015191935084916001820190612dc99082614378565b5060808201516002820190612dde9082614378565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea130907993612e7a9391929190614432565b60405180910390a450919050565b5f6001600160a01b038516612eb057604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b612ece81612749565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610f5e83836040518060600160405280602781526020016149b8602791396130ca565b60606040825110612f485781806020019051810190610753919061446a565b8151602003613083575f5b60208160ff16108015612f885750828160ff1681518110612f7657612f7661449b565b01602001516001600160f81b03191615155b15612f9f5780612f97816144af565b915050612f53565b5f8160ff166001600160401b03811115612fbb57612fbb61347b565b6040519080825280601f01601f191660200182016040528015612fe5576020820181803683370190505b5090505f91505b60208260ff161080156130215750838260ff168151811061300f5761300f61449b565b01602001516001600160f81b03191615155b15610f5e57838260ff168151811061303b5761303b61449b565b602001015160f81c60f81b818360ff168151811061305b5761305b61449b565b60200101906001600160f81b03191690815f1a9053508161307b816144af565b925050612fec565b505060408051602081019091525f815290565b5f54610100900460ff16610f775760405162461bcd60e51b8152600401610ec79061429f565b6060610f5b84845f8561313e565b60605f5f856001600160a01b0316856040516130e69190614269565b5f60405180830381855af49150503d805f811461311e576040519150601f19603f3d011682016040523d82523d5f602084013e613123565b606091505b509150915061313486838387613215565b9695505050505050565b60608247101561319f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ec7565b5f5f866001600160a01b031685876040516131ba9190614269565b5f6040518083038185875af1925050503d805f81146131f4576040519150601f19603f3d011682016040523d82523d5f602084013e6131f9565b606091505b509150915061320a87838387613215565b979650505050505050565b606083156132835782515f0361327c576001600160a01b0385163b61327c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ec7565b50816128b0565b6128b083838151156132985781518083602001fd5b8060405162461bcd60e51b8152600401610ec7919061423c565b5080546132be90613a7c565b5f825580601f106132cd575050565b601f0160209004905f5260205f2090810190610f4c91906132f6565b6104ca806144ce83390190565b5b80821115611b04575f81556001016132f7565b5f5f6040838503121561331b575f5ffd5b82356001600160401b03811115613330575f5ffd5b83016101608186031215613342575f5ffd5b946020939093013593505050565b5f60208284031215613360575f5ffd5b81356001600160e01b031981168114610f5e575f5ffd5b6001600160a01b0381168114610f4c575f5ffd5b5f5f6040838503121561339c575f5ffd5b8235915060208301356133ae81613377565b809150509250929050565b5f602082840312156133c9575f5ffd5b8135610f5e81613377565b5f5f604083850312156133e5575f5ffd5b82356001600160401b038111156133fa575f5ffd5b830160a0818603121561340b575f5ffd5b915060208301356133ae81613377565b6001600160401b0381168114610f4c575f5ffd5b8015158114610f4c575f5ffd5b5f5f5f6060848603121561344e575f5ffd5b83356134598161341b565b92506020840135915060408401356134708161342f565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156134b1576134b161347b565b60405290565b60405161016081016001600160401b03811182821017156134b1576134b161347b565b604051601f8201601f191681016001600160401b03811182821017156135025761350261347b565b604052919050565b5f6001600160401b038211156135225761352261347b565b50601f01601f191660200190565b5f82601f83011261353f575f5ffd5b8135602083015f6135576135528461350a565b6134da565b905082815285838301111561356a575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215613595575f5ffd5b82356135a081613377565b915060208301356001600160401b038111156135ba575f5ffd5b6135c685828601613530565b9150509250929050565b5f5f602083850312156135e1575f5ffd5b82356001600160401b038111156135f6575f5ffd5b8301601f81018513613606575f5ffd5b80356001600160401b0381111561361b575f5ffd5b85602082840101111561362c575f5ffd5b6020919091019590945092505050565b5f5b8381101561365657818101518382015260200161363e565b50505f910152565b5f815180845261367581602086016020860161363c565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f906136c49083018561365e565b82810360808401526136d6818561365e565b98975050505050505050565b5f5f604083850312156136f3575f5ffd5b8235915060208301356133ae8161342f565b5f60e0828403128015613716575f5ffd5b509092915050565b602081526137386020820183516001600160401b03169052565b5f602083015161375360408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526128b061018084018261365e565b5f5f6040838503121561381f575f5ffd5b823561340b81613377565b5f5f8335601e1984360301811261383f575f5ffd5b8301803591506001600160401b03821115613858575f5ffd5b60200191503681900382131561386c575f5ffd5b9250929050565b5f5f85851115613881575f5ffd5b8386111561388d575f5ffd5b5050820193919092039150565b5f602082840312156138aa575f5ffd5b81356001600160401b038111156138bf575f5ffd5b6128b084828501613530565b80516118778161341b565b805161187781613377565b60ff81168114610f4c575f5ffd5b8051611877816138e1565b5f82601f830112613909575f5ffd5b8151602083015f61391c6135528461350a565b905082815285838301111561392f575f5ffd5b61393d83602083018461363c565b95945050505050565b5f5f5f5f60808587031215613959575f5ffd5b84516001600160401b0381111561396e575f5ffd5b850160a0818803121561397f575f5ffd5b61398761348f565b81516139928161341b565b815260208201516139a281613377565b60208201526139b3604083016138ef565b604082015260608201516001600160401b038111156139d0575f5ffd5b6139dc898285016138fa565b60608301525060808201516001600160401b038111156139fa575f5ffd5b613a06898285016138fa565b6080830152509450613a1c9050602086016138d6565b9250613a2a604086016138d6565b6060959095015193969295505050565b5f60208284031215613a4a575f5ffd5b8135610f5e8161341b565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561075357610753613a55565b600181811c90821680613a9057607f821691505b602082108103613aae57634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a06060850152613afa60a085018261365e565b90506080830151848203608086015261393d828261365e565b602081525f610f5e6020830184613ab4565b8035611877816138e1565b5f5f8335601e19843603018112613b45575f5ffd5b83016020810192503590506001600160401b03811115613b63575f5ffd5b80360382131561386c575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235613ba98161341b565b6001600160401b0381166020840152506020830135613bc781613377565b6001600160a01b0316604083810191909152830135613be5816138e1565b60ff8116606084015250613bfc6060840184613b30565b60a06080850152613c1160c085018284613b71565b915050613c216080850185613b30565b848303601f190160a0860152613134838284613b71565b601f82111561198657805f5260205f20601f840160051c81016020851015613c5d5750805b601f840160051c820191505b81811015613c7c575f8155600101613c69565b5050505050565b6001600160401b03831115613c9a57613c9a61347b565b613cae83613ca88354613a7c565b83613c38565b5f601f841160018114613cdf575f8515613cc85750838201355b5f19600387901b1c1916600186901b178355613c7c565b5f83815260208120601f198716915b82811015613d0e5786850135825560209485019460019092019101613cee565b5086821015613d2a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135613d478161341b565b6001600160401b03811690508154816001600160401b031982161783556020840135613d7281613377565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f90830135613da9816138e1565b825460ff60e01b191660e09190911b60ff60e01b1617825550613dcf606083018361382a565b613ddd818360018601613c83565b5050613dec608083018361382a565b612808818360028601613c83565b5f60208284031215613e0a575f5ffd5b8135610f5e816138e1565b6001600160a01b0388811682528716602082015260a0604082018190525f90613e419083018789613b71565b8281036060840152613e54818688613b71565b91505060ff8316608083015298975050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b803561187781613377565b5f5f5f5f60808587031215613f22575f5ffd5b84356001600160401b03811115613f37575f5ffd5b850160a08188031215613f48575f5ffd5b613f5061348f565b8135613f5b8161341b565b81526020820135613f6b81613377565b6020820152613f7c60408301613b25565b604082015260608201356001600160401b03811115613f99575f5ffd5b613fa589828501613530565b60608301525060808201356001600160401b03811115613fc3575f5ffd5b613fcf89828501613530565b6080830152509450613fe5905060208601613f04565b9250613ff360408601613f04565b9396929550929360600135925050565b63ffffffff81168114610f4c575f5ffd5b5f60208284031215614024575f5ffd5b8135610f5e81614003565b8181038181111561075357610753613a55565b805161187781614003565b5f5f6040838503121561405e575f5ffd5b825160208401519092506001600160401b0381111561407b575f5ffd5b8301610160818603121561408d575f5ffd5b6140956134b7565b61409e826138cb565b81526140ac602083016138cb565b60208201526140bd60408301614042565b60408201526140ce606083016138d6565b60608201526140df608083016138cb565b60808201526140f060a083016138d6565b60a082015261410160c083016138cb565b60c082015261411260e083016138d6565b60e082015261412461010083016138d6565b61010082015261012082810151908201526101408201516001600160401b0381111561414e575f5ffd5b61415a878285016138fa565b6101408301525080925050509250929050565b5f606082840312801561417e575f5ffd5b50604051606081016001600160401b03811182821017156141a1576141a161347b565b6040528251815260208301516141b681613377565b602082015260408301516141c98161341b565b60408201529392505050565b5f602082840312156141e5575f5ffd5b8151610f5e8161342f565b5f60208284031215614200575f5ffd5b5051919050565b608081525f6142196080830187613ab4565b6001600160a01b0395861660208401529390941660408201526060015292915050565b602081525f610f5e602083018461365e565b5f6020828403121561425e575f5ffd5b8151610f5e81613377565b5f825161427a81846020870161363c565b9190910192915050565b5f60208284031215614294575f5ffd5b8151610f5e816138e1565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0388811682528781166020830152861660408201526001600160401b038516606082015260ff8416608082015260e060a082018190525f906143359083018561365e565b82810360c0840152614347818561365e565b9a9950505050505050505050565b6001600160a01b03831681526040602082018190525f90610f5b9083018461365e565b81516001600160401b038111156143915761439161347b565b6143a58161439f8454613a7c565b84613c38565b6020601f8211600181146143d7575f83156143c05750848201515b5f19600385901b1c1916600184901b178455613c7c565b5f84815260208120601f198516915b8281101561440657878501518255602094850194600190920191016143e6565b508482101561442357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f614444606083018661365e565b8281036020840152614456818661365e565b91505060ff83166040830152949350505050565b5f6020828403121561447a575f5ffd5b81516001600160401b0381111561448f575f5ffd5b6128b0848285016138fa565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff81036144c4576144c4613a55565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b8d385d4f2d6cc75f0553b0f75a9defc23ce602bcb05516f25f5e40cac657bef64736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000002": { - "contractName": "ERC20Vault", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000201", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000002" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000000003": { - "contractName": "ERC721VaultImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x60806040526004361061017b575f3560e01c806367090ccf116100cd5780638da5cb5b11610087578063e07baba611610062578063e07baba614610449578063e30c397814610486578063f09a4016146104a3578063f2fde38b146104c2575f5ffd5b80638da5cb5b146103de5780639aa8605c146103fb578063a86f9d9e1461042a575f5ffd5b806367090ccf1461033b578063715018a61461037b57806379ba50971461038f5780637f07c947146103a35780638456cb59146103b65780638abf6077146103ca575f5ffd5b80633659cfe6116101385780633f4ba83a116101135780633f4ba83a146102e05780634f1ef286146102f457806352d1902d146103075780635c975abb1461031b575f5ffd5b80633659cfe61461026b5780633ab76e9f1461028a5780633eb6b8cf146102c1575f5ffd5b80630178733a1461017f57806301ffc9a71461019457806306fdde03146101c8578063150b7a02146101f35780631f59a830146102375780633075db5614610257575b5f5ffd5b61019261018d3660046128ea565b6104e1565b005b34801561019f575f5ffd5b506101b36101ae366004612930565b610694565b60405190151581526020015b60405180910390f35b3480156101d3575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b6040519081526020016101bf565b3480156101fe575f5ffd5b5061021e61020d3660046129ba565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016101bf565b61024a610245366004612a27565b6106e4565b6040516101bf9190612aab565b348015610262575f5ffd5b506101b3610b6a565b348015610276575f5ffd5b50610192610285366004612b9b565b610b82565b348015610295575f5ffd5b506097546102a9906001600160a01b031681565b6040516001600160a01b0390911681526020016101bf565b3480156102cc575f5ffd5b506102a96102db366004612be2565b610c52565b3480156102eb575f5ffd5b50610192610c68565b610192610302366004612d4d565b610c7c565b348015610312575f5ffd5b506101e5610d31565b348015610326575f5ffd5b506101b360c954610100900460ff1660021490565b348015610346575f5ffd5b506102a9610355366004612d99565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610386575f5ffd5b50610192610de2565b34801561039a575f5ffd5b50610192610df3565b6101926103b1366004612dc7565b610e6a565b3480156103c1575f5ffd5b50610192610fd3565b3480156103d5575f5ffd5b506102a9610fe6565b3480156103e9575f5ffd5b506033546001600160a01b03166102a9565b348015610406575f5ffd5b5061041a610415366004612b9b565b610ff4565b6040516101bf9493929190612e05565b348015610435575f5ffd5b506102a9610444366004612e54565b61113f565b348015610454575f5ffd5b5060c95461046e906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101bf565b348015610491575f5ffd5b506065546001600160a01b03166102a9565b3480156104ae575f5ffd5b506101926104bd366004612e77565b61114b565b3480156104cd575f5ffd5b506101926104dc366004612b9b565b61125a565b6104f560c954610100900460ff1660021490565b156105135760405163bae6e2a960e01b815260040160405180910390fd5b600261052160c95460ff1690565b60ff16036105425760405163dfc60d8560e01b815260040160405180910390fd5b61054c60026112cb565b6105546112e1565b505f610564610140840184612ea3565b610572916004908290612ee5565b81019061057f9190612f0c565b90505f5f828060200190518101906105979190613026565b9350505091505f6105bb838760a00160208101906105b59190612b9b565b846113d7565b90506105e56101208701356105d660c0890160a08a01612b9b565b6001600160a01b03169061154e565b6105f560c0870160a08801612b9b565b6001600160a01b0316857fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b0381111561064057610640612c21565b604051908082528060200260200182016040528015610669578160200160208202803683370190505b5060405161067a9493929190613165565b60405180910390a35050505061069060016112cb565b5050565b5f6001600160e01b0319821662bc399d60e11b14806106c357506001600160e01b03198216637f07c94760e01b145b806106de57506001600160e01b031982166301ffc9a760e01b145b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261075260c954610100900460ff1660021490565b156107705760405163bae6e2a960e01b815260040160405180910390fd5b61077982613219565b8060e00151518160c0015151146107a35760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107ce576040516303f8a7d360e01b815260040160405180910390fd5b60026107dc60c95460ff1690565b60ff16036107fd5760405163dfc60d8560e01b815260040160405180910390fd5b61080760026112cb565b61081760808401606085016132ec565b6001600160401b031634101561084057604051630178ce0b60e31b815260040160405180910390fd5b5f5b61084f60c0850185613307565b90508110156108a35761086560e0850185613307565b828181106108755761087561334c565b905060200201355f1461089b57604051634299323b60e11b815260040160405180910390fd5b600101610842565b506108ce6380ac58cd60e01b6108bf60a0860160808701612b9b565b6001600160a01b031690611559565b6108eb57604051633ee915f560e11b815260040160405180910390fd5b5f5f6108f6856115e6565b6040805161016081019091525f808252929450909250602081016109206080890160608a016132ec565b6001600160401b0316815260200161093e60c0890160a08a01613360565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061096f908901896132ec565b6001600160401b031681526020015f6001600160a01b031688602001602081019061099a9190612b9b565b6001600160a01b0316036109ae57336109be565b6109be6040890160208a01612b9b565b6001600160a01b031681526020908101906109f6906109df908a018a6132ec565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f610c52565b6001600160a01b03168152602001610a146080890160608a016132ec565b610a27906001600160401b03163461338f565b815260200184905290505f610a456562726964676560d01b8261113f565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a719190612aab565b5f6040518083038185885af1158015610a8c573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610ab491908101906133ad565b96509050610ac86060880160408901612b9b565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610b1e9190612b9b565b610b2b60c08f018f613307565b8f8060e00190610b3b9190613307565b604051610b4e97969594939291906134fd565b60405180910390a450505050610b6460016112cb565b50919050565b5f6002610b7960c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000003163003610bd35760405162461bcd60e51b8152600401610bca90613559565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000000036001600160a01b0316610c05611ac8565b6001600160a01b031614610c2b5760405162461bcd60e51b8152600401610bca906135a5565b610c3481611ae3565b604080515f80825260208201909252610c4f91839190611aeb565b50565b5f610c5e848484611c55565b90505b9392505050565b610c70611ca7565b610c7a335f611d37565b565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000003163003610cc45760405162461bcd60e51b8152600401610bca90613559565b7f00000000000000000000000001670000000000000000000000000000000000036001600160a01b0316610cf6611ac8565b6001600160a01b031614610d1c5760405162461bcd60e51b8152600401610bca906135a5565b610d2582611ae3565b61069082826001611aeb565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000000031614610dd05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610bca565b505f516020613ff95f395f51905f5290565b610dea611d3b565b610c7a5f611d95565b60655433906001600160a01b03168114610e615760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610bca565b610c4f81611d95565b610e7e60c954610100900460ff1660021490565b15610e9c5760405163bae6e2a960e01b815260040160405180910390fd5b6002610eaa60c95460ff1690565b60ff1603610ecb5760405163dfc60d8560e01b815260040160405180910390fd5b610ed560026112cb565b5f808080610ee5858701876135f1565b93509350935093505f610ef6611dae565b9050610f0183611ece565b5f610f0d8685856113d7565b9050610f226001600160a01b0385163461154e565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b03811115610f8057610f80612c21565b604051908082528060200260200182016040528015610fa9578160200160208202803683370190505b50604051610fbb9594939291906136ea565b60405180910390a450505050505061069060016112cb565b610fdb611f0a565b610c7a336001611d37565b5f610fef611ac8565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061103290613742565b80601f016020809104026020016040519081016040528092919081815260200182805461105e90613742565b80156110a95780601f10611080576101008083540402835291602001916110a9565b820191905f5260205f20905b81548152906001019060200180831161108c57829003601f168201915b5050505050908060020180546110be90613742565b80601f01602080910402602001604051908101604052809291908181526020018280546110ea90613742565b80156111355780601f1061110c57610100808354040283529160200191611135565b820191905f5260205f20905b81548152906001019060200180831161111857829003601f168201915b5050505050905084565b5f610c61468484611c55565b5f54610100900460ff161580801561116957505f54600160ff909116105b806111825750303b15801561118257505f5460ff166001145b6111e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bca565b5f805460ff191660011790558015611206575f805461ff0019166101001790555b6112108383611f7b565b8015611255575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611262611d3b565b606580546001600160a01b0383166001600160a01b031990911681179091556112936033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61131281600161113f565b6001600160a01b0316336001600160a01b03161461134357604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561137f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a39190613774565b60208101519092506001600160a01b031633146113d357604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b03160361149d575060208301515f5b825181101561149757816001600160a01b03166342842e0e308686858151811061141f5761141f61334c565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b158015611476575f5ffd5b505af1158015611488573d5f5f3e3d5ffd5b505050508060010190506113f3565b50610c61565b6114a684611fb5565b90505f5b825181101561154657816001600160a01b03166340c10f19858584815181106114d5576114d561334c565b60200260200101516040518363ffffffff1660e01b815260040161150e9291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b158015611525575f5ffd5b505af1158015611537573d5f5f3e3d5ffd5b505050508060010190506114aa565b509392505050565b61069082825a611ffc565b5f6001600160a01b0383163b61157057505f6106de565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa9250505080156115da575060408051601f3d908101601f191682019092526115d7918101906137dc565b60015b156106de579392505050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161161c60a0870160808801612b9b565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118fd576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b0316602082015260018301805491928492908401919061168d90613742565b80601f01602080910402602001604051908101604052809291908181526020018280546116b990613742565b80156117045780601f106116db57610100808354040283529160200191611704565b820191905f5260205f20905b8154815290600101906020018083116116e757829003601f168201915b5050505050815260200160028201805461171d90613742565b80601f016020809104026020016040519081016040528092919081815260200182805461174990613742565b80156117945780601f1061176b57610100808354040283529160200191611794565b820191905f5260205f20905b81548152906001019060200180831161177757829003601f168201915b50505050508152505091505f5b6117ae60c0860186613307565b90508110156118f7576117c760a0860160808701612b9b565b6001600160a01b03166342842e0e33306117e460c08a018a613307565b868181106117f4576117f461334c565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611848575f5ffd5b505af115801561185a573d5f5f3e3d5ffd5b5061186f9250505060a0860160808701612b9b565b6001600160a01b03166342966c6861188a60c0880188613307565b8481811061189a5761189a61334c565b905060200201356040518263ffffffff1660e01b81526004016118bf91815260200190565b5f604051808303815f87803b1580156118d6575f5ffd5b505af11580156118e8573d5f5f3e3d5ffd5b505050508060010190506117a1565b50611a3d565b6040518060800160405280466001600160401b0316815260200185608001602081019061192a9190612b9b565b6001600160a01b0316815260200161195061194b60a0880160808901612b9b565b61203f565b815260200161196d61196860a0880160808901612b9b565b6120f1565b905291505f5b61198060c0860186613307565b9050811015611a3b5761199960a0860160808701612b9b565b6001600160a01b03166342842e0e33306119b660c08a018a613307565b868181106119c6576119c661334c565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611a1a575f5ffd5b505af1158015611a2c573d5f5f3e3d5ffd5b50505050806001019050611973565b505b5030637f07c9478233611a566060880160408901612b9b565b611a6360c0890189613307565b604051602001611a779594939291906137f7565b60408051601f1981840301815290829052611a9491602401613888565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f516020613ff95f395f51905f52546001600160a01b031690565b610c4f611d3b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b1e5761125583612137565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b78575060408051601f3d908101601f19168201909252611b759181019061389a565b60015b611bdb5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bca565b5f516020613ff95f395f51905f528114611c495760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bca565b506112558383836121d2565b5f611c6084846121fc565b905081158015611c7757506001600160a01b038116155b15610c6157604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610bca565b611cbb60c954610100900460ff1660021490565b611cd85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106905b6033546001600160a01b03163314610c7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bca565b606580546001600160a01b0319169055610c4f8161229e565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611ddf81600161113f565b6001600160a01b0316336001600160a01b031614611e1057604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e709190613774565b91505f611e9183604001516109f06b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b031614611ec957604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611eec57506001600160a01b03811630145b15610c4f57604051635b50f3f960e01b815260040160405180910390fd5b611f1e60c954610100900460ff1660021490565b15611f3c5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611d2d565b806001600160a01b038116611fa35760405163538ba4f960e01b815260040160405180910390fd5b611fac836122ef565b6112558261234d565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611ff7576106de826123bd565b919050565b815f0361200857505050565b61202283838360405180602001604052805f815250612598565b61125557604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b0386169161208591906138b1565b5f60405180830381855afa9150503d805f81146120bd576040519150601f19603f3d011682016040523d82523d5f602084013e6120c2565b606091505b5091509150816120e05760405180602001604052805f8152506120e9565b6120e9816125d5565b949350505050565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b0386169161208591906138b1565b6001600160a01b0381163b6121a45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bca565b5f516020613ff95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6121db83612742565b5f825111806121e75750805b15611255576121f68383612781565b50505050565b6097545f906001600160a01b03168061222857604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561227a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e991906138cc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166123155760405162461bcd60e51b8152600401610bca906138e7565b61231d6127a6565b61233b6001600160a01b038216156123355781611d95565b33611d95565b5060c9805461ff001916610100179055565b5f54610100900460ff166123735760405162461bcd60e51b8152600401610bca906138e7565b6001600160401b0346111561239b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123d16033546001600160a01b031690565b609754602085015185516040808801516060890151915161240296956001600160a01b031694939290602401613932565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b17905290506124496d627269646765645f65726337323160901b5f61113f565b81604051612456906128dd565b612461929190613993565b604051809103905ff08015801561247a573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124de9082613a01565b50606082015160028201906124f39082613a01565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261258a9290613abb565b60405180910390a450919050565b5f6001600160a01b0385166125c057604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106125f457818060200190518101906106de9190613adf565b815160200361272f575f5b60208160ff161080156126345750828160ff16815181106126225761262261334c565b01602001516001600160f81b03191615155b1561264b578061264381613b10565b9150506125ff565b5f8160ff166001600160401b0381111561266757612667612c21565b6040519080825280601f01601f191660200182016040528015612691576020820181803683370190505b5090505f91505b60208260ff161080156126cd5750838260ff16815181106126bb576126bb61334c565b01602001516001600160f81b03191615155b15610c6157838260ff16815181106126e7576126e761334c565b602001015160f81c60f81b818360ff16815181106127075761270761334c565b60200101906001600160f81b03191690815f1a9053508161272781613b10565b925050612698565b505060408051602081019091525f815290565b61274b81612137565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c618383604051806060016040528060278152602001614019602791396127cc565b5f54610100900460ff16610c7a5760405162461bcd60e51b8152600401610bca906138e7565b60605f5f856001600160a01b0316856040516127e891906138b1565b5f60405180830381855af49150503d805f8114612820576040519150601f19603f3d011682016040523d82523d5f602084013e612825565b606091505b509150915061283686838387612840565b9695505050505050565b606083156128ae5782515f036128a7576001600160a01b0385163b6128a75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bca565b50816120e9565b6120e983838151156128c35781518083602001fd5b8060405162461bcd60e51b8152600401610bca9190613888565b6104ca80613b2f83390190565b5f5f604083850312156128fb575f5ffd5b82356001600160401b03811115612910575f5ffd5b83016101608186031215612922575f5ffd5b946020939093013593505050565b5f60208284031215612940575f5ffd5b81356001600160e01b031981168114610c61575f5ffd5b6001600160a01b0381168114610c4f575f5ffd5b8035611ff781612957565b5f5f83601f840112612986575f5ffd5b5081356001600160401b0381111561299c575f5ffd5b6020830191508360208285010111156129b3575f5ffd5b9250929050565b5f5f5f5f5f608086880312156129ce575f5ffd5b85356129d981612957565b945060208601356129e981612957565b93506040860135925060608601356001600160401b03811115612a0a575f5ffd5b612a1688828901612976565b969995985093965092949392505050565b5f60208284031215612a37575f5ffd5b81356001600160401b03811115612a4c575f5ffd5b82016101008185031215610c61575f5ffd5b5f5b83811015612a78578181015183820152602001612a60565b50505f910152565b5f8151808452612a97816020860160208601612a5e565b601f01601f19169290920160200192915050565b60208152612ac56020820183516001600160401b03169052565b5f6020830151612ae060408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526120e9610180840182612a80565b5f60208284031215612bab575f5ffd5b8135610c6181612957565b6001600160401b0381168114610c4f575f5ffd5b8035611ff781612bb6565b8015158114610c4f575f5ffd5b5f5f5f60608486031215612bf4575f5ffd5b8335612bff81612bb6565b9250602084013591506040840135612c1681612bd5565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612c5757612c57612c21565b60405290565b60405161010081016001600160401b0381118282101715612c5757612c57612c21565b60405161016081016001600160401b0381118282101715612c5757612c57612c21565b604051601f8201601f191681016001600160401b0381118282101715612ccb57612ccb612c21565b604052919050565b5f6001600160401b03821115612ceb57612ceb612c21565b50601f01601f191660200190565b5f82601f830112612d08575f5ffd5b8135602083015f612d20612d1b84612cd3565b612ca3565b9050828152858383011115612d33575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612d5e575f5ffd5b8235612d6981612957565b915060208301356001600160401b03811115612d83575f5ffd5b612d8f85828601612cf9565b9150509250929050565b5f5f60408385031215612daa575f5ffd5b823591506020830135612dbc81612957565b809150509250929050565b5f5f60208385031215612dd8575f5ffd5b82356001600160401b03811115612ded575f5ffd5b612df985828601612976565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612e3790830185612a80565b8281036060840152612e498185612a80565b979650505050505050565b5f5f60408385031215612e65575f5ffd5b823591506020830135612dbc81612bd5565b5f5f60408385031215612e88575f5ffd5b8235612e9381612957565b91506020830135612dbc81612957565b5f5f8335601e19843603018112612eb8575f5ffd5b8301803591506001600160401b03821115612ed1575f5ffd5b6020019150368190038213156129b3575f5ffd5b5f5f85851115612ef3575f5ffd5b83861115612eff575f5ffd5b5050820193919092039150565b5f60208284031215612f1c575f5ffd5b81356001600160401b03811115612f31575f5ffd5b6120e984828501612cf9565b8051611ff781612bb6565b8051611ff781612957565b5f82601f830112612f62575f5ffd5b8151602083015f612f75612d1b84612cd3565b9050828152858383011115612f88575f5ffd5b612f96836020830184612a5e565b95945050505050565b5f6001600160401b03821115612fb757612fb7612c21565b5060051b60200190565b5f82601f830112612fd0575f5ffd5b8151612fde612d1b82612f9f565b8082825260208201915060208360051b860101925085831115612fff575f5ffd5b602085015b8381101561301c578051835260209283019201613004565b5095945050505050565b5f5f5f5f60808587031215613039575f5ffd5b84516001600160401b0381111561304e575f5ffd5b85016080818803121561305f575f5ffd5b613067612c35565b815161307281612bb6565b8152602082015161308281612957565b602082015260408201516001600160401b0381111561309f575f5ffd5b6130ab89828501612f53565b60408301525060608201516001600160401b038111156130c9575f5ffd5b6130d589828501612f53565b60608301525094506130eb905060208601612f48565b92506130f960408601612f48565b915060608501516001600160401b03811115613113575f5ffd5b61311f87828801612fc1565b91505092959194509250565b5f8151808452602084019350602083015f5b8281101561315b57815186526020958601959091019060010161313d565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906131909083018561312b565b8281036060840152612e49818561312b565b63ffffffff81168114610c4f575f5ffd5b8035611ff7816131a2565b5f82601f8301126131cd575f5ffd5b81356131db612d1b82612f9f565b8082825260208201915060208360051b8601019250858311156131fc575f5ffd5b602085015b8381101561301c578035835260209283019201613201565b5f610100823603121561322a575f5ffd5b613232612c5d565b61323b83612bca565b81526132496020840161296b565b602082015261325a6040840161296b565b604082015261326b60608401612bca565b606082015261327c6080840161296b565b608082015261328d60a084016131b3565b60a082015260c08301356001600160401b038111156132aa575f5ffd5b6132b6368286016131be565b60c08301525060e08301356001600160401b038111156132d4575f5ffd5b6132e0368286016131be565b60e08301525092915050565b5f602082840312156132fc575f5ffd5b8135610c6181612bb6565b5f5f8335601e1984360301811261331c575f5ffd5b8301803591506001600160401b03821115613335575f5ffd5b6020019150600581901b36038213156129b3575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613370575f5ffd5b8135610c61816131a2565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106de576106de61337b565b8051611ff7816131a2565b5f5f604083850312156133be575f5ffd5b825160208401519092506001600160401b038111156133db575f5ffd5b830161016081860312156133ed575f5ffd5b6133f5612c80565b6133fe82612f3d565b815261340c60208301612f3d565b602082015261341d604083016133a2565b604082015261342e60608301612f48565b606082015261343f60808301612f3d565b608082015261345060a08301612f48565b60a082015261346160c08301612f3d565b60c082015261347260e08301612f48565b60e08201526134846101008301612f48565b61010082015261012082810151908201526101408201516001600160401b038111156134ae575f5ffd5b6134ba87828501612f53565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156134e4575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061353890830186886134cd565b828103608084015261354b8185876134cd565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f60808587031215613604575f5ffd5b84356001600160401b03811115613619575f5ffd5b85016080818803121561362a575f5ffd5b613632612c35565b813561363d81612bb6565b8152602082013561364d81612957565b602082015260408201356001600160401b0381111561366a575f5ffd5b61367689828501612cf9565b60408301525060608201356001600160401b03811115613694575f5ffd5b6136a089828501612cf9565b60608301525094506136b690506020860161296b565b92506136c46040860161296b565b915060608501356001600160401b038111156136de575f5ffd5b61311f878288016131be565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f906137249083018561312b565b8281036080840152613736818561312b565b98975050505050505050565b600181811c9082168061375657607f821691505b602082108103610b6457634e487b7160e01b5f52602260045260245ffd5b5f6060828403128015613785575f5ffd5b50604051606081016001600160401b03811182821017156137a8576137a8612c21565b6040528251815260208301516137bd81612957565b602082015260408301516137d081612bb6565b60408201529392505050565b5f602082840312156137ec575f5ffd5b8151610c6181612bd5565b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c0840152613838610100840182612a80565b90506060880151607f198483030160e08501526138558282612a80565b6001600160a01b0389811660208701528816604086015291506138759050565b82810360608401526137368185876134cd565b602081525f610c616020830184612a80565b5f602082840312156138aa575f5ffd5b5051919050565b5f82516138c2818460208701612a5e565b9190910192915050565b5f602082840312156138dc575f5ffd5b8151610c6181612957565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f9061397490830185612a80565b82810360a08401526139868185612a80565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c5e90830184612a80565b601f82111561125557805f5260205f20601f840160051c810160208510156139db5750805b601f840160051c820191505b818110156139fa575f81556001016139e7565b5050505050565b81516001600160401b03811115613a1a57613a1a612c21565b613a2e81613a288454613742565b846139b6565b6020601f821160018114613a60575f8315613a495750848201515b5f19600385901b1c1916600184901b1784556139fa565b5f84815260208120601f198516915b82811015613a8f5787850151825560209485019460019092019101613a6f565b5084821015613aac57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613acd6040830185612a80565b8281036020840152612f968185612a80565b5f60208284031215613aef575f5ffd5b81516001600160401b03811115613b04575f5ffd5b6120e984828501612f53565b5f60ff821660ff8103613b2557613b2561337b565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122055e523a48576516437df6fcf2810806cc0aeefb1755d2891dc02a161b66f632464736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000003": { - "contractName": "ERC721Vault", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000003" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000000004": { - "contractName": "ERC1155VaultImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x608060405260043610610195575f3560e01c8063715018a6116100e7578063a86f9d9e11610087578063e30c397811610062578063e30c3978146104a4578063f09a4016146104c1578063f23a6e61146104e0578063f2fde38b1461050c575f5ffd5b8063a86f9d9e14610401578063bc197c8114610420578063e07baba614610467575f5ffd5b80638456cb59116100c25780638456cb591461038d5780638abf6077146103a15780638da5cb5b146103b55780639aa8605c146103d2575f5ffd5b8063715018a61461035257806379ba5097146103665780637f07c9471461037a575f5ffd5b80633ab76e9f116101525780634f1ef2861161012d5780634f1ef286146102cb57806352d1902d146102de5780635c975abb146102f257806367090ccf14610312575f5ffd5b80633ab76e9f146102615780633eb6b8cf146102985780633f4ba83a146102b7575f5ffd5b80630178733a1461019957806301ffc9a7146101ae57806306fdde03146101e25780631f59a8301461020e5780633075db561461022e5780633659cfe614610242575b5f5ffd5b6101ac6101a7366004612861565b61052b565b005b3480156101b9575f5ffd5b506101cd6101c83660046128a7565b6106a1565b60405190151581526020015b60405180910390f35b3480156101ed575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b6040519081526020016101d9565b61022161021c3660046128ce565b6106c0565b6040516101d99190612952565b348015610239575f5ffd5b506101cd610b47565b34801561024d575f5ffd5b506101ac61025c366004612a61565b610b5f565b34801561026c575f5ffd5b50609754610280906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b3480156102a3575f5ffd5b506102806102b2366004612aa8565b610c2f565b3480156102c2575f5ffd5b506101ac610c45565b6101ac6102d9366004612c13565b610c59565b3480156102e9575f5ffd5b50610200610d0e565b3480156102fd575f5ffd5b506101cd60c954610100900460ff1660021490565b34801561031d575f5ffd5b5061028061032c366004612c5f565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561035d575f5ffd5b506101ac610dbf565b348015610371575f5ffd5b506101ac610dd0565b6101ac610388366004612cd1565b610e47565b348015610398575f5ffd5b506101ac610f73565b3480156103ac575f5ffd5b50610280610f86565b3480156103c0575f5ffd5b506033546001600160a01b0316610280565b3480156103dd575f5ffd5b506103f16103ec366004612a61565b610f94565b6040516101d99493929190612d0f565b34801561040c575f5ffd5b5061028061041b366004612d5e565b6110df565b34801561042b575f5ffd5b5061044e61043a366004612dc1565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016101d9565b348015610472575f5ffd5b5060c95461048c906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101d9565b3480156104af575f5ffd5b506065546001600160a01b0316610280565b3480156104cc575f5ffd5b506101ac6104db366004612e81565b6110eb565b3480156104eb575f5ffd5b5061044e6104fa366004612ead565b63f23a6e6160e01b9695505050505050565b348015610517575f5ffd5b506101ac610526366004612a61565b611202565b61053f60c954610100900460ff1660021490565b1561055d5760405163bae6e2a960e01b815260040160405180910390fd5b600261056b60c95460ff1690565b60ff160361058c5760405163dfc60d8560e01b815260040160405180910390fd5b6105966002611273565b61059e611289565b505f6105ae610140840184612f23565b6105bc916004908290612f65565b8101906105c99190612f8c565b90505f5f5f838060200190518101906105e291906130a6565b94509450505092505f610609848860a00160208101906106029190612a61565b858561137f565b905061063361012088013561062460c08a0160a08b01612a61565b6001600160a01b03169061146f565b61064360c0880160a08901612a61565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8660200151848787604051610686949392919061320e565b60405180910390a3505050505061069d6001611273565b5050565b5f6106ab8261147a565b806106ba57506106ba826114c9565b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261072e60c954610100900460ff1660021490565b1561074c5760405163bae6e2a960e01b815260040160405180910390fd5b610755826132c2565b8060e00151518160c00151511461077f5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107aa576040516303f8a7d360e01b815260040160405180910390fd5b60026107b860c95460ff1690565b60ff16036107d95760405163dfc60d8560e01b815260040160405180910390fd5b6107e36002611273565b6107f36080840160608501613395565b6001600160401b031634101561081c57604051630178ce0b60e31b815260040160405180910390fd5b5f5b61082b60e08501856133b0565b905081101561087f5761084160e08501856133b0565b82818110610851576108516133f5565b905060200201355f0361087757604051634299323b60e11b815260040160405180910390fd5b60010161081e565b506108aa636cdb3d1360e11b61089b60a0860160808701612a61565b6001600160a01b0316906114fd565b6108c757604051633ee915f560e11b815260040160405180910390fd5b5f5f6108d28561158a565b6040805161016081019091525f808252929450909250602081016108fc6080890160608a01613395565b6001600160401b0316815260200161091a60c0890160a08a01613409565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061094b90890189613395565b6001600160401b031681526020015f6001600160a01b03168860200160208101906109769190612a61565b6001600160a01b03160361098a573361099a565b61099a6040890160208a01612a61565b6001600160a01b031681526020908101906109d3906109bb908a018a613395565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f610c2f565b6001600160a01b031681526020016109f16080890160608a01613395565b610a04906001600160401b031634613438565b815260200184905290505f610a226562726964676560d01b826110df565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a4e9190612952565b5f6040518083038185885af1158015610a69573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610a919190810190613456565b96509050610aa56060880160408901612a61565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610afb9190612a61565b610b0860c08f018f6133b0565b8f8060e00190610b1891906133b0565b604051610b2b97969594939291906135a6565b60405180910390a450505050610b416001611273565b50919050565b5f6002610b5660c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000004163003610bb05760405162461bcd60e51b8152600401610ba790613602565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000000046001600160a01b0316610be2611a4a565b6001600160a01b031614610c085760405162461bcd60e51b8152600401610ba79061364e565b610c1181611a65565b604080515f80825260208201909252610c2c91839190611a6d565b50565b5f610c3b848484611bd7565b90505b9392505050565b610c4d611c29565b610c57335f611cb9565b565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000000004163003610ca15760405162461bcd60e51b8152600401610ba790613602565b7f00000000000000000000000001670000000000000000000000000000000000046001600160a01b0316610cd3611a4a565b6001600160a01b031614610cf95760405162461bcd60e51b8152600401610ba79061364e565b610d0282611a65565b61069d82826001611a6d565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000000041614610dad5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ba7565b505f5160206141d45f395f51905f5290565b610dc7611cbd565b610c575f611d17565b60655433906001600160a01b03168114610e3e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ba7565b610c2c81611d17565b610e5b60c954610100900460ff1660021490565b15610e795760405163bae6e2a960e01b815260040160405180910390fd5b6002610e8760c95460ff1690565b60ff1603610ea85760405163dfc60d8560e01b815260040160405180910390fd5b610eb26002611273565b5f80808080610ec38688018861369a565b945094509450945094505f610ed6611d30565b9050610ee184611e51565b5f610eee8786868661137f565b9050610f036001600160a01b0386163461146f565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a604051610f5a9594939291906137bb565b60405180910390a45050505050505061069d6001611273565b610f7b611e8d565b610c57336001611cb9565b5f610f8f611a4a565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b0316929190610fd290613813565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffe90613813565b80156110495780601f1061102057610100808354040283529160200191611049565b820191905f5260205f20905b81548152906001019060200180831161102c57829003601f168201915b50505050509080600201805461105e90613813565b80601f016020809104026020016040519081016040528092919081815260200182805461108a90613813565b80156110d55780601f106110ac576101008083540402835291602001916110d5565b820191905f5260205f20905b8154815290600101906020018083116110b857829003601f168201915b5050505050905084565b5f610c3e468484611bd7565b5f54610100900460ff161580801561110957505f54600160ff909116105b806111225750303b15801561112257505f5460ff166001145b6111855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ba7565b5f805460ff1916600117905580156111a6575f805461ff0019166101001790555b6111b08383611efe565b6111b8611f38565b80156111fd575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61120a611cbd565b606580546001600160a01b0383166001600160a01b0319909116811790915561123b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b6112ba8160016110df565b6001600160a01b0316336001600160a01b0316146112eb57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611327573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134b9190613845565b60208101519092506001600160a01b0316331461137b57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46855f01516001600160401b0316036113fd57506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d6906113cb9030908890889088906004016138ad565b5f604051808303815f87803b1580156113e2575f5ffd5b505af11580156113f4573d5f5f3e3d5ffd5b50505050611467565b61140685611f5e565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a159061143990879087908790600401613906565b5f604051808303815f87803b158015611450575f5ffd5b505af1158015611462573d5f5f3e3d5ffd5b505050505b949350505050565b61069d82825a611fa5565b5f6001600160e01b0319821662bc399d60e11b14806114a957506001600160e01b03198216637f07c94760e01b145b806106ba57506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b14806106ba57506301ffc9a760e01b6001600160e01b03198316146106ba565b5f6001600160a01b0383163b61151457505f6106ba565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa92505050801561157e575060408051601f3d908101601f1916820190925261157b9181019061393b565b60015b156106ba579392505050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d816115c060a0870160808801612a61565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118b3576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b0316602082015260018301805491928492908401919061163190613813565b80601f016020809104026020016040519081016040528092919081815260200182805461165d90613813565b80156116a85780601f1061167f576101008083540402835291602001916116a8565b820191905f5260205f20905b81548152906001019060200180831161168b57829003601f168201915b505050505081526020016002820180546116c190613813565b80601f01602080910402602001604051908101604052809291908181526020018280546116ed90613813565b80156117385780601f1061170f57610100808354040283529160200191611738565b820191905f5260205f20905b81548152906001019060200180831161171b57829003601f168201915b50505050508152505091508360800160208101906117569190612a61565b6001600160a01b0316632eb2c2d6333061177360c08901896133b0565b61178060e08b018b6133b0565b6040518763ffffffff1660e01b81526004016117a196959493929190613956565b5f604051808303815f87803b1580156117b8575f5ffd5b505af11580156117ca573d5f5f3e3d5ffd5b505050505f5b6117dd60c08601866133b0565b90508110156118ad576117f660a0860160808701612a61565b6001600160a01b031663b390c0ab61181160c08801886133b0565b84818110611821576118216133f5565b90506020020135878060e0019061183891906133b0565b85818110611848576118486133f5565b905060200201356040518363ffffffff1660e01b8152600401611875929190918252602082015260400190565b5f604051808303815f87803b15801561188c575f5ffd5b505af115801561189e573d5f5f3e3d5ffd5b505050508060010190506117d0565b506119b0565b6040518060800160405280466001600160401b031681526020018560800160208101906118e09190612a61565b6001600160a01b0316815260200161190661190160a0880160808901612a61565b611fe8565b815260200161192361191e60a0880160808901612a61565b612092565b9052915061193760a0850160808601612a61565b6001600160a01b0316632eb2c2d6333061195460c08901896133b0565b61196160e08b018b6133b0565b6040518763ffffffff1660e01b815260040161198296959493929190613956565b5f604051808303815f87803b158015611999575f5ffd5b505af11580156119ab573d5f5f3e3d5ffd5b505050505b5030637f07c94782336119c96060880160408901612a61565b6119d660c08901896133b0565b6119e360e08b018b6133b0565b6040516020016119f997969594939291906139b3565b60408051601f1981840301815290829052611a1691602401613a63565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f5160206141d45f395f51905f52546001600160a01b031690565b610c2c611cbd565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611aa0576111fd836120d8565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611afa575060408051601f3d908101601f19168201909252611af791810190613a75565b60015b611b5d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ba7565b5f5160206141d45f395f51905f528114611bcb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ba7565b506111fd838383612173565b5f611be2848461219d565b905081158015611bf957506001600160a01b038116155b15610c3e57604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610ba7565b611c3d60c954610100900460ff1660021490565b611c5a5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b61069d5b6033546001600160a01b03163314610c575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ba7565b606580546001600160a01b0319169055610c2c8161223f565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611d618160016110df565b6001600160a01b0316336001600160a01b031614611d9257604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611dce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df29190613845565b91505f611e1483604001516109cd6c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611e4c57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611e6f57506001600160a01b03811630145b15610c2c57604051635b50f3f960e01b815260040160405180910390fd5b611ea160c954610100900460ff1660021490565b15611ebf5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611caf565b806001600160a01b038116611f265760405163538ba4f960e01b815260040160405180910390fd5b611f2f83612290565b6111fd826122ee565b5f54610100900460ff16610c575760405162461bcd60e51b8152600401610ba790613a8c565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611fa0576106ba8261235e565b919050565b815f03611fb157505050565b611fcb83838360405180602001604052805f81525061253a565b6111fd57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b0386169161202e9190613ad7565b5f60405180830381855afa9150503d805f8114612066576040519150601f19603f3d011682016040523d82523d5f602084013e61206b565b606091505b5091509150816120895760405180602001604052805f815250611467565b61146781612577565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b0386169161202e9190613ad7565b6001600160a01b0381163b6121455760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ba7565b5f5160206141d45f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61217c836126e4565b5f825111806121885750805b156111fd576121978383612723565b50505050565b6097545f906001600160a01b0316806121c957604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561221b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114679190613af2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166122b65760405162461bcd60e51b8152600401610ba790613a8c565b6122be611f38565b6122dc6001600160a01b038216156122d65781611d17565b33611d17565b5060c9805461ff001916610100179055565b5f54610100900460ff166123145760405162461bcd60e51b8152600401610ba790613a8c565b6001600160401b0346111561233c5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123726033546001600160a01b031690565b60975460208501518551604080880151606089015191516123a396956001600160a01b031694939290602401613b0d565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b17905290506123eb6e627269646765645f6572633131353560881b5f6110df565b816040516123f890612854565b612403929190613b6e565b604051809103905ff08015801561241c573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124809082613bdc565b50606082015160028201906124959082613bdc565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261252c9290613c96565b60405180910390a450919050565b5f6001600160a01b03851661256257604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b6060604082511061259657818060200190518101906106ba9190613cba565b81516020036126d1575f5b60208160ff161080156125d65750828160ff16815181106125c4576125c46133f5565b01602001516001600160f81b03191615155b156125ed57806125e581613ceb565b9150506125a1565b5f8160ff166001600160401b0381111561260957612609612ae7565b6040519080825280601f01601f191660200182016040528015612633576020820181803683370190505b5090505f91505b60208260ff1610801561266f5750838260ff168151811061265d5761265d6133f5565b01602001516001600160f81b03191615155b15610c3e57838260ff1681518110612689576126896133f5565b602001015160f81c60f81b818360ff16815181106126a9576126a96133f5565b60200101906001600160f81b03191690815f1a905350816126c981613ceb565b92505061263a565b505060408051602081019091525f815290565b6126ed816120d8565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c3e83836040518060600160405280602781526020016141f46027913960605f5f856001600160a01b03168560405161275f9190613ad7565b5f60405180830381855af49150503d805f8114612797576040519150601f19603f3d011682016040523d82523d5f602084013e61279c565b606091505b50915091506127ad868383876127b7565b9695505050505050565b606083156128255782515f0361281e576001600160a01b0385163b61281e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ba7565b5081611467565b611467838381511561283a5781518083602001fd5b8060405162461bcd60e51b8152600401610ba79190613a63565b6104ca80613d0a83390190565b5f5f60408385031215612872575f5ffd5b82356001600160401b03811115612887575f5ffd5b83016101608186031215612899575f5ffd5b946020939093013593505050565b5f602082840312156128b7575f5ffd5b81356001600160e01b031981168114610c3e575f5ffd5b5f602082840312156128de575f5ffd5b81356001600160401b038111156128f3575f5ffd5b82016101008185031215610c3e575f5ffd5b5f5b8381101561291f578181015183820152602001612907565b50505f910152565b5f815180845261293e816020860160208601612905565b601f01601f19169290920160200192915050565b6020815261296c6020820183516001600160401b03169052565b5f602083015161298760408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152611467610180840182612927565b6001600160a01b0381168114610c2c575f5ffd5b8035611fa081612a42565b5f60208284031215612a71575f5ffd5b8135610c3e81612a42565b6001600160401b0381168114610c2c575f5ffd5b8035611fa081612a7c565b8015158114610c2c575f5ffd5b5f5f5f60608486031215612aba575f5ffd5b8335612ac581612a7c565b9250602084013591506040840135612adc81612a9b565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612b1d57612b1d612ae7565b60405290565b60405161010081016001600160401b0381118282101715612b1d57612b1d612ae7565b60405161016081016001600160401b0381118282101715612b1d57612b1d612ae7565b604051601f8201601f191681016001600160401b0381118282101715612b9157612b91612ae7565b604052919050565b5f6001600160401b03821115612bb157612bb1612ae7565b50601f01601f191660200190565b5f82601f830112612bce575f5ffd5b8135602083015f612be6612be184612b99565b612b69565b9050828152858383011115612bf9575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612c24575f5ffd5b8235612c2f81612a42565b915060208301356001600160401b03811115612c49575f5ffd5b612c5585828601612bbf565b9150509250929050565b5f5f60408385031215612c70575f5ffd5b823591506020830135612c8281612a42565b809150509250929050565b5f5f83601f840112612c9d575f5ffd5b5081356001600160401b03811115612cb3575f5ffd5b602083019150836020828501011115612cca575f5ffd5b9250929050565b5f5f60208385031215612ce2575f5ffd5b82356001600160401b03811115612cf7575f5ffd5b612d0385828601612c8d565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612d4190830185612927565b8281036060840152612d538185612927565b979650505050505050565b5f5f60408385031215612d6f575f5ffd5b823591506020830135612c8281612a9b565b5f5f83601f840112612d91575f5ffd5b5081356001600160401b03811115612da7575f5ffd5b6020830191508360208260051b8501011115612cca575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612dd8575f5ffd5b8835612de381612a42565b97506020890135612df381612a42565b965060408901356001600160401b03811115612e0d575f5ffd5b612e198b828c01612d81565b90975095505060608901356001600160401b03811115612e37575f5ffd5b612e438b828c01612d81565b90955093505060808901356001600160401b03811115612e61575f5ffd5b612e6d8b828c01612c8d565b999c989b5096995094979396929594505050565b5f5f60408385031215612e92575f5ffd5b8235612e9d81612a42565b91506020830135612c8281612a42565b5f5f5f5f5f5f60a08789031215612ec2575f5ffd5b8635612ecd81612a42565b95506020870135612edd81612a42565b9450604087013593506060870135925060808701356001600160401b03811115612f05575f5ffd5b612f1189828a01612c8d565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612f38575f5ffd5b8301803591506001600160401b03821115612f51575f5ffd5b602001915036819003821315612cca575f5ffd5b5f5f85851115612f73575f5ffd5b83861115612f7f575f5ffd5b5050820193919092039150565b5f60208284031215612f9c575f5ffd5b81356001600160401b03811115612fb1575f5ffd5b61146784828501612bbf565b8051611fa081612a7c565b8051611fa081612a42565b5f82601f830112612fe2575f5ffd5b8151602083015f612ff5612be184612b99565b9050828152858383011115613008575f5ffd5b613016836020830184612905565b95945050505050565b5f6001600160401b0382111561303757613037612ae7565b5060051b60200190565b5f82601f830112613050575f5ffd5b815161305e612be18261301f565b8082825260208201915060208360051b86010192508583111561307f575f5ffd5b602085015b8381101561309c578051835260209283019201613084565b5095945050505050565b5f5f5f5f5f60a086880312156130ba575f5ffd5b85516001600160401b038111156130cf575f5ffd5b8601608081890312156130e0575f5ffd5b6130e8612afb565b81516130f381612a7c565b8152602082015161310381612a42565b602082015260408201516001600160401b03811115613120575f5ffd5b61312c8a828501612fd3565b60408301525060608201516001600160401b0381111561314a575f5ffd5b6131568a828501612fd3565b606083015250955061316c905060208701612fc8565b935061317a60408701612fc8565b925060608601516001600160401b03811115613194575f5ffd5b6131a088828901613041565b92505060808601516001600160401b038111156131bb575f5ffd5b6131c788828901613041565b9150509295509295909350565b5f8151808452602084019350602083015f5b828110156132045781518652602095860195909101906001016131e6565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f90613239908301856131d4565b8281036060840152612d5381856131d4565b63ffffffff81168114610c2c575f5ffd5b8035611fa08161324b565b5f82601f830112613276575f5ffd5b8135613284612be18261301f565b8082825260208201915060208360051b8601019250858311156132a5575f5ffd5b602085015b8381101561309c5780358352602092830192016132aa565b5f61010082360312156132d3575f5ffd5b6132db612b23565b6132e483612a90565b81526132f260208401612a56565b602082015261330360408401612a56565b604082015261331460608401612a90565b606082015261332560808401612a56565b608082015261333660a0840161325c565b60a082015260c08301356001600160401b03811115613353575f5ffd5b61335f36828601613267565b60c08301525060e08301356001600160401b0381111561337d575f5ffd5b61338936828601613267565b60e08301525092915050565b5f602082840312156133a5575f5ffd5b8135610c3e81612a7c565b5f5f8335601e198436030181126133c5575f5ffd5b8301803591506001600160401b038211156133de575f5ffd5b6020019150600581901b3603821315612cca575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613419575f5ffd5b8135610c3e8161324b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106ba576106ba613424565b8051611fa08161324b565b5f5f60408385031215613467575f5ffd5b825160208401519092506001600160401b03811115613484575f5ffd5b83016101608186031215613496575f5ffd5b61349e612b46565b6134a782612fbd565b81526134b560208301612fbd565b60208201526134c66040830161344b565b60408201526134d760608301612fc8565b60608201526134e860808301612fbd565b60808201526134f960a08301612fc8565b60a082015261350a60c08301612fbd565b60c082015261351b60e08301612fc8565b60e082015261352d6101008301612fc8565b61010082015261012082810151908201526101408201516001600160401b03811115613557575f5ffd5b61356387828501612fd3565b6101408301525080925050509250929050565b8183525f6001600160fb1b0383111561358d575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f906135e19083018688613576565b82810360808401526135f4818587613576565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f5f60a086880312156136ae575f5ffd5b85356001600160401b038111156136c3575f5ffd5b8601608081890312156136d4575f5ffd5b6136dc612afb565b81356136e781612a7c565b815260208201356136f781612a42565b602082015260408201356001600160401b03811115613714575f5ffd5b6137208a828501612bbf565b60408301525060608201356001600160401b0381111561373e575f5ffd5b61374a8a828501612bbf565b6060830152509550613760905060208701612a56565b935061376e60408701612a56565b925060608601356001600160401b03811115613788575f5ffd5b61379488828901613267565b92505060808601356001600160401b038111156137af575f5ffd5b6131c788828901613267565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f906137f5908301856131d4565b828103608084015261380781856131d4565b98975050505050505050565b600181811c9082168061382757607f821691505b602082108103610b4157634e487b7160e01b5f52602260045260245ffd5b5f6060828403128015613856575f5ffd5b50604051606081016001600160401b038111828210171561387957613879612ae7565b60405282518152602083015161388e81612a42565b602082015260408301516138a181612a7c565b60408201529392505050565b6001600160a01b0385811682528416602082015260a0604082018190525f906138d8908301856131d4565b82810360608401526138ea81856131d4565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f90613929908301856131d4565b82810360408401526127ad81856131d4565b5f6020828403121561394b575f5ffd5b8151610c3e81612a9b565b6001600160a01b0387811682528616602082015260a0604082018190525f906139829083018688613576565b8281036060840152613995818587613576565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f906139f6610120840182612927565b905060608a0151609f1984830301610100850152613a148282612927565b915050613a2c602084018a6001600160a01b03169052565b6001600160a01b03881660408401528281036060840152613a4e818789613576565b905082810360808401526135f4818587613576565b602081525f610c3e6020830184612927565b5f60208284031215613a85575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f8251613ae8818460208701612905565b9190910192915050565b5f60208284031215613b02575f5ffd5b8151610c3e81612a42565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f90613b4f90830185612927565b82810360a0840152613b618185612927565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c3b90830184612927565b601f8211156111fd57805f5260205f20601f840160051c81016020851015613bb65750805b601f840160051c820191505b81811015613bd5575f8155600101613bc2565b5050505050565b81516001600160401b03811115613bf557613bf5612ae7565b613c0981613c038454613813565b84613b91565b6020601f821160018114613c3b575f8315613c245750848201515b5f19600385901b1c1916600184901b178455613bd5565b5f84815260208120601f198516915b82811015613c6a5787850151825560209485019460019092019101613c4a565b5084821015613c8757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613ca86040830185612927565b82810360208401526130168185612927565b5f60208284031215613cca575f5ffd5b81516001600160401b03811115613cdf575f5ffd5b61146784828501612fd3565b5f60ff821660ff8103613d0057613d00613424565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e67f8ea00e362cad72cd2e8e61f89b237848f76dd2a93bc34c0064a232f8158c64736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000004": { - "contractName": "ERC1155Vault", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000004" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010096": { - "contractName": "BridgedERC20", - "storage": {}, - "code": "0x608060405260043610610233575f3560e01c806370a0823111610129578063a77f1516116100a8578063dd62ed3e1161006d578063dd62ed3e14610684578063e07baba6146106a3578063e30c3978146106e0578063f12506c1146106fd578063f2fde38b14610711575f5ffd5b8063a77f1516146105e7578063a86f9d9e14610608578063a9059cbb14610627578063b8f2e0c514610646578063bb86ef9314610665575f5ffd5b80638456cb59116100ee5780638456cb591461056f5780638abf6077146105835780638da5cb5b1461059757806395d89b41146105b4578063a457c2d7146105c8575f5ffd5b806370a08231146104d3578063715018a61461050757806379ba50971461051b5780637cf8ed0d1461052f5780637e4746341461054f575f5ffd5b806339509351116101b557806342966c681161017a57806342966c681461045757806349d12605146104765780634f1ef2861461048c57806352d1902d1461049f5780635c975abb146104b3575f5ffd5b806339509351146103af5780633ab76e9f146103ce5780633eb6b8cf146104055780633f4ba83a1461042457806340c10f1914610438575f5ffd5b806323b872dd116101fb57806323b872dd146102ea57806326afaadd146103095780633075db561461034d578063313ce567146103615780633659cfe61461038e575f5ffd5b806301ffc9a71461023757806306fdde031461026b578063095ea7b31461028c5780630ae74548146102ab57806318160ddd146102cc575b5f5ffd5b348015610242575f5ffd5b5061025661025136600461218c565b610730565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061027f6107d2565b60405161026291906121d5565b348015610297575f5ffd5b506102566102a636600461221b565b610862565b3480156102b6575f5ffd5b5061012f5461025690600160a01b900460ff1681565b3480156102d7575f5ffd5b5060fd545b604051908152602001610262565b3480156102f5575f5ffd5b50610256610304366004612245565b610879565b348015610314575f5ffd5b5061032e61012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610262565b348015610358575f5ffd5b5061025661089e565b34801561036c575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610262565b348015610399575f5ffd5b506103ad6103a8366004612283565b6108b6565b005b3480156103ba575f5ffd5b506102566103c936600461221b565b610986565b3480156103d9575f5ffd5b506097546103ed906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b348015610410575f5ffd5b506103ed61041f3660046122b2565b6109a7565b34801561042f575f5ffd5b506103ad6109bb565b348015610443575f5ffd5b506103ad61045236600461221b565b6109cf565b348015610462575f5ffd5b506103ad6104713660046122f8565b610ae9565b348015610481575f5ffd5b506102dc61012e5481565b6103ad61049a366004612323565b610c26565b3480156104aa575f5ffd5b506102dc610cdb565b3480156104be575f5ffd5b5061025660c954610100900460ff1660021490565b3480156104de575f5ffd5b506102dc6104ed366004612283565b6001600160a01b03165f90815260fb602052604090205490565b348015610512575f5ffd5b506103ad610d8c565b348015610526575f5ffd5b506103ad610d9d565b34801561053a575f5ffd5b5061012d546103ed906001600160a01b031681565b34801561055a575f5ffd5b5061012f546103ed906001600160a01b031681565b34801561057a575f5ffd5b506103ad610e14565b34801561058e575f5ffd5b506103ed610e27565b3480156105a2575f5ffd5b506033546001600160a01b03166103ed565b3480156105bf575f5ffd5b5061027f610e35565b3480156105d3575f5ffd5b506102566105e236600461221b565b610e44565b3480156105f2575f5ffd5b5061012d5461037c90600160a01b900460ff1681565b348015610613575f5ffd5b506103ed6106223660046123e6565b610ec9565b348015610632575f5ffd5b5061025661064136600461221b565b610ed5565b348015610651575f5ffd5b506103ad610660366004612410565b610ee2565b348015610670575f5ffd5b506103ad61067f36600461247e565b61105f565b34801561068f575f5ffd5b506102dc61069e366004612544565b61121f565b3480156106ae575f5ffd5b5060c9546106c8906201000090046001600160401b031681565b6040516001600160401b039091168152602001610262565b3480156106eb575f5ffd5b506065546001600160a01b03166103ed565b348015610708575f5ffd5b50610256611249565b34801561071c575f5ffd5b506103ad61072b366004612283565b611274565b5f6001600160e01b0319821663093e326b60e21b148061076057506001600160e01b0319821663bb86ef9360e01b145b8061077b57506001600160e01b0319821663b8f2e0c560e01b145b8061079657506001600160e01b031982166336372b0760e01b145b806107b157506001600160e01b0319821663a219a02560e01b145b806107cc57506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe80546107e19061257b565b80601f016020809104026020016040519081016040528092919081815260200182805461080d9061257b565b80156108585780601f1061082f57610100808354040283529160200191610858565b820191905f5260205f20905b81548152906001019060200180831161083b57829003601f168201915b5050505050905090565b5f3361086f8185856112e5565b5060019392505050565b5f33610886858285611408565b610891858585611480565b60019150505b9392505050565b5f60026108ad60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100961630036109075760405162461bcd60e51b81526004016108fe906125b3565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000100966001600160a01b0316610939611634565b6001600160a01b03161461095f5760405162461bcd60e51b81526004016108fe906125ff565b6109688161164f565b604080515f8082526020820190925261098391839190611657565b50565b5f3361086f818585610998838361121f565b6109a2919061264b565b6112e5565b5f6109b38484846117c1565b949350505050565b6109c3611813565b6109cd335f6118a3565b565b6109e360c954610100900460ff1660021490565b15610a015760405163bae6e2a960e01b815260040160405180910390fd5b6002610a0f60c95460ff1690565b60ff1603610a305760405163dfc60d8560e01b815260040160405180910390fd5b610a3a60026118ab565b610a42611249565b15610a605760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610ac757826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610aba91815260200190565b60405180910390a3610ad0565b610ad0336118c1565b610ada838361193d565b50610ae560016118ab565b5050565b610afd60c954610100900460ff1660021490565b15610b1b5760405163bae6e2a960e01b815260040160405180910390fd5b6002610b2960c95460ff1690565b60ff1603610b4a5760405163dfc60d8560e01b815260040160405180910390fd5b610b5460026118ab565b610b5c611249565b15610c095761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610bed575f5ffd5b505af1158015610bff573d5f5f3e3d5ffd5b5050505050610c12565b610c12336118c1565b610c1c3382611a07565b61098360016118ab565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000010096163003610c6e5760405162461bcd60e51b81526004016108fe906125b3565b7f00000000000000000000000001670000000000000000000000000000000100966001600160a01b0316610ca0611634565b6001600160a01b031614610cc65760405162461bcd60e51b81526004016108fe906125ff565b610ccf8261164f565b610ae582826001611657565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000100961614610d7a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108fe565b505f5160206128085f395f51905f5290565b610d94611b44565b6109cd5f611b9e565b60655433906001600160a01b03168114610e0b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016108fe565b61098381611b9e565b610e1c611bb7565b6109cd3360016118a3565b5f610e30611634565b905090565b606060ff80546107e19061257b565b5f3381610e51828661121f565b905083811015610eb15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108fe565b610ebe82868684036112e5565b506001949350505050565b5f6108974684846117c1565b5f3361086f818585611480565b610ef660c954610100900460ff1660021490565b15610f145760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b610f2e816001610ec9565b6001600160a01b0316336001600160a01b031614610f5f57604051630d85cccf60e11b815260040160405180910390fd5b6002610f6d60c95460ff1690565b60ff1603610f8e5760405163dfc60d8560e01b815260040160405180910390fd5b610f9860026118ab565b61012f546001600160a01b038481169116148015610fc9575061012f60149054906101000a900460ff161515821515145b15610fe75760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a161105a60016118ab565b505050565b5f54610100900460ff161580801561107d57505f54600160ff909116105b806110965750303b15801561109657505f5460ff166001145b6110f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108fe565b5f805460ff19166001179055801561111a575f805461ff0019166101001790555b6111248888611c28565b61112e8a8a611c64565b61119f83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611c9e92505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790558015611213575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b031615801590610e3057505061012f54600160a01b900460ff161590565b61127c611b44565b606580546001600160a01b0383166001600160a01b031990911681179091556112ad6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b0383166113475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108fe565b6001600160a01b0382166113a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108fe565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611413848461121f565b90505f19811461147a578181101561146d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108fe565b61147a84848484036112e5565b50505050565b6001600160a01b0383166114e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108fe565b6001600160a01b0382166115465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108fe565b611551838383611cce565b6001600160a01b0383165f90815260fb6020526040902054818110156115c85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108fe565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116279086815260200190565b60405180910390a361147a565b5f5160206128085f395f51905f52546001600160a01b031690565b610983611b44565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561168a5761105a83611d09565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116e4575060408051601f3d908101601f191682019092526116e19181019061266a565b60015b6117475760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108fe565b5f5160206128085f395f51905f5281146117b55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108fe565b5061105a838383611da4565b5f6117cc8484611dc8565b9050811580156117e357506001600160a01b038116155b1561089757604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016108fe565b61182760c954610100900460ff1660021490565b6118445760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610ae5611b44565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b6118e26033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161415801561191f5750611909816001610ec9565b6001600160a01b0316336001600160a01b031614155b15610ae557604051630d85cccf60e11b815260040160405180910390fd5b6001600160a01b0382166119935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108fe565b61199e5f8383611cce565b8060fd5f8282546119af919061264b565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611a675760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108fe565b611a72825f83611cce565b6001600160a01b0382165f90815260fb602052604090205481811015611ae55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108fe565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6033546001600160a01b031633146109cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fe565b606580546001600160a01b031916905561098381611e6a565b611bcb60c954610100900460ff1660021490565b15611be95760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611899565b6001600160a01b0382161580611c3c575080155b80611c4657504681145b15610ae55760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611c8c5760405163538ba4f960e01b815260040160405180910390fd5b611c9583611ebb565b61105a82611f19565b5f54610100900460ff16611cc45760405162461bcd60e51b81526004016108fe90612681565b610ae58282611f89565b611ce260c954610100900460ff1660021490565b15611d005760405163bae6e2a960e01b815260040160405180910390fd5b61105a82611fc8565b6001600160a01b0381163b611d765760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108fe565b5f5160206128085f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611dad83611ff1565b5f82511180611db95750805b1561105a5761147a8383612030565b6097545f906001600160a01b031680611df457604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e46573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b391906126cc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611ee15760405162461bcd60e51b81526004016108fe90612681565b611ee9612055565b611f076001600160a01b03821615611f015781611b9e565b33611b9e565b5060c9805461ff001916610100179055565b5f54610100900460ff16611f3f5760405162461bcd60e51b81526004016108fe90612681565b6001600160401b03461115611f675760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff16611faf5760405162461bcd60e51b81526004016108fe90612681565b60fe611fbb8382612732565b5060ff61105a8282612732565b306001600160a01b0382160361098357604051630c292c9d60e21b815260040160405180910390fd5b611ffa81611d09565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061089783836040518060600160405280602781526020016128286027913961207b565b5f54610100900460ff166109cd5760405162461bcd60e51b81526004016108fe90612681565b60605f5f856001600160a01b03168560405161209791906127ec565b5f60405180830381855af49150503d805f81146120cf576040519150601f19603f3d011682016040523d82523d5f602084013e6120d4565b606091505b50915091506120e5868383876120ef565b9695505050505050565b6060831561215d5782515f03612156576001600160a01b0385163b6121565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108fe565b50816109b3565b6109b383838151156121725781518083602001fd5b8060405162461bcd60e51b81526004016108fe91906121d5565b5f6020828403121561219c575f5ffd5b81356001600160e01b031981168114610897575f5ffd5b5f5b838110156121cd5781810151838201526020016121b5565b50505f910152565b602081525f82518060208401526121f38160408501602087016121b3565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610983575f5ffd5b5f5f6040838503121561222c575f5ffd5b823561223781612207565b946020939093013593505050565b5f5f5f60608486031215612257575f5ffd5b833561226281612207565b9250602084013561227281612207565b929592945050506040919091013590565b5f60208284031215612293575f5ffd5b813561089781612207565b803580151581146122ad575f5ffd5b919050565b5f5f5f606084860312156122c4575f5ffd5b83356001600160401b03811681146122da575f5ffd5b9250602084013591506122ef6040850161229e565b90509250925092565b5f60208284031215612308575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612334575f5ffd5b823561233f81612207565b915060208301356001600160401b03811115612359575f5ffd5b8301601f81018513612369575f5ffd5b80356001600160401b038111156123825761238261230f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156123b0576123b061230f565b6040528181528282016020018710156123c7575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156123f7575f5ffd5b823591506124076020840161229e565b90509250929050565b5f5f60408385031215612421575f5ffd5b823561242c81612207565b91506124076020840161229e565b5f5f83601f84011261244a575f5ffd5b5081356001600160401b03811115612460575f5ffd5b602083019150836020828501011115612477575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60e08a8c031215612496575f5ffd5b89356124a181612207565b985060208a01356124b181612207565b975060408a01356124c181612207565b965060608a0135955060808a013560ff811681146124dd575f5ffd5b945060a08a01356001600160401b038111156124f7575f5ffd5b6125038c828d0161243a565b90955093505060c08a01356001600160401b03811115612521575f5ffd5b61252d8c828d0161243a565b915080935050809150509295985092959850929598565b5f5f60408385031215612555575f5ffd5b823561256081612207565b9150602083013561257081612207565b809150509250929050565b600181811c9082168061258f57607f821691505b6020821081036125ad57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b808201808211156107cc57634e487b7160e01b5f52601160045260245ffd5b5f6020828403121561267a575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156126dc575f5ffd5b815161089781612207565b601f82111561105a57805f5260205f20601f840160051c8101602085101561270c5750805b601f840160051c820191505b8181101561272b575f8155600101612718565b5050505050565b81516001600160401b0381111561274b5761274b61230f565b61275f81612759845461257b565b846126e7565b6020601f821160018114612791575f831561277a5750848201515b5f19600385901b1c1916600184901b17845561272b565b5f84815260208120601f198516915b828110156127c057878501518255602094850194600190920191016127a0565b50848210156127dd57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516127fd8184602087016121b3565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206de11e098828560ed8b32ec4c49b5259fec7bac640db1effdfd9fcc5e0efa77b64736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010097": { - "contractName": "BridgedERC721", - "storage": {}, - "code": "0x608060405260043610610207575f3560e01c80636352211e11610113578063a22cb4651161009d578063e07baba61161006d578063e07baba6146105c3578063e30c397814610600578063e985e9c51461061d578063ef8c4ae614610665578063f2fde38b14610684575f5ffd5b8063a22cb46514610547578063a86f9d9e14610566578063b88d4fde14610585578063c87b56dd146105a4575f5ffd5b80637cf8ed0d116100e35780637cf8ed0d146104ce5780638456cb59146104ee5780638abf6077146105025780638da5cb5b1461051657806395d89b4114610533575f5ffd5b80636352211e1461046857806370a0823114610487578063715018a6146104a657806379ba5097146104ba575f5ffd5b80633eb6b8cf1161019457806342966c681161016457806342966c68146103de57806349d12605146103fd5780634f1ef2861461042157806352d1902d146104345780635c975abb14610448575f5ffd5b80633eb6b8cf1461036d5780633f4ba83a1461038c57806340c10f19146103a057806342842e0e146103bf575f5ffd5b806323b872dd116101da57806323b872dd146102b857806326afaadd146102d75780633075db561461031b5780633659cfe61461032f5780633ab76e9f1461034e575f5ffd5b806301ffc9a71461020b57806306fdde031461023f578063081812fc14610260578063095ea7b314610297575b5f5ffd5b348015610216575f5ffd5b5061022a61022536600461253b565b6106a3565b60405190151581526020015b60405180910390f35b34801561024a575f5ffd5b506102536106e8565b60405161023691906125a3565b34801561026b575f5ffd5b5061027f61027a3660046125b5565b610779565b6040516001600160a01b039091168152602001610236565b3480156102a2575f5ffd5b506102b66102b13660046125e0565b61079f565b005b3480156102c3575f5ffd5b506102b66102d236600461260a565b6108b8565b3480156102e2575f5ffd5b506102fc61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610236565b348015610326575f5ffd5b5061022a6108e9565b34801561033a575f5ffd5b506102b6610349366004612648565b610901565b348015610359575f5ffd5b5060975461027f906001600160a01b031681565b348015610378575f5ffd5b5061027f610387366004612677565b6109c8565b348015610397575f5ffd5b506102b66109de565b3480156103ab575f5ffd5b506102b66103ba3660046125e0565b6109f2565b3480156103ca575f5ffd5b506102b66103d936600461260a565b610abd565b3480156103e9575f5ffd5b506102b66103f83660046125b5565b610ad7565b348015610408575f5ffd5b506104136101605481565b604051908152602001610236565b6102b661042f36600461275a565b610bd6565b34801561043f575f5ffd5b50610413610c8b565b348015610453575f5ffd5b5061022a60c954610100900460ff1660021490565b348015610473575f5ffd5b5061027f6104823660046125b5565b610d3c565b348015610492575f5ffd5b506104136104a1366004612648565b610d9c565b3480156104b1575f5ffd5b506102b6610e21565b3480156104c5575f5ffd5b506102b6610e32565b3480156104d9575f5ffd5b5061015f5461027f906001600160a01b031681565b3480156104f9575f5ffd5b506102b6610ea9565b34801561050d575f5ffd5b5061027f610ebc565b348015610521575f5ffd5b506033546001600160a01b031661027f565b34801561053e575f5ffd5b50610253610eca565b348015610552575f5ffd5b506102b66105613660046127a6565b610eda565b348015610571575f5ffd5b5061027f6105803660046127d9565b610ee5565b348015610590575f5ffd5b506102b661059f3660046127fa565b610ef1565b3480156105af575f5ffd5b506102536105be3660046125b5565b610f29565b3480156105ce575f5ffd5b5060c9546105e8906201000090046001600160401b031681565b6040516001600160401b039091168152602001610236565b34801561060b575f5ffd5b506065546001600160a01b031661027f565b348015610628575f5ffd5b5061022a610637366004612861565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b348015610670575f5ffd5b506102b661067f3660046128dc565b610f52565b34801561068f575f5ffd5b506102b661069e366004612648565b611104565b5f6001600160e01b0319821663093e326b60e21b14806106d357506001600160e01b031982166377c6257360e11b145b806106e257506106e282611175565b92915050565b606061012d80546106f890612989565b80601f016020809104026020016040519081016040528092919081815260200182805461072490612989565b801561076f5780601f106107465761010080835404028352916020019161076f565b820191905f5260205f20905b81548152906001019060200180831161075257829003601f168201915b5050505050905090565b5f610783826111c4565b505f90815261013160205260409020546001600160a01b031690565b5f6107a982610d3c565b9050806001600160a01b0316836001600160a01b03160361081b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061083757506108378133610637565b6108a95760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610812565b6108b38383611223565b505050565b6108c23382611291565b6108de5760405162461bcd60e51b8152600401610812906129c1565b6108b383838361130f565b5f60026108f860c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100971630036109495760405162461bcd60e51b815260040161081290612a0e565b7f00000000000000000000000001670000000000000000000000000000000100976001600160a01b031661097b611481565b6001600160a01b0316146109a15760405162461bcd60e51b815260040161081290612a5a565b6109aa8161149c565b604080515f808252602082019092526109c5918391906114a4565b50565b5f6109d484848461160e565b90505b9392505050565b6109e6611660565b6109f0335f6116f0565b565b610a0660c954610100900460ff1660021490565b15610a245760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610a3f816001610ee5565b6001600160a01b0316336001600160a01b031614610a7057604051630d85cccf60e11b815260040160405180910390fd5b6002610a7e60c95460ff1690565b60ff1603610a9f5760405163dfc60d8560e01b815260040160405180910390fd5b610aa960026116f8565b610ab3838361170e565b6108b360016116f8565b6108b383838360405180602001604052805f815250610ef1565b610aeb60c954610100900460ff1660021490565b15610b095760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610b24816001610ee5565b6001600160a01b0316336001600160a01b031614610b5557604051630d85cccf60e11b815260040160405180910390fd5b6002610b6360c95460ff1690565b60ff1603610b845760405163dfc60d8560e01b815260040160405180910390fd5b610b8e60026116f8565b33610b9883610d3c565b6001600160a01b031614610bbf5760405163358bf3d960e01b815260040160405180910390fd5b610bc882611727565b610bd260016116f8565b5050565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000010097163003610c1e5760405162461bcd60e51b815260040161081290612a0e565b7f00000000000000000000000001670000000000000000000000000000000100976001600160a01b0316610c50611481565b6001600160a01b031614610c765760405162461bcd60e51b815260040161081290612a5a565b610c7f8261149c565b610bd2828260016114a4565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000100971614610d2a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610812565b505f516020612e175f395f51905f5290565b5f81815261012f60205260408120546001600160a01b0316806106e25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610812565b5f6001600160a01b038216610e055760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610812565b506001600160a01b03165f908152610130602052604090205490565b610e296117c9565b6109f05f611823565b60655433906001600160a01b03168114610ea05760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610812565b6109c581611823565b610eb161183c565b6109f03360016116f0565b5f610ec5611481565b905090565b606061012e80546106f890612989565b610bd23383836118ad565b5f6109d746848461160e565b610efb3383611291565b610f175760405162461bcd60e51b8152600401610812906129c1565b610f238484848461197b565b50505050565b61015f54610160546060916106e2916001600160a01b0390911690610f4d856119ae565b611a3d565b5f54610100900460ff1615808015610f7057505f54600160ff909116105b80610f895750303b158015610f8957505f5460ff166001145b610fec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610812565b5f805460ff19166001179055801561100d575f805461ff0019166101001790555b6110178787611a87565b6110218989611ac3565b61109283838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611afd92505050565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905580156110f9575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61110c6117c9565b606580546001600160a01b0383166001600160a01b0319909116811790915561113d6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b14806111a557506001600160e01b03198216635b5e139f60e01b145b806106e257506301ffc9a760e01b6001600160e01b03198316146106e2565b5f81815261012f60205260409020546001600160a01b03166109c55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610812565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061125882610d3c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f61129c83610d3c565b9050806001600160a01b0316846001600160a01b031614806112e357506001600160a01b038082165f908152610132602090815260408083209388168352929052205460ff165b806113075750836001600160a01b03166112fc84610779565b6001600160a01b0316145b949350505050565b826001600160a01b031661132282610d3c565b6001600160a01b0316146113485760405162461bcd60e51b815260040161081290612aa6565b6001600160a01b0382166113aa5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610812565b6113b78383836001611b2d565b826001600160a01b03166113ca82610d3c565b6001600160a01b0316146113f05760405162461bcd60e51b815260040161081290612aa6565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612e175f395f51905f52546001600160a01b031690565b6109c56117c9565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114d7576108b383611b6d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611531575060408051601f3d908101601f1916820190925261152e91810190612aeb565b60015b6115945760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610812565b5f516020612e175f395f51905f5281146116025760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610812565b506108b3838383611c08565b5f6116198484611c2c565b90508115801561163057506001600160a01b038116155b156109d757604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610812565b61167460c954610100900460ff1660021490565b6116915760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610bd26117c9565b60c9805460ff191660ff92909216919091179055565b610bd2828260405180602001604052805f815250611cce565b5f61173182610d3c565b9050611740815f846001611b2d565b61174982610d3c565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b031633146109f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610812565b606580546001600160a01b03191690556109c581611d00565b61185060c954610100900460ff1660021490565b1561186e5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016116e6565b816001600160a01b0316836001600160a01b03160361190e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610812565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61198684848461130f565b61199284848484611d51565b610f235760405162461bcd60e51b815260040161081290612b02565b60605f6119ba83611e4e565b60010190505f816001600160401b038111156119d8576119d86126bd565b6040519080825280601f01601f191660200182016040528015611a02576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a0c57509392505050565b6060611a53846001600160a01b03166014611f25565b611a5c846119ae565b83604051602001611a6f93929190612b54565b60405160208183030381529060405290509392505050565b6001600160a01b0382161580611a9b575080155b80611aa557504681145b15610bd25760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611aeb5760405163538ba4f960e01b815260040160405180910390fd5b611af4836120ba565b6108b382612118565b5f54610100900460ff16611b235760405162461bcd60e51b815260040161081290612bdc565b610bd28282612188565b611b4160c954610100900460ff1660021490565b15611b5f5760405163bae6e2a960e01b815260040160405180910390fd5b611b68836121c9565b610f23565b6001600160a01b0381163b611bda5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610812565b5f516020612e175f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611c11836121f2565b5f82511180611c1d5750805b156108b357610f238383612231565b6097545f906001600160a01b031680611c5857604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611caa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113079190612c27565b611cd88383612256565b611ce45f848484611d51565b6108b35760405162461bcd60e51b815260040161081290612b02565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611e4357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d94903390899088908890600401612c42565b6020604051808303815f875af1925050508015611dce575060408051601f3d908101601f19168201909252611dcb91810190612c74565b60015b611e29573d808015611dfb576040519150601f19603f3d011682016040523d82523d5f602084013e611e00565b606091505b5080515f03611e215760405162461bcd60e51b815260040161081290612b02565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611307565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e8c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611eb8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611ed657662386f26fc10000830492506010015b6305f5e1008310611eee576305f5e100830492506008015b6127108310611f0257612710830492506004015b60648310611f14576064830492506002015b600a83106106e25760010192915050565b60605f611f33836002612ca3565b611f3e906002612cba565b6001600160401b03811115611f5557611f556126bd565b6040519080825280601f01601f191660200182016040528015611f7f576020820181803683370190505b509050600360fc1b815f81518110611f9957611f99612ccd565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611fc757611fc7612ccd565b60200101906001600160f81b03191690815f1a9053505f611fe9846002612ca3565b611ff4906001612cba565b90505b600181111561206b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061202857612028612ccd565b1a60f81b82828151811061203e5761203e612ccd565b60200101906001600160f81b03191690815f1a90535060049490941c9361206481612ce1565b9050611ff7565b5083156109d75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610812565b5f54610100900460ff166120e05760405162461bcd60e51b815260040161081290612bdc565b6120e86123ef565b6121066001600160a01b038216156121005781611823565b33611823565b5060c9805461ff001916610100179055565b5f54610100900460ff1661213e5760405162461bcd60e51b815260040161081290612bdc565b6001600160401b034611156121665760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff166121ae5760405162461bcd60e51b815260040161081290612bdc565b61012d6121bb8382612d41565b5061012e6108b38282612d41565b306001600160a01b038216036109c557604051630c292c9d60e21b815260040160405180910390fd5b6121fb81611b6d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606109d78383604051806060016040528060278152602001612e3760279139612415565b6001600160a01b0382166122ac5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610812565b5f81815261012f60205260409020546001600160a01b0316156123115760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610812565b61231e5f83836001611b2d565b5f81815261012f60205260409020546001600160a01b0316156123835760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610812565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f54610100900460ff166109f05760405162461bcd60e51b815260040161081290612bdc565b60605f5f856001600160a01b0316856040516124319190612dfb565b5f60405180830381855af49150503d805f8114612469576040519150601f19603f3d011682016040523d82523d5f602084013e61246e565b606091505b509150915061247f86838387612489565b9695505050505050565b606083156124f75782515f036124f0576001600160a01b0385163b6124f05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610812565b5081611307565b611307838381511561250c5781518083602001fd5b8060405162461bcd60e51b815260040161081291906125a3565b6001600160e01b0319811681146109c5575f5ffd5b5f6020828403121561254b575f5ffd5b81356109d781612526565b5f5b83811015612570578181015183820152602001612558565b50505f910152565b5f815180845261258f816020860160208601612556565b601f01601f19169290920160200192915050565b602081525f6109d76020830184612578565b5f602082840312156125c5575f5ffd5b5035919050565b6001600160a01b03811681146109c5575f5ffd5b5f5f604083850312156125f1575f5ffd5b82356125fc816125cc565b946020939093013593505050565b5f5f5f6060848603121561261c575f5ffd5b8335612627816125cc565b92506020840135612637816125cc565b929592945050506040919091013590565b5f60208284031215612658575f5ffd5b81356109d7816125cc565b80358015158114612672575f5ffd5b919050565b5f5f5f60608486031215612689575f5ffd5b83356001600160401b038116811461269f575f5ffd5b9250602084013591506126b460408501612663565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126126e0575f5ffd5b81356001600160401b038111156126f9576126f96126bd565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612727576127276126bd565b60405281815283820160200185101561273e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561276b575f5ffd5b8235612776816125cc565b915060208301356001600160401b03811115612790575f5ffd5b61279c858286016126d1565b9150509250929050565b5f5f604083850312156127b7575f5ffd5b82356127c2816125cc565b91506127d060208401612663565b90509250929050565b5f5f604083850312156127ea575f5ffd5b823591506127d060208401612663565b5f5f5f5f6080858703121561280d575f5ffd5b8435612818816125cc565b93506020850135612828816125cc565b92506040850135915060608501356001600160401b03811115612849575f5ffd5b612855878288016126d1565b91505092959194509250565b5f5f60408385031215612872575f5ffd5b823561287d816125cc565b9150602083013561288d816125cc565b809150509250929050565b5f5f83601f8401126128a8575f5ffd5b5081356001600160401b038111156128be575f5ffd5b6020830191508360208285010111156128d5575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156128f3575f5ffd5b88356128fe816125cc565b9750602089013561290e816125cc565b9650604089013561291e816125cc565b95506060890135945060808901356001600160401b0381111561293f575f5ffd5b61294b8b828c01612898565b90955093505060a08901356001600160401b03811115612969575f5ffd5b6129758b828c01612898565b999c989b5096995094979396929594505050565b600181811c9082168061299d57607f821691505b6020821081036129bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215612afb575f5ffd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612b77816009850160208901612556565b600160fe1b6009918401918201528451612b9881600a840160208901612556565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612bcf816013840160208801612556565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612c37575f5ffd5b81516109d7816125cc565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061247f90830184612578565b5f60208284031215612c84575f5ffd5b81516109d781612526565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106e2576106e2612c8f565b808201808211156106e2576106e2612c8f565b634e487b7160e01b5f52603260045260245ffd5b5f81612cef57612cef612c8f565b505f190190565b601f8211156108b357805f5260205f20601f840160051c81016020851015612d1b5750805b601f840160051c820191505b81811015612d3a575f8155600101612d27565b5050505050565b81516001600160401b03811115612d5a57612d5a6126bd565b612d6e81612d688454612989565b84612cf6565b6020601f821160018114612da0575f8315612d895750848201515b5f19600385901b1c1916600184901b178455612d3a565b5f84815260208120601f198516915b82811015612dcf5787850151825560209485019460019092019101612daf565b5084821015612dec57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612e0c818460208701612556565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205ca793a2312f9b2fc8fc6bda4c8492cc141ddbe707fcc60e6d2cb7bff225a87a64736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010098": { - "contractName": "BridgedERC1155", - "storage": {}, - "code": "0x6080604052600436106101e5575f3560e01c8063715018a611610108578063a86f9d9e1161009d578063e30c39781161006d578063e30c39781461056f578063e985e9c51461058c578063ef8c4ae6146105d4578063f242432a146105f3578063f2fde38b14610612575f5ffd5b8063a86f9d9e146104d5578063b390c0ab146104f4578063d81d0a1514610513578063e07baba614610532575f5ffd5b80638abf6077116100d85780638abf6077146104715780638da5cb5b1461048557806395d89b41146104a2578063a22cb465146104b6575f5ffd5b8063715018a61461041557806379ba5097146104295780637cf8ed0d1461043d5780638456cb591461045d575f5ffd5b80633ab76e9f1161017e5780634e1273f41161014e5780634e1273f4146103a25780634f1ef286146103ce57806352d1902d146103e15780635c975abb146103f5575f5ffd5b80633ab76e9f146103225780633eb6b8cf146103595780633f4ba83a1461037857806349d126051461038c575f5ffd5b806326afaadd116101b957806326afaadd1461028a5780632eb2c2d6146102ce5780633075db56146102ef5780633659cfe614610303575f5ffd5b8062fdd58e146101e957806301ffc9a71461021b57806306fdde031461024a5780630e89341c1461026b575b5f5ffd5b3480156101f4575f5ffd5b506102086102033660046126ae565b610631565b6040519081526020015b60405180910390f35b348015610226575f5ffd5b5061023a6102353660046126ed565b6106cb565b6040519015158152602001610212565b348015610255575f5ffd5b5061025e61070a565b6040516102129190612755565b348015610276575f5ffd5b5061025e610285366004612767565b610797565b348015610295575f5ffd5b506102af61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610212565b3480156102d9575f5ffd5b506102ed6102e83660046128c0565b61082a565b005b3480156102fa575f5ffd5b5061023a610876565b34801561030e575f5ffd5b506102ed61031d366004612970565b61088e565b34801561032d575f5ffd5b50609754610341906001600160a01b031681565b6040516001600160a01b039091168152602001610212565b348015610364575f5ffd5b5061034161037336600461299f565b610955565b348015610383575f5ffd5b506102ed61096b565b348015610397575f5ffd5b506102086101605481565b3480156103ad575f5ffd5b506103c16103bc3660046129e5565b61097f565b6040516102129190612aee565b6102ed6103dc366004612b00565b610a9e565b3480156103ec575f5ffd5b50610208610b57565b348015610400575f5ffd5b5061023a60c954610100900460ff1660021490565b348015610420575f5ffd5b506102ed610c09565b348015610434575f5ffd5b506102ed610c1a565b348015610448575f5ffd5b5061015f54610341906001600160a01b031681565b348015610468575f5ffd5b506102ed610c91565b34801561047c575f5ffd5b50610341610ca4565b348015610490575f5ffd5b506033546001600160a01b0316610341565b3480156104ad575f5ffd5b5061025e610cb2565b3480156104c1575f5ffd5b506102ed6104d0366004612b42565b610cc0565b3480156104e0575f5ffd5b506103416104ef366004612b75565b610ccb565b3480156104ff575f5ffd5b506102ed61050e366004612b96565b610cd7565b34801561051e575f5ffd5b506102ed61052d366004612bfd565b610da9565b34801561053d575f5ffd5b5060c954610557906201000090046001600160401b031681565b6040516001600160401b039091168152602001610212565b34801561057a575f5ffd5b506065546001600160a01b0316610341565b348015610597575f5ffd5b5061023a6105a6366004612c7d565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b3480156105df575f5ffd5b506102ed6105ee366004612cf1565b610eed565b3480156105fe575f5ffd5b506102ed61060d366004612d9e565b61106d565b34801561061d575f5ffd5b506102ed61062c366004612970565b6110b2565b5f6001600160a01b0383166106a05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b14806106fb57506001600160e01b031982166377c6257360e11b145b806106c557506106c582611123565b610162805461071890612df5565b80601f016020809104026020016040519081016040528092919081815260200182805461074490612df5565b801561078f5780601f106107665761010080835404028352916020019161078f565b820191905f5260205f20905b81548152906001019060200180831161077257829003601f168201915b505050505081565b606061012f80546107a790612df5565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390612df5565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b50505050509050919050565b6001600160a01b038516331480610846575061084685336105a6565b6108625760405162461bcd60e51b815260040161069790612e2d565b61086f8585858585611172565b5050505050565b5f600261088560c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100981630036108d65760405162461bcd60e51b815260040161069790612e7b565b7f00000000000000000000000001670000000000000000000000000000000100986001600160a01b031661090861130d565b6001600160a01b03161461092e5760405162461bcd60e51b815260040161069790612ec7565b61093781611328565b604080515f8082526020820190925261095291839190611330565b50565b5f61096184848461149a565b90505b9392505050565b6109736114ec565b61097d335f61157c565b565b606081518351146109e45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610697565b5f83516001600160401b038111156109fe576109fe61277e565b604051908082528060200260200182016040528015610a27578160200160208202803683370190505b5090505f5b8451811015610a9657610a71858281518110610a4a57610a4a612f13565b6020026020010151858381518110610a6457610a64612f13565b6020026020010151610631565b828281518110610a8357610a83612f13565b6020908102919091010152600101610a2c565b509392505050565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000010098163003610ae65760405162461bcd60e51b815260040161069790612e7b565b7f00000000000000000000000001670000000000000000000000000000000100986001600160a01b0316610b1861130d565b6001600160a01b031614610b3e5760405162461bcd60e51b815260040161069790612ec7565b610b4782611328565b610b5382826001611330565b5050565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000100981614610bf65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610697565b505f5160206134ec5f395f51905f525b90565b610c11611580565b61097d5f6115da565b60655433906001600160a01b03168114610c885760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610697565b610952816115da565b610c996115f3565b61097d33600161157c565b5f610cad61130d565b905090565b610161805461071890612df5565b610b53338383611664565b5f61096446848461149a565b610ceb60c954610100900460ff1660021490565b15610d095760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610d25816001610ccb565b6001600160a01b0316336001600160a01b031614610d5657604051630d85cccf60e11b815260040160405180910390fd5b6002610d6460c95460ff1690565b60ff1603610d855760405163dfc60d8560e01b815260040160405180910390fd5b610d8f6002611744565b610d9a33848461175a565b610da46001611744565b505050565b610dbd60c954610100900460ff1660021490565b15610ddb5760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610df7816001610ccb565b6001600160a01b0316336001600160a01b031614610e2857604051630d85cccf60e11b815260040160405180910390fd5b6002610e3660c95460ff1690565b60ff1603610e575760405163dfc60d8560e01b815260040160405180910390fd5b610e616002611744565b610edb868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f920182905250604080516020810190915290815292506118ee915050565b610ee56001611744565b505050505050565b5f54610100900460ff1615808015610f0b57505f54600160ff909116105b80610f245750303b158015610f2457505f5460ff166001145b610f875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610697565b5f805460ff191660011790558015610fa8575f805461ff0019166101001790555b610fb28787611a70565b610fbc8989611aac565b610fdd610fd8888860405180602001604052805f815250611ae6565b611b30565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905561016161100d858783612f6b565b5061016261101c838583612f6b565b508015611062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6001600160a01b038516331480611089575061108985336105a6565b6110a55760405162461bcd60e51b815260040161069790612e2d565b61086f8585858585611b5f565b6110ba611580565b606580546001600160a01b0383166001600160a01b031990911681179091556110eb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061115357506001600160e01b031982166303a24d0760e21b145b806106c557506301ffc9a760e01b6001600160e01b03198316146106c5565b81518351146111935760405162461bcd60e51b815260040161069790613024565b6001600160a01b0384166111b95760405162461bcd60e51b81526004016106979061306c565b336111c8818787878787611c8e565b5f5b84518110156112a7575f8582815181106111e6576111e6612f13565b602002602001015190505f85838151811061120357611203612f13565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e1683529093529190912054909150818110156112545760405162461bcd60e51b8152600401610697906130b1565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061129390849061310f565b9091555050600190930192506111ca915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112f7929190613122565b60405180910390a4610ee5818787878787611cce565b5f5160206134ec5f395f51905f52546001600160a01b031690565b610952611580565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561136357610da483611e28565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113bd575060408051601f3d908101601f191682019092526113ba9181019061314f565b60015b6114205760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610697565b5f5160206134ec5f395f51905f52811461148e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610697565b50610da4838383611ec3565b5f6114a58484611eed565b9050811580156114bc57506001600160a01b038116155b1561096457604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610697565b61150060c954610100900460ff1660021490565b61151d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610b535b6033546001600160a01b0316331461097d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610697565b606580546001600160a01b031916905561095281611f97565b61160760c954610100900460ff1660021490565b156116255760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611572565b816001600160a01b0316836001600160a01b0316036116d75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610697565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166117bc5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610697565b335f6117c784611fe8565b90505f6117d384611fe8565b90506117f183875f858560405180602001604052805f815250611c8e565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156118705760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610697565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b03841661194e5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610697565b815183511461196f5760405162461bcd60e51b815260040161069790613024565b3361197e815f87878787611c8e565b5f5b8451811015611a0a5783818151811061199b5761199b612f13565b602002602001015161012d5f8784815181106119b9576119b9612f13565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f8282546119fd919061310f565b9091555050600101611980565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a5a929190613122565b60405180910390a461086f815f87878787611cce565b6001600160a01b0382161580611a84575080155b80611a8e57504681145b15610b535760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611ad45760405163538ba4f960e01b815260040160405180910390fd5b611add83612031565b610da48261208f565b6060611afc846001600160a01b031660146120ff565b611b0584612294565b83604051602001611b1893929190613166565b60405160208183030381529060405290509392505050565b5f54610100900460ff16611b565760405162461bcd60e51b8152600401610697906131ee565b61095281612323565b6001600160a01b038416611b855760405162461bcd60e51b81526004016106979061306c565b335f611b9085611fe8565b90505f611b9c85611fe8565b9050611bac838989858589611c8e565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611bef5760405162461bcd60e51b8152600401610697906130b1565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611c2e90849061310f565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611062848a8a8a8a8a612352565b611ca260c954610100900460ff1660021490565b15611cc05760405163bae6e2a960e01b815260040160405180910390fd5b611cc98461240c565b610ee5565b6001600160a01b0384163b15610ee55760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611d129089908990889088908890600401613239565b6020604051808303815f875af1925050508015611d4c575060408051601f3d908101601f19168201909252611d4991810190613296565b60015b611df857611d586132b1565b806308c379a003611d915750611d6c6132c9565b80611d775750611d93565b8060405162461bcd60e51b81526004016106979190612755565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610697565b6001600160e01b0319811663bc197c8160e01b146118e55760405162461bcd60e51b815260040161069790613343565b6001600160a01b0381163b611e955760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610697565b5f5160206134ec5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611ecc83612435565b5f82511180611ed85750805b15610da457611ee78383612474565b50505050565b6097545f906001600160a01b031680611f1957604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611f6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8f919061338b565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f8151811061202057612020612f13565b602090810291909101015292915050565b5f54610100900460ff166120575760405162461bcd60e51b8152600401610697906131ee565b61205f612499565b61207d6001600160a01b0382161561207757816115da565b336115da565b5060c9805461ff001916610100179055565b5f54610100900460ff166120b55760405162461bcd60e51b8152600401610697906131ee565b6001600160401b034611156120dd5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61210d8360026133a6565b61211890600261310f565b6001600160401b0381111561212f5761212f61277e565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b509050600360fc1b815f8151811061217357612173612f13565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106121a1576121a1612f13565b60200101906001600160f81b03191690815f1a9053505f6121c38460026133a6565b6121ce90600161310f565b90505b6001811115612245576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061220257612202612f13565b1a60f81b82828151811061221857612218612f13565b60200101906001600160f81b03191690815f1a90535060049490941c9361223e816133bd565b90506121d1565b5083156109645760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610697565b60605f6122a0836124bf565b60010190505f816001600160401b038111156122be576122be61277e565b6040519080825280601f01601f1916602001820160405280156122e8576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846122f257509392505050565b5f54610100900460ff166123495760405162461bcd60e51b8152600401610697906131ee565b61095281612596565b6001600160a01b0384163b15610ee55760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061239690899089908890889088906004016133d2565b6020604051808303815f875af19250505080156123d0575060408051601f3d908101601f191682019092526123cd91810190613296565b60015b6123dc57611d586132b1565b6001600160e01b0319811663f23a6e6160e01b146118e55760405162461bcd60e51b815260040161069790613343565b306001600160a01b0382160361095257604051630c292c9d60e21b815260040160405180910390fd5b61243e81611e28565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610964838360405180606001604052806027815260200161350c602791396125a3565b5f54610100900460ff1661097d5760405162461bcd60e51b8152600401610697906131ee565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124fd5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612529576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061254757662386f26fc10000830492506010015b6305f5e100831061255f576305f5e100830492506008015b612710831061257357612710830492506004015b60648310612585576064830492506002015b600a83106106c55760010192915050565b61012f610b538282613416565b60605f5f856001600160a01b0316856040516125bf91906134d0565b5f60405180830381855af49150503d805f81146125f7576040519150601f19603f3d011682016040523d82523d5f602084013e6125fc565b606091505b509150915061260d86838387612617565b9695505050505050565b606083156126855782515f0361267e576001600160a01b0385163b61267e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610697565b5081611f8f565b611f8f8383815115611d775781518083602001fd5b6001600160a01b0381168114610952575f5ffd5b5f5f604083850312156126bf575f5ffd5b82356126ca8161269a565b946020939093013593505050565b6001600160e01b031981168114610952575f5ffd5b5f602082840312156126fd575f5ffd5b8135610964816126d8565b5f5b8381101561272257818101518382015260200161270a565b50505f910152565b5f8151808452612741816020860160208601612708565b601f01601f19169290920160200192915050565b602081525f610964602083018461272a565b5f60208284031215612777575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156127b7576127b761277e565b6040525050565b5f6001600160401b038211156127d6576127d661277e565b5060051b60200190565b5f82601f8301126127ef575f5ffd5b81356127fa816127be565b6040516128078282612792565b80915082815260208101915060208360051b86010192508583111561282a575f5ffd5b602085015b8381101561284757803583526020928301920161282f565b5095945050505050565b5f82601f830112612860575f5ffd5b81356001600160401b038111156128795761287961277e565b604051612890601f8301601f191660200182612792565b8181528460208386010111156128a4575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156128d4575f5ffd5b85356128df8161269a565b945060208601356128ef8161269a565b935060408601356001600160401b03811115612909575f5ffd5b612915888289016127e0565b93505060608601356001600160401b03811115612930575f5ffd5b61293c888289016127e0565b92505060808601356001600160401b03811115612957575f5ffd5b61296388828901612851565b9150509295509295909350565b5f60208284031215612980575f5ffd5b81356109648161269a565b8035801515811461299a575f5ffd5b919050565b5f5f5f606084860312156129b1575f5ffd5b83356001600160401b03811681146129c7575f5ffd5b9250602084013591506129dc6040850161298b565b90509250925092565b5f5f604083850312156129f6575f5ffd5b82356001600160401b03811115612a0b575f5ffd5b8301601f81018513612a1b575f5ffd5b8035612a26816127be565b604051612a338282612792565b80915082815260208101915060208360051b850101925087831115612a56575f5ffd5b6020840193505b82841015612a81578335612a708161269a565b825260209384019390910190612a5d565b945050505060208301356001600160401b03811115612a9e575f5ffd5b612aaa858286016127e0565b9150509250929050565b5f8151808452602084019350602083015f5b82811015612ae4578151865260209586019590910190600101612ac6565b5093949350505050565b602081525f6109646020830184612ab4565b5f5f60408385031215612b11575f5ffd5b8235612b1c8161269a565b915060208301356001600160401b03811115612b36575f5ffd5b612aaa85828601612851565b5f5f60408385031215612b53575f5ffd5b8235612b5e8161269a565b9150612b6c6020840161298b565b90509250929050565b5f5f60408385031215612b86575f5ffd5b82359150612b6c6020840161298b565b5f5f60408385031215612ba7575f5ffd5b50508035926020909101359150565b5f5f83601f840112612bc6575f5ffd5b5081356001600160401b03811115612bdc575f5ffd5b6020830191508360208260051b8501011115612bf6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215612c11575f5ffd5b8535612c1c8161269a565b945060208601356001600160401b03811115612c36575f5ffd5b612c4288828901612bb6565b90955093505060408601356001600160401b03811115612c60575f5ffd5b612c6c88828901612bb6565b969995985093965092949392505050565b5f5f60408385031215612c8e575f5ffd5b8235612c998161269a565b91506020830135612ca98161269a565b809150509250929050565b5f5f83601f840112612cc4575f5ffd5b5081356001600160401b03811115612cda575f5ffd5b602083019150836020828501011115612bf6575f5ffd5b5f5f5f5f5f5f5f5f60c0898b031215612d08575f5ffd5b8835612d138161269a565b97506020890135612d238161269a565b96506040890135612d338161269a565b95506060890135945060808901356001600160401b03811115612d54575f5ffd5b612d608b828c01612cb4565b90955093505060a08901356001600160401b03811115612d7e575f5ffd5b612d8a8b828c01612cb4565b999c989b5096995094979396929594505050565b5f5f5f5f5f60a08688031215612db2575f5ffd5b8535612dbd8161269a565b94506020860135612dcd8161269a565b9350604086013592506060860135915060808601356001600160401b03811115612957575f5ffd5b600181811c90821680612e0957607f821691505b602082108103612e2757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f821115610da457805f5260205f20601f840160051c81016020851015612f4c5750805b601f840160051c820191505b8181101561086f575f8155600101612f58565b6001600160401b03831115612f8257612f8261277e565b612f9683612f908354612df5565b83612f27565b5f601f841160018114612fc7575f8515612fb05750838201355b5f19600387901b1c1916600186901b17835561086f565b5f83815260208120601f198716915b82811015612ff65786850135825560209485019460019092019101612fd6565b5086821015613012575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106c5576106c56130fb565b604081525f6131346040830185612ab4565b82810360208401526131468185612ab4565b95945050505050565b5f6020828403121561315f575f5ffd5b5051919050565b6832ba3432b932bab69d60b91b81525f8451613189816009850160208901612708565b600160fe1b60099184019182015284516131aa81600a840160208901612708565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b600182015283516131e1816013840160208801612708565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f9061326490830186612ab4565b82810360608401526132768186612ab4565b9050828103608084015261328a818561272a565b98975050505050505050565b5f602082840312156132a6575f5ffd5b8151610964816126d8565b5f60033d1115610c065760045f5f3e505f5160e01c90565b5f60443d10156132d65790565b6040513d600319016004823e80513d60248201116001600160401b03821117156132ff57505090565b80820180516001600160401b0381111561331a575050505090565b3d8401600319018282016020011115613334575050505090565b610a9660208285010185612792565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b5f6020828403121561339b575f5ffd5b81516109648161269a565b80820281158282048414176106c5576106c56130fb565b5f816133cb576133cb6130fb565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f9061340b9083018461272a565b979650505050505050565b81516001600160401b0381111561342f5761342f61277e565b6134438161343d8454612df5565b84612f27565b6020601f821160018114613475575f831561345e5750848201515b5f19600385901b1c1916600184901b17845561086f565b5f84815260208120601f198516915b828110156134a45787850151825560209485019460019092019101613484565b50848210156134c157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516134e1818460208701612708565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220056c58b99db557dce285f996f441ca995a4a77b2754e41fc6af5e46a7185c22664736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000000005": { - "contractName": "SignalServiceImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x6080604052600436106101c5575f3560e01c806379ba5097116100f2578063a86f9d9e11610092578063e30c397811610062578063e30c39781461052f578063f09a40161461054c578063f2fde38b1461056b578063fe9fbb801461058a575f5ffd5b8063a86f9d9e1461048e578063ce9d0820146104ad578063dfc8ff1d146104cc578063e07baba61461050a575f5ffd5b80638da5cb5b116100cd5780638da5cb5b14610414578063910af6ed1461043157806391f3f74b146104505780639b527cfa1461046f575f5ffd5b806379ba5097146103d85780638456cb59146103ec5780638abf607714610400575f5ffd5b80633eb6b8cf1161016857806352d1902d1161013857806352d1902d146103715780635c975abb1461038557806366ca2bc0146103a5578063715018a6146103c4575f5ffd5b80633eb6b8cf146102fe5780633f4ba83a1461031d5780634f1ef286146103315780634f90a67414610344575f5ffd5b8063355bcc3d116101a3578063355bcc3d146102325780633659cfe6146102895780633ab76e9f146102a85780633ced0e08146102df575f5ffd5b80632d1fb389146101c95780633075db56146101ea57806332676bc614610213575b5f5ffd5b3480156101d4575f5ffd5b506101e86101e336600461351b565b6105b8565b005b3480156101f5575f5ffd5b506101fe61065e565b60405190151581526020015b60405180910390f35b34801561021e575f5ffd5b506101fe61022d36600461354e565b610676565b34801561023d575f5ffd5b5061027161024c36600461358e565b60fb60209081525f92835260408084209091529082529020546001600160401b031681565b6040516001600160401b03909116815260200161020a565b348015610294575f5ffd5b506101e86102a33660046135a8565b61068c565b3480156102b3575f5ffd5b506097546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102ea575f5ffd5b506101fe6102f93660046135c3565b61075c565b348015610309575f5ffd5b506102c7610318366004613604565b6107a3565b348015610328575f5ffd5b506101e86107b9565b6101e861033f366004613714565b6107cd565b34801561034f575f5ffd5b5061036361035e3660046135c3565b610886565b60405190815260200161020a565b34801561037c575f5ffd5b506103636108cc565b348015610390575f5ffd5b506101fe60c954610100900460ff1660021490565b3480156103b0575f5ffd5b506103636103bf366004613760565b61097d565b3480156103cf575f5ffd5b506101e8610989565b3480156103e3575f5ffd5b506101e861099a565b3480156103f7575f5ffd5b506101e8610a11565b34801561040b575f5ffd5b506102c7610a24565b34801561041f575f5ffd5b506033546001600160a01b03166102c7565b34801561043c575f5ffd5b5061036361044b366004613777565b610a32565b34801561045b575f5ffd5b5061036361046a36600461380c565b610b0d565b34801561047a575f5ffd5b50610363610489366004613848565b610b78565b348015610499575f5ffd5b506102c76104a8366004613878565b610ba4565b3480156104b8575f5ffd5b506101e86104c7366004613777565b610bb0565b3480156104d7575f5ffd5b506104eb6104e6366004613848565b610bc6565b604080516001600160401b03909316835260208301919091520161020a565b348015610515575f5ffd5b5060c954610271906201000090046001600160401b031681565b34801561053a575f5ffd5b506065546001600160a01b03166102c7565b348015610557575f5ffd5b506101e8610566366004613899565b610c5a565b348015610576575f5ffd5b506101e86105853660046135a8565b610d69565b348015610595575f5ffd5b506101fe6105a43660046135a8565b60fc6020525f908152604090205460ff1681565b6105c0610dda565b6001600160a01b0382165f90815260fc602052604090205481151560ff909116151503610600576040516398f26f4560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260fc6020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b5f600261066d60c95460ff1690565b60ff1614905090565b5f6106818383610e34565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000051630036106dd5760405162461bcd60e51b81526004016106d4906138d0565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000000056001600160a01b031661070f610e96565b6001600160a01b0316146107355760405162461bcd60e51b81526004016106d49061391c565b61073e81610eb1565b604080515f8082526020820190925261075991839190610eb9565b50565b5f8180820361077e5760405163ec73295960e01b815260040160405180910390fd5b5f61078a878787610b78565b9050836107973083610e34565b14979650505050505050565b5f6107af848484611023565b90505b9392505050565b6107c1611075565b6107cb335f611105565b565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000000051630036108155760405162461bcd60e51b81526004016106d4906138d0565b7f00000000000000000000000001670000000000000000000000000000000000056001600160a01b0316610847610e96565b6001600160a01b03161461086d5760405162461bcd60e51b81526004016106d49061391c565b61087682610eb1565b61088282826001610eb9565b5050565b335f90815260fc602052604081205460ff166108b557604051631f67751f60e01b815260040160405180910390fd5b6108c18585858561111e565b90505b949350505050565b5f306001600160a01b037f0000000000000000000000000167000000000000000000000000000000000005161461096b5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d4565b505f516020613eb05f395f51905f5290565b5f610686338384611200565b610991610dda565b6107cb5f6112d9565b60655433906001600160a01b03168114610a085760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106d4565b610759816112d9565b610a196112f2565b6107cb336001611105565b5f610a2d610e96565b905090565b5f610a4760c954610100900460ff1660021490565b15610a655760405163bae6e2a960e01b815260040160405180910390fd5b6002610a7360c95460ff1690565b60ff1603610a945760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660021790555f610ab187878787876001611363565b90505f5b8151811015610af457610ae0828281518110610ad357610ad3613968565b602002602001015161181f565b610aea9084613990565b9250600101610ab5565b505060c9805460ff191660011790555b95945050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062015b6040516020818303038152906040528051906020012090509392505050565b604080516001600160401b03808616602083015291810184905290821660608201525f90608001610b59565b5f6107b2468484611023565b610bbe85858585855f611363565b505050505050565b5f5f826001600160401b03165f03610c02576001600160401b038086165f90815260fb6020908152604080832088845290915290205416610c04565b825b91506001600160401b03821615610c52575f610c21868685610b78565b9050610c2d3082610e34565b91505f829003610c505760405163738afa0560e01b815260040160405180910390fd5b505b935093915050565b5f54610100900460ff1615808015610c7857505f54600160ff909116105b80610c915750303b158015610c9157505f5460ff166001145b610cf45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d4565b5f805460ff191660011790558015610d15575f805461ff0019166101001790555b610d1f8383611963565b8015610d64575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610d71610dda565b606580546001600160a01b0383166001600160a01b03199091168117909155610da26033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146107cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d4565b5f826001600160a01b038116610e5d5760405163538ba4f960e01b815260040160405180910390fd5b825f819003610e7f5760405163ec73295960e01b815260040160405180910390fd5b5f610e8b468787610b0d565b549695505050505050565b5f516020613eb05f395f51905f52546001600160a01b031690565b610759610dda565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610eec57610d648361199d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f46575060408051601f3d908101601f19168201909252610f43918101906139a3565b60015b610fa95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106d4565b5f516020613eb05f395f51905f5281146110175760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106d4565b50610d64838383611a38565b5f61102e8484611a62565b90508115801561104557506001600160a01b038116155b156107b257604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016106d4565b61108960c954610100900460ff1660021490565b6110a65760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b5f61112a858585610b78565b9050611137308284611200565b506001600160401b038581165f90815260fb60209081526040808320888452909152902054818516911610156111a1576001600160401b038581165f90815260fb602090815260408083208884529091529020805467ffffffffffffffff19169185169190911790555b83836001600160401b0316866001600160401b03167fde247c825b1fb2d7ff9e0e771cba6f9e757ad04479fcdc135d88ae91fd50b37d85856040516111f0929190918252602082015260400190565b60405180910390a4949350505050565b5f836001600160a01b0381166112295760405163538ba4f960e01b815260040160405180910390fd5b835f81900361124b5760405163ec73295960e01b815260040160405180910390fd5b835f81900361126d5760405163ec73295960e01b815260040160405180910390fd5b611278468888610b0d565b858155604080516001600160a01b038a16815260208101899052908101829052606081018790529094507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a15050509392505050565b606580546001600160a01b031916905561075981611b04565b61130660c954610100900460ff1660021490565b156113245760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016110fb565b6060856001600160a01b03811661138d5760405163538ba4f960e01b815260040160405180910390fd5b855f8190036113af5760405163ec73295960e01b815260040160405180910390fd5b5f6113bc86880188613a77565b905080515f036113df57604051630b92daef60e21b815260040160405180910390fd5b5f600182516113ee9190613bbd565b6001600160401b038111156114055761140561363d565b60405190808252806020026020018201604052801561142e578160200160208202803683370190505b50905085156114c15781516001600160401b038111156114505761145061363d565b6040519080825280602002602001820160405280156114bd57816020015b6114aa6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b81526020019060019003908161146e5790505b5094505b8a8a8a805f6114e2856d7369676e616c5f7365727669636560901b836107a3565b9050306001600160a01b0382160361150d57604051637556223560e11b815260040160405180910390fd5b6115456040805160c0810182525f80825260208201819052918101829052906060820190815260200160608152602001606081525090565b5f5f5f5f5b8b518110156117d3578b818151811061156557611565613968565b602002602001015194505f5b818110156115cf57855f01516001600160401b03168c828151811061159857611598613968565b60200260200101516001600160401b0316036115c7576040516348362c2760e11b815260040160405180910390fd5b600101611571565b506115de8a8a8a8a898b611b55565b93508a5181149150811561161e5784516001600160401b03164614611616576040516338bf822760e21b815260040160405180910390fd5b3095506116c9565b845f01518b828151811061163457611634613968565b6001600160401b0392831660209182029290920101528551161580611662575084516001600160401b031646145b1561168057604051637556223560e11b815260040160405180910390fd5b845161169e906d7369676e616c5f7365727669636560901b5f6107a3565b9550306001600160a01b038716036116c957604051637556223560e11b815260040160405180910390fd5b608085015151151592508f1561175d576040518060e00160405280866040015181526020018581526020018b6001600160401b0316815260200186602001516001600160401b03168152602001841515815260200183151581526020018660600151600381111561173c5761173c613bd0565b8152508f828151811061175157611751613968565b60200260200101819052505b6117b88a8461178c577fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf56117ae565b7f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1695b8760200151610b78565b604086015186519b509699509750949550879460010161154a565b508515806117ea57506117e63088610e34565b8614155b156118085760405163738afa0560e01b815260040160405180910390fd5b505050505050505050505050509695505050505050565b5f8060038360c00151600381111561183957611839613bd0565b148061185a575060028360c00151600381111561185857611858613bd0565b145b905080801561186a575082608001515b801561187857508260a00151155b156118ba57600191506118b883604001517f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1698560600151865f015161111e565b505b5f60038460c0015160038111156118d3576118d3613bd0565b14806118f4575060018460c0015160038111156118f2576118f2613bd0565b145b9050808015611910575083608001518061191057508360a00151155b1561195c57611920600184613990565b925061195a84604001517fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf58660600151876020015161111e565b505b5050919050565b806001600160a01b03811661198b5760405163538ba4f960e01b815260040160405180910390fd5b61199483611bf4565b610d6482611c52565b6001600160a01b0381163b611a0a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106d4565b5f516020613eb05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611a4183611cc2565b5f82511180611a4d5750805b15610d6457611a5c8383611d01565b50505050565b6097545f906001600160a01b031680611a8e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611ae0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c49190613be4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f856001600160a01b038116611b7e5760405163538ba4f960e01b815260040160405180910390fd5b855f819003611ba05760405163ec73295960e01b815260040160405180910390fd5b855f819003611bc25760405163ec73295960e01b815260040160405180910390fd5b611be6866040015186611bd68d8d8d610b0d565b8a8a608001518b60a00151611d26565b9a9950505050505050505050565b5f54610100900460ff16611c1a5760405162461bcd60e51b81526004016106d490613bff565b611c22611e33565b611c406001600160a01b03821615611c3a57816112d9565b336112d9565b5060c9805461ff001916610100179055565b5f54610100900460ff16611c785760405162461bcd60e51b81526004016106d490613bff565b6001600160401b03461115611ca05760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b611ccb8161199d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606107b28383604051806060016040528060278152602001613ed060279139611e59565b5f82515f14611dce576040516bffffffffffffffffffffffff19606088901b1660208201525f90611d6a90603401604051602081830303815290604052858a611ecd565b905080515f03611d8d57604051630414cd5b60e31b815260040160405180910390fd5b5f611d9782611ee6565b9050611dbc81600281518110611daf57611daf613968565b6020026020010151611ef9565b611dc590613c4a565b92505050611dd1565b50855b5f611e0886604051602001611de891815260200190565b60408051601f19818403018152919052611e0187611f78565b8585611f8b565b905080611e2857604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b5f54610100900460ff166107cb5760405162461bcd60e51b81526004016106d490613bff565b60605f5f856001600160a01b031685604051611e759190613c92565b5f60405180830381855af49150503d805f8114611ead576040519150601f19603f3d011682016040523d82523d5f602084013e611eb2565b606091505b5091509150611ec386838387611fa4565b9695505050505050565b60605f611ed98561201c565b9050610b0481858561204e565b6060610686611ef4836128bc565b61290e565b60605f5f5f611f0785612a8c565b919450925090505f816001811115611f2157611f21613bd0565b14611f3f576040516307fe6cb960e21b815260040160405180910390fd5b611f498284613990565b855114611f6957604051630b8aa6f760e31b815260040160405180910390fd5b610b0485602001518484612d6f565b6060610686611f8683612dff565b612f13565b5f5f611f968661201c565b9050611ec381868686612f6b565b606083156120125782515f0361200b576001600160a01b0385163b61200b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d4565b50816108c4565b6108c48383612f91565b6060818051906020012060405160200161203891815260200190565b6040516020818303038152906040529050919050565b60605f8451116120985760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106d4565b5f6120a284612fbb565b90505f6120ae8661309e565b90505f846040516020016120c491815260200190565b60408051601f1981840301815291905290505f805b8451811015612865575f8582815181106120f5576120f5613968565b6020026020010151905084518311156121675760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106d4565b825f0361220557805180516020918201206040516121b49261218e92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6122005760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106d4565b6122fb565b80515160201161228b578051805160209182012060405161222f9261218e92910190815260200190565b6122005760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106d4565b8051845160208087019190912082519190920120146122fb5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106d4565b61230760106001613990565b8160200151510361249f5784518303612439576123348160200151601081518110611daf57611daf613968565b96505f8751116123ac5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106d4565b600186516123ba9190613bbd565b821461242e5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106d4565b5050505050506107b2565b5f85848151811061244c5761244c613968565b602001015160f81c60f81b60f81c90505f82602001518260ff168151811061247657612476613968565b60200260200101519050612489816130ff565b9550612496600186613990565b9450505061285c565b600281602001515103612803575f6124b682613123565b90505f815f815181106124cb576124cb613968565b016020015160f81c90505f6124e1600283613cc1565b6124ec906002613ce2565b90505f6124fc848360ff16613146565b90505f6125098a89613146565b90505f612516838361317b565b90508083511461258e5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106d4565b60ff8516600214806125a3575060ff85166003145b15612743578082511461261e5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106d4565b6126388760200151600181518110611daf57611daf613968565b9c505f8d51116126b05760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106d4565b60018c516126be9190613bbd565b88146127325760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106d4565b5050505050505050505050506107b2565b60ff85161580612756575060ff85166001145b1561279557612782876020015160018151811061277557612775613968565b60200260200101516130ff565b995061278e818a613990565b98506127f8565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106d4565b50505050505061285c565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106d4565b506001016120d9565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106d4565b604080518082019091525f808252602082015281515f036128f057604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f61291c85612a8c565b91945092509050600181600181111561293757612937613bd0565b14612955576040516325ce355f60e11b815260040160405180910390fd5b84516129618385613990565b1461297f57604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f80825260208201528152602001906001900390816129965790505093505f835b8651811015612a80575f5f612a056040518060400160405280858c5f01516129e99190613bbd565b8152602001858c602001516129fe9190613990565b9052612a8c565b509150915060405180604001604052808383612a219190613990565b8152602001848b60200151612a369190613990565b815250888581518110612a4b57612a4b613968565b6020908102919091010152612a61600185613990565b9350612a6d8183613990565b612a779084613990565b925050506129c1565b50845250919392505050565b5f5f5f835f01515f03612ab257604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111612ad4575f60015f9450945094505050612d68565b60b78111612b69575f612ae8608083613bbd565b905080875f015111612b0d576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015612b395750600160ff1b6001600160f81b03198216105b15612b575760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250612d68915050565b60bf8111612c47575f612b7d60b783613bbd565b905080875f015111612ba2576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612bd25760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612c015760405163babb01dd60e01b815260040160405180910390fd5b612c0b8184613990565b895111612c2b576040516366c9448560e01b815260040160405180910390fd5b612c36836001613990565b975095505f9450612d689350505050565b60f78111612c91575f612c5b60c083613bbd565b905080875f015111612c80576040516366c9448560e01b815260040160405180910390fd5b600195509350849250612d68915050565b5f612c9d60f783613bbd565b905080875f015111612cc2576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612cf25760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612d215760405163babb01dd60e01b815260040160405180910390fd5b612d2b8184613990565b895111612d4b576040516366c9448560e01b815260040160405180910390fd5b612d56836001613990565b9750955060019450612d689350505050565b9193909250565b6060816001600160401b03811115612d8957612d8961363d565b6040519080825280601f01601f191660200182016040528015612db3576020820181803683370190505b50905081156107b2575f612dc78486613990565b9050602082015f5b84811015612de7578281015182820152602001612dcf565b84811115612df5575f858301525b5050509392505050565b60605f82604051602001612e1591815260200190565b60408051601f1981840301815291905290505f5b6020811015612e6157818181518110612e4457612e44613968565b01602001516001600160f81b0319165f03612e6157600101612e29565b612e6c816020613bbd565b6001600160401b03811115612e8357612e8361363d565b6040519080825280601f01601f191660200182016040528015612ead576020820181803683370190505b5092505f5b835181101561195a578282612ec681613cfb565b935081518110612ed857612ed8613968565b602001015160f81c60f81b848281518110612ef557612ef5613968565b60200101906001600160f81b03191690815f1a905350600101612eb2565b606081516001148015612f3f57506080825f81518110612f3557612f35613968565b016020015160f81c105b15612f48575090565b612f54825160806131fe565b82604051602001612038929190613d13565b919050565b5f6108c184612f7b87868661204e565b8051602091820120825192909101919091201490565b815115612fa15781518083602001fd5b8060405162461bcd60e51b81526004016106d49190613d41565b8051606090806001600160401b03811115612fd857612fd861363d565b60405190808252806020026020018201604052801561301d57816020015b6040805180820190915260608082526020820152815260200190600190039081612ff65790505b5091505f5b8181101561195c57604051806040016040528085838151811061304757613047613968565b6020026020010151815260200161307686848151811061306957613069613968565b6020026020010151611ee6565b81525083828151811061308b5761308b613968565b6020908102919091010152600101613022565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b838110156130f4578060011b8201818401515f1a8060041c8253600f8116600183015350506001016130c7565b509295945050505050565b60606020825f01511061311a5761311582611ef9565b610686565b610686826133a3565b606061068661314183602001515f81518110611daf57611daf613968565b61309e565b606082518210613164575060408051602081019091525f8152610686565b6107b283838486516131769190613bbd565b6133b7565b5f5f825184511061318d578251613190565b83515b90505b80821080156131e757508282815181106131af576131af613968565b602001015160f81c60f81b6001600160f81b0319168483815181106131d6576131d6613968565b01602001516001600160f81b031916145b156131f757816001019150613193565b5092915050565b6060603883101561326257604080516001808252818301909252906020820181803683370190505090506132328284613d73565b60f81b815f8151811061324757613247613968565b60200101906001600160f81b03191690815f1a905350610686565b5f60015b6132708186613d8c565b15613296578161327f81613cfb565b925061328f905061010082613d9f565b9050613266565b6132a1826001613990565b6001600160401b038111156132b8576132b861363d565b6040519080825280601f01601f1916602001820160405280156132e2576020820181803683370190505b5092506132ef8483613d73565b6132fa906037613d73565b60f81b835f8151811061330f5761330f613968565b60200101906001600160f81b03191690815f1a905350600190505b81811161339b5761010061333e8284613bbd565b61334a90610100613e91565b6133549087613d8c565b61335e9190613e9c565b60f81b83828151811061337357613373613968565b60200101906001600160f81b03191690815f1a9053508061339381613cfb565b91505061332a565b505092915050565b606061068682602001515f845f0151612d6f565b60608182601f0110156133fd5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d4565b8282840110156134405760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d4565b818301845110156134875760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106d4565b6060821580156134a55760405191505f8252602082016040526134ef565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156134de5780518352602092830192016134c6565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b0381168114610759575f5ffd5b80358015158114612f66575f5ffd5b5f5f6040838503121561352c575f5ffd5b8235613537816134f8565b91506135456020840161350c565b90509250929050565b5f5f6040838503121561355f575f5ffd5b823561356a816134f8565b946020939093013593505050565b80356001600160401b0381168114612f66575f5ffd5b5f5f6040838503121561359f575f5ffd5b61356a83613578565b5f602082840312156135b8575f5ffd5b81356107b2816134f8565b5f5f5f5f608085870312156135d6575f5ffd5b6135df85613578565b9350602085013592506135f460408601613578565b9396929550929360600135925050565b5f5f5f60608486031215613616575f5ffd5b61361f84613578565b9250602084013591506136346040850161350c565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156136735761367361363d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156136a1576136a161363d565b604052919050565b5f82601f8301126136b8575f5ffd5b81356001600160401b038111156136d1576136d161363d565b6136e4601f8201601f1916602001613679565b8181528460208386010111156136f8575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613725575f5ffd5b8235613730816134f8565b915060208301356001600160401b0381111561374a575f5ffd5b613756858286016136a9565b9150509250929050565b5f60208284031215613770575f5ffd5b5035919050565b5f5f5f5f5f6080868803121561378b575f5ffd5b61379486613578565b945060208601356137a4816134f8565b93506040860135925060608601356001600160401b038111156137c5575f5ffd5b8601601f810188136137d5575f5ffd5b80356001600160401b038111156137ea575f5ffd5b8860208284010111156137fb575f5ffd5b959894975092955050506020019190565b5f5f5f6060848603121561381e575f5ffd5b61382784613578565b92506020840135613837816134f8565b929592945050506040919091013590565b5f5f5f6060848603121561385a575f5ffd5b61386384613578565b92506020840135915061363460408501613578565b5f5f60408385031215613889575f5ffd5b823591506135456020840161350c565b5f5f604083850312156138aa575f5ffd5b82356138b5816134f8565b915060208301356138c5816134f8565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106865761068661397c565b5f602082840312156139b3575f5ffd5b5051919050565b5f6001600160401b038211156139d2576139d261363d565b5060051b60200190565b803560048110612f66575f5ffd5b5f82601f8301126139f9575f5ffd5b8135613a0c613a07826139ba565b613679565b8082825260208201915060208360051b860101925085831115613a2d575f5ffd5b602085015b83811015613a6d5780356001600160401b03811115613a4f575f5ffd5b613a5e886020838a01016136a9565b84525060209283019201613a32565b5095945050505050565b5f60208284031215613a87575f5ffd5b81356001600160401b03811115613a9c575f5ffd5b8201601f81018413613aac575f5ffd5b8035613aba613a07826139ba565b8082825260208201915060208360051b850101925086831115613adb575f5ffd5b602084015b83811015611e285780356001600160401b03811115613afd575f5ffd5b850160c0818a03601f19011215613b12575f5ffd5b613b1a613651565b613b2660208301613578565b8152613b3460408301613578565b602082015260608201356040820152613b4f608083016139dc565b606082015260a08201356001600160401b03811115613b6c575f5ffd5b613b7b8b6020838601016139ea565b60808301525060c08201356001600160401b03811115613b99575f5ffd5b613ba88b6020838601016139ea565b60a08301525084525060209283019201613ae0565b818103818111156106865761068661397c565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215613bf4575f5ffd5b81516107b2816134f8565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80516020808301519190811015613c6a575f198160200360031b1b821691505b50919050565b5f5b83811015613c8a578181015183820152602001613c72565b50505f910152565b5f8251613ca3818460208701613c70565b9190910192915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff831680613cd357613cd3613cad565b8060ff84160691505092915050565b60ff82811682821603908111156106865761068661397c565b5f60018201613d0c57613d0c61397c565b5060010190565b5f8351613d24818460208801613c70565b835190830190613d38818360208801613c70565b01949350505050565b602081525f8251806020840152613d5f816040850160208701613c70565b601f01601f19169190910160400192915050565b60ff81811683821601908111156106865761068661397c565b5f82613d9a57613d9a613cad565b500490565b80820281158282048414176106865761068661397c565b6001815b6001841115610c5257808504811115613dd557613dd561397c565b6001841615613de357908102905b60019390931c928002613dba565b5f82613dff57506001610686565b81613e0b57505f610686565b8160018114613e215760028114613e2b57613e47565b6001915050610686565b60ff841115613e3c57613e3c61397c565b50506001821b610686565b5060208310610133831016604e8410600b8410161715613e6a575081810a610686565b613e765f198484613db6565b805f1904821115613e8957613e8961397c565b029392505050565b5f6107b28383613df1565b5f82613eaa57613eaa613cad565b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122088e374295b28e7ad8361a3b961be9595b9248bb8792c867a5bea9cc2824409f764736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000000005": { - "contractName": "SignalService", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000000006", - "0xdf3a3dd9c4001d1115304f0841a31ee7b79b184f45ef381343fdf0ae529fbcb4": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000000005" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010001": { - "contractName": "TaikoL2Impl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x6080604052600436106101fc575f3560e01c80638456cb5911610113578063da69d3db1161009d578063e902461a1161006d578063e902461a146105ca578063ee82ac5e146105e9578063f2fde38b14610608578063f940e38514610627578063fd85eb2d14610646575f5ffd5b8063da69d3db14610554578063dac5df7814610573578063e07baba614610588578063e30c3978146105ad575f5ffd5b8063a7137c0f116100e3578063a7137c0f1461047c578063a7e022d1146104a2578063a86f9d9e146104de578063b8c7b30c146104fd578063c3f909d41461051c575f5ffd5b80638456cb59146104125780638abf6077146104265780638da5cb5b1461043a5780639ee512f214610457575f5ffd5b80633eb6b8cf11610194578063539b8ade11610164578063539b8ade146103855780635950f9f1146103ab5780635c975abb146103ca578063715018a6146103ea57806379ba5097146103fe575f5ffd5b80633eb6b8cf1461031d5780633f4ba83a1461033c5780634f1ef2861461035057806352d1902d14610363575f5ffd5b806333d5ac9b116101cf57806333d5ac9b1461028d578063356aec04146102b35780633659cfe6146102c55780633ab76e9f146102e6575f5ffd5b806312622e5b14610200578063136dc4a81461023c5780632f9804731461025b5780633075db5614610279575b5f5ffd5b34801561020b575f5ffd5b5060fe5461021f906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b348015610247575f5ffd5b5061021f6102563660046125c0565b610665565b348015610266575f5ffd5b505f5b6040519015158152602001610233565b348015610284575f5ffd5b5061026961067b565b348015610298575f5ffd5b5060fd5461021f90600160401b90046001600160401b031681565b3480156102be575f5ffd5b505f61021f565b3480156102d0575f5ffd5b506102e46102df366004612614565b610693565b005b3480156102f1575f5ffd5b50609754610305906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610328575f5ffd5b5061030561033736600461263c565b610763565b348015610347575f5ffd5b506102e461076f565b6102e461035e36600461268d565b610783565b34801561036e575f5ffd5b5061037761083c565b604051908152602001610233565b348015610390575f5ffd5b5060fd5461021f90600160801b90046001600160401b031681565b3480156103b6575f5ffd5b506102e46103c5366004612750565b6108ed565b3480156103d5575f5ffd5b5061026960c954610100900460ff1660021490565b3480156103f5575f5ffd5b506102e4610af6565b348015610409575f5ffd5b506102e4610b07565b34801561041d575f5ffd5b506102e4610b7e565b348015610431575f5ffd5b50610305610b91565b348015610445575f5ffd5b506033546001600160a01b0316610305565b348015610462575f5ffd5b5061030571777735367b36bc9b61c50022d9d0700db4ec81565b348015610487575f5ffd5b5060fd5461021f90600160c01b90046001600160401b031681565b3480156104ad575f5ffd5b506104c16104bc3660046127b8565b610b9f565b604080519283526001600160401b03909116602083015201610233565b3480156104e9575f5ffd5b506103056104f83660046127e9565b610c15565b348015610508575f5ffd5b5060fd5461021f906001600160401b031681565b348015610527575f5ffd5b50610530610c2a565b60408051825163ffffffff16815260209283015160ff169281019290925201610233565b34801561055f575f5ffd5b506102e461056e366004612817565b610c5b565b34801561057e575f5ffd5b5061037760fc5481565b348015610593575f5ffd5b5060c95461021f906201000090046001600160401b031681565b3480156105b8575f5ffd5b506065546001600160a01b0316610305565b3480156105d5575f5ffd5b506104c16105e436600461285f565b610d2b565b3480156105f4575f5ffd5b506103776106033660046128a7565b610e0d565b348015610613575f5ffd5b506102e4610622366004612614565b610e45565b348015610632575f5ffd5b506102e46106413660046128be565b610eb6565b348015610651575f5ffd5b506102e46106603660046128ea565b611075565b5f6106718484846114df565b90505b9392505050565b5f600261068a60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100011630036106e45760405162461bcd60e51b81526004016106db9061292b565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000100016001600160a01b031661071661159a565b6001600160a01b03161461073c5760405162461bcd60e51b81526004016106db90612977565b610745816115b5565b604080515f80825260208201909252610760918391906115bd565b50565b5f610671848484611727565b610777611779565b610781335f611809565b565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100011630036107cb5760405162461bcd60e51b81526004016106db9061292b565b7f00000000000000000000000001670000000000000000000000000000000100016001600160a01b03166107fd61159a565b6001600160a01b0316146108235760405162461bcd60e51b81526004016106db90612977565b61082c826115b5565b610838828260016115bd565b5050565b5f306001600160a01b037f000000000000000000000000016700000000000000000000000000000001000116146108db5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106db565b505f516020612c045f395f51905f5290565b5f54610100900460ff161580801561090b57505f54600160ff909116105b806109245750303b15801561092457505f5460ff166001145b6109875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106db565b5f805460ff1916600117905580156109a8575f805461ff0019166101001790555b6109b28585611811565b6001600160401b03831615806109d0575046836001600160401b0316145b156109ee576040516308279a2560e31b815260040160405180910390fd5b600146111580610a0457506001600160401b0346115b15610a2257604051638f972ecb60e01b815260040160405180910390fd5b4315610a6c5743600103610a53575f610a3c6001436129d7565b5f81815260fb602052604090209040905550610a6c565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd805492851692909116919091179055610aa64361184b565b5060fc558015610aef575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610afe6118db565b6107815f611935565b60655433906001600160a01b03168114610b755760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106db565b61076081611935565b610b8661194e565b610781336001611809565b5f610b9a61159a565b905090565b5f5f5f610baa610c2a565b9050610c09816020015160ff16825f015163ffffffff16610bcb91906129ea565b60fd5483516001600160401b038083169263ffffffff90921691610bf891600160401b909104168a612a01565b610c029190612a20565b875f6119bf565b90969095509350505050565b5f610c21468484611727565b90505b92915050565b604080518082019091525f8082526020820152610b9a60408051808201909152630393870081526008602082015290565b825f819003610c7d5760405163ec73295960e01b815260040160405180910390fd5b826001600160401b0316805f03610ca75760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec14610cd957604051636494e9f760e01b815260040160405180910390fd5b6002610ce760c95460ff1690565b60ff1603610d085760405163dfc60d8560e01b815260040160405180910390fd5b610d126002611a48565b604051631799c89b60e01b815260040160405180910390fd5b5f8080610d3e6060880160408901612a60565b610d4e9063ffffffff1687612a20565b9050610d6060a0880160808901612a60565b63ffffffff1615801590610d915750610d7f60a0880160808901612a60565b63ffffffff16816001600160401b0316115b15610daf57610da660a0880160808901612a60565b63ffffffff1690505b5f610dbd6020890189612a79565b60ff16610dd060608a0160408b01612a60565b63ffffffff16610de091906129ea565b9050610dfe81878488610df960808e0160608f01612a99565b6119bf565b93509350505094509492505050565b5f438210610e1c57505f919050565b43610e2983610100612ab2565b10610e3357504090565b505f90815260fb602052604090205490565b610e4d6118db565b606580546001600160a01b0383166001600160a01b03199091168117909155610e7e6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610eca60c954610100900460ff1660021490565b15610ee85760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b610f086033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614158015610f455750610f2f816001610c15565b6001600160a01b0316336001600160a01b031614155b15610f6357604051630d85cccf60e11b815260040160405180910390fd5b6002610f7160c95460ff1690565b60ff1603610f925760405163dfc60d8560e01b815260040160405180910390fd5b610f9c6002611a48565b6001600160a01b038216610fc35760405163053fd54760e01b815260040160405180910390fd5b6001600160a01b038316610fe957610fe46001600160a01b03831647611a5e565b611066565b6040516370a0823160e01b81523060048201526110669083906001600160a01b038616906370a0823190602401602060405180830381865afa158015611031573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110559190612a49565b6001600160a01b0386169190611a69565b6110706001611a48565b505050565b825f8190036110975760405163ec73295960e01b815260040160405180910390fd5b846001600160401b0316805f036110c15760405163ec73295960e01b815260040160405180910390fd5b6110d16060840160408501612a60565b63ffffffff16805f036110f75760405163ec73295960e01b815260040160405180910390fd5b6111046020850185612a79565b60ff16805f036111275760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec1461115957604051636494e9f760e01b815260040160405180910390fd5b600261116760c95460ff1690565b60ff16036111885760405163dfc60d8560e01b815260040160405180910390fd5b6111926002611a48565b5f61119e6001436129d7565b90505f5f6111ab8361184b565b915091508160fc54146111d15760405163d719258d60e01b815260040160405180910390fd5b60fc55505f6111e36020880188612a79565b60ff166111f66060890160408a01612a60565b63ffffffff166112069190612a20565b60fd549091506001600160401b03808316600160c01b90920416146112a15760fd54600160c01b90046001600160401b0316156112805760fd5461125e906001600160401b0380821691600160c01b90041683610665565b60fd805467ffffffffffffffff19166001600160401b03929092169190911790555b60fd80546001600160c01b0316600160c01b6001600160401b038416021790555b5060fd545f9081906112db9089906112c990600160801b90046001600160401b0316426129d7565b60fd546001600160401b03168c610d2b565b915091506112e65f90565b1580156112f35750814814155b15611311576040516336d54d4f60e11b815260040160405180910390fd5b60fd805467ffffffffffffffff19166001600160401b039283161790819055600160401b90048116908b16111590506114365761135f6d7369676e616c5f7365727669636560901b5f610c15565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1696024820152908b166044820152606481018a90526001600160a01b039190911690634f90a674906084016020604051808303815f875af11580156113e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140a9190612a49565b5060fd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c16021790555b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe4936114c1938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a150506114d56001611a48565b5050505050505050565b5f826001600160401b03165f036114f7575080610674565b670de0b6b3a76400005f6001600160401b0380861690611519908616846129ea565b6115239190612ad9565b90506001600160ff1b0381111561154d57604051636296f1b960e11b815260040160405180910390fd5b5f61155782611abb565b90505f828802828702015f81126001811461157657858204925061157a565b5f92505b5061158e9050816001600160401b03611cd8565b98975050505050505050565b5f516020612c045f395f51905f52546001600160a01b031690565b6107606118db565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156115f05761107083611cec565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561164a575060408051601f3d908101601f1916820190925261164791810190612a49565b60015b6116ad5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106db565b5f516020612c045f395f51905f52811461171b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106db565b50611070838383611d87565b5f6117328484611db1565b90508115801561174957506001600160a01b038116155b1561067457604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016106db565b61178d60c954610100900460ff1660021490565b6117aa5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6108386118db565b806001600160a01b0381166118395760405163538ba4f960e01b815260040160405180910390fd5b61184283611e5b565b61107082611eb9565b5f5f611855612585565b5f5b60ff8110801561186a5750806001018510155b1561189b575f198186030180408360ff8306610100811061188d5761188d612aec565b602002015250600101611857565b5046611fe0820152612000812092508340816118b860ff87612b00565b61010081106118c9576118c9612aec565b60200201526120009020919391925050565b6033546001600160a01b031633146107815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106db565b606580546001600160a01b031916905561076081611f29565b61196260c954610100900460ff1660021490565b156119805760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016117ff565b5f80806119db63ffffffff86166001600160401b038916612ab2565b9050856001600160401b031681116119f4576001611a07565b611a076001600160401b038716826129d7565b9050611a266001600160401b03611a2083878316611f7a565b90611cd8565b9150611a3b826001600160401b031689611f8f565b9250509550959350505050565b60c9805460ff191660ff92909216919091179055565b61083882825a611fbe565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611070908490612001565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611b1757631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f818311611ce65782610c21565b50919050565b6001600160a01b0381163b611d595760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106db565b5f516020612c045f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d90836120d4565b5f82511180611d9c5750805b1561107057611dab8383612113565b50505050565b6097545f906001600160a01b031680611ddd57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e2f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e539190612b13565b949350505050565b5f54610100900460ff16611e815760405162461bcd60e51b81526004016106db90612b2e565b611e89612138565b611ea76001600160a01b03821615611ea15781611935565b33611935565b5060c9805461ff001916610100179055565b5f54610100900460ff16611edf5760405162461bcd60e51b81526004016106db90612b2e565b6001600160401b03461115611f075760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818311611f885781610c21565b5090919050565b5f5f82611f9c858561215e565b611fa69190612ad9565b90508015611fb45780611e53565b5060019392505050565b815f03611fca57505050565b611fe483838360405180602001604052805f8152506121d8565b61107057604051634c67134d60e11b815260040160405180910390fd5b5f612055826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122159092919063ffffffff16565b905080515f14806120755750808060200190518101906120759190612b79565b6110705760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106db565b6120dd81611cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c218383604051806060016040528060278152602001612c2460279139612223565b5f54610100900460ff166107815760405162461bcd60e51b81526004016106db90612b2e565b5f815f0361217f57604051636296f1b960e11b815260040160405180910390fd5b5f8261219385670de0b6b3a76400006129ea565b61219d9190612ad9565b9050680755bf798b4a1bf1e48111156121bc5750680755bf798b4a1bf1e45b670de0b6b3a76400006121ce82612297565b611e539190612ad9565b5f6001600160a01b03851661220057604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606061067184845f85612411565b60605f5f856001600160a01b03168560405161223f9190612bb6565b5f60405180830381855af49150503d805f8114612277576040519150601f19603f3d011682016040523d82523d5f602084013e61227c565b606091505b509150915061228d868383876124e8565b9695505050505050565b5f68023f2fa8f6da5b9d281982136122ae57919050565b680755bf798b4a1bf1e582126122cb5763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6060824710156124725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106db565b5f5f866001600160a01b0316858760405161248d9190612bb6565b5f6040518083038185875af1925050503d805f81146124c7576040519150601f19603f3d011682016040523d82523d5f602084013e6124cc565b606091505b50915091506124dd878383876124e8565b979650505050505050565b606083156125565782515f0361254f576001600160a01b0385163b61254f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106db565b5081611e53565b611e53838381511561256b5781518083602001fd5b8060405162461bcd60e51b81526004016106db9190612bd1565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b03811681146125bb575f5ffd5b919050565b5f5f5f606084860312156125d2575f5ffd5b6125db846125a5565b92506125e9602085016125a5565b91506125f7604085016125a5565b90509250925092565b6001600160a01b0381168114610760575f5ffd5b5f60208284031215612624575f5ffd5b813561067481612600565b8015158114610760575f5ffd5b5f5f5f6060848603121561264e575f5ffd5b612657846125a5565b925060208401359150604084013561266e8161262f565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561269e575f5ffd5b82356126a981612600565b915060208301356001600160401b038111156126c3575f5ffd5b8301601f810185136126d3575f5ffd5b80356001600160401b038111156126ec576126ec612679565b604051601f8201601f19908116603f011681016001600160401b038111828210171561271a5761271a612679565b604052818152828201602001871015612731575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60808587031215612763575f5ffd5b843561276e81612600565b9350602085013561277e81612600565b925061278c604086016125a5565b915061279a606086016125a5565b905092959194509250565b803563ffffffff811681146125bb575f5ffd5b5f5f604083850312156127c9575f5ffd5b6127d2836125a5565b91506127e0602084016127a5565b90509250929050565b5f5f604083850312156127fa575f5ffd5b82359150602083013561280c8161262f565b809150509250929050565b5f5f5f5f6080858703121561282a575f5ffd5b8435935060208501359250612841604086016125a5565b915061279a606086016127a5565b5f60a08284031215611ce6575f5ffd5b5f5f5f5f6101008587031215612873575f5ffd5b61287d868661284f565b935061288b60a086016125a5565b925061289960c086016125a5565b915061279a60e086016127a5565b5f602082840312156128b7575f5ffd5b5035919050565b5f5f604083850312156128cf575f5ffd5b82356128da81612600565b9150602083013561280c81612600565b5f5f5f5f61010085870312156128fe575f5ffd5b612907856125a5565b93506020850135925061291c604086016127a5565b915061279a866060870161284f565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c2457610c246129c3565b8082028115828204841417610c2457610c246129c3565b6001600160401b038281168282160390811115610c2457610c246129c3565b6001600160401b038181168382160290811690818114612a4257612a426129c3565b5092915050565b5f60208284031215612a59575f5ffd5b5051919050565b5f60208284031215612a70575f5ffd5b610c21826127a5565b5f60208284031215612a89575f5ffd5b813560ff81168114610674575f5ffd5b5f60208284031215612aa9575f5ffd5b610c21826125a5565b80820180821115610c2457610c246129c3565b634e487b7160e01b5f52601260045260245ffd5b5f82612ae757612ae7612ac5565b500490565b634e487b7160e01b5f52603260045260245ffd5b5f82612b0e57612b0e612ac5565b500690565b5f60208284031215612b23575f5ffd5b815161067481612600565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612b89575f5ffd5b81516106748161262f565b5f5b83811015612bae578181015183820152602001612b96565b50505f910152565b5f8251612bc7818460208701612b94565b9190910192915050565b602081525f8251806020840152612bef816040850160208701612b94565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220effaa84efcacfc056fb02202f151620faec2208bfd9251bf5034a0d35854a32e64736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000010001": { - "contractName": "TaikoL2", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670000000000000000000000000000000010002", - "0x00000000000000000000000000000000000000000000000000000000000000fe": "0x0000000000000000000000000000000000000000000000000000000000007a69", - "0x00000000000000000000000000000000000000000000000000000000000000fd": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x00000000000000000000000000000000000000000000000000000000000000fc": "0x56648745cb667f52a0ae5eb338ad021411cede74141e72933401adba6c132b01", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000010001" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010002": { - "contractName": "RollupAddressManagerImpl", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" - }, - "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610301578063a86f9d9e1461031e578063d8f4648f1461033d578063e07baba61461035c578063e30c39781461039b578063f2fde38b146103b8575f5ffd5b80635c975abb14610291578063715018a6146102b157806379ba5097146102c55780638456cb59146102d95780638abf6077146102ed575f5ffd5b80633ab76e9f116100ee5780633ab76e9f1461020a5780633eb6b8cf146102295780633f4ba83a146102485780634f1ef2861461025c57806352d1902d1461026f575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c75780633659cfe6146101eb575b5f5ffd5b348015610135575f5ffd5b5061013e6103d7565b005b34801561014b575f5ffd5b5061013e61015a36600461110e565b610487565b34801561016a575f5ffd5b506101aa610179366004611145565b67ffffffffffffffff919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d2575f5ffd5b506101db61055f565b60405190151581526020016101be565b3480156101f6575f5ffd5b5061013e61020536600461110e565b610577565b348015610215575f5ffd5b506097546101aa906001600160a01b031681565b348015610234575f5ffd5b506101aa61024336600461117c565b61063e565b348015610253575f5ffd5b5061013e610654565b61013e61026a3660046111c9565b610668565b34801561027a575f5ffd5b5061028361071d565b6040519081526020016101be565b34801561029c575f5ffd5b506101db60c954610100900460ff1660021490565b3480156102bc575f5ffd5b5061013e6107ce565b3480156102d0575f5ffd5b5061013e6107df565b3480156102e4575f5ffd5b5061013e610856565b3480156102f8575f5ffd5b506101aa610869565b34801561030c575f5ffd5b506033546001600160a01b03166101aa565b348015610329575f5ffd5b506101aa61033836600461128f565b610877565b348015610348575f5ffd5b5061013e6103573660046112b9565b610883565b348015610367575f5ffd5b5060c9546103829062010000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101be565b3480156103a6575f5ffd5b506065546001600160a01b03166101aa565b3480156103c3575f5ffd5b5061013e6103d236600461110e565b610961565b6103df6109d2565b5f54600290610100900460ff161580156103ff57505f5460ff8083169116105b6104245760405162461bcd60e51b815260040161041b906112f6565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156104a557505f54600160ff909116105b806104be5750303b1580156104be57505f5460ff166001145b6104da5760405162461bcd60e51b815260040161041b906112f6565b5f805460ff1916600117905580156104fb575f805461ff0019166101001790555b61050482610a2c565b609780546001600160a01b03191630179055801561055b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261056e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100021630036105bf5760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670000000000000000000000000000000100026001600160a01b03166105f1610a8a565b6001600160a01b0316146106175760405162461bcd60e51b815260040161041b90611390565b61062081610aa5565b604080515f8082526020820190925261063b91839190610aad565b50565b5f61064a848484610c1c565b90505b9392505050565b61065c610c6f565b610666335f610d00565b565b6001600160a01b037f00000000000000000000000001670000000000000000000000000000000100021630036106b05760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670000000000000000000000000000000100026001600160a01b03166106e2610a8a565b6001600160a01b0316146107085760405162461bcd60e51b815260040161041b90611390565b61071182610aa5565b61055b82826001610aad565b5f306001600160a01b037f000000000000000000000000016700000000000000000000000000000001000216146107bc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161041b565b505f5160206114c95f395f51905f5290565b6107d66109d2565b6106665f610d19565b60655433906001600160a01b0316811461084d5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161041b565b61063b81610d19565b61085e610d32565b610666336001610d00565b5f610872610a8a565b905090565b5f61064d468484610c1c565b61088b6109d2565b67ffffffffffffffff83165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108dd5760405163a883089360e01b815260040160405180910390fd5b67ffffffffffffffff84165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109696109d2565b606580546001600160a01b0383166001600160a01b0319909116811790915561099a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161041b565b5f54610100900460ff16610a525760405162461bcd60e51b815260040161041b906113dc565b610a5a610da3565b610a786001600160a01b03821615610a725781610d19565b33610d19565b5060c9805461ff001916610100179055565b5f5160206114c95f395f51905f52546001600160a01b031690565b61063b6109d2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610ae557610ae083610dc9565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b3f575060408051601f3d908101601f19168201909252610b3c91810190611427565b60015b610ba25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161041b565b5f5160206114c95f395f51905f528114610c105760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161041b565b50610ae0838383610e64565b5f610c278484610e8e565b905081158015610c3e57506001600160a01b038116155b1561064d57604051632b0d65db60e01b815267ffffffffffffffff851660048201526024810184905260440161041b565b610c8360c954610100900460ff1660021490565b610ca05760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff0019909116620100004267ffffffffffffffff1602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561063b81610f39565b610d4660c954610100900460ff1660021490565b15610d645760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cf6565b5f54610100900460ff166106665760405162461bcd60e51b815260040161041b906113dc565b6001600160a01b0381163b610e365760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161041b565b5f5160206114c95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610e6d83610f8a565b5f82511180610e795750805b15610ae057610e888383610fc9565b50505050565b6097545f906001600160a01b031680610eba57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b815267ffffffffffffffff85166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f31919061143e565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610f9381610dc9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061064d83836040518060600160405280602781526020016114e96027913960605f5f856001600160a01b031685604051611005919061147b565b5f60405180830381855af49150503d805f811461103d576040519150601f19603f3d011682016040523d82523d5f602084013e611042565b606091505b50915091506110538683838761105d565b9695505050505050565b606083156110cb5782515f036110c4576001600160a01b0385163b6110c45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161041b565b5081610f31565b610f3183838151156110e05781518083602001fd5b8060405162461bcd60e51b815260040161041b9190611496565b6001600160a01b038116811461063b575f5ffd5b5f6020828403121561111e575f5ffd5b813561064d816110fa565b803567ffffffffffffffff81168114611140575f5ffd5b919050565b5f5f60408385031215611156575f5ffd5b61115f83611129565b946020939093013593505050565b80358015158114611140575f5ffd5b5f5f5f6060848603121561118e575f5ffd5b61119784611129565b9250602084013591506111ac6040850161116d565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156111da575f5ffd5b82356111e5816110fa565b9150602083013567ffffffffffffffff811115611200575f5ffd5b8301601f81018513611210575f5ffd5b803567ffffffffffffffff81111561122a5761122a6111b5565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611259576112596111b5565b604052818152828201602001871015611270575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156112a0575f5ffd5b823591506112b06020840161116d565b90509250929050565b5f5f5f606084860312156112cb575f5ffd5b6112d484611129565b92506020840135915060408401356112eb816110fa565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611437575f5ffd5b5051919050565b5f6020828403121561144e575f5ffd5b815161064d816110fa565b5f5b8381101561147357818101518382015260200161145b565b50505f910152565b5f825161148c818460208701611459565b9190910192915050565b602081525f82518060208401526114b4816040850160208701611459565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220086d22e71c4d170ad7ce74f948ce47f2f39076babb18c7b950d99c756006877464736f6c634300081b0033", - "balance": "0x0" - }, - "0x1670000000000000000000000000000000010002": { - "contractName": "RollupAddressManager", - "storage": { - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", - "0x6f603ad772aee14bf097b20bcdc2c1ce5646bfcfbe0e42c192e55416269268c9": "0x0000000000000000000000001670000000000000000000000000000000010001", - "0xee78643889fcb54c297d0ecf866d9df7d829a8c978e52394d135cdb40a501e38": "0x0000000000000000000000001670000000000000000000000000000000000001", - "0xd724ebf31fb7ffa376a4d5d51b51967009df0c86a4dfef5f55507cde2eb36739": "0x0000000000000000000000001670000000000000000000000000000000000005", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167000000000000000000000000000000010002" - }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", - "balance": "0x0" - }, - "0xbB21206518394cd6DaF38A6C31A3B1461b77CBC8": { - "contractName": "LibNetwork", - "storage": {}, - "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204213774d0b1a3b266888223284a425ae694a8c5e97b18403ec7f442200eae55a64736f6c634300081b0033", - "balance": "0x0" - }, - "0x0167000000000000000000000000000000010099": { - "contractName": "RegularERC20", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000003": "0x526567756c617245524332300000000000000000000000000000000000000018", - "0x0000000000000000000000000000000000000000000000000000000000000004": "0x52474c0000000000000000000000000000000000000000000000000000000006", - "0x0000000000000000000000000000000000000000000000000000000000000002": "0x00000000000000000000000000000000000000000000000000000000001f4000", - "0x1fe6b582a6b4d9b61da9024a045cb9bafc343b4b12713ba001e47b3500867413": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0xaaa7f9b700b86a1f8ec5dacd0ca81e3b1ea8214dae2b1856095f9d44c1f5b380": "0x00000000000000000000000000000000000000000000000000000000000fa000" - }, - "code": "0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf919061068a565b60405180910390f35b6100db6100d63660046106f0565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610718565b610244565b604051601281526020016100bf565b6100db61012d3660046106f0565b610267565b6100ef610140366004610752565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db6101703660046106f0565b610297565b6100db6101833660046106f0565b610316565b6100ef610196366004610772565b610323565b6060600380546101aa906107a3565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107a3565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107db565b61034d565b6060600480546101aa906107a3565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104e2565b602081525f82518060208401525f5b818110156106b65760208186018101516040868401015201610699565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106eb575f5ffd5b919050565b5f5f60408385031215610701575f5ffd5b61070a836106d5565b946020939093013593505050565b5f5f5f6060848603121561072a575f5ffd5b610733846106d5565b9250610741602085016106d5565b929592945050506040919091013590565b5f60208284031215610762575f5ffd5b61076b826106d5565b9392505050565b5f5f60408385031215610783575f5ffd5b61078c836106d5565b915061079a602084016106d5565b90509250929050565b600181811c908216806107b757607f821691505b6020821081036107d557634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220a1403924b9774521e0b2e4d325575d166c7612abf0d4b532ee23317cd4225a6b64736f6c634300081b0033", - "balance": "0x0" - } -} \ No newline at end of file diff --git a/packages/protocol/test/genesis/data/genesis_storage_layout.json b/packages/protocol/test/genesis/data/genesis_storage_layout.json deleted file mode 100644 index a7fb004322d..00000000000 --- a/packages/protocol/test/genesis/data/genesis_storage_layout.json +++ /dev/null @@ -1,4667 +0,0 @@ -{ - "SharedAddressManagerImpl": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3541, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__addresses", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_address))" - }, - { - "astId": 3545, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)49_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_address)": { - "encoding": "mapping", - "key": "t_bytes32", - "label": "mapping(bytes32 => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_uint256,t_mapping(t_bytes32,t_address))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(bytes32 => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_bytes32,t_address)" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "SharedAddressManager": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3541, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__addresses", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_address))" - }, - { - "astId": 3545, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)49_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_address)": { - "encoding": "mapping", - "key": "t_bytes32", - "label": "mapping(bytes32 => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_uint256,t_mapping(t_bytes32,t_address))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(bytes32 => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_bytes32,t_address)" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "BridgeImpl": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 1731, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reserved1", - "offset": 0, - "slot": "251", - "type": "t_uint64" - }, - { - "astId": 1733, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "nextMessageId", - "offset": 8, - "slot": "251", - "type": "t_uint64" - }, - { - "astId": 1739, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "messageStatus", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_bytes32,t_enum(Status)3366)" - }, - { - "astId": 1743, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__ctx", - "offset": 0, - "slot": "253", - "type": "t_struct(Context)3401_storage" - }, - { - "astId": 1746, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reserved2", - "offset": 0, - "slot": "255", - "type": "t_uint256" - }, - { - "astId": 1749, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reserved3", - "offset": 0, - "slot": "256", - "type": "t_uint256" - }, - { - "astId": 1753, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "257", - "type": "t_array(t_uint256)44_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)44_storage": { - "encoding": "inplace", - "label": "uint256[44]", - "numberOfBytes": "1408", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_enum(Status)3366": { - "encoding": "inplace", - "label": "enum IBridge.Status", - "numberOfBytes": "1" - }, - "t_mapping(t_bytes32,t_enum(Status)3366)": { - "encoding": "mapping", - "key": "t_bytes32", - "label": "mapping(bytes32 => enum IBridge.Status)", - "numberOfBytes": "32", - "value": "t_enum(Status)3366" - }, - "t_struct(Context)3401_storage": { - "encoding": "inplace", - "label": "struct IBridge.Context", - "numberOfBytes": "64", - "members": [ - { - "astId": 3396, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "msgHash", - "offset": 0, - "slot": "0", - "type": "t_bytes32" - }, - { - "astId": 3398, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "from", - "offset": 0, - "slot": "1", - "type": "t_address" - }, - { - "astId": 3400, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "srcChainId", - "offset": 20, - "slot": "1", - "type": "t_uint64" - } - ] - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "Bridge": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 1731, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reserved1", - "offset": 0, - "slot": "251", - "type": "t_uint64" - }, - { - "astId": 1733, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "nextMessageId", - "offset": 8, - "slot": "251", - "type": "t_uint64" - }, - { - "astId": 1739, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "messageStatus", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_bytes32,t_enum(Status)3366)" - }, - { - "astId": 1743, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__ctx", - "offset": 0, - "slot": "253", - "type": "t_struct(Context)3401_storage" - }, - { - "astId": 1746, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reserved2", - "offset": 0, - "slot": "255", - "type": "t_uint256" - }, - { - "astId": 1749, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__reserved3", - "offset": 0, - "slot": "256", - "type": "t_uint256" - }, - { - "astId": 1753, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "__gap", - "offset": 0, - "slot": "257", - "type": "t_array(t_uint256)44_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)44_storage": { - "encoding": "inplace", - "label": "uint256[44]", - "numberOfBytes": "1408", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_enum(Status)3366": { - "encoding": "inplace", - "label": "enum IBridge.Status", - "numberOfBytes": "1" - }, - "t_mapping(t_bytes32,t_enum(Status)3366)": { - "encoding": "mapping", - "key": "t_bytes32", - "label": "mapping(bytes32 => enum IBridge.Status)", - "numberOfBytes": "32", - "value": "t_enum(Status)3366" - }, - "t_struct(Context)3401_storage": { - "encoding": "inplace", - "label": "struct IBridge.Context", - "numberOfBytes": "64", - "members": [ - { - "astId": 3396, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "msgHash", - "offset": 0, - "slot": "0", - "type": "t_bytes32" - }, - { - "astId": 3398, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "from", - "offset": 0, - "slot": "1", - "type": "t_address" - }, - { - "astId": 3400, - "contract": "contracts/shared/bridge/Bridge.sol:Bridge", - "label": "srcChainId", - "offset": 20, - "slot": "1", - "type": "t_uint64" - } - ] - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "ERC20VaultImpl": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 6455, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 8553, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "bridgedToCanonical", - "offset": 0, - "slot": "301", - "type": "t_mapping(t_address,t_struct(CanonicalERC20)8531_storage)" - }, - { - "astId": 8560, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "canonicalToBridged", - "offset": 0, - "slot": "302", - "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))" - }, - { - "astId": 8565, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "btokenDenylist", - "offset": 0, - "slot": "303", - "type": "t_mapping(t_address,t_bool)" - }, - { - "astId": 8572, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "lastMigrationStart", - "offset": 0, - "slot": "304", - "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))" - }, - { - "astId": 8576, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "305", - "type": "t_array(t_uint256)46_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)46_storage": { - "encoding": "inplace", - "label": "uint256[46]", - "numberOfBytes": "1472", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_address)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_address,t_bool)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => bool)", - "numberOfBytes": "32", - "value": "t_bool" - }, - "t_mapping(t_address,t_struct(CanonicalERC20)8531_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct ERC20Vault.CanonicalERC20)", - "numberOfBytes": "32", - "value": "t_struct(CanonicalERC20)8531_storage" - }, - "t_mapping(t_address,t_uint256)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => uint256)", - "numberOfBytes": "32", - "value": "t_uint256" - }, - "t_mapping(t_uint256,t_mapping(t_address,t_address))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(address => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_address)" - }, - "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(address => uint256))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_uint256)" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(CanonicalERC20)8531_storage": { - "encoding": "inplace", - "label": "struct ERC20Vault.CanonicalERC20", - "numberOfBytes": "96", - "members": [ - { - "astId": 8522, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "chainId", - "offset": 0, - "slot": "0", - "type": "t_uint64" - }, - { - "astId": 8524, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "addr", - "offset": 8, - "slot": "0", - "type": "t_address" - }, - { - "astId": 8526, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "decimals", - "offset": 28, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 8528, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "symbol", - "offset": 0, - "slot": "1", - "type": "t_string_storage" - }, - { - "astId": 8530, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "name", - "offset": 0, - "slot": "2", - "type": "t_string_storage" - } - ] - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "ERC20Vault": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 6455, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 8553, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "bridgedToCanonical", - "offset": 0, - "slot": "301", - "type": "t_mapping(t_address,t_struct(CanonicalERC20)8531_storage)" - }, - { - "astId": 8560, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "canonicalToBridged", - "offset": 0, - "slot": "302", - "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))" - }, - { - "astId": 8565, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "btokenDenylist", - "offset": 0, - "slot": "303", - "type": "t_mapping(t_address,t_bool)" - }, - { - "astId": 8572, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "lastMigrationStart", - "offset": 0, - "slot": "304", - "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))" - }, - { - "astId": 8576, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "__gap", - "offset": 0, - "slot": "305", - "type": "t_array(t_uint256)46_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)46_storage": { - "encoding": "inplace", - "label": "uint256[46]", - "numberOfBytes": "1472", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_address)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_address,t_bool)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => bool)", - "numberOfBytes": "32", - "value": "t_bool" - }, - "t_mapping(t_address,t_struct(CanonicalERC20)8531_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct ERC20Vault.CanonicalERC20)", - "numberOfBytes": "32", - "value": "t_struct(CanonicalERC20)8531_storage" - }, - "t_mapping(t_address,t_uint256)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => uint256)", - "numberOfBytes": "32", - "value": "t_uint256" - }, - "t_mapping(t_uint256,t_mapping(t_address,t_address))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(address => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_address)" - }, - "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(address => uint256))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_uint256)" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(CanonicalERC20)8531_storage": { - "encoding": "inplace", - "label": "struct ERC20Vault.CanonicalERC20", - "numberOfBytes": "96", - "members": [ - { - "astId": 8522, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "chainId", - "offset": 0, - "slot": "0", - "type": "t_uint64" - }, - { - "astId": 8524, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "addr", - "offset": 8, - "slot": "0", - "type": "t_address" - }, - { - "astId": 8526, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "decimals", - "offset": 28, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 8528, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "symbol", - "offset": 0, - "slot": "1", - "type": "t_string_storage" - }, - { - "astId": 8530, - "contract": "contracts/shared/tokenvault/ERC20Vault.sol:ERC20Vault", - "label": "name", - "offset": 0, - "slot": "2", - "type": "t_string_storage" - } - ] - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "ERC721VaultImpl": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 6455, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 6297, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "bridgedToCanonical", - "offset": 0, - "slot": "301", - "type": "t_mapping(t_address,t_struct(CanonicalNFT)6271_storage)" - }, - { - "astId": 6304, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "canonicalToBridged", - "offset": 0, - "slot": "302", - "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))" - }, - { - "astId": 6308, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "303", - "type": "t_array(t_uint256)48_storage" - }, - { - "astId": 9622, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "351", - "type": "t_array(t_uint256)50_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)48_storage": { - "encoding": "inplace", - "label": "uint256[48]", - "numberOfBytes": "1536", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_address)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_address,t_struct(CanonicalNFT)6271_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct BaseNFTVault.CanonicalNFT)", - "numberOfBytes": "32", - "value": "t_struct(CanonicalNFT)6271_storage" - }, - "t_mapping(t_uint256,t_mapping(t_address,t_address))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(address => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_address)" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(CanonicalNFT)6271_storage": { - "encoding": "inplace", - "label": "struct BaseNFTVault.CanonicalNFT", - "numberOfBytes": "96", - "members": [ - { - "astId": 6264, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "chainId", - "offset": 0, - "slot": "0", - "type": "t_uint64" - }, - { - "astId": 6266, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "addr", - "offset": 8, - "slot": "0", - "type": "t_address" - }, - { - "astId": 6268, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "symbol", - "offset": 0, - "slot": "1", - "type": "t_string_storage" - }, - { - "astId": 6270, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "name", - "offset": 0, - "slot": "2", - "type": "t_string_storage" - } - ] - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "ERC721Vault": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 6455, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 6297, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "bridgedToCanonical", - "offset": 0, - "slot": "301", - "type": "t_mapping(t_address,t_struct(CanonicalNFT)6271_storage)" - }, - { - "astId": 6304, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "canonicalToBridged", - "offset": 0, - "slot": "302", - "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))" - }, - { - "astId": 6308, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "303", - "type": "t_array(t_uint256)48_storage" - }, - { - "astId": 9622, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "__gap", - "offset": 0, - "slot": "351", - "type": "t_array(t_uint256)50_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)48_storage": { - "encoding": "inplace", - "label": "uint256[48]", - "numberOfBytes": "1536", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_address)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_address,t_struct(CanonicalNFT)6271_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct BaseNFTVault.CanonicalNFT)", - "numberOfBytes": "32", - "value": "t_struct(CanonicalNFT)6271_storage" - }, - "t_mapping(t_uint256,t_mapping(t_address,t_address))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(address => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_address)" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(CanonicalNFT)6271_storage": { - "encoding": "inplace", - "label": "struct BaseNFTVault.CanonicalNFT", - "numberOfBytes": "96", - "members": [ - { - "astId": 6264, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "chainId", - "offset": 0, - "slot": "0", - "type": "t_uint64" - }, - { - "astId": 6266, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "addr", - "offset": 8, - "slot": "0", - "type": "t_address" - }, - { - "astId": 6268, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "symbol", - "offset": 0, - "slot": "1", - "type": "t_string_storage" - }, - { - "astId": 6270, - "contract": "contracts/shared/tokenvault/ERC721Vault.sol:ERC721Vault", - "label": "name", - "offset": 0, - "slot": "2", - "type": "t_string_storage" - } - ] - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "ERC1155VaultImpl": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 6455, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 6297, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "bridgedToCanonical", - "offset": 0, - "slot": "301", - "type": "t_mapping(t_address,t_struct(CanonicalNFT)6271_storage)" - }, - { - "astId": 6304, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "canonicalToBridged", - "offset": 0, - "slot": "302", - "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))" - }, - { - "astId": 6308, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "303", - "type": "t_array(t_uint256)48_storage" - }, - { - "astId": 16774, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "351", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 12581, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "401", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 7757, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "451", - "type": "t_array(t_uint256)50_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)48_storage": { - "encoding": "inplace", - "label": "uint256[48]", - "numberOfBytes": "1536", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_address)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_address,t_struct(CanonicalNFT)6271_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct BaseNFTVault.CanonicalNFT)", - "numberOfBytes": "32", - "value": "t_struct(CanonicalNFT)6271_storage" - }, - "t_mapping(t_uint256,t_mapping(t_address,t_address))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(address => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_address)" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(CanonicalNFT)6271_storage": { - "encoding": "inplace", - "label": "struct BaseNFTVault.CanonicalNFT", - "numberOfBytes": "96", - "members": [ - { - "astId": 6264, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "chainId", - "offset": 0, - "slot": "0", - "type": "t_uint64" - }, - { - "astId": 6266, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "addr", - "offset": 8, - "slot": "0", - "type": "t_address" - }, - { - "astId": 6268, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "symbol", - "offset": 0, - "slot": "1", - "type": "t_string_storage" - }, - { - "astId": 6270, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "name", - "offset": 0, - "slot": "2", - "type": "t_string_storage" - } - ] - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "ERC1155Vault": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 6455, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 6297, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "bridgedToCanonical", - "offset": 0, - "slot": "301", - "type": "t_mapping(t_address,t_struct(CanonicalNFT)6271_storage)" - }, - { - "astId": 6304, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "canonicalToBridged", - "offset": 0, - "slot": "302", - "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))" - }, - { - "astId": 6308, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "303", - "type": "t_array(t_uint256)48_storage" - }, - { - "astId": 16774, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "351", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 12581, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "401", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 7757, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "__gap", - "offset": 0, - "slot": "451", - "type": "t_array(t_uint256)50_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)48_storage": { - "encoding": "inplace", - "label": "uint256[48]", - "numberOfBytes": "1536", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_address)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_address,t_struct(CanonicalNFT)6271_storage)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => struct BaseNFTVault.CanonicalNFT)", - "numberOfBytes": "32", - "value": "t_struct(CanonicalNFT)6271_storage" - }, - "t_mapping(t_uint256,t_mapping(t_address,t_address))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(address => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_address)" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(CanonicalNFT)6271_storage": { - "encoding": "inplace", - "label": "struct BaseNFTVault.CanonicalNFT", - "numberOfBytes": "96", - "members": [ - { - "astId": 6264, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "chainId", - "offset": 0, - "slot": "0", - "type": "t_uint64" - }, - { - "astId": 6266, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "addr", - "offset": 8, - "slot": "0", - "type": "t_address" - }, - { - "astId": 6268, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "symbol", - "offset": 0, - "slot": "1", - "type": "t_string_storage" - }, - { - "astId": 6270, - "contract": "contracts/shared/tokenvault/ERC1155Vault.sol:ERC1155Vault", - "label": "name", - "offset": 0, - "slot": "2", - "type": "t_string_storage" - } - ] - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "BridgedERC20": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 12602, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "_balances", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_address,t_uint256)" - }, - { - "astId": 12608, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "_allowances", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" - }, - { - "astId": 12610, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "_totalSupply", - "offset": 0, - "slot": "253", - "type": "t_uint256" - }, - { - "astId": 12612, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "_name", - "offset": 0, - "slot": "254", - "type": "t_string_storage" - }, - { - "astId": 12614, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "_symbol", - "offset": 0, - "slot": "255", - "type": "t_string_storage" - }, - { - "astId": 13194, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "__gap", - "offset": 0, - "slot": "256", - "type": "t_array(t_uint256)45_storage" - }, - { - "astId": 6899, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "srcToken", - "offset": 0, - "slot": "301", - "type": "t_address" - }, - { - "astId": 6901, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "__srcDecimals", - "offset": 20, - "slot": "301", - "type": "t_uint8" - }, - { - "astId": 6904, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "srcChainId", - "offset": 0, - "slot": "302", - "type": "t_uint256" - }, - { - "astId": 6907, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "migratingAddress", - "offset": 0, - "slot": "303", - "type": "t_address" - }, - { - "astId": 6910, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "migratingInbound", - "offset": 20, - "slot": "303", - "type": "t_bool" - }, - { - "astId": 6914, - "contract": "contracts/shared/tokenvault/BridgedERC20.sol:BridgedERC20", - "label": "__gap", - "offset": 0, - "slot": "304", - "type": "t_array(t_uint256)47_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)45_storage": { - "encoding": "inplace", - "label": "uint256[45]", - "numberOfBytes": "1440", - "base": "t_uint256" - }, - "t_array(t_uint256)47_storage": { - "encoding": "inplace", - "label": "uint256[47]", - "numberOfBytes": "1504", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_mapping(t_address,t_uint256))": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => mapping(address => uint256))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_uint256)" - }, - "t_mapping(t_address,t_uint256)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => uint256)", - "numberOfBytes": "32", - "value": "t_uint256" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "BridgedERC721": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 16774, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 14311, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "_name", - "offset": 0, - "slot": "301", - "type": "t_string_storage" - }, - { - "astId": 14313, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "_symbol", - "offset": 0, - "slot": "302", - "type": "t_string_storage" - }, - { - "astId": 14317, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "_owners", - "offset": 0, - "slot": "303", - "type": "t_mapping(t_uint256,t_address)" - }, - { - "astId": 14321, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "_balances", - "offset": 0, - "slot": "304", - "type": "t_mapping(t_address,t_uint256)" - }, - { - "astId": 14325, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "_tokenApprovals", - "offset": 0, - "slot": "305", - "type": "t_mapping(t_uint256,t_address)" - }, - { - "astId": 14331, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "_operatorApprovals", - "offset": 0, - "slot": "306", - "type": "t_mapping(t_address,t_mapping(t_address,t_bool))" - }, - { - "astId": 15233, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "__gap", - "offset": 0, - "slot": "307", - "type": "t_array(t_uint256)44_storage" - }, - { - "astId": 7538, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "srcToken", - "offset": 0, - "slot": "351", - "type": "t_address" - }, - { - "astId": 7541, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "srcChainId", - "offset": 0, - "slot": "352", - "type": "t_uint256" - }, - { - "astId": 7545, - "contract": "contracts/shared/tokenvault/BridgedERC721.sol:BridgedERC721", - "label": "__gap", - "offset": 0, - "slot": "353", - "type": "t_array(t_uint256)48_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)44_storage": { - "encoding": "inplace", - "label": "uint256[44]", - "numberOfBytes": "1408", - "base": "t_uint256" - }, - "t_array(t_uint256)48_storage": { - "encoding": "inplace", - "label": "uint256[48]", - "numberOfBytes": "1536", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_bool)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => bool)", - "numberOfBytes": "32", - "value": "t_bool" - }, - "t_mapping(t_address,t_mapping(t_address,t_bool))": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => mapping(address => bool))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_bool)" - }, - "t_mapping(t_address,t_uint256)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => uint256)", - "numberOfBytes": "32", - "value": "t_uint256" - }, - "t_mapping(t_uint256,t_address)": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "BridgedERC1155": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 16774, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "__gap", - "offset": 0, - "slot": "251", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 11133, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "_balances", - "offset": 0, - "slot": "301", - "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))" - }, - { - "astId": 11139, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "_operatorApprovals", - "offset": 0, - "slot": "302", - "type": "t_mapping(t_address,t_mapping(t_address,t_bool))" - }, - { - "astId": 11141, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "_uri", - "offset": 0, - "slot": "303", - "type": "t_string_storage" - }, - { - "astId": 12348, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "__gap", - "offset": 0, - "slot": "304", - "type": "t_array(t_uint256)47_storage" - }, - { - "astId": 6672, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "srcToken", - "offset": 0, - "slot": "351", - "type": "t_address" - }, - { - "astId": 6675, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "srcChainId", - "offset": 0, - "slot": "352", - "type": "t_uint256" - }, - { - "astId": 6678, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "symbol", - "offset": 0, - "slot": "353", - "type": "t_string_storage" - }, - { - "astId": 6681, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "name", - "offset": 0, - "slot": "354", - "type": "t_string_storage" - }, - { - "astId": 6685, - "contract": "contracts/shared/tokenvault/BridgedERC1155.sol:BridgedERC1155", - "label": "__gap", - "offset": 0, - "slot": "355", - "type": "t_array(t_uint256)46_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)46_storage": { - "encoding": "inplace", - "label": "uint256[46]", - "numberOfBytes": "1472", - "base": "t_uint256" - }, - "t_array(t_uint256)47_storage": { - "encoding": "inplace", - "label": "uint256[47]", - "numberOfBytes": "1504", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_bool)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => bool)", - "numberOfBytes": "32", - "value": "t_bool" - }, - "t_mapping(t_address,t_mapping(t_address,t_bool))": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => mapping(address => bool))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_bool)" - }, - "t_mapping(t_address,t_uint256)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => uint256)", - "numberOfBytes": "32", - "value": "t_uint256" - }, - "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(address => uint256))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_uint256)" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "SignalServiceImpl": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 5234, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "topBlockId", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_uint64))" - }, - { - "astId": 5239, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "isAuthorized", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_address,t_bool)" - }, - { - "astId": 5243, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "253", - "type": "t_array(t_uint256)48_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)48_storage": { - "encoding": "inplace", - "label": "uint256[48]", - "numberOfBytes": "1536", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => bool)", - "numberOfBytes": "32", - "value": "t_bool" - }, - "t_mapping(t_bytes32,t_uint64)": { - "encoding": "mapping", - "key": "t_bytes32", - "label": "mapping(bytes32 => uint64)", - "numberOfBytes": "32", - "value": "t_uint64" - }, - "t_mapping(t_uint64,t_mapping(t_bytes32,t_uint64))": { - "encoding": "mapping", - "key": "t_uint64", - "label": "mapping(uint64 => mapping(bytes32 => uint64))", - "numberOfBytes": "32", - "value": "t_mapping(t_bytes32,t_uint64)" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "SignalService": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 5234, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "topBlockId", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_uint64,t_mapping(t_bytes32,t_uint64))" - }, - { - "astId": 5239, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "isAuthorized", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_address,t_bool)" - }, - { - "astId": 5243, - "contract": "contracts/shared/signal/SignalService.sol:SignalService", - "label": "__gap", - "offset": 0, - "slot": "253", - "type": "t_array(t_uint256)48_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)48_storage": { - "encoding": "inplace", - "label": "uint256[48]", - "numberOfBytes": "1536", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => bool)", - "numberOfBytes": "32", - "value": "t_bool" - }, - "t_mapping(t_bytes32,t_uint64)": { - "encoding": "mapping", - "key": "t_bytes32", - "label": "mapping(bytes32 => uint64)", - "numberOfBytes": "32", - "value": "t_uint64" - }, - "t_mapping(t_uint64,t_mapping(t_bytes32,t_uint64))": { - "encoding": "mapping", - "key": "t_uint64", - "label": "mapping(uint64 => mapping(bytes32 => uint64))", - "numberOfBytes": "32", - "value": "t_mapping(t_bytes32,t_uint64)" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "TaikoL2Impl": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 684, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "_blockhashes", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_uint256,t_bytes32)" - }, - { - "astId": 687, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "publicInputHash", - "offset": 0, - "slot": "252", - "type": "t_bytes32" - }, - { - "astId": 690, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "parentGasExcess", - "offset": 0, - "slot": "253", - "type": "t_uint64" - }, - { - "astId": 693, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "lastSyncedBlock", - "offset": 8, - "slot": "253", - "type": "t_uint64" - }, - { - "astId": 695, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "parentTimestamp", - "offset": 16, - "slot": "253", - "type": "t_uint64" - }, - { - "astId": 697, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "parentGasTarget", - "offset": 24, - "slot": "253", - "type": "t_uint64" - }, - { - "astId": 700, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "l1ChainId", - "offset": 0, - "slot": "254", - "type": "t_uint64" - }, - { - "astId": 704, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "255", - "type": "t_array(t_uint256)46_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)46_storage": { - "encoding": "inplace", - "label": "uint256[46]", - "numberOfBytes": "1472", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_bytes32)": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => bytes32)", - "numberOfBytes": "32", - "value": "t_bytes32" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "TaikoL2": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 684, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "_blockhashes", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_uint256,t_bytes32)" - }, - { - "astId": 687, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "publicInputHash", - "offset": 0, - "slot": "252", - "type": "t_bytes32" - }, - { - "astId": 690, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "parentGasExcess", - "offset": 0, - "slot": "253", - "type": "t_uint64" - }, - { - "astId": 693, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "lastSyncedBlock", - "offset": 8, - "slot": "253", - "type": "t_uint64" - }, - { - "astId": 695, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "parentTimestamp", - "offset": 16, - "slot": "253", - "type": "t_uint64" - }, - { - "astId": 697, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "parentGasTarget", - "offset": 24, - "slot": "253", - "type": "t_uint64" - }, - { - "astId": 700, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "l1ChainId", - "offset": 0, - "slot": "254", - "type": "t_uint64" - }, - { - "astId": 704, - "contract": "contracts/layer2/based/TaikoL2.sol:TaikoL2", - "label": "__gap", - "offset": 0, - "slot": "255", - "type": "t_array(t_uint256)46_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)46_storage": { - "encoding": "inplace", - "label": "uint256[46]", - "numberOfBytes": "1472", - "base": "t_uint256" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_bytes32)": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => bytes32)", - "numberOfBytes": "32", - "value": "t_bytes32" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "RollupAddressManagerImpl": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3541, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__addresses", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_address))" - }, - { - "astId": 3545, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)49_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_address)": { - "encoding": "mapping", - "key": "t_bytes32", - "label": "mapping(bytes32 => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_uint256,t_mapping(t_bytes32,t_address))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(bytes32 => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_bytes32,t_address)" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "RollupAddressManager": { - "storage": [ - { - "astId": 10941, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 10944, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool" - }, - { - "astId": 15775, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage" - }, - { - "astId": 10686, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address" - }, - { - "astId": 10806, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 10579, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "_pendingOwner", - "offset": 0, - "slot": "101", - "type": "t_address" - }, - { - "astId": 10673, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3680, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "addressManager", - "offset": 0, - "slot": "151", - "type": "t_address" - }, - { - "astId": 3684, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3936, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__reentry", - "offset": 0, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3938, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__paused", - "offset": 1, - "slot": "201", - "type": "t_uint8" - }, - { - "astId": 3940, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "lastUnpausedAt", - "offset": 2, - "slot": "201", - "type": "t_uint64" - }, - { - "astId": 3944, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage" - }, - { - "astId": 3541, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__addresses", - "offset": 0, - "slot": "251", - "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_address))" - }, - { - "astId": 3545, - "contract": "contracts/shared/common/AddressManager.sol:AddressManager", - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)49_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "encoding": "inplace", - "label": "uint256[49]", - "numberOfBytes": "1568", - "base": "t_uint256" - }, - "t_array(t_uint256)50_storage": { - "encoding": "inplace", - "label": "uint256[50]", - "numberOfBytes": "1600", - "base": "t_uint256" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_address)": { - "encoding": "mapping", - "key": "t_bytes32", - "label": "mapping(bytes32 => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_uint256,t_mapping(t_bytes32,t_address))": { - "encoding": "mapping", - "key": "t_uint256", - "label": "mapping(uint256 => mapping(bytes32 => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_bytes32,t_address)" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint64": { - "encoding": "inplace", - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - }, - "LibNetwork": { - "storage": [], - "types": {} - }, - "RegularERC20": { - "storage": [ - { - "astId": 20324, - "contract": "test/shared/token/RegularERC20.sol:RegularERC20", - "label": "_balances", - "offset": 0, - "slot": "0", - "type": "t_mapping(t_address,t_uint256)" - }, - { - "astId": 20330, - "contract": "test/shared/token/RegularERC20.sol:RegularERC20", - "label": "_allowances", - "offset": 0, - "slot": "1", - "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" - }, - { - "astId": 20332, - "contract": "test/shared/token/RegularERC20.sol:RegularERC20", - "label": "_totalSupply", - "offset": 0, - "slot": "2", - "type": "t_uint256" - }, - { - "astId": 20334, - "contract": "test/shared/token/RegularERC20.sol:RegularERC20", - "label": "_name", - "offset": 0, - "slot": "3", - "type": "t_string_storage" - }, - { - "astId": 20336, - "contract": "test/shared/token/RegularERC20.sol:RegularERC20", - "label": "_symbol", - "offset": 0, - "slot": "4", - "type": "t_string_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_mapping(t_address,t_uint256))": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => mapping(address => uint256))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_uint256)" - }, - "t_mapping(t_address,t_uint256)": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => uint256)", - "numberOfBytes": "32", - "value": "t_uint256" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - } - } - } -} \ No newline at end of file diff --git a/packages/protocol/test/layer1/automata-attestation/common/AttestationBase.t.sol b/packages/protocol/test/layer1/automata-attestation/common/AttestationBase.t.sol index cd641b3c919..1f2d71a67ce 100644 --- a/packages/protocol/test/layer1/automata-attestation/common/AttestationBase.t.sol +++ b/packages/protocol/test/layer1/automata-attestation/common/AttestationBase.t.sol @@ -7,16 +7,15 @@ import "forge-std/src/StdJson.sol"; import "@optimism/packages/contracts-bedrock/src/libraries/Bytes.sol"; import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import { P256Verifier } from "@p256-verifier/contracts/P256Verifier.sol"; +import "@p256-verifier/contracts/P256Verifier.sol"; import "src/layer1/verifiers/SgxVerifier.sol"; -import { AutomataDcapV3Attestation } from - "src/layer1/automata-attestation/AutomataDcapV3Attestation.sol"; -import { SigVerifyLib } from "src/layer1/automata-attestation/utils/SigVerifyLib.sol"; -import { PEMCertChainLib } from "src/layer1/automata-attestation/lib/PEMCertChainLib.sol"; -import { V3Struct } from "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; -import { BytesUtils } from "src/layer1/automata-attestation/utils/BytesUtils.sol"; -import { Base64 } from "solady/src/utils/Base64.sol"; +import "src/layer1/automata-attestation/AutomataDcapV3Attestation.sol"; +import "src/layer1/automata-attestation/utils/SigVerifyLib.sol"; +import "src/layer1/automata-attestation/lib/PEMCertChainLib.sol"; +import "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; +import "src/layer1/automata-attestation/utils/BytesUtils.sol"; +import "solady/src/utils/Base64.sol"; import "../utils/DcapTestUtils.t.sol"; import "../utils/V3QuoteParseUtils.t.sol"; diff --git a/packages/protocol/test/layer1/automata-attestation/utils/DcapTestUtils.t.sol b/packages/protocol/test/layer1/automata-attestation/utils/DcapTestUtils.t.sol index c4afdd57283..6cc808c00f0 100644 --- a/packages/protocol/test/layer1/automata-attestation/utils/DcapTestUtils.t.sol +++ b/packages/protocol/test/layer1/automata-attestation/utils/DcapTestUtils.t.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { TCBInfoStruct } from "src/layer1/automata-attestation/lib/TCBInfoStruct.sol"; -import { EnclaveIdStruct } from "src/layer1/automata-attestation/lib/EnclaveIdStruct.sol"; -import { V3Struct } from "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; -import { JSONParserLib } from "solady/src/utils/JSONParserLib.sol"; -import { LibString } from "solady/src/utils/LibString.sol"; +import "src/layer1/automata-attestation/lib/TCBInfoStruct.sol"; +import "src/layer1/automata-attestation/lib/EnclaveIdStruct.sol"; +import "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; +import "solady/src/utils/JSONParserLib.sol"; +import "solady/src/utils/LibString.sol"; contract DcapTestUtils { using JSONParserLib for JSONParserLib.Item; diff --git a/packages/protocol/test/layer1/automata-attestation/utils/V3QuoteParseUtils.t.sol b/packages/protocol/test/layer1/automata-attestation/utils/V3QuoteParseUtils.t.sol index ed09df809c6..ae40bc25c0e 100644 --- a/packages/protocol/test/layer1/automata-attestation/utils/V3QuoteParseUtils.t.sol +++ b/packages/protocol/test/layer1/automata-attestation/utils/V3QuoteParseUtils.t.sol @@ -1,14 +1,13 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { V3Struct } from "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; -import { V3Parser } from "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Parser.sol"; -import { IPEMCertChainLib } from - "src/layer1/automata-attestation/lib/interfaces/IPEMCertChainLib.sol"; -import { PEMCertChainLib } from "src/layer1/automata-attestation/lib/PEMCertChainLib.sol"; -import { Base64 } from "solady/src/utils/Base64.sol"; -import { JSONParserLib } from "solady/src/utils/JSONParserLib.sol"; -import { LibString } from "solady/src/utils/LibString.sol"; +import "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Struct.sol"; +import "src/layer1/automata-attestation/lib/QuoteV3Auth/V3Parser.sol"; +import "src/layer1/automata-attestation/lib/interfaces/IPEMCertChainLib.sol"; +import "src/layer1/automata-attestation/lib/PEMCertChainLib.sol"; +import "solady/src/utils/Base64.sol"; +import "solady/src/utils/JSONParserLib.sol"; +import "solady/src/utils/LibString.sol"; contract V3QuoteParseUtils { using JSONParserLib for JSONParserLib.Item; diff --git a/packages/protocol/test/layer1/based/MockTaikoL1.sol b/packages/protocol/test/layer1/based/MockTaikoL1.sol new file mode 100644 index 00000000000..344a51ffc7f --- /dev/null +++ b/packages/protocol/test/layer1/based/MockTaikoL1.sol @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "src/layer1/based/ITaikoL1.sol"; + +/// @title MockTaikoL1 +/// @custom:security-contact security@taiko.xyz +contract MockTaikoL1 is ITaikoL1 { + function proposeBlockV2( + bytes calldata _params, + bytes calldata _txList + ) + external + virtual + returns (TaikoData.BlockMetadataV2 memory meta_) + { } + + function proposeBlocksV2( + bytes[] calldata _paramsArr, + bytes[] calldata _txListArr + ) + external + virtual + returns (TaikoData.BlockMetadataV2[] memory metaArr_) + { } + + function proveBlock(uint64 _blockId, bytes calldata _input) external virtual { } + + function proveBlocks( + uint64[] calldata _blockIds, + bytes[] calldata _inputs, + bytes calldata _batchProof + ) + external + virtual + { } + + function verifyBlocks(uint64 _maxBlocksToVerify) external virtual { } + + function pauseProving(bool _pause) external virtual { } + + function depositBond(uint256 _amount) external virtual { } + + function withdrawBond(uint256 _amount) external virtual { } + + function getVerifiedBlockProver(uint64 _blockId) external view virtual returns (address) { } + + function getBlockV2(uint64 _blockId) + external + view + virtual + returns (TaikoData.BlockV2 memory blk_) + { } + + function getTransition( + uint64 _blockId, + uint32 _tid + ) + external + view + virtual + returns (TaikoData.TransitionState memory) + { } + + function getConfig() external pure virtual returns (TaikoData.Config memory) { } +} diff --git a/packages/protocol/test/layer1/based/TaikoL1.t.sol b/packages/protocol/test/layer1/based/TaikoL1.t.sol index 1d06387c1d8..52415ea780d 100644 --- a/packages/protocol/test/layer1/based/TaikoL1.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1.t.sol @@ -11,6 +11,7 @@ contract TaikoL1_NoCooldown is TaikoL1 { config.blockMaxProposals = 10; config.blockRingBufferSize = 12; config.livenessBond = 1e18; // 1 Taiko token + config.ontakeForkHeight = 0; } } @@ -45,7 +46,8 @@ contract TaikoL1Tests is TaikoL1TestBase { for (uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++) { //printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -74,7 +76,8 @@ contract TaikoL1Tests is TaikoL1TestBase { for (uint256 blockId = 1; blockId <= 20; ++blockId) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + printVariables("after propose"); bytes32 blockHash = bytes32(1e10 + blockId); @@ -87,7 +90,7 @@ contract TaikoL1Tests is TaikoL1TestBase { verifyBlock(2); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(meta.id, blk.blockId); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, parentHash); @@ -108,7 +111,8 @@ contract TaikoL1Tests is TaikoL1TestBase { for (uint256 blockId = 1; blockId <= conf.blockMaxProposals; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + printVariables("after propose"); bytes32 blockHash = bytes32(1e10 + blockId); @@ -134,7 +138,8 @@ contract TaikoL1Tests is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId <= conf.blockMaxProposals; blockId++) { - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + bytes32 blockHash; bytes32 stateRoot; if (blockId % 2 == 0) { @@ -189,13 +194,12 @@ contract TaikoL1Tests is TaikoL1TestBase { function test_pauseProving() external { L1.pauseProving(true); - TaikoData.BlockMetadata memory meta; - giveEthAndTko(Alice, 1000 ether, 1000 ether); giveEthAndTko(Bob, 1e8 ether, 100 ether); // Proposing is still possible - (meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + // Proving is not, so supply the revert reason to proveBlock proveBlock( Bob, @@ -225,14 +229,8 @@ contract TaikoL1Tests is TaikoL1TestBase { } function proposeButRevert(address proposer, uint24 txListSize, bytes4 revertReason) internal { - uint256 msgValue = 2 ether; - TaikoData.HookCall[] memory hookcalls = new TaikoData.HookCall[](0); - vm.prank(proposer, proposer); vm.expectRevert(revertReason); - L1.proposeBlock{ value: msgValue }( - abi.encode(TaikoData.BlockParams(address(0), address(0), 0, 0, hookcalls, "")), - new bytes(txListSize) - ); + L1.proposeBlockV2("", new bytes(txListSize)); } } diff --git a/packages/protocol/test/layer1/based/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/layer1/based/TaikoL1LibProvingWithTiers.t.sol index cbac7074a58..d27eb8a968c 100644 --- a/packages/protocol/test/layer1/based/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1LibProvingWithTiers.t.sol @@ -11,6 +11,7 @@ contract TaikoL1Tiers is TaikoL1 { config.blockMaxProposals = 10; config.blockRingBufferSize = 12; config.livenessBond = 1e18; // 1 Taiko token + config.ontakeForkHeight = 0; } } @@ -28,7 +29,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } function proveHigherTierProof( - TaikoData.BlockMetadata memory meta, + TaikoData.BlockMetadataV2 memory meta, bytes32 parentHash, bytes32 stateRoot, bytes32 blockHash, @@ -53,7 +54,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -94,7 +96,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -139,7 +142,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -183,7 +187,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -232,7 +237,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < 10; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -291,7 +297,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { for (uint256 blockId = 1; blockId < 10; blockId++) { //printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -325,7 +332,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -379,7 +387,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -422,12 +431,13 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++) { - bool storeStateRoot = LibUtils.shouldSyncStateRoot(syncInternal, blockId); + bool isSyncBlock = LibUtils.isSyncBlock(syncInternal, blockId); console2.log("blockId:", blockId); - console2.log("storeStateRoot:", storeStateRoot); + console2.log("isSyncBlock:", isSyncBlock); printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + mine(1); bytes32 blockHash = bytes32(1_000_000 + blockId); @@ -442,7 +452,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // Re-prove as guardian stateRoot = bytes32(2_000_000 + blockId + 200); - if (!storeStateRoot) { + if (!isSyncBlock) { // Changing stateRoot doesn't help proveBlock( Carol, @@ -479,7 +489,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < 10; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -515,7 +526,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < 10; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -523,7 +535,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 stateRoot = bytes32(1e9 + blockId); // Mess up metahash - meta.l1Height = 200; + meta.proposedIn = 200; proveBlock( Bob, meta, @@ -531,7 +543,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, stateRoot, LibTiers.TIER_SGX, - LibUtils.L1_BLOCK_MISMATCH.selector + LibProving.L1_BLOCK_MISMATCH.selector ); parentHash = blockHash; @@ -547,7 +559,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++) { printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); @@ -590,7 +603,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; printVariables("before propose"); - (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, 1024); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, 1024); + //printVariables("after propose"); mine(1); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestBase.sol b/packages/protocol/test/layer1/based/TaikoL1TestBase.sol index 8dad90a69e0..b199dc59c7a 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestBase.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestBase.sol @@ -107,6 +107,7 @@ abstract contract TaikoL1TestBase is TaikoTest { ); L1.init(address(0), address(addressManager), GENESIS_BLOCK_HASH, false); + mine(1); gp.enableTaikoTokenAllowance(true); printVariables("init "); @@ -117,24 +118,15 @@ abstract contract TaikoL1TestBase is TaikoTest { uint24 txListSize ) internal - returns (TaikoData.BlockMetadata memory meta, TaikoData.EthDeposit[] memory ethDeposits) + returns (TaikoData.BlockMetadataV2 memory) { - // For the test not to fail, set the message.value to the highest, the - // rest will be returned - // anyways - uint256 msgValue = 2 ether; - - TaikoData.HookCall[] memory hookcalls = new TaikoData.HookCall[](0); vm.prank(proposer, proposer); - (meta, ethDeposits) = L1.proposeBlock{ value: msgValue }( - abi.encode(TaikoData.BlockParams(address(0), address(0), 0, 0, hookcalls, "")), - new bytes(txListSize) - ); + return L1.proposeBlockV2("", new bytes(txListSize)); } function proveBlock( address prover, - TaikoData.BlockMetadata memory meta, + TaikoData.BlockMetadataV2 memory meta, bytes32 parentHash, bytes32 blockHash, bytes32 stateRoot, @@ -177,18 +169,18 @@ abstract contract TaikoL1TestBase is TaikoTest { // Grant 2 signatures, 3rd might be a revert vm.prank(David, David); - gp.approve(meta, tran, proof); + gp.approveV2(meta, tran, proof); vm.prank(Emma, Emma); - gp.approve(meta, tran, proof); + gp.approveV2(meta, tran, proof); if (revertReason != "") { vm.prank(Frank, Frank); vm.expectRevert(); // Revert reason is 'wrapped' so will not be // identical to the expectedRevert - gp.approve(meta, tran, proof); + gp.approveV2(meta, tran, proof); } else { vm.prank(Frank, Frank); - gp.approve(meta, tran, proof); + gp.approveV2(meta, tran, proof); } } else { if (revertReason != "") { diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup1.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup1.t.sol index a6725bc2296..9226cc75074 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup1.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup1.t.sol @@ -17,19 +17,24 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); uint96 livenessBond = L1.getConfig().livenessBond; uint256 proposedAt; { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(meta.minTier, LibTiers.TIER_OPTIMISTIC); assertEq(blk.nextTransitionId, 1); assertEq(blk.verifiedTransitionId, 0); assertEq(blk.proposedAt, block.timestamp); - assertEq(blk.livenessBond, livenessBond); + assertEq(meta.livenessBond, livenessBond); + assertEq(meta.proposer, Alice); + assertEq(meta.timestamp, block.timestamp); + assertEq(meta.anchorBlockId, block.number - 1); + assertEq(meta.proposedAt, block.timestamp); + assertEq(meta.proposedIn, block.number); proposedAt = blk.proposedAt; @@ -62,11 +67,10 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); assertEq(blk.proposedAt, proposedAt); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -88,11 +92,10 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); assertEq(blk.proposedAt, proposedAt); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -120,19 +123,24 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); uint96 livenessBond = L1.getConfig().livenessBond; uint256 proposedAt; { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(meta.minTier, LibTiers.TIER_OPTIMISTIC); assertEq(blk.nextTransitionId, 1); assertEq(blk.verifiedTransitionId, 0); assertEq(blk.proposedAt, block.timestamp); - assertEq(blk.livenessBond, livenessBond); + assertEq(meta.livenessBond, livenessBond); + assertEq(meta.proposer, Alice); + assertEq(meta.timestamp, block.timestamp); + assertEq(meta.anchorBlockId, block.number - 1); + assertEq(meta.proposedAt, block.timestamp); + assertEq(meta.proposedIn, block.number); proposedAt = blk.proposedAt; @@ -153,11 +161,10 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); assertEq(blk.proposedAt, proposedAt); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -182,11 +189,10 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); assertEq(blk.proposedAt, proposedAt); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -215,7 +221,7 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); // Prove the block bytes32 parentHash1 = bytes32(uint256(9)); @@ -238,10 +244,9 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 3); assertEq(blk.verifiedTransitionId, 2); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 2); assertEq(ts.contester, address(0)); @@ -266,7 +271,7 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); // Prove the block bytes32 parentHash1 = GENESIS_BLOCK_HASH; @@ -289,10 +294,9 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 3); assertEq(blk.verifiedTransitionId, 1); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.contester, address(0)); @@ -317,7 +321,7 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); // Prove the block bytes32 parentHash1 = bytes32(uint256(9)); @@ -340,10 +344,9 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 3); assertEq(blk.verifiedTransitionId, 2); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 2); assertEq(ts.contester, address(0)); @@ -367,19 +370,24 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); uint96 livenessBond = L1.getConfig().livenessBond; uint256 proposedAt; { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(meta.minTier, LibTiers.TIER_OPTIMISTIC); assertEq(blk.nextTransitionId, 1); assertEq(blk.verifiedTransitionId, 0); assertEq(blk.proposedAt, block.timestamp); - assertEq(blk.livenessBond, livenessBond); + assertEq(meta.livenessBond, livenessBond); + assertEq(meta.proposer, Alice); + assertEq(meta.timestamp, block.timestamp); + assertEq(meta.anchorBlockId, block.number - 1); + assertEq(meta.proposedAt, block.timestamp); + assertEq(meta.proposedIn, block.number); proposedAt = blk.proposedAt; @@ -400,11 +408,10 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); assertEq(blk.proposedAt, proposedAt); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -429,11 +436,10 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); assertEq(blk.proposedAt, proposedAt); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -457,19 +463,24 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase { giveEthAndTko(Alice, 10_000 ether, 1000 ether); console2.log("====== Alice propose a block with herself as the assigned prover"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); uint96 livenessBond = L1.getConfig().livenessBond; uint256 proposedAt; { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(meta.minTier, LibTiers.TIER_OPTIMISTIC); assertEq(blk.nextTransitionId, 1); assertEq(blk.verifiedTransitionId, 0); assertEq(blk.proposedAt, block.timestamp); - assertEq(blk.livenessBond, livenessBond); + assertEq(meta.livenessBond, livenessBond); + assertEq(meta.proposer, Alice); + assertEq(meta.timestamp, block.timestamp); + assertEq(meta.anchorBlockId, block.number - 1); + assertEq(meta.proposedAt, block.timestamp); + assertEq(meta.proposedIn, block.number); proposedAt = blk.proposedAt; diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup10.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup10.t.sol index c843b43e60c..489daa1c10b 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup10.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup10.t.sol @@ -18,7 +18,7 @@ contract TaikoL10TestGroup1 is TaikoL1TestGroupBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 i = 1; i <= 5; ++i) { - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); // Prove the block bytes32 blockHash = bytes32(uint256(10_000 + i)); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup2.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup2.t.sol index 49cee986060..364c1f62717 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup2.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup2.t.sol @@ -21,7 +21,7 @@ contract TaikoL1TestGroup2 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Alice proves the block as the assigned prover"); bytes32 parentHash = GENESIS_BLOCK_HASH; @@ -40,10 +40,9 @@ contract TaikoL1TestGroup2 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -66,10 +65,9 @@ contract TaikoL1TestGroup2 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -94,7 +92,7 @@ contract TaikoL1TestGroup2 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); @@ -127,7 +125,7 @@ contract TaikoL1TestGroup2 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Alice proves the block as the assigned prover"); bytes32 parentHash = GENESIS_BLOCK_HASH; @@ -146,10 +144,9 @@ contract TaikoL1TestGroup2 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -172,10 +169,9 @@ contract TaikoL1TestGroup2 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -202,7 +198,7 @@ contract TaikoL1TestGroup2 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup3.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup3.t.sol index 832aa341988..0375309e8d0 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup3.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup3.t.sol @@ -22,7 +22,7 @@ contract TaikoL1TestGroup3 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); uint96 livenessBond = L1.getConfig().livenessBond; @@ -43,10 +43,9 @@ contract TaikoL1TestGroup3 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -73,10 +72,9 @@ contract TaikoL1TestGroup3 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -101,7 +99,7 @@ contract TaikoL1TestGroup3 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); @@ -135,7 +133,7 @@ contract TaikoL1TestGroup3 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); uint96 livenessBond = L1.getConfig().livenessBond; @@ -156,10 +154,9 @@ contract TaikoL1TestGroup3 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -186,10 +183,9 @@ contract TaikoL1TestGroup3 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -220,7 +216,7 @@ contract TaikoL1TestGroup3 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup4.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup4.t.sol index ce0bbdde373..5a748170b7a 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup4.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup4.t.sol @@ -20,7 +20,7 @@ contract TaikoL1TestGroup4 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Alice proves the block as the assigned prover"); bytes32 parentHash = GENESIS_BLOCK_HASH; @@ -39,10 +39,9 @@ contract TaikoL1TestGroup4 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -66,7 +65,7 @@ contract TaikoL1TestGroup4 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); @@ -99,7 +98,7 @@ contract TaikoL1TestGroup4 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); uint96 livenessBond = L1.getConfig().livenessBond; @@ -120,10 +119,9 @@ contract TaikoL1TestGroup4 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -150,11 +148,10 @@ contract TaikoL1TestGroup4 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup5.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup5.t.sol index ebbaa4eea57..9b59addfd55 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup5.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup5.t.sol @@ -18,7 +18,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { giveEthAndTko(William, 10_000 ether, 1000 ether); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Guardian prover proves"); bytes32 parentHash = GENESIS_BLOCK_HASH; @@ -31,10 +31,9 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -70,10 +69,9 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -106,11 +104,10 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -138,7 +135,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Alice proves the block"); bytes32 parentHash = GENESIS_BLOCK_HASH; @@ -169,10 +166,9 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -193,11 +189,10 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -226,7 +221,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); uint96 livenessBond = L1.getConfig().livenessBond; @@ -259,10 +254,9 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -286,11 +280,10 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -317,7 +310,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { giveEthAndTko(William, 10_000 ether, 1000 ether); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Guardian prover proves"); bytes32 parentHash = GENESIS_BLOCK_HASH; @@ -330,10 +323,9 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup6.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup6.t.sol index cb42f8ea7a2..8dbb1649542 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup6.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup6.t.sol @@ -19,7 +19,7 @@ contract TaikoL1TestGroup6 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierSgx = ITierProvider(tr).getTier(LibTiers.TIER_SGX); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Alice proves the block as the assigned prover"); bytes32 parentHash = GENESIS_BLOCK_HASH; @@ -42,10 +42,9 @@ contract TaikoL1TestGroup6 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -69,11 +68,10 @@ contract TaikoL1TestGroup6 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup7.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup7.t.sol index 78c85f1a00b..f8d57a59536 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup7.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup7.t.sol @@ -16,7 +16,7 @@ contract TaikoL1TestGroup7 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Alice proves the block as the assigned prover"); bytes32 parentHash = GENESIS_BLOCK_HASH; @@ -55,7 +55,7 @@ contract TaikoL1TestGroup7 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Alice proves the block as the assigned prover"); bytes32 parentHash = GENESIS_BLOCK_HASH; diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup8.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup8.t.sol index ecb34e99b81..9c52fca4257 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup8.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup8.t.sol @@ -18,7 +18,7 @@ contract TaikoL1TestGroup8 is TaikoL1TestGroupBase { console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Pause TaikoL1"); mineAndWrap(10 seconds); @@ -68,7 +68,7 @@ contract TaikoL1TestGroup8 is TaikoL1TestGroupBase { console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Pause TaikoL1 proving"); mineAndWrap(10 seconds); @@ -107,7 +107,7 @@ contract TaikoL1TestGroup8 is TaikoL1TestGroupBase { // 2. Gets a transition by ID & hash that doesn't exist. function test_taikoL1_group_8_case_3() external { vm.expectRevert(LibUtils.L1_INVALID_BLOCK_ID.selector); - L1.getBlock(2); + L1.getBlockV2(2); vm.expectRevert(LibUtils.L1_TRANSITION_NOT_FOUND.selector); L1.getTransition(0, 2); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup9.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup9.t.sol index ba98ebd1799..0fc7533182b 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroup9.t.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup9.t.sol @@ -13,7 +13,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { giveEthAndTko(David, 10_000 ether, 1000 ether); console2.log("====== David proposes, proves, and verifies the first block"); - TaikoData.BlockMetadata memory meta = proposeBlock(David, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(David, ""); bytes32 stateRoot = bytes32(uint256(1)); @@ -39,7 +39,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { giveEthAndTko(William, 10_000 ether, 1000 ether); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Guardian prover proves"); bytes32 parentHash = FIRST_BLOCK_HASH; @@ -52,10 +52,9 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); @@ -92,10 +91,9 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -129,11 +127,10 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -162,7 +159,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Alice proves the block"); bytes32 parentHash = FIRST_BLOCK_HASH; @@ -193,10 +190,9 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -218,11 +214,10 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -252,7 +247,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); uint96 livenessBond = L1.getConfig().livenessBond; @@ -285,10 +280,9 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -314,11 +308,10 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 1); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash2); @@ -347,7 +340,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { giveEthAndTko(William, 10_000 ether, 1000 ether); console2.log("====== Alice propose a block"); - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Alice, ""); console2.log("====== Guardian prover proves"); bytes32 parentHash = FIRST_BLOCK_HASH; @@ -360,10 +353,9 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase { { printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(meta.id); + TaikoData.BlockV2 memory blk = L1.getBlockV2(meta.id); assertEq(blk.nextTransitionId, 2); assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.livenessBond, 0); TaikoData.TransitionState memory ts = L1.getTransition(meta.id, 1); assertEq(ts.blockHash, blockHash); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroupBase.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroupBase.sol index 8843b39ff8b..6accc380dc8 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroupBase.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroupBase.sol @@ -10,6 +10,7 @@ contract TaikoL1New is TaikoL1 { config.blockMaxProposals = 20; config.blockRingBufferSize = 25; config.stateRootSyncInternal = 2; + config.ontakeForkHeight = 0; } } @@ -25,16 +26,24 @@ abstract contract TaikoL1TestGroupBase is TaikoL1TestBase { bytes4 revertReason ) internal - returns (TaikoData.BlockMetadata memory meta) + returns (TaikoData.BlockMetadataV2 memory) { - TaikoData.HookCall[] memory hookcalls = new TaikoData.HookCall[](0); - bytes memory txList = new bytes(10); + vm.prank(proposer); + if (revertReason != "") vm.expectRevert(revertReason); + return L1.proposeBlockV2("", new bytes(10)); + } + function proposeBlock( + address proposer, + TaikoData.BlockParamsV2 memory params, + bytes4 revertReason + ) + internal + returns (TaikoData.BlockMetadataV2 memory) + { vm.prank(proposer); if (revertReason != "") vm.expectRevert(revertReason); - (meta,) = L1.proposeBlock{ value: 3 ether }( - abi.encode(TaikoData.BlockParams(address(0), address(0), 0, 0, hookcalls, "")), txList - ); + return L1.proposeBlockV2(abi.encode(params), new bytes(10)); } function proposeBlockV2( @@ -54,7 +63,7 @@ abstract contract TaikoL1TestGroupBase is TaikoL1TestBase { function proveBlock( address prover, - TaikoData.BlockMetadata memory meta, + TaikoData.BlockMetadataV2 memory meta, bytes32 parentHash, bytes32 blockHash, bytes32 stateRoot, @@ -97,13 +106,13 @@ abstract contract TaikoL1TestGroupBase is TaikoL1TestBase { // Grant 2 signatures, 3rd might be a revert vm.prank(David, David); - gp.approve(meta, tran, proof); + gp.approveV2(meta, tran, proof); vm.prank(Emma, Emma); - gp.approve(meta, tran, proof); + gp.approveV2(meta, tran, proof); if (revertReason != "") vm.expectRevert(revertReason); vm.prank(Frank); - gp.approve(meta, tran, proof); + gp.approveV2(meta, tran, proof); } else { if (revertReason != "") vm.expectRevert(revertReason); vm.prank(prover); @@ -170,7 +179,7 @@ abstract contract TaikoL1TestGroupBase is TaikoL1TestBase { } function printBlockAndTrans(uint64 blockId) internal view { - TaikoData.Block memory blk = L1.getBlock(blockId); + TaikoData.BlockV2 memory blk = L1.getBlockV2(blockId); printBlock(blk); for (uint32 i = 1; i < blk.nextTransitionId; ++i) { @@ -190,7 +199,7 @@ abstract contract TaikoL1TestGroupBase is TaikoL1TestBase { return tko.balanceOf(user) + L1.bondBalanceOf(user); } - function printBlock(TaikoData.Block memory blk) internal view { + function printBlock(TaikoData.BlockV2 memory blk) internal view { (, TaikoData.SlotB memory b) = L1.getStateVariables(); console2.log("\n=================="); console2.log("---CHAIN:"); @@ -198,8 +207,6 @@ abstract contract TaikoL1TestGroupBase is TaikoL1TestBase { console2.log(" | numBlocks:", b.numBlocks); console2.log(" | timestamp:", block.timestamp); console2.log("---BLOCK#", blk.blockId); - console2.log(" | assignedProver:", blk.assignedProver); - console2.log(" | livenessBond:", blk.livenessBond); console2.log(" | proposedAt:", blk.proposedAt); console2.log(" | proposedIn:", blk.proposedIn); console2.log(" | metaHash:", vm.toString(blk.metaHash)); diff --git a/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol b/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol deleted file mode 100644 index 1aa4a34452d..00000000000 --- a/packages/protocol/test/layer1/based/TaikoL1testGroupA1.t.sol +++ /dev/null @@ -1,101 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; - -import "./TaikoL1TestGroupBase.sol"; - -contract TaikoL1ForkA1 is TaikoL1 { - function getConfig() public pure override returns (TaikoData.Config memory config) { - config = TaikoL1.getConfig(); - config.maxBlocksToVerify = 0; - config.blockMaxProposals = 20; - config.blockRingBufferSize = 25; - config.stateRootSyncInternal = 2; - config.ontakeForkHeight = 10; - } -} - -contract TaikoL1TestGroupA1 is TaikoL1TestGroupBase { - function deployTaikoL1() internal override returns (TaikoL1) { - return TaikoL1( - payable(deployProxy({ name: "taiko", impl: address(new TaikoL1ForkA1()), data: "" })) - ); - } - - // Test summary: - // - Use the v2 on block 10 - ontakeForkHeight = 10 - // - propose and prove block 1 to 9 using v1 - // - propose and prove block 10 to 15 using v2 - // - try to verify more than 15 blocks to verify all 15 blocks are verified. - function test_taikoL1_group_a1_case_1() external { - vm.warp(1_000_000); - mine(1); - printBlockAndTrans(0); - - giveEthAndTko(Alice, 10_000 ether, 1000 ether); - - console2.log("====== Alice propose 5 block"); - bytes32 parentHash = GENESIS_BLOCK_HASH; - - uint64 ontakeForkHeight = L1.getConfig().ontakeForkHeight; - - uint64 i = 1; - for (; i < ontakeForkHeight; ++i) { - TaikoData.BlockMetadata memory meta = proposeBlock(Alice, ""); - printBlockAndTrans(meta.id); - TaikoData.Block memory blk = L1.getBlock(i); - assertTrue(blk.livenessBond > 0); - assertEq(blk.assignedProver, address(0)); - assertEq(blk.proposedAt, block.timestamp); - assertEq(blk.proposedIn, block.number); - - // Prove the block - bytes32 blockHash = bytes32(uint256(10_000 + i)); - bytes32 stateRoot = bytes32(uint256(20_000 + i)); - - mineAndWrap(10 seconds); - - proveBlock(Alice, meta, parentHash, blockHash, stateRoot, meta.minTier, ""); - parentHash = blockHash; - - printBlockAndTrans(meta.id); - blk = L1.getBlock(i); - assertEq(blk.livenessBond, 0); - assertEq(blk.assignedProver, address(0)); - } - - TaikoData.BlockParamsV2 memory params; - for (; i <= ontakeForkHeight + 5; ++i) { - TaikoData.BlockMetadataV2 memory metaV2 = proposeBlockV2(Alice, params, ""); - printBlockAndTrans(metaV2.id); - TaikoData.Block memory blk = L1.getBlock(i); - assertEq(blk.livenessBond, 0); - assertEq(blk.assignedProver, address(0)); - assertEq(blk.proposedAt, block.timestamp); - assertEq(blk.proposedIn, block.number - 1); - - // Prove the block - bytes32 blockHash = bytes32(uint256(10_000 + i)); - bytes32 stateRoot = bytes32(uint256(20_000 + i)); - - mineAndWrap(10 seconds); - - proveBlock2(Alice, metaV2, parentHash, blockHash, stateRoot, metaV2.minTier, ""); - parentHash = blockHash; - - printBlockAndTrans(metaV2.id); - blk = L1.getBlock(i); - assertEq(blk.livenessBond, 0); - assertEq(blk.assignedProver, address(0)); - } - - console2.log("====== Verify many blocks"); - mineAndWrap(7 days); - verifyBlock(ontakeForkHeight + 10); - { - (, TaikoData.SlotB memory b) = L1.getStateVariables(); - assertEq(b.lastVerifiedBlockId, ontakeForkHeight + 5); - - assertEq(totalTkoBalance(tko, L1, Alice), 10_000 ether); - } - } -} diff --git a/packages/protocol/test/layer1/based/TaikoL1testGroupA2.t.sol b/packages/protocol/test/layer1/based/TaikoL1testGroupA2.t.sol deleted file mode 100644 index 764a3d58b8c..00000000000 --- a/packages/protocol/test/layer1/based/TaikoL1testGroupA2.t.sol +++ /dev/null @@ -1,182 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; - -import "./TaikoL1TestGroupBase.sol"; - -contract TaikoL1ForkA2 is TaikoL1 { - function getConfig() public pure override returns (TaikoData.Config memory config) { - config = TaikoL1.getConfig(); - config.maxBlocksToVerify = 0; - config.blockMaxProposals = 10; - config.blockRingBufferSize = 15; - config.stateRootSyncInternal = 2; - config.ontakeForkHeight = 0; // or 1, works the same. - } -} - -contract TaikoL1TestGroupA2 is TaikoL1TestGroupBase { - function deployTaikoL1() internal override returns (TaikoL1) { - return TaikoL1( - payable(deployProxy({ name: "taiko", impl: address(new TaikoL1ForkA2()), data: "" })) - ); - } - - // Test summary: - // - Use the v2 immediately - ontakeForkHeight = 0 or 1 - // - propose and prove 5 blocks - // - try to verify more than 5 blocks to verify all 5 blocks are verified. - function test_taikoL1_group_a2_case_1() external { - vm.warp(1_000_000); - mine(1); - printBlockAndTrans(0); - - giveEthAndTko(Alice, 10_000 ether, 1000 ether); - TaikoData.Config memory config = L1.getConfig(); - - bytes32 parentHash = GENESIS_BLOCK_HASH; - - proposeBlock(Alice, LibProposing.L1_INVALID_CUSTOM_PROPOSER.selector); - - TaikoData.BlockParamsV2 memory params; - for (uint64 i = 1; i <= 5; ++i) { - TaikoData.BlockMetadataV2 memory meta = proposeBlockV2(Alice, params, ""); - printBlockAndTrans(i); - - assertTrue(meta.difficulty != 0); - assertEq(meta.proposedAt, block.timestamp); - assertEq(meta.proposedIn, block.number); - assertEq(meta.timestamp, block.timestamp); - assertEq(meta.anchorBlockId, block.number - 1); - assertEq(meta.anchorBlockHash, blockhash(block.number - 1)); - assertEq(meta.livenessBond, config.livenessBond); - assertEq(meta.coinbase, Alice); - - TaikoData.Block memory blk = L1.getBlock(i); - assertEq(blk.blockId, i); - assertEq(blk.proposedAt, meta.timestamp); - assertEq(blk.proposedIn, meta.anchorBlockId); - assertEq(blk.assignedProver, address(0)); - assertEq(blk.livenessBond, 0); - assertEq(blk.nextTransitionId, 1); - assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.metaHash, keccak256(abi.encode(meta))); - - // Prove the block - bytes32 blockHash = bytes32(uint256(10_000 + i)); - bytes32 stateRoot = bytes32(uint256(20_000 + i)); - - mineAndWrap(10 seconds); - - proveBlock2(Alice, meta, parentHash, blockHash, stateRoot, meta.minTier, ""); - parentHash = blockHash; - - printBlockAndTrans(i); - blk = L1.getBlock(i); - assertEq(blk.livenessBond, 0); - assertEq(blk.assignedProver, address(0)); - } - - console2.log("====== Verify many blocks"); - mineAndWrap(7 days); - verifyBlock(10); - { - (, TaikoData.SlotB memory b) = L1.getStateVariables(); - assertEq(b.lastVerifiedBlockId, 5); - - assertEq(totalTkoBalance(tko, L1, Alice), 10_000 ether); - } - } - - // Test summary: - // - Use the v2 immediately - ontakeForkHeight = 0 or 1 - // - propose and prove 5 blocks - // - try to verify more than 5 blocks to verify all 5 blocks are verified. - function test_taikoL1_group_a2_case_2() external { - vm.warp(1_000_000); - mine(1); - printBlockAndTrans(0); - - giveEthAndTko(Alice, 10_000 ether, 1000 ether); - - TaikoData.Config memory config = L1.getConfig(); - - // Propose the first block with default parameters - TaikoData.BlockParamsV2 memory params = TaikoData.BlockParamsV2({ - proposer: address(0), - coinbase: address(0), - parentMetaHash: 0, - anchorBlockId: 0, - timestamp: 0, - blobTxListOffset: 0, - blobTxListLength: 0, - blobIndex: 0 - }); - TaikoData.BlockMetadataV2 memory meta = proposeBlockV2(Alice, params, ""); - - assertEq(meta.id, 1); - - assertTrue(meta.difficulty != 0); - assertEq(meta.proposedAt, block.timestamp); - assertEq(meta.proposedIn, block.number); - assertEq(meta.timestamp, block.timestamp); - assertEq(meta.anchorBlockId, block.number - 1); - assertEq(meta.anchorBlockHash, blockhash(block.number - 1)); - assertEq(meta.livenessBond, config.livenessBond); - assertEq(meta.coinbase, Alice); - assertEq(meta.parentMetaHash, bytes32(uint256(1))); - - TaikoData.Block memory blk = L1.getBlock(1); - assertEq(blk.blockId, 1); - assertEq(blk.proposedAt, meta.timestamp); - assertEq(blk.proposedIn, meta.anchorBlockId); - assertEq(blk.assignedProver, address(0)); - assertEq(blk.livenessBond, 0); - assertEq(blk.nextTransitionId, 1); - assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.metaHash, keccak256(abi.encode(meta))); - - // mine 100 blocks - vm.roll(100); - vm.warp(100 days); - - // Propose the second block with custom parameters - - params = TaikoData.BlockParamsV2({ - proposer: address(0), - coinbase: Bob, - parentMetaHash: 0, - anchorBlockId: 90, - timestamp: uint64(block.timestamp - 100), - blobTxListOffset: 0, - blobTxListLength: 0, - blobIndex: 0 - }); - meta = proposeBlockV2(Alice, params, ""); - - assertEq(meta.id, 2); - assertTrue(meta.difficulty != 0); - assertEq(meta.proposedAt, block.timestamp); - assertEq(meta.proposedIn, block.number); - assertEq(meta.timestamp, params.timestamp); - assertEq(meta.anchorBlockId, 90); - assertEq(meta.anchorBlockHash, blockhash(90)); - assertEq(meta.livenessBond, config.livenessBond); - assertEq(meta.coinbase, Bob); - assertEq(meta.parentMetaHash, blk.metaHash); - - blk = L1.getBlock(2); - assertEq(blk.blockId, 2); - assertEq(blk.proposedAt, meta.timestamp); - assertEq(blk.proposedIn, meta.anchorBlockId); - assertEq(blk.assignedProver, address(0)); - assertEq(blk.livenessBond, 0); - assertEq(blk.nextTransitionId, 1); - assertEq(blk.verifiedTransitionId, 0); - assertEq(blk.metaHash, keccak256(abi.encode(meta))); - - for (uint256 i = 0; i < 3; ++i) { - TaikoData.BlockParamsV2 memory params2; - proposeBlockV2(Alice, params2, ""); - } - } -} diff --git a/packages/protocol/test/layer1/based/TestTierRouter.sol b/packages/protocol/test/layer1/based/TestTierRouter.sol index 173ebd033d4..833d259f639 100644 --- a/packages/protocol/test/layer1/based/TestTierRouter.sol +++ b/packages/protocol/test/layer1/based/TestTierRouter.sol @@ -26,8 +26,8 @@ contract TestTierRouter is ITierProvider, ITierRouter { contestBond: 500 ether, // TKO cooldownWindow: 1440, //24 hours provingWindow: 30, // 0.5 hours - maxBlocksToVerifyPerProof: 0 - }); + maxBlocksToVerifyPerProof: 0 // DEPRECATED + }); } if (_tierId == LibTiers.TIER_SGX) { @@ -37,8 +37,8 @@ contract TestTierRouter is ITierProvider, ITierRouter { contestBond: 1640 ether, // =250TKO * 6.5625 cooldownWindow: 1440, //24 hours provingWindow: 60, // 1 hours - maxBlocksToVerifyPerProof: 0 - }); + maxBlocksToVerifyPerProof: 0 // DEPRECATED + }); } if (_tierId == LibTiers.TIER_GUARDIAN) { @@ -48,8 +48,8 @@ contract TestTierRouter is ITierProvider, ITierRouter { contestBond: 0, // must be 0 for top tier cooldownWindow: 60, //1 hours provingWindow: 2880, // 48 hours - maxBlocksToVerifyPerProof: 0 - }); + maxBlocksToVerifyPerProof: 0 // DEPRECATED + }); } revert TIER_NOT_FOUND(); diff --git a/packages/protocol/test/layer1/preconf/BaseTest.sol b/packages/protocol/test/layer1/preconf/BaseTest.sol new file mode 100644 index 00000000000..de6486e533a --- /dev/null +++ b/packages/protocol/test/layer1/preconf/BaseTest.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "forge-std/src/Test.sol"; + +contract BaseTest is Test { + address addr_1 = vm.addr(1); + address addr_2 = vm.addr(2); + address addr_3 = vm.addr(3); + address addr_4 = vm.addr(4); + address addr_5 = vm.addr(5); + address addr_6 = vm.addr(6); + address addr_7 = vm.addr(7); + address addr_8 = vm.addr(8); + address addr_9 = vm.addr(9); + address addr_10 = vm.addr(10); +} diff --git a/packages/protocol/test/layer1/preconf/beacon/BeaconProofsVerification.sol b/packages/protocol/test/layer1/preconf/beacon/BeaconProofsVerification.sol new file mode 100644 index 00000000000..e162fe84025 --- /dev/null +++ b/packages/protocol/test/layer1/preconf/beacon/BeaconProofsVerification.sol @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "src/layer1/preconf/libs/LibMerkleUtils.sol"; +import "../BaseTest.sol"; +import "../fixtures/BeaconProofs.sol"; + +/// @dev The beacon chain data used here is from slot 9000000 on Ethereum mainnet. +contract BeaconProofsVerification is BaseTest { + function test_beaconProofsVerification_validatorInclusionInValidatorList() public { + bytes32[8] memory validatorChunks = BeaconProofs.validatorChunks(); + + bytes32 validatorHashTreeRoot = LibMerkleUtils.merkleize(validatorChunks); + + bytes32[] memory validatorProof = BeaconProofs.validatorProof(); + + bytes32 validatorsRoot = BeaconProofs.validatorsRoot(); + uint256 validatorIndex = BeaconProofs.validatorIndex(); + + assertTrue( + LibMerkleUtils.verifyProof( + validatorProof, validatorsRoot, validatorHashTreeRoot, validatorIndex + ) + ); + } + + function test_beaconProofsVerification_validatorListInclusionInBeaconState() public { + bytes32[] memory beaconStateProofForValidatorList = + BeaconProofs.beaconStateProofForValidatorList(); + + bytes32 validatorListRoot = BeaconProofs.validatorsRoot(); + bytes32 beaconStateRoot = BeaconProofs.beaconStateRoot(); + + assertTrue( + LibMerkleUtils.verifyProof( + beaconStateProofForValidatorList, beaconStateRoot, validatorListRoot, 11 + ) + ); + } + + function test_beaconProofsVerification_beaconStateInclusionInBeaconBlock() public { + bytes32[] memory beaconBlockProofForBeaconState = + BeaconProofs.beaconBlockProofForBeaconState(); + + bytes32 beaconStateRoot = BeaconProofs.beaconStateRoot(); + bytes32 beaconBlockRoot = BeaconProofs.beaconBlockRoot(); + + assertTrue( + LibMerkleUtils.verifyProof( + beaconBlockProofForBeaconState, beaconBlockRoot, beaconStateRoot, 3 + ) + ); + } + + function test_beaconProofsVerification_proposerInclusionInBeaconBlock() public { + bytes32[] memory beaconBlockProofForProposer = BeaconProofs.beaconBlockProofForProposer(); + + uint256 validatorIndex = BeaconProofs.validatorIndex(); + bytes32 beaconBlockRoot = BeaconProofs.beaconBlockRoot(); + + assertTrue( + LibMerkleUtils.verifyProof( + beaconBlockProofForProposer, + beaconBlockRoot, + LibMerkleUtils.toLittleEndian(validatorIndex), + 1 + ) + ); + } +} diff --git a/packages/protocol/test/layer1/preconf/blocks/BlockProposing.t.sol b/packages/protocol/test/layer1/preconf/blocks/BlockProposing.t.sol new file mode 100644 index 00000000000..f0b53ef580b --- /dev/null +++ b/packages/protocol/test/layer1/preconf/blocks/BlockProposing.t.sol @@ -0,0 +1,239 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../fixtures/BlocksFixtures.sol"; + +import "src/layer1/preconf/impl/LibPreconfConstants.sol"; +import "src/layer1/preconf/iface/IPreconfTaskManager.sol"; + +contract BlockProposing is BlocksFixtures { + function setUp() public override { + super.setUp(); + } + + function test_newBlockProposal_preconferCanProposeBlockInAdvanced_Case1() external { + // Push preconfer Address 1 to slot 13 and Address 3 to slot 23 of the next epoch + prepareLookahead(13, 23); + + uint256 currentEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + // Warp to an arbitrary timestamp before the preconfer's slot + uint256 currentSlotTimestamp = + currentEpochStart + (10 * LibPreconfConstants.SECONDS_IN_SLOT); + vm.warp(currentSlotTimestamp); + + // Arbitrary lookahead for the next epoch just to avoid fallback selection in this test + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](1); + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + preconfer: addr_2, + timestamp: currentEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH + }); + + // Address 1 proposes the block + vm.prank(addr_1); + _newBlockProposal("Block Params", "Txn List", 1, lookaheadSetParams); + } + + function test_newBlockProposal_preconferCanProposeBlockInAdvanced_Case2() external { + // Push preconfer Address 1 to slot 13 and Address 3 to slot 23 of the next epoch + prepareLookahead(13, 23); + + uint256 currentEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + // Warp to an arbitrary timestamp after Address 1's slot but before Address 3's slot + uint256 currentSlotTimestamp = + currentEpochStart + (15 * LibPreconfConstants.SECONDS_IN_SLOT); + vm.warp(currentSlotTimestamp); + + // Arbitrary lookahead for the next epoch just to avoid fallback selection in this test + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](1); + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + preconfer: addr_2, + timestamp: currentEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH + }); + + // Address 3 proposes the block in advance + vm.prank(addr_3); + _newBlockProposal("Block Params 2", "Txn List 2", 2, lookaheadSetParams); + } + + function test_newBlockProposal_preconferCanProposeBlockAtDedicatedSlot() external { + // Push preconfer Address 1 to slot 13 and Address 3 to slot 23 of the next epoch + prepareLookahead(13, 23); + + uint256 currentEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + // Warp to the exact timestamp of the preconfer's dedicated slot + uint256 currentSlotTimestamp = + currentEpochStart + (12 * LibPreconfConstants.SECONDS_IN_SLOT); + vm.warp(currentSlotTimestamp); + + // Arbitrary lookahead for the next epoch just to avoid fallback selection in this test + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](1); + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + preconfer: addr_2, + timestamp: currentEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH + }); + + // Address 1 proposes the block at its dedicated slot + vm.prank(addr_1); + _newBlockProposal("Block Params 3", "Txn List 3", 1, lookaheadSetParams); + } + + function test_newBlockProposal_updatesLookaheadForNextEpoch() external { + // Prepare initial lookahead + prepareLookahead(13, 23); + + uint256 currentEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 nextEpochStart = currentEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH; + + uint256 currentSlotTimestamp = currentEpochStart + (9 * LibPreconfConstants.SECONDS_IN_SLOT); + // Warp to a slot where address 1 can propose a block + vm.warp(currentSlotTimestamp); + + // Prepare lookahead set for the next epoch + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](2); + // Slot 10 + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + timestamp: nextEpochStart + (9 * LibPreconfConstants.SECONDS_IN_SLOT), + preconfer: addr_1 + }); + // Slot 20 + lookaheadSetParams[1] = IPreconfTaskManager.LookaheadSetParam({ + timestamp: nextEpochStart + (19 * LibPreconfConstants.SECONDS_IN_SLOT), + preconfer: addr_2 + }); + + // Address 1 proposes a block and updates the lookahead + vm.prank(addr_1); + _newBlockProposal("Block Params", "Txn List", 1, lookaheadSetParams); + + // Verify that the lookahead for the next epoch has been updated + IPreconfTaskManager.LookaheadBufferEntry[128] memory lookaheadBuffer = + preconfTaskManager.getLookaheadBuffer(); + + // Check the first entry + assertEq(lookaheadBuffer[3].preconfer, addr_1); + assertEq( + lookaheadBuffer[3].timestamp, nextEpochStart + (9 * LibPreconfConstants.SECONDS_IN_SLOT) + ); + assertEq( + lookaheadBuffer[3].prevTimestamp, + currentEpochStart + (22 * LibPreconfConstants.SECONDS_IN_SLOT) + ); + assertEq(lookaheadBuffer[3].isFallback, false); + + // Check the second entry + assertEq(lookaheadBuffer[4].preconfer, addr_2); + assertEq( + lookaheadBuffer[4].timestamp, + nextEpochStart + (19 * LibPreconfConstants.SECONDS_IN_SLOT) + ); + assertEq( + lookaheadBuffer[4].prevTimestamp, + nextEpochStart + (9 * LibPreconfConstants.SECONDS_IN_SLOT) + ); + assertEq(lookaheadBuffer[4].isFallback, false); + + // Verify that the lookahead tail has been updated + assertEq(preconfTaskManager.getLookaheadTail(), 4); + + // Verify that the lookahead poster for the next epoch has been set + assertEq(preconfTaskManager.getLookaheadPoster(nextEpochStart), addr_1); + } + + function test_newBlockProposal_revertWhenTimestampAboveDedicatedSlot() external { + prepareLookahead(13, 23); + + uint256 currentEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 dedicatedSlotTimestamp = + currentEpochStart + (12 * LibPreconfConstants.SECONDS_IN_SLOT); + + // Warp to a timestamp after the dedicated slot + vm.warp(dedicatedSlotTimestamp + LibPreconfConstants.SECONDS_IN_SLOT); + + vm.prank(addr_1); + vm.expectRevert(IPreconfTaskManager.InvalidLookaheadPointer.selector); + _newBlockProposal( + "Block Params", "Txn List", 1, new IPreconfTaskManager.LookaheadSetParam[](0) + ); + } + + function test_newBlockProposal_revertWhenTimestampBelowPrevTimestamp() external { + prepareLookahead(13, 23); + + uint256 currentEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 prevSlotTimestamp = currentEpochStart + (12 * LibPreconfConstants.SECONDS_IN_SLOT); + + // Warp to a timestamp before the previous slot + vm.warp(prevSlotTimestamp - LibPreconfConstants.SECONDS_IN_SLOT); + + vm.prank(addr_3); + vm.expectRevert(IPreconfTaskManager.InvalidLookaheadPointer.selector); + _newBlockProposal( + "Block Params", "Txn List", 2, new IPreconfTaskManager.LookaheadSetParam[](0) + ); + } + + function test_newBlockProposal_revertWhenTimestampEqualToPrevTimestamp() external { + prepareLookahead(13, 23); + + uint256 currentEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 prevSlotTimestamp = currentEpochStart + (12 * LibPreconfConstants.SECONDS_IN_SLOT); + + // Warp to the exact timestamp of the previous slot + vm.warp(prevSlotTimestamp); + + vm.prank(addr_3); + vm.expectRevert(IPreconfTaskManager.InvalidLookaheadPointer.selector); + _newBlockProposal( + "Block Params", "Txn List", 2, new IPreconfTaskManager.LookaheadSetParam[](0) + ); + } + + function test_newBlockProposal_revertWhenSenderIsNotThePreconfer() external { + prepareLookahead(13, 23); + + uint256 currentEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 currentSlotTimestamp = + currentEpochStart + (15 * LibPreconfConstants.SECONDS_IN_SLOT); + + // Warp to a slot when Address 3 is the expected preconfer + vm.warp(currentSlotTimestamp); + + // Try to propose with a different address than the expected preconfer + vm.prank(addr_2); // addr_2 is not the expected preconfer (It is addr_3) + vm.expectRevert(IPreconfTaskManager.SenderIsNotThePreconfer.selector); + _newBlockProposal( + "Block Params", "Txn List", 2, new IPreconfTaskManager.LookaheadSetParam[](0) + ); + } + + function _newBlockProposal( + bytes memory blockParams, + bytes memory txList, + uint256 lookaheadPointer, + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams + ) + internal + { + bytes[] memory blockParamsArr = new bytes[](1); + blockParamsArr[0] = blockParams; + + bytes[] memory txListArr = new bytes[](1); + txListArr[0] = txList; + + preconfTaskManager.newBlockProposals( + blockParamsArr, txListArr, lookaheadPointer, lookaheadSetParams + ); + } +} diff --git a/packages/protocol/test/layer1/preconf/bls/BLSExpandMsgXmd.t.sol b/packages/protocol/test/layer1/preconf/bls/BLSExpandMsgXmd.t.sol new file mode 100644 index 00000000000..2a9d893faf8 --- /dev/null +++ b/packages/protocol/test/layer1/preconf/bls/BLSExpandMsgXmd.t.sol @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: MIT +// Test has been referenced from +// https://github.com/ethyla/bls12-381-hash-to-curve/blob/main/test/expandMsgXmd.sol +pragma solidity ^0.8.24; + +import "../BaseTest.sol"; +import "src/layer1/preconf/libs/LibBLS12381.sol"; + +contract BLSExpendMsgXmd is BaseTest { + bytes internal expand_msg_dst = "QUUX-V01-CS02-with-expander-SHA256-128"; + + function test_expandMsgXmd_empty_msg_0x20() public { + uint256[] memory result = LibBLS12381._expandMsgXmd("", expand_msg_dst, 0x20); + uint256 expected = 0x68a985b87eb6b46952128911f2a4412bbc302a9d759667f87f7a21d803f07235; + + assertEq(result[0], expected); + } + + function testExpandMsgXmd_abc_0x20() public { + uint256[] memory result = LibBLS12381._expandMsgXmd("abc", expand_msg_dst, 0x20); + uint256 expected = 0xd8ccab23b5985ccea865c6c97b6e5b8350e794e603b4b97902f53a8a0d605615; + + assertEq(result[0], expected); + } + + function testExpandMsgXmd_abcdef0123456789_0x20() public { + uint256[] memory result = + LibBLS12381._expandMsgXmd("abcdef0123456789", expand_msg_dst, 0x20); + uint256 expected = 0xeff31487c770a893cfb36f912fbfcbff40d5661771ca4b2cb4eafe524333f5c1; + + assertEq(result[0], expected); + } + + function testExpandMsgXmd_q128_0x20() public { + uint256[] memory result = LibBLS12381._expandMsgXmd( + "q128_qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq", + expand_msg_dst, + 0x20 + ); + uint256 expected = 0xb23a1d2b4d97b2ef7785562a7e8bac7eed54ed6e97e29aa51bfe3f12ddad1ff9; + + assertEq(result[0], expected); + } + + function testExpandMsgXmd_a512_0x20() public { + uint256[] memory result = LibBLS12381._expandMsgXmd( + "a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + expand_msg_dst, + 0x20 + ); + uint256 expected = 0x4623227bcc01293b8c130bf771da8c298dede7383243dc0993d2d94823958c4c; + + assertEq(result[0], expected); + } + + function testExpandMsgXmd_empty_msg_0x80() public { + uint256[] memory result = LibBLS12381._expandMsgXmd("", expand_msg_dst, 0x80); + bytes memory expected = + hex"af84c27ccfd45d41914fdff5df25293e221afc53d8ad2ac06d5e3e29485dadbee0d121587713a3e0dd4d5e69e93eb7cd4f5df4cd103e188cf60cb02edc3edf18eda8576c412b18ffb658e3dd6ec849469b979d444cf7b26911a08e63cf31f9dcc541708d3491184472c2c29bb749d4286b004ceb5ee6b9a7fa5b646c993f0ced"; + + assertEq( + bytes.concat( + bytes32(result[0]), bytes32(result[1]), bytes32(result[2]), bytes32(result[3]) + ), + expected + ); + } + + function testExpandMsgXmd_abc_0x80() public { + uint256[] memory result = LibBLS12381._expandMsgXmd("abc", expand_msg_dst, 0x80); + bytes memory expected = + hex"abba86a6129e366fc877aab32fc4ffc70120d8996c88aee2fe4b32d6c7b6437a647e6c3163d40b76a73cf6a5674ef1d890f95b664ee0afa5359a5c4e07985635bbecbac65d747d3d2da7ec2b8221b17b0ca9dc8a1ac1c07ea6a1e60583e2cb00058e77b7b72a298425cd1b941ad4ec65e8afc50303a22c0f99b0509b4c895f40"; + + assertEq( + bytes.concat( + bytes32(result[0]), bytes32(result[1]), bytes32(result[2]), bytes32(result[3]) + ), + expected + ); + } + + function testExpandMsgXmd_abcdef0123456789_0x80() public { + uint256[] memory result = + LibBLS12381._expandMsgXmd("abcdef0123456789", expand_msg_dst, 0x80); + bytes memory expected = + hex"ef904a29bffc4cf9ee82832451c946ac3c8f8058ae97d8d629831a74c6572bd9ebd0df635cd1f208e2038e760c4994984ce73f0d55ea9f22af83ba4734569d4bc95e18350f740c07eef653cbb9f87910d833751825f0ebefa1abe5420bb52be14cf489b37fe1a72f7de2d10be453b2c9d9eb20c7e3f6edc5a60629178d9478df"; + + assertEq( + bytes.concat( + bytes32(result[0]), bytes32(result[1]), bytes32(result[2]), bytes32(result[3]) + ), + expected + ); + } + + function testExpandMsgXmd_q128_0x80() public { + uint256[] memory result = LibBLS12381._expandMsgXmd( + "q128_qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq", + expand_msg_dst, + 0x80 + ); + bytes memory expected = + hex"80be107d0884f0d881bb460322f0443d38bd222db8bd0b0a5312a6fedb49c1bbd88fd75d8b9a09486c60123dfa1d73c1cc3169761b17476d3c6b7cbbd727acd0e2c942f4dd96ae3da5de368d26b32286e32de7e5a8cb2949f866a0b80c58116b29fa7fabb3ea7d520ee603e0c25bcaf0b9a5e92ec6a1fe4e0391d1cdbce8c68a"; + + assertEq( + bytes.concat( + bytes32(result[0]), bytes32(result[1]), bytes32(result[2]), bytes32(result[3]) + ), + expected + ); + } + + function testExpandMsgXmd_a512_0x80() public { + uint256[] memory result = LibBLS12381._expandMsgXmd( + "a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + expand_msg_dst, + 0x80 + ); + bytes memory expected = + hex"546aff5444b5b79aa6148bd81728704c32decb73a3ba76e9e75885cad9def1d06d6792f8a7d12794e90efed817d96920d728896a4510864370c207f99bd4a608ea121700ef01ed879745ee3e4ceef777eda6d9e5e38b90c86ea6fb0b36504ba4a45d22e86f6db5dd43d98a294bebb9125d5b794e9d2a81181066eb954966a487"; + + assertEq( + bytes.concat( + bytes32(result[0]), bytes32(result[1]), bytes32(result[2]), bytes32(result[3]) + ), + expected + ); + } +} diff --git a/packages/protocol/test/layer1/preconf/bls/BLSHashToFieldFp2.t.sol b/packages/protocol/test/layer1/preconf/bls/BLSHashToFieldFp2.t.sol new file mode 100644 index 00000000000..da305ab7957 --- /dev/null +++ b/packages/protocol/test/layer1/preconf/bls/BLSHashToFieldFp2.t.sol @@ -0,0 +1,103 @@ +// SPDX-License-Identifier: MIT +// Test has been referenced from +// https://github.com/ethyla/bls12-381-hash-to-curve/blob/main/test/hashToField.sol +pragma solidity ^0.8.24; + +import "../BaseTest.sol"; +import "src/layer1/preconf/libs/LibBLS12381.sol"; + +contract BLSHashToFieldFp2 is BaseTest { + bytes internal hash_to_dst = "QUUX-V01-CS02-with-BLS12381G2_XMD:SHA-256_SSWU_RO_"; + + function test_hashToFieldFp2_empty_msg() public { + LibBLS12381.FieldPoint2[2] memory result = LibBLS12381.hashToFieldFp2("", hash_to_dst); + bytes memory expected_u0 = + hex"0000000000000000000000000000000003dbc2cce174e91ba93cbb08f26b917f98194a2ea08d1cce75b2b9cc9f21689d80bd79b594a613d0a68eb807dfdc1cf8"; + bytes memory expected_u0_I = + hex"0000000000000000000000000000000005a2acec64114845711a54199ea339abd125ba38253b70a92c876df10598bd1986b739cad67961eb94f7076511b3b39a"; + bytes memory expected_u1 = + hex"0000000000000000000000000000000002f99798e8a5acdeed60d7e18e9120521ba1f47ec090984662846bc825de191b5b7641148c0dbc237726a334473eee94"; + bytes memory expected_u1_I = + hex"00000000000000000000000000000000145a81e418d4010cc027a68f14391b30074e89e60ee7a22f87217b2f6eb0c4b94c9115b436e6fa4607e95a98de30a435"; + + assertEq(bytes.concat(bytes32(result[0].u[0]), bytes32(result[0].u[1])), expected_u0); + assertEq(bytes.concat(bytes32(result[0].u_I[0]), bytes32(result[0].u_I[1])), expected_u0_I); + assertEq(bytes.concat(bytes32(result[1].u[0]), bytes32(result[1].u[1])), expected_u1); + assertEq(bytes.concat(bytes32(result[1].u_I[0]), bytes32(result[1].u_I[1])), expected_u1_I); + } + + function test_hashToFieldFp2_msg_abc() public { + LibBLS12381.FieldPoint2[2] memory result = LibBLS12381.hashToFieldFp2("abc", hash_to_dst); + bytes memory expected_u0 = + hex"0000000000000000000000000000000015f7c0aa8f6b296ab5ff9c2c7581ade64f4ee6f1bf18f55179ff44a2cf355fa53dd2a2158c5ecb17d7c52f63e7195771"; + bytes memory expected_u0_I = + hex"0000000000000000000000000000000001c8067bf4c0ba709aa8b9abc3d1cef589a4758e09ef53732d670fd8739a7274e111ba2fcaa71b3d33df2a3a0c8529dd"; + bytes memory expected_u1 = + hex"00000000000000000000000000000000187111d5e088b6b9acfdfad078c4dacf72dcd17ca17c82be35e79f8c372a693f60a033b461d81b025864a0ad051a06e4"; + bytes memory expected_u1_I = + hex"0000000000000000000000000000000008b852331c96ed983e497ebc6dee9b75e373d923b729194af8e72a051ea586f3538a6ebb1e80881a082fa2b24df9f566"; + + assertEq(bytes.concat(bytes32(result[0].u[0]), bytes32(result[0].u[1])), expected_u0); + assertEq(bytes.concat(bytes32(result[0].u_I[0]), bytes32(result[0].u_I[1])), expected_u0_I); + assertEq(bytes.concat(bytes32(result[1].u[0]), bytes32(result[1].u[1])), expected_u1); + assertEq(bytes.concat(bytes32(result[1].u_I[0]), bytes32(result[1].u_I[1])), expected_u1_I); + } + + function test_hash_to_field_msg_fp2_abcdef0123456789() public { + LibBLS12381.FieldPoint2[2] memory result = + LibBLS12381.hashToFieldFp2("abcdef0123456789", hash_to_dst); + bytes memory expected_u0 = + hex"000000000000000000000000000000000313d9325081b415bfd4e5364efaef392ecf69b087496973b229303e1816d2080971470f7da112c4eb43053130b785e1"; + bytes memory expected_u0_I = + hex"00000000000000000000000000000000062f84cb21ed89406890c051a0e8b9cf6c575cf6e8e18ecf63ba86826b0ae02548d83b483b79e48512b82a6c0686df8f"; + bytes memory expected_u1 = + hex"000000000000000000000000000000001739123845406baa7be5c5dc74492051b6d42504de008c635f3535bb831d478a341420e67dcc7b46b2e8cba5379cca97"; + bytes memory expected_u1_I = + hex"0000000000000000000000000000000001897665d9cb5db16a27657760bbea7951f67ad68f8d55f7113f24ba6ddd82caef240a9bfa627972279974894701d975"; + + assertEq(bytes.concat(bytes32(result[0].u[0]), bytes32(result[0].u[1])), expected_u0); + assertEq(bytes.concat(bytes32(result[0].u_I[0]), bytes32(result[0].u_I[1])), expected_u0_I); + assertEq(bytes.concat(bytes32(result[1].u[0]), bytes32(result[1].u[1])), expected_u1); + assertEq(bytes.concat(bytes32(result[1].u_I[0]), bytes32(result[1].u_I[1])), expected_u1_I); + } + + function test_hashToFieldFp2_msg_q128() public { + LibBLS12381.FieldPoint2[2] memory result = LibBLS12381.hashToFieldFp2( + "q128_qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq", + hash_to_dst + ); + bytes memory expected_u0 = + hex"00000000000000000000000000000000025820cefc7d06fd38de7d8e370e0da8a52498be9b53cba9927b2ef5c6de1e12e12f188bbc7bc923864883c57e49e253"; + bytes memory expected_u0_I = + hex"00000000000000000000000000000000034147b77ce337a52e5948f66db0bab47a8d038e712123bb381899b6ab5ad20f02805601e6104c29df18c254b8618c7b"; + bytes memory expected_u1 = + hex"000000000000000000000000000000000930315cae1f9a6017c3f0c8f2314baa130e1cf13f6532bff0a8a1790cd70af918088c3db94bda214e896e1543629795"; + bytes memory expected_u1_I = + hex"0000000000000000000000000000000010c4df2cacf67ea3cb3108b00d4cbd0b3968031ebc8eac4b1ebcefe84d6b715fde66bef0219951ece29d1facc8a520ef"; + + assertEq(bytes.concat(bytes32(result[0].u[0]), bytes32(result[0].u[1])), expected_u0); + assertEq(bytes.concat(bytes32(result[0].u_I[0]), bytes32(result[0].u_I[1])), expected_u0_I); + assertEq(bytes.concat(bytes32(result[1].u[0]), bytes32(result[1].u[1])), expected_u1); + assertEq(bytes.concat(bytes32(result[1].u_I[0]), bytes32(result[1].u_I[1])), expected_u1_I); + } + + function test_hashToFieldFp2_msg_a512() public { + LibBLS12381.FieldPoint2[2] memory result = LibBLS12381.hashToFieldFp2( + "a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + hash_to_dst + ); + bytes memory expected_u0 = + hex"00000000000000000000000000000000190b513da3e66fc9a3587b78c76d1d132b1152174d0b83e3c1114066392579a45824c5fa17649ab89299ddd4bda54935"; + bytes memory expected_u0_I = + hex"0000000000000000000000000000000012ab625b0fe0ebd1367fe9fac57bb1168891846039b4216b9d94007b674de2d79126870e88aeef54b2ec717a887dcf39"; + bytes memory expected_u1 = + hex"000000000000000000000000000000000e6a42010cf435fb5bacc156a585e1ea3294cc81d0ceb81924d95040298380b164f702275892cedd81b62de3aba3f6b5"; + bytes memory expected_u1_I = + hex"00000000000000000000000000000000117d9a0defc57a33ed208428cb84e54c85a6840e7648480ae428838989d25d97a0af8e3255be62b25c2a85630d2dddd8"; + + assertEq(bytes.concat(bytes32(result[0].u[0]), bytes32(result[0].u[1])), expected_u0); + assertEq(bytes.concat(bytes32(result[0].u_I[0]), bytes32(result[0].u_I[1])), expected_u0_I); + assertEq(bytes.concat(bytes32(result[1].u[0]), bytes32(result[1].u[1])), expected_u1); + assertEq(bytes.concat(bytes32(result[1].u_I[0]), bytes32(result[1].u_I[1])), expected_u1_I); + } +} diff --git a/packages/protocol/test/layer1/preconf/bls/script-test/BLSHashToCurveG2.sol b/packages/protocol/test/layer1/preconf/bls/script-test/BLSHashToCurveG2.sol new file mode 100644 index 00000000000..9caf95cdaea --- /dev/null +++ b/packages/protocol/test/layer1/preconf/bls/script-test/BLSHashToCurveG2.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +// solhint-disable-next-line +pragma solidity ^0.8.24; + +import "script/layer1/preconf/BaseScript.sol"; +import "src/layer1/preconf/libs/LibBLS12381.sol"; + +/** + * @dev At the time of writing this (Sept, 2024) foundry does not support the LibBLS12381 + * precompile, + * thus + * a traditional foundry test is not possible for hash to curve functionality. Instead, we test it + * manually by sending a transaction to a Pectra devnet and verify the outputs on the explorer. + */ +contract BLSHashToCurveG2 is BaseScript { + function run() external broadcast { + Target target = new Target(); + target.hashToCurveG2(); + } +} + +contract Target { + bytes internal HASH_TO_G2_DST = "QUUX-V01-CS02-with-LibBLS12381G2_XMD:SHA-256_SSWU_RO_"; + + event Output(LibBLS12381.G2Point); + + function hashToCurveG2() external { + /** + * Expected output: + * 0x0000000000000000000000000000000002c2d18e033b960562aae3cab37a27ce00d80ccd5ba4b7fe0e7a210245129dbec7780ccc7954725f4168aff2787776e600000000000000000000000000000000139cddbccdc5e91b9623efd38c49f81a6f83f175e80b06fc374de9eb4b41dfe4ca3a230ed250fbe3a2acf73a41177fd8000000000000000000000000000000001787327b68159716a37440985269cf584bcb1e621d3a7202be6ea05c4cfe244aeb197642555a0645fb87bf7466b2ba480000000000000000000000000000000000aa65dae3c8d732d10ecd2c50f8a1baf3001578f71c694e03866e9f3d49ac1e1ce70dd94a733534f106d4cec0eddd16 + */ + emit Output(LibBLS12381.hashToCurveG2("abc", HASH_TO_G2_DST)); + } +} diff --git a/packages/protocol/test/layer1/preconf/bls/script-test/BLSVerifySignature.sol b/packages/protocol/test/layer1/preconf/bls/script-test/BLSVerifySignature.sol new file mode 100644 index 00000000000..244b2bcf629 --- /dev/null +++ b/packages/protocol/test/layer1/preconf/bls/script-test/BLSVerifySignature.sol @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT +// solhint-disable-next-line +pragma solidity ^0.8.24; + +import "script/layer1/preconf/BaseScript.sol"; +import "src/layer1/preconf/libs/LibBLSSignature.sol"; + +/** + * @dev At the time of writing this (Sept, 2024) foundry does not support the LibBLS12381 + * precompile, + * thus + * a traditional foundry test is not possible to verify a signature. Instead, we test it + * manually by sending a transaction to a Pectra devnet and verify the outputs on the explorer. + */ +contract BLSVerifySignature is BaseScript { + using LibBLS12381 for *; + + function run() external broadcast { + Target target = new Target(); + target.verify(); + } +} + +contract Target { + event Output(bool); + + function verify() external { + LibBLS12381.G2Point memory sig = LibBLS12381.G2Point({ + x: [ + 0x00000000000000000000000000000000075785f1ffe7faabd27259035731c4ff, + 0x881c38e87fc963a47425ce52f12f18c348370eaea53008bc683206d7770f5bdf + ], + x_I: [ + 0x0000000000000000000000000000000002f8146bf138cbc35aeeccd4570d121c, + 0x8aec29661e8108e4094dc37b5a499272a6a680f015d0527c312a82457db8b979 + ], + y: [ + 0x000000000000000000000000000000000f5357626a9be51a0e689244b1a28d7b, + 0xe6132ad16f8d1852c2c75804fccf473902a5b8bbe6dd182d04643f34bb34fbe6 + ], + y_I: [ + 0x000000000000000000000000000000000544d2c2834eebb7cfbd5498cc0c328b, + 0x619d482161808b7e27dbb92941df85f704a6218ce9903af72eabdb3dbead70c7 + ] + }); + + LibBLS12381.G1Point memory pubkey = LibBLS12381.G1Point({ + x: [ + 0x00000000000000000000000000000000101936a69d6fbd2feae29545220ad66e, + 0xb60c3171b8d15de582dd2c645f67cb32377de0c97666e4b4fc7fad8a1c9a81af + ], + y: [ + 0x00000000000000000000000000000000056cde7adcc8f412efa58ee343569d76, + 0xa95176133a52fbf43979f46c0658010c573c093f3814a5d4dded92b52d197dff + ] + }); + + /** + * Expected output using DST as empty string "": + * 0x0000000000000000000000000000000000000000000000000000000000000001 + */ + emit Output(LibBLSSignature.verifySignature("abc", sig, pubkey)); + } +} diff --git a/packages/protocol/test/layer1/preconf/fixtures/BeaconProofs.sol b/packages/protocol/test/layer1/preconf/fixtures/BeaconProofs.sol new file mode 100644 index 00000000000..e6ada1d91c3 --- /dev/null +++ b/packages/protocol/test/layer1/preconf/fixtures/BeaconProofs.sol @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "src/layer1/preconf/libs/LibEIP4788.sol"; + +/// @dev Data has been taken from beacon block at slot 9000000 on Ethereum mainnet +library BeaconProofs { + function validator() internal pure returns (bytes memory) { + return + hex"98fb8eacf684f80712faa9354535620f94a10687c2243c0cdae7280cf6220fb64c78e49efe8eef599406b33e5aac4dd0"; + } + + function validatorsRoot() internal pure returns (bytes32) { + return 0x0ccf56d8e76d16306c6e6e78ec20c07be5fa5ae89b18873b43cc823075a5df0b; + } + + function validatorIndex() internal pure returns (uint256) { + return 912_203; + } + + function beaconStateRoot() internal pure returns (bytes32) { + return 0xcd918afbe365c6dcabab551e32fae5f3f9677433876049dc035e5135122a2e7e; + } + + function beaconBlockRoot() internal pure returns (bytes32) { + return 0xcc8a36da0d5112c8dd602530ac7c7b8364edfd92cdc6f0d62365de392e8e5bb6; + } + + function validatorChunks() internal pure returns (bytes32[8] memory) { + bytes32[8] memory chunks; + chunks[0] = 0x8d7c2b324f41a1d395fc265d42c6e1293b38c33a674244cae9ac67d68367036d; + chunks[1] = 0x0100000000000000000000006661be71769ff00c5e403f327869505caf0b7f70; + chunks[2] = 0x0040597307000000000000000000000000000000000000000000000000000000; + chunks[3] = 0x0000000000000000000000000000000000000000000000000000000000000000; + chunks[4] = 0xe271030000000000000000000000000000000000000000000000000000000000; + chunks[5] = 0x6084030000000000000000000000000000000000000000000000000000000000; + chunks[6] = 0xffffffffffffffff000000000000000000000000000000000000000000000000; + chunks[7] = 0xffffffffffffffff000000000000000000000000000000000000000000000000; + + return chunks; + } + + function validatorProof() internal pure returns (bytes32[] memory) { + bytes32[] memory proof = new bytes32[](41); + proof[0] = 0xf5ee350215176477a7fb48aa80292de237856ad3068f46728da26aedca8a3b2b; + proof[1] = 0xfbeca4cff4f86c2ff5f1ff6808f57b12e7a6f3365d59a35c90f19715995f8be8; + proof[2] = 0x06ee0000b0cf0c0531c2a4f3368eb8df6079216bb6cca127a76e459c62058615; + proof[3] = 0x5b8c291888e7936b46e36d7b71d36c846fbfc04d48cab6beb20e23642f64ee69; + proof[4] = 0xa748ed979e88b53c303ece0946d13d2def12e003b90b562474dac1768d1d0975; + proof[5] = 0xe667bf725f0e72f47409d089248b50a9a11d08591b83374f18ed338f5c3ff964; + proof[6] = 0xd86b77a649fad1d48e109b8bc98d2a2dbc88a4b9b86c5e06878e0b980ebda3b7; + proof[7] = 0xc2db7c18d080f2b21f2c981f65414d00b0cc8542fda38233fa1c1ee33df4bbe1; + proof[8] = 0xe72e80d2ce704957f507af587e19a61ceadad2411c9728315e1f294fadae23f1; + proof[9] = 0x32f30ee3311d96e0544e2e4b0f4e1e1863d06224636ea8004e49a27280a81a11; + proof[10] = 0x89d191926d7681be7545b42b9ef95d413fbe1d8c014400c5ece8141be300b238; + proof[11] = 0x0c924ac306b692750b3285f974edf991dd4f05fff0ab3dd114430499722ff93b; + proof[12] = 0x1eb9a358bbe044159a2bed16a0b69b5b988ba0c57f2c267cfd390b3fb86fde6a; + proof[13] = 0xda60132f38fc053c26ba06136e03a861fd5e59734dc3e6cc1b69c072b9ce600a; + proof[14] = 0xcee182aa676671046ccf49213a58ef8d35e227a3adfaa146f7b71dc47c7bdd73; + proof[15] = 0xf1d0df094ceceed165886daf4c52c467710ed19a53df98ab2607629dbf7036ba; + proof[16] = 0x81917306117277e02aa4174ae73a2ec414862aced0491ec933434d9bd2279e3f; + proof[17] = 0xc562f7ffddaec138272a84b043216c1c906f68198f752ad6b80171794fcba3b5; + proof[18] = 0xcdfeaaff006b40d110ff925b18bffc36cf55543a35c84d25da0b196ea81c6029; + proof[19] = 0x8bd5e9cadc78cd0b0e0abd32a63a39596ad24e14552926bce0f6c54e39c29b99; + proof[20] = 0x6187b4f2f4b3e572fe26a6c73567ab5b1695303b0ad9dd5c9ab9679266fba2e3; + proof[21] = 0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c; + proof[22] = 0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167; + proof[23] = 0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7; + proof[24] = 0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0; + proof[25] = 0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544; + proof[26] = 0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765; + proof[27] = 0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4; + proof[28] = 0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1; + proof[29] = 0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636; + proof[30] = 0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c; + proof[31] = 0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7; + proof[32] = 0xc6f67e02e6e4e1bdefb994c6098953f34636ba2b6ca20a4721d2b26a886722ff; + proof[33] = 0x1c9a7e5ff1cf48b4ad1582d3f4e4a1004f3b20d8c5a2b71387a4254ad933ebc5; + proof[34] = 0x2f075ae229646b6f6aed19a5e372cf295081401eb893ff599b3f9acc0c0d3e7d; + proof[35] = 0x328921deb59612076801e8cd61592107b5c67c79b846595cc6320c395b46362c; + proof[36] = 0xbfb909fdb236ad2411b4e4883810a074b840464689986c3f8a8091827e17c327; + proof[37] = 0x55d8fb3687ba3ba49f342c77f5a1f89bec83d811446e1a467139213d640b6a74; + proof[38] = 0xf7210d4f8e7e1039790e7bf4efa207555a10a6db1dd4b95da313aaa88b88fe76; + proof[39] = 0xad21b516cbc645ffe34ab5de1c8aef8cd4e7f8d2b51e8e1456adc7563cda206f; + proof[40] = 0x2821150000000000000000000000000000000000000000000000000000000000; + + return proof; + } + + function beaconStateProofForValidatorList() internal pure returns (bytes32[] memory) { + bytes32[] memory proof = new bytes32[](5); + proof[0] = 0x8c53160000000000000000000000000000000000000000000000000000000000; + proof[1] = 0xd9cb62ffd113d2a2b71b4539c54bf01587d8a2a5a7c81baa2c2ae89d245578d6; + proof[2] = 0xefbad4c97640101fc18122e8b818e8cc3c278a18e05dc601af4095d5519d834a; + proof[3] = 0x775d61d75ab0731115447847764383a42283b502eb4ed3ca7ba412ac67da5138; + proof[4] = 0xbb5cf5c0273b8d100f329ea0c78c471d0833f048c7fc264c285c3696d7aed412; + + return proof; + } + + function beaconBlockProofForBeaconState() internal pure returns (bytes32[] memory) { + bytes32[] memory proof = new bytes32[](3); + proof[0] = 0xf47de6dfa04049ce0586d989821321111d896f3cc37e40637fc226bee212e43d; + proof[1] = 0x7506bc99ed6f0e48ad0e1ded3e878dfcfe08ca4a89308910ba1941e912673258; + proof[2] = 0x00f48b46fd6aac7f8a72d8e1eed4f3b5bd244bf6242cb538ca94b44aed02857a; + + return proof; + } + + function beaconBlockProofForProposer() internal pure returns (bytes32[] memory) { + bytes32[] memory proof = new bytes32[](3); + proof[0] = 0x4054890000000000000000000000000000000000000000000000000000000000; + proof[1] = 0xd22083672621f940e26b3f1e627f8c311a3f5f0874c193b40974f244668e1372; + proof[2] = 0x00f48b46fd6aac7f8a72d8e1eed4f3b5bd244bf6242cb538ca94b44aed02857a; + + return proof; + } + + function eip4788ValidatorInclusionProof() + internal + pure + returns (LibEIP4788.InclusionProof memory) + { + return LibEIP4788.InclusionProof({ + validator: validatorChunks(), + validatorIndex: validatorIndex(), + validatorProof: validatorProof(), + validatorsRoot: validatorsRoot(), + beaconStateProof: beaconStateProofForValidatorList(), + beaconStateRoot: beaconStateRoot(), + beaconBlockProofForState: beaconBlockProofForBeaconState(), + beaconBlockProofForProposerIndex: beaconBlockProofForProposer() + }); + } +} diff --git a/packages/protocol/test/layer1/preconf/fixtures/BlocksFixtures.sol b/packages/protocol/test/layer1/preconf/fixtures/BlocksFixtures.sol new file mode 100644 index 00000000000..291da5cb39b --- /dev/null +++ b/packages/protocol/test/layer1/preconf/fixtures/BlocksFixtures.sol @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../BaseTest.sol"; +import "../mocks/MockPreconfRegistry.sol"; +import "../mocks/MockPreconfServiceManager.sol"; +import "../mocks/MockBeaconBlockRoot.sol"; +import "test/layer1/based/MockTaikoL1.sol"; + +import "src/layer1/preconf/impl/LibPreconfConstants.sol"; +import "src/layer1/preconf/impl/PreconfTaskManager.sol"; +import "src/layer1/preconf/iface/IPreconfRegistry.sol"; +import "src/layer1/preconf/iface/IPreconfServiceManager.sol"; +import "src/layer1/preconf/iface/IPreconfTaskManager.sol"; + +contract BlocksFixtures is BaseTest { + PreconfTaskManager internal preconfTaskManager; + MockPreconfRegistry internal preconfRegistry; + MockPreconfServiceManager internal preconfServiceManager; + MockBeaconBlockRoot internal beaconBlockRootContract; + MockTaikoL1 internal taikoL1; + + function setUp() public virtual { + preconfRegistry = new MockPreconfRegistry(); + preconfServiceManager = new MockPreconfServiceManager(); + beaconBlockRootContract = new MockBeaconBlockRoot(); + taikoL1 = new MockTaikoL1(); + + preconfTaskManager = new PreconfTaskManager( + IPreconfServiceManager(address(preconfServiceManager)), + IPreconfRegistry(address(preconfRegistry)), + ITaikoL1(taikoL1), + LibPreconfConstants.MAINNET_BEACON_GENESIS, + address(beaconBlockRootContract) + ); + } + + /// @dev Inserts two preconfers in the lookahead for the next epoch at the given slots. + function prepareLookahead(uint256 slot1, uint256 slot2) internal { + addPreconfersToRegistry(3); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](2); + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + preconfer: addr_1, + timestamp: nextEpochStart + LibPreconfConstants.SECONDS_IN_SLOT * (slot1 - 1) + }); + lookaheadSetParams[1] = IPreconfTaskManager.LookaheadSetParam({ + preconfer: addr_3, + timestamp: nextEpochStart + LibPreconfConstants.SECONDS_IN_SLOT * (slot2 - 1) + }); + + vm.warp(LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_SLOT); + vm.prank(addr_1); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + } + + function addPreconfersToRegistry(uint256 count) internal { + for (uint256 i = 1; i <= count; i++) { + preconfRegistry.registerPreconfer(vm.addr(i)); + } + } +} diff --git a/packages/protocol/test/layer1/preconf/fixtures/LookaheadFixtures.sol b/packages/protocol/test/layer1/preconf/fixtures/LookaheadFixtures.sol new file mode 100644 index 00000000000..d9e77fe34bc --- /dev/null +++ b/packages/protocol/test/layer1/preconf/fixtures/LookaheadFixtures.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "test/layer1/based/MockTaikoL1.sol"; +import "src/layer1/preconf/impl/LibPreconfConstants.sol"; +import "src/layer1/preconf/impl/PreconfTaskManager.sol"; +import "src/layer1/preconf/iface/IPreconfRegistry.sol"; +import "src/layer1/preconf/iface/IPreconfServiceManager.sol"; + +import "../BaseTest.sol"; +import "../mocks/MockPreconfRegistry.sol"; +import "../mocks/MockPreconfServiceManager.sol"; +import "../mocks/MockBeaconBlockRoot.sol"; + +contract LookaheadFixtures is BaseTest { + PreconfTaskManager internal preconfTaskManager; + MockPreconfRegistry internal preconfRegistry; + MockPreconfServiceManager internal preconfServiceManager; + MockBeaconBlockRoot internal beaconBlockRootContract; + MockTaikoL1 internal taikoL1; + + function setUp() public virtual { + preconfRegistry = new MockPreconfRegistry(); + preconfServiceManager = new MockPreconfServiceManager(); + beaconBlockRootContract = new MockBeaconBlockRoot(); + taikoL1 = new MockTaikoL1(); + + preconfTaskManager = new PreconfTaskManager( + IPreconfServiceManager(address(preconfServiceManager)), + IPreconfRegistry(address(preconfRegistry)), + ITaikoL1(taikoL1), + LibPreconfConstants.MAINNET_BEACON_GENESIS, + address(beaconBlockRootContract) + ); + } + + function addPreconfersToRegistry(uint256 count) internal { + for (uint256 i = 1; i <= count; i++) { + preconfRegistry.registerPreconfer(vm.addr(i)); + } + } + + function computeFallbackPreconfer( + bytes32 randomness, + uint256 nextPreconferIndex + ) + internal + pure + returns (address) + { + return vm.addr(uint256(randomness) % (nextPreconferIndex - 1) + 1); + } +} diff --git a/packages/protocol/test/layer1/preconf/lookahead/IncorrectLookahead.t.sol b/packages/protocol/test/layer1/preconf/lookahead/IncorrectLookahead.t.sol new file mode 100644 index 00000000000..46ff9691ec7 --- /dev/null +++ b/packages/protocol/test/layer1/preconf/lookahead/IncorrectLookahead.t.sol @@ -0,0 +1,661 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../fixtures/BeaconProofs.sol"; +import "../fixtures/LookaheadFixtures.sol"; + +import "src/layer1/preconf/impl/LibPreconfConstants.sol"; +import "src/layer1/preconf/iface/IPreconfTaskManager.sol"; + +/// @dev The beacon chain data used here is from slot 9000000 on Ethereum mainnet. +contract IncorrectLookahead is LookaheadFixtures { + // Most tests in this file use a lookahead that has a preconfer (addr_1) set at slot 16 in epoch + // 2. + // Epoch 1 starts at the genesis timestamp. + uint256 internal nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 internal slot16Timestamp = nextEpochStart + (15 * LibPreconfConstants.SECONDS_IN_SLOT); + + function setUp() public override { + super.setUp(); + } + + function test_proveIncorrectLookahead_slashesPosterWhenLookaheadEntryIsIncorrect_Case1() + external + { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // This beacon proposer is not added as a validator for our preconfer in lookahead + bytes memory beaconProposer = BeaconProofs.validator(); + + // Prove the lookahead to be incorrect + preconfTaskManager.proveIncorrectLookahead( + 2, slot16Timestamp, beaconProposer, BeaconProofs.eip4788ValidatorInclusionProof() + ); + + // Verify that storage has been updated + assertEq( + preconfTaskManager.getLookaheadPoster( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH + ), + address(0) + ); + + // Poster i.e addr_1 must be slashed + assertTrue(preconfServiceManager.operatorSlashed(addr_1)); + } + + function test_proveIncorrectLookahead_slashesPosterWhenLookaheadEntryIsIncorrect_Case2() + external + { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // The beacon proposer is added for the preconfer, but is not allowed to propose at slot 16 + bytes memory beaconProposer = BeaconProofs.validator(); + preconfRegistry.addValidator( + beaconProposer, addr_1, slot16Timestamp + LibPreconfConstants.SECONDS_IN_SLOT, 0 + ); + + // Prove the lookahead to be incorrect + preconfTaskManager.proveIncorrectLookahead( + 2, slot16Timestamp, beaconProposer, BeaconProofs.eip4788ValidatorInclusionProof() + ); + + // Verify that storage has been updated + assertEq( + preconfTaskManager.getLookaheadPoster( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH + ), + address(0) + ); + + // Poster i.e addr_1 must be slashed + assertTrue(preconfServiceManager.operatorSlashed(addr_1)); + } + + function test_proveIncorrectLookahead_slashesPosterWhenLookaheadEntryIsIncorrect_Case3() + external + { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // The beacon proposer is added for the preconfer, but is has lost proposal rights at slot + // 16 + bytes memory beaconProposer = BeaconProofs.validator(); + preconfRegistry.addValidator( + beaconProposer, addr_1, LibPreconfConstants.MAINNET_BEACON_GENESIS, slot16Timestamp + ); + + // Prove the lookahead to be incorrect + preconfTaskManager.proveIncorrectLookahead( + 2, slot16Timestamp, beaconProposer, BeaconProofs.eip4788ValidatorInclusionProof() + ); + + // Verify that storage has been updated + assertEq( + preconfTaskManager.getLookaheadPoster( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH + ), + address(0) + ); + + // Poster i.e addr_1 must be slashed + assertTrue(preconfServiceManager.operatorSlashed(addr_1)); + } + + function test_proveIncorrectLookahead_slashesPosterWhenLookaheadEntryIsIncorrect_Case4() + external + { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // The beacon proposer is added for the preconfer, but is has lost proposal rights before + // slot 16 + bytes memory beaconProposer = BeaconProofs.validator(); + preconfRegistry.addValidator( + beaconProposer, + addr_1, + LibPreconfConstants.MAINNET_BEACON_GENESIS, + slot16Timestamp - LibPreconfConstants.SECONDS_IN_SLOT + ); + + // Prove the lookahead to be incorrect + preconfTaskManager.proveIncorrectLookahead( + 2, slot16Timestamp, beaconProposer, BeaconProofs.eip4788ValidatorInclusionProof() + ); + + // Verify that storage has been updated + assertEq( + preconfTaskManager.getLookaheadPoster( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH + ), + address(0) + ); + + // Poster i.e addr_1 must be slashed + assertTrue(preconfServiceManager.operatorSlashed(addr_1)); + } + + function test_proveIncorrectLookahead_slashesPosterWhenLookaheadEntryIsIncorrect_Case5() + external + { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // The beacon proposer belongs to another preconfer + bytes memory beaconProposer = BeaconProofs.validator(); + preconfRegistry.addValidator( + beaconProposer, addr_2, LibPreconfConstants.MAINNET_BEACON_GENESIS, 0 + ); + + // Prove the lookahead to be incorrect + preconfTaskManager.proveIncorrectLookahead( + 2, slot16Timestamp, beaconProposer, BeaconProofs.eip4788ValidatorInclusionProof() + ); + + // Verify that storage has been updated + assertEq( + preconfTaskManager.getLookaheadPoster( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH + ), + address(0) + ); + + // Poster i.e addr_1 must be slashed + assertTrue(preconfServiceManager.operatorSlashed(addr_1)); + } + + function test_proveIncorrectLookahead_slashesPosterWhenLookaheadEntryIsIncorrect_Case6() + external + { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // Take a slot for which their is no dedicated lookahead entry and set it's beacon block + // root + // containing a proposer mapped to a valid preconfer + uint256 slot15Timestamp = slot16Timestamp - LibPreconfConstants.SECONDS_IN_SLOT; + beaconBlockRootContract.set(slot16Timestamp, BeaconProofs.beaconBlockRoot()); + + // The beacon proposer belongs to a valid preconfer who is not in the lookahead at slot 15 + bytes memory beaconProposer = BeaconProofs.validator(); + preconfRegistry.addValidator( + beaconProposer, addr_2, LibPreconfConstants.MAINNET_BEACON_GENESIS, 0 + ); + + // Prove the lookahead to be incorrect + preconfTaskManager.proveIncorrectLookahead( + 2, slot15Timestamp, beaconProposer, BeaconProofs.eip4788ValidatorInclusionProof() + ); + + // Verify that storage has been updated + assertEq( + preconfTaskManager.getLookaheadPoster( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH + ), + address(0) + ); + + // Poster i.e addr_1 must be slashed + assertTrue(preconfServiceManager.operatorSlashed(addr_1)); + } + + function test_proveIncorrectLookahead_slashesPosterWhenLookaheadEntryIsIncorrect_Case7() + external + { + addPreconfersToRegistry(10); + // addr_1 posts empty lookahead for next epoch to set fallback preconfer + postEmptyLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // Take the last slot in the lookahead with the fallback preconfer and set it's beacon block + // root + // containing a proposer mapped to an active preconfer + beaconBlockRootContract.set(nextEpochEnd, BeaconProofs.beaconBlockRoot()); + + // The beacon proposer belongs to a valid preconfer who is not in the lookahead at slot 32 + // as the lookahead has the fallback preconfer + bytes memory beaconProposer = BeaconProofs.validator(); + preconfRegistry.addValidator( + beaconProposer, addr_2, LibPreconfConstants.MAINNET_BEACON_GENESIS, 0 + ); + + // Prove the lookahead to be incorrect + preconfTaskManager.proveIncorrectLookahead( + 1, + nextEpochEnd - LibPreconfConstants.SECONDS_IN_SLOT, + beaconProposer, + BeaconProofs.eip4788ValidatorInclusionProof() + ); + + // Verify that storage has been updated + assertEq( + preconfTaskManager.getLookaheadPoster( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH + ), + address(0) + ); + + // Poster i.e addr_1 must be slashed + assertTrue(preconfServiceManager.operatorSlashed(addr_1)); + } + + function test_proveIncorrectLookahead_setsFallbackPreconfer_Case1() external { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to an arbitrary timestamp after the incorrect slot in the next epoch + vm.warp(slot16Timestamp + (2 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // This beacon proposer is not added as a validator for our preconfer in lookahead + bytes memory beaconProposer = BeaconProofs.validator(); + + bytes32 randomness = bytes32(uint256(4)); + + // Set beacon block root such that addr_4 is randomly selected + beaconBlockRootContract.set( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_SLOT, + randomness + ); + + // Prove the lookahead to be incorrect + preconfTaskManager.proveIncorrectLookahead( + 2, slot16Timestamp, beaconProposer, BeaconProofs.eip4788ValidatorInclusionProof() + ); + + uint256 lastSlotTimestamp = nextEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH + - LibPreconfConstants.SECONDS_IN_SLOT; + + // Verify that the lookahead has the fallback preconfer + IPreconfTaskManager.LookaheadBufferEntry[128] memory lookaheadBuffer = + preconfTaskManager.getLookaheadBuffer(); + assertEq( + lookaheadBuffer[3].preconfer, + computeFallbackPreconfer(randomness, preconfRegistry.getNextPreconferIndex()) + ); + assertEq(lookaheadBuffer[3].timestamp, lastSlotTimestamp); + assertEq( + lookaheadBuffer[3].prevTimestamp, nextEpochStart - LibPreconfConstants.SECONDS_IN_SLOT + ); + assertEq(lookaheadBuffer[3].isFallback, true); + + // Verify that the remaining entries for the epoch have been removed + assertEq(lookaheadBuffer[2].preconfer, address(0)); + assertEq(lookaheadBuffer[2].timestamp, 0); + assertEq(lookaheadBuffer[2].prevTimestamp, 0); + assertEq(lookaheadBuffer[2].isFallback, false); + + assertEq(lookaheadBuffer[1].preconfer, address(0)); + assertEq(lookaheadBuffer[1].timestamp, 0); + assertEq(lookaheadBuffer[1].prevTimestamp, 0); + assertEq(lookaheadBuffer[1].isFallback, false); + } + + function test_proveIncorrectLookahead_setsFallbackPreconfer_Case2() external { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to an arbitrary timestamp after the incorrect slot in the next epoch + vm.warp(slot16Timestamp + (2 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // Force push lookahead for next epoch + // This to ensure if the first entry in the following epoch connects correctly to the newly + // inserted + // fallback preconfer + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](2); + + uint256 nextToNextEpochStart = nextEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH; + + // Slot 13 + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + preconfer: addr_1, + timestamp: nextToNextEpochStart + (12 * LibPreconfConstants.SECONDS_IN_SLOT) + }); + // Slot 22 + lookaheadSetParams[1] = IPreconfTaskManager.LookaheadSetParam({ + preconfer: addr_2, + timestamp: nextToNextEpochStart + (21 * LibPreconfConstants.SECONDS_IN_SLOT) + }); + + // Address 1 pushes the lookahead + vm.prank(addr_1); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + + // This beacon proposer is not added as a validator for our preconfer in lookahead + bytes memory beaconProposer = BeaconProofs.validator(); + + bytes32 randomness = bytes32(uint256(4)); + + // Set beacon block root such that addr_4 is randomly selected + beaconBlockRootContract.set( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_SLOT, + randomness + ); + + // Prove the lookahead to be incorrect + preconfTaskManager.proveIncorrectLookahead( + 2, slot16Timestamp, beaconProposer, BeaconProofs.eip4788ValidatorInclusionProof() + ); + + uint256 lastSlotTimestamp = nextEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH + - LibPreconfConstants.SECONDS_IN_SLOT; + + // Verify that the lookahead has the fallback preconfer + IPreconfTaskManager.LookaheadBufferEntry[128] memory lookaheadBuffer = + preconfTaskManager.getLookaheadBuffer(); + assertEq( + lookaheadBuffer[3].preconfer, + computeFallbackPreconfer(randomness, preconfRegistry.getNextPreconferIndex()) + ); + assertEq(lookaheadBuffer[3].timestamp, lastSlotTimestamp); + assertEq( + lookaheadBuffer[3].prevTimestamp, nextEpochStart - LibPreconfConstants.SECONDS_IN_SLOT + ); + assertEq(lookaheadBuffer[3].isFallback, true); + + // Verify that the remaining entries for the epoch have been removed + assertEq(lookaheadBuffer[2].preconfer, address(0)); + assertEq(lookaheadBuffer[2].timestamp, 0); + assertEq(lookaheadBuffer[2].prevTimestamp, 0); + assertEq(lookaheadBuffer[2].isFallback, false); + + assertEq(lookaheadBuffer[1].preconfer, address(0)); + assertEq(lookaheadBuffer[1].timestamp, 0); + assertEq(lookaheadBuffer[1].prevTimestamp, 0); + assertEq(lookaheadBuffer[1].isFallback, false); + + // Verify that the first entry in the following epoch is connected to the fallback preconfer + assertEq(lookaheadBuffer[4].preconfer, addr_1); + assertEq( + lookaheadBuffer[4].timestamp, + nextToNextEpochStart + (12 * LibPreconfConstants.SECONDS_IN_SLOT) + ); + assertEq(lookaheadBuffer[4].prevTimestamp, lastSlotTimestamp); + assertEq(lookaheadBuffer[4].isFallback, false); + } + + function test_proveIncorrectLookahead_revertsWhenPosterIsAlreadySlashedOrLookaheadIsEmpty() + external + { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // Reverts when the timestamp belongs to an epoch that does not have a lookahead yet + vm.expectRevert(IPreconfTaskManager.PosterAlreadySlashedOrLookaheadIsEmpty.selector); + preconfTaskManager.proveIncorrectLookahead( + 2, + // Epoch does not have a poster yet + LibPreconfConstants.MAINNET_BEACON_GENESIS + (4 * LibPreconfConstants.SECONDS_IN_EPOCH), + BeaconProofs.validator(), + BeaconProofs.eip4788ValidatorInclusionProof() + ); + } + + function test_proveIncorrectLookahead_revertsWhenDisputeWindowIsMissed() external { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // Wrap into the future when the dispute window is missed + vm.warp( + slot16Timestamp + LibPreconfConstants.DISPUTE_PERIOD + + LibPreconfConstants.SECONDS_IN_SLOT + ); + + // Reverts when the dispute period is over + vm.expectRevert(IPreconfTaskManager.MissedDisputeWindow.selector); + preconfTaskManager.proveIncorrectLookahead( + 2, + slot16Timestamp, + BeaconProofs.validator(), + BeaconProofs.eip4788ValidatorInclusionProof() + ); + } + + function test_proveIncorrectLookahead_revertsWhenLookaheadPointerIsInvalid_Case1() external { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // Reverts because the pointer is in the past and slot timestamp in future + vm.expectRevert(IPreconfTaskManager.InvalidLookaheadPointer.selector); + preconfTaskManager.proveIncorrectLookahead( + 1, + slot16Timestamp, + BeaconProofs.validator(), + BeaconProofs.eip4788ValidatorInclusionProof() + ); + } + + function test_proveIncorrectLookahead_revertsWhenLookaheadPointerIsInvalid_Case2() external { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // Reverts because the pointer is in the future (slotTimestamp == pointer.prevTimestamp) + vm.expectRevert(IPreconfTaskManager.InvalidLookaheadPointer.selector); + preconfTaskManager.proveIncorrectLookahead( + 3, + slot16Timestamp, + BeaconProofs.validator(), + BeaconProofs.eip4788ValidatorInclusionProof() + ); + } + + function test_proveIncorrectLookahead_revertsWhenLookaheadPointerIsInvalid_Case3() external { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // Wrap to arbitrary timestamp in next epoch + vm.warp(slot16Timestamp + (2 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // Push a lookahead for the following epoch + // This will enable simulating the condition slotTimestamp < pointer.prevTimestamps + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](1); + uint256 nextToNextEpochStart = nextEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH; + // Slot 13 + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + preconfer: addr_1, + timestamp: nextToNextEpochStart + (12 * LibPreconfConstants.SECONDS_IN_SLOT) + }); + + // Address 1 pushes the lookahead + vm.prank(addr_1); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + + // Reverts because the pointer is in the future (slotTimestamp < pointer.prevTimestamp) + vm.expectRevert(IPreconfTaskManager.InvalidLookaheadPointer.selector); + preconfTaskManager.proveIncorrectLookahead( + 4, + slot16Timestamp, + BeaconProofs.validator(), + BeaconProofs.eip4788ValidatorInclusionProof() + ); + } + + function test_proveIncorrectLookahead_revertsWhenLookaheadEntryIsCorrect() external { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + // Sets slot 16 to its own address + postLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // Add the validator for addr_1 in registry + // This is also the proposer for the beacon block whose root we have stored (see + // `postLookahead()`) + bytes memory beaconProposer = BeaconProofs.validator(); + preconfRegistry.addValidator( + beaconProposer, addr_1, LibPreconfConstants.MAINNET_BEACON_GENESIS, 0 + ); + + // Reverts when the lookahead is tried to be proven incorrect + vm.expectRevert(IPreconfTaskManager.LookaheadEntryIsCorrect.selector); + preconfTaskManager.proveIncorrectLookahead( + 2, slot16Timestamp, beaconProposer, BeaconProofs.eip4788ValidatorInclusionProof() + ); + } + + function test_proveIncorrectLookahead_emitsProvedIncorrectLookaheadEvent() external { + addPreconfersToRegistry(10); + // addr_1 posts lookahead for next epoch + postLookahead(); + + // We wrap to a timestamp in next to next epoch because invalidating the lookahead of an + // ongoing epoch + // sets a random preconfer for the epoch which is not intended for this test. + uint256 nextEpochEnd = + LibPreconfConstants.MAINNET_BEACON_GENESIS + (2 * LibPreconfConstants.SECONDS_IN_EPOCH); + vm.warp(nextEpochEnd + (3 * LibPreconfConstants.SECONDS_IN_SLOT)); + + // This beacon proposer is not added as a validator for our preconfer in lookahead + bytes memory beaconProposer = BeaconProofs.validator(); + + // Prove the lookahead to be incorrect + vm.expectEmit(); + emit IPreconfTaskManager.ProvedIncorrectLookahead(addr_1, slot16Timestamp, address(this)); + + preconfTaskManager.proveIncorrectLookahead( + 2, slot16Timestamp, beaconProposer, BeaconProofs.eip4788ValidatorInclusionProof() + ); + } + + //========= + // Helpers + //========= + + /// @dev Makes addr_1 push a fixed lookeahead + function postLookahead() internal { + // Arbitrary slot in current epoch + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](3); + + // Slot 5 + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + preconfer: addr_2, + timestamp: nextEpochStart + (4 * LibPreconfConstants.SECONDS_IN_SLOT) + }); + // Slot 16 (Slot used for fault proofs) + lookaheadSetParams[1] = + IPreconfTaskManager.LookaheadSetParam({ preconfer: addr_1, timestamp: slot16Timestamp }); + // Slot 25 + lookaheadSetParams[2] = IPreconfTaskManager.LookaheadSetParam({ + preconfer: addr_3, + timestamp: nextEpochStart + (24 * LibPreconfConstants.SECONDS_IN_SLOT) + }); + + // Address 1 pushes the lookahead + vm.prank(addr_1); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + + // Set the beacon block root for slot 16 (in the timestamp of slot 17) + beaconBlockRootContract.set( + slot16Timestamp + LibPreconfConstants.SECONDS_IN_SLOT, BeaconProofs.beaconBlockRoot() + ); + } + + /// @dev Makes addr_1 push an empty lookeahead + function postEmptyLookahead() internal { + // Arbitrary slot in current epoch + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](0); + + beaconBlockRootContract.set( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_SLOT, + bytes32(uint256(4)) + ); + + // Address 1 pushes the lookahead + vm.prank(addr_1); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + } +} diff --git a/packages/protocol/test/layer1/preconf/lookahead/LookaheadPosting.t.sol b/packages/protocol/test/layer1/preconf/lookahead/LookaheadPosting.t.sol new file mode 100644 index 00000000000..cbee4ba898c --- /dev/null +++ b/packages/protocol/test/layer1/preconf/lookahead/LookaheadPosting.t.sol @@ -0,0 +1,428 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "../fixtures/LookaheadFixtures.sol"; + +import "src/layer1/preconf/impl/LibPreconfConstants.sol"; +import "src/layer1/preconf/iface/IPreconfTaskManager.sol"; + +contract LookaheadPosting is LookaheadFixtures { + function setUp() public override { + super.setUp(); + } + + function test_forcePushLookahead_setsNonEmptyLookaheadInNextEpoch_Case1() external { + addPreconfersToRegistry(5); + + // Arbitrary slot in current epoch + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](1); + + // Slot 1 + lookaheadSetParams[0] = + IPreconfTaskManager.LookaheadSetParam({ preconfer: addr_1, timestamp: nextEpochStart }); + + // Address 1 pushes the lookahead + vm.prank(addr_1); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + + // Verify storage is updated correctly + uint256 lookaheadTail = preconfTaskManager.getLookaheadTail(); + assertEq(lookaheadTail, 1); + + IPreconfTaskManager.LookaheadBufferEntry[128] memory lookaheadBuffer = + preconfTaskManager.getLookaheadBuffer(); + assertEq(lookaheadBuffer[1].preconfer, addr_1); + assertEq(lookaheadBuffer[1].timestamp, nextEpochStart); + assertEq(lookaheadBuffer[1].prevTimestamp, 0); + assertEq(lookaheadBuffer[1].isFallback, false); + + assertEq(preconfTaskManager.getLookaheadPoster(nextEpochStart), addr_1); + } + + function test_forcePushLookahead_setsNonEmptyLookaheadInNextEpoch_Case2() external { + addPreconfersToRegistry(7); + + // Arbitrary slot in current epoch + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 slot20Timestamp = nextEpochStart + (19 * LibPreconfConstants.SECONDS_IN_SLOT); + + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](2); + + // Slot 1 + lookaheadSetParams[0] = + IPreconfTaskManager.LookaheadSetParam({ preconfer: addr_1, timestamp: nextEpochStart }); + // Slot 20 + lookaheadSetParams[1] = + IPreconfTaskManager.LookaheadSetParam({ preconfer: addr_3, timestamp: slot20Timestamp }); + + // Address 3 pushes the lookahead + vm.prank(addr_3); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + + // Storage is updated correctly + uint256 lookaheadTail = preconfTaskManager.getLookaheadTail(); + assertEq(lookaheadTail, 2); + + IPreconfTaskManager.LookaheadBufferEntry[128] memory lookaheadBuffer = + preconfTaskManager.getLookaheadBuffer(); + assertEq(lookaheadBuffer[1].preconfer, addr_1); + assertEq(lookaheadBuffer[1].timestamp, nextEpochStart); + assertEq(lookaheadBuffer[1].prevTimestamp, 0); + assertEq(lookaheadBuffer[1].isFallback, false); + + assertEq(lookaheadBuffer[2].preconfer, addr_3); + assertEq(lookaheadBuffer[2].timestamp, slot20Timestamp); + assertEq(lookaheadBuffer[2].prevTimestamp, nextEpochStart); + assertEq(lookaheadBuffer[2].isFallback, false); + + assertEq(preconfTaskManager.getLookaheadPoster(nextEpochStart), addr_3); + } + + function test_forcePushLookahead_setsNonEmptyLookaheadInNextEpoch_Case3() external { + addPreconfersToRegistry(10); + + // Arbitrary slot in current epoch + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 slot14Timestamp = nextEpochStart + (13 * LibPreconfConstants.SECONDS_IN_SLOT); + uint256 slot31Timestamp = nextEpochStart + (30 * LibPreconfConstants.SECONDS_IN_SLOT); + + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](3); + + // Slot 1 + lookaheadSetParams[0] = + IPreconfTaskManager.LookaheadSetParam({ preconfer: addr_1, timestamp: nextEpochStart }); + // Slot 14 + lookaheadSetParams[1] = + IPreconfTaskManager.LookaheadSetParam({ preconfer: addr_2, timestamp: slot14Timestamp }); + // Slot 31 + lookaheadSetParams[2] = + IPreconfTaskManager.LookaheadSetParam({ preconfer: addr_5, timestamp: slot31Timestamp }); + + // Address 2 pushes the lookahead + vm.prank(addr_2); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + + // Storage is updated correctly + uint256 lookaheadTail = preconfTaskManager.getLookaheadTail(); + assertEq(lookaheadTail, 3); + + IPreconfTaskManager.LookaheadBufferEntry[128] memory lookaheadBuffer = + preconfTaskManager.getLookaheadBuffer(); + assertEq(lookaheadBuffer[1].preconfer, addr_1); + assertEq(lookaheadBuffer[1].timestamp, nextEpochStart); + assertEq(lookaheadBuffer[1].prevTimestamp, 0); + assertEq(lookaheadBuffer[1].isFallback, false); + + assertEq(lookaheadBuffer[2].preconfer, addr_2); + assertEq(lookaheadBuffer[2].timestamp, slot14Timestamp); + assertEq(lookaheadBuffer[2].prevTimestamp, nextEpochStart); + assertEq(lookaheadBuffer[2].isFallback, false); + + assertEq(lookaheadBuffer[3].preconfer, addr_5); + assertEq(lookaheadBuffer[3].timestamp, slot31Timestamp); + assertEq(lookaheadBuffer[3].prevTimestamp, slot14Timestamp); + assertEq(lookaheadBuffer[3].isFallback, false); + + assertEq(preconfTaskManager.getLookaheadPoster(nextEpochStart), addr_2); + } + + function test_forcePushLookahead_setsFallbackPreconfer_Case1() external { + addPreconfersToRegistry(10); + + // Arbitrary slot in the current epoch + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 lastSlotTimestampInNextEpoch = nextEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH + - LibPreconfConstants.SECONDS_IN_SLOT; + + // Create an empty lookahead set + IPreconfTaskManager.LookaheadSetParam[] memory emptyLookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](0); + + bytes32 randomness = bytes32(uint256(4)); + + // Push a required root to the mock beacon block root contract + // This root as a source of randomness selects the preconfer with index 4 + beaconBlockRootContract.set( + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_SLOT, + randomness + ); + + // Address 2 pushes the empty lookahead + vm.prank(addr_2); + preconfTaskManager.forcePushLookahead(emptyLookaheadSetParams); + + // Verify that the lookahead is empty + uint256 lookaheadTail = preconfTaskManager.getLookaheadTail(); + assertEq(lookaheadTail, 1); + + // Verify that correct preconfer is inserted as fallback in lookahead buffer + IPreconfTaskManager.LookaheadBufferEntry[128] memory lookaheadBuffer = + preconfTaskManager.getLookaheadBuffer(); + assertEq( + lookaheadBuffer[1].preconfer, + computeFallbackPreconfer(randomness, preconfRegistry.getNextPreconferIndex()) + ); + assertEq(lookaheadBuffer[1].timestamp, lastSlotTimestampInNextEpoch); + assertEq(lookaheadBuffer[1].prevTimestamp, 0); + assertEq(lookaheadBuffer[1].isFallback, true); + + // Verify that the lookahead poster is set correctly + assertEq(preconfTaskManager.getLookaheadPoster(nextEpochStart), addr_2); + } + + function test_forcePushLookahead_setsFallbackPreconfer_Case2() external { + addPreconfersToRegistry(10); + + // Arbitrary slot in the current epoch + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + uint256 lastSlotTimestampInNextEpoch = nextEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH + - LibPreconfConstants.SECONDS_IN_SLOT; + + // Create an empty lookahead set + IPreconfTaskManager.LookaheadSetParam[] memory emptyLookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](0); + + bytes32 randomness = bytes32(uint256(4)); + + // Unlike Case 1, we push the root at a later timestamp to simulate "skipped blocks" and see + // if the contract iterates forward and finds the required root + beaconBlockRootContract.set( + LibPreconfConstants.MAINNET_BEACON_GENESIS + 3 * LibPreconfConstants.SECONDS_IN_SLOT, + randomness + ); + + // Address 2 pushes the empty lookahead + vm.prank(addr_2); + preconfTaskManager.forcePushLookahead(emptyLookaheadSetParams); + + // Verify that the lookahead is empty + uint256 lookaheadTail = preconfTaskManager.getLookaheadTail(); + assertEq(lookaheadTail, 1); + + // Verify that correct preconfer is inserted as fallback in lookahead buffer + IPreconfTaskManager.LookaheadBufferEntry[128] memory lookaheadBuffer = + preconfTaskManager.getLookaheadBuffer(); + assertEq( + lookaheadBuffer[1].preconfer, + computeFallbackPreconfer(randomness, preconfRegistry.getNextPreconferIndex()) + ); + assertEq(lookaheadBuffer[1].timestamp, lastSlotTimestampInNextEpoch); + assertEq(lookaheadBuffer[1].prevTimestamp, 0); + assertEq(lookaheadBuffer[1].isFallback, true); + + // Verify that the lookahead poster is set correctly + assertEq(preconfTaskManager.getLookaheadPoster(nextEpochStart), addr_2); + } + + function test_forcePushLookahead_revertsWhenPreconferNotRegistered_Case1() external { + // Add addr_1 through addr_5 to the registry + addPreconfersToRegistry(5); + + IPreconfTaskManager.LookaheadSetParam[] memory emptyLookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](0); + + // Transaction is expected to revert as addr_6 is not registered in the preconfer registry + vm.prank(addr_6); + vm.expectRevert(IPreconfTaskManager.PreconferNotRegistered.selector); + preconfTaskManager.forcePushLookahead(emptyLookaheadSetParams); + } + + function test_forcePushLookahead_revertsWhenPreconferNotRegistered_Case2() external { + // Add addr_1 through addr_5 to the registry + addPreconfersToRegistry(5); + + // Arbitrary slot in the current epoch + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + + // Create a lookahead set with an unregistered preconfer (addr_6) + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](1); + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + timestamp: nextEpochStart + LibPreconfConstants.SECONDS_IN_SLOT, + preconfer: addr_6 // addr_6 is not registered + }); + + // Transaction is expected to revert as addr_6 is not registered in the preconfer registry + vm.prank(addr_1); + vm.expectRevert(IPreconfTaskManager.PreconferNotRegistered.selector); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + } + + function test_forcePushLookahead_revertsWhenLookaheadIsNotRequired() external { + // Add addr_1 through addr_5 to the registry + addPreconfersToRegistry(5); + + // Arbitrary slot in the current epoch + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + + // Create a valid lookahead set + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](1); + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + timestamp: nextEpochStart + LibPreconfConstants.SECONDS_IN_SLOT, + preconfer: addr_1 + }); + + // First push should succeed + vm.prank(addr_1); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + + // Verify that the lookahead poster is set correctly + assertEq(preconfTaskManager.getLookaheadPoster(nextEpochStart), addr_1); + + // Attempt to push the lookahead again fails + vm.prank(addr_2); + vm.expectRevert(IPreconfTaskManager.LookaheadIsNotRequired.selector); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + } + + function test_forcePushLookahead_revertsWhenInvalidSlotTimestamp_notMultipleOf12() external { + // Add addr_1 to the registry + addPreconfersToRegistry(1); + + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + + // Create a lookahead set with an invalid timestamp (not a multiple of 12 seconds from epoch + // start) + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](1); + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + timestamp: nextEpochStart + 5, // Not a multiple of 12 + preconfer: addr_1 + }); + + vm.prank(addr_1); + vm.expectRevert(IPreconfTaskManager.InvalidSlotTimestamp.selector); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + } + + function test_forcePushLookahead_revertsWhenInvalidSlotTimestamp_exceedsEpochEnd() external { + // Add addr_1 to the registry + addPreconfersToRegistry(1); + + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + + // Create a lookahead set with a timestamp that exceeds the epoch end + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](1); + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + timestamp: nextEpochStart + LibPreconfConstants.SECONDS_IN_EPOCH, // Exactly one epoch + // later, which is the start of the next epoch + preconfer: addr_1 + }); + + vm.prank(addr_1); + vm.expectRevert(IPreconfTaskManager.InvalidSlotTimestamp.selector); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + } + + function test_forcePushLookahead_revertsWhenInvalidSlotTimestamp_notGreaterThanPrevious() + external + { + // Add addr_1 and addr_2 to the registry + addPreconfersToRegistry(2); + + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + + // Create a lookahead set with timestamps in the wrong order + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](2); + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + timestamp: nextEpochStart + 2 * LibPreconfConstants.SECONDS_IN_SLOT, + preconfer: addr_1 + }); + lookaheadSetParams[1] = IPreconfTaskManager.LookaheadSetParam({ + timestamp: nextEpochStart + LibPreconfConstants.SECONDS_IN_SLOT, // Earlier than the + // previous timestamp + preconfer: addr_2 + }); + + vm.prank(addr_1); + vm.expectRevert(IPreconfTaskManager.InvalidSlotTimestamp.selector); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + } + + function test_forcePushLookahead_emitsLookaheadUpdatedEvent() external { + // Add addr_1 and addr_2 to the registry + addPreconfersToRegistry(2); + + uint256 currentSlotTimestamp = + LibPreconfConstants.MAINNET_BEACON_GENESIS + 2 * LibPreconfConstants.SECONDS_IN_SLOT; + vm.warp(currentSlotTimestamp); + + uint256 nextEpochStart = + LibPreconfConstants.MAINNET_BEACON_GENESIS + LibPreconfConstants.SECONDS_IN_EPOCH; + + // Create a valid lookahead set + IPreconfTaskManager.LookaheadSetParam[] memory lookaheadSetParams = + new IPreconfTaskManager.LookaheadSetParam[](2); + lookaheadSetParams[0] = IPreconfTaskManager.LookaheadSetParam({ + timestamp: nextEpochStart + LibPreconfConstants.SECONDS_IN_SLOT, + preconfer: addr_1 + }); + lookaheadSetParams[1] = IPreconfTaskManager.LookaheadSetParam({ + timestamp: nextEpochStart + 2 * LibPreconfConstants.SECONDS_IN_SLOT, + preconfer: addr_2 + }); + + vm.prank(addr_1); + vm.expectEmit(); + emit IPreconfTaskManager.LookaheadUpdated(lookaheadSetParams); + preconfTaskManager.forcePushLookahead(lookaheadSetParams); + } +} diff --git a/packages/protocol/test/layer1/preconf/mocks/MockBeaconBlockRoot.sol b/packages/protocol/test/layer1/preconf/mocks/MockBeaconBlockRoot.sol new file mode 100644 index 00000000000..35f3caba2db --- /dev/null +++ b/packages/protocol/test/layer1/preconf/mocks/MockBeaconBlockRoot.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +contract MockBeaconBlockRoot { + mapping(uint256 => bytes32) internal blockRoots; + + function set(uint256 timestamp, bytes32 root) external { + blockRoots[timestamp] = root; + } + + fallback(bytes calldata data) external payable returns (bytes memory) { + bytes32 root = blockRoots[abi.decode(data, (uint256))]; + require(root != bytes32(0), "no root"); + return abi.encode(root); + } + + receive() external payable { } +} diff --git a/packages/protocol/test/layer1/preconf/mocks/MockPreconfRegistry.sol b/packages/protocol/test/layer1/preconf/mocks/MockPreconfRegistry.sol new file mode 100644 index 00000000000..d28561a6fb6 --- /dev/null +++ b/packages/protocol/test/layer1/preconf/mocks/MockPreconfRegistry.sol @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +contract MockPreconfRegistry { + struct Validator { + address preconfer; + uint40 startProposingAt; + uint40 stopProposingAt; + } + + mapping(address preconfer => uint256 index) internal preconferToIndex; + mapping(uint256 index => address preconfer) internal indexToPreconfer; + mapping(bytes32 pubKeyhash => Validator validator) internal validators; + + uint256 internal nextPreconferIndex = 1; + + function registerPreconfer(address preconfer) external { + uint256 _nextPreconferIndex = nextPreconferIndex; + + preconferToIndex[preconfer] = _nextPreconferIndex; + indexToPreconfer[_nextPreconferIndex] = preconfer; + + unchecked { + nextPreconferIndex = _nextPreconferIndex + 1; + } + } + + function addValidator( + bytes memory pubKey, + address preconfer, + uint256 startProposingAt, + uint256 stopProposingAt + ) + external + { + bytes32 key = keccak256(abi.encodePacked(bytes16(0), pubKey)); + validators[key] = Validator(preconfer, uint40(startProposingAt), uint40(stopProposingAt)); + } + + function getNextPreconferIndex() external view returns (uint256) { + return nextPreconferIndex; + } + + function getPreconferIndex(address preconfer) external view returns (uint256) { + return preconferToIndex[preconfer]; + } + + function getPreconferAtIndex(uint256 index) external view returns (address) { + return indexToPreconfer[index]; + } + + function getValidator(bytes32 pubKeyHash) external view returns (Validator memory) { + return validators[pubKeyHash]; + } +} diff --git a/packages/protocol/test/layer1/preconf/mocks/MockPreconfServiceManager.sol b/packages/protocol/test/layer1/preconf/mocks/MockPreconfServiceManager.sol new file mode 100644 index 00000000000..c46ea65303b --- /dev/null +++ b/packages/protocol/test/layer1/preconf/mocks/MockPreconfServiceManager.sol @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +contract MockPreconfServiceManager { + mapping(address => uint256) public stakeLockTimestamps; + mapping(address => bool) public operatorSlashed; + + function lockStakeUntil(address operator, uint256 timestamp) external { + stakeLockTimestamps[operator] = timestamp; + } + + function slashOperator(address operator) external { + operatorSlashed[operator] = true; + } +} diff --git a/packages/protocol/test/layer1/verifiers/SgxVerifier.t.sol b/packages/protocol/test/layer1/verifiers/SgxVerifier.t.sol index 5631423fddb..2e1b115de9e 100644 --- a/packages/protocol/test/layer1/verifiers/SgxVerifier.t.sol +++ b/packages/protocol/test/layer1/verifiers/SgxVerifier.t.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; +import "src/layer1/verifiers/SgxVerifierBase.sol"; import "../automata-attestation/common/AttestationBase.t.sol"; import "../based/TaikoL1TestBase.sol"; @@ -38,9 +39,11 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { instances[1] = Bob; vm.expectEmit(true, true, true, true); - emit SgxVerifier.InstanceAdded(startInstance, instances[0], address(0), block.timestamp); + emit SgxVerifierBase.InstanceAdded(startInstance, instances[0], address(0), block.timestamp); vm.expectEmit(true, true, true, true); - emit SgxVerifier.InstanceAdded(startInstance + 1, instances[1], address(0), block.timestamp); + emit SgxVerifierBase.InstanceAdded( + startInstance + 1, instances[1], address(0), block.timestamp + ); // `addInstances()` uint256[] memory ids = sv.addInstances(instances); @@ -66,11 +69,11 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { instances2[1] = David; vm.expectEmit(true, true, true, true); - emit SgxVerifier.InstanceAdded( + emit SgxVerifierBase.InstanceAdded( startInstance + 2, instances2[0], address(0), block.timestamp ); vm.expectEmit(true, true, true, true); - emit SgxVerifier.InstanceAdded( + emit SgxVerifierBase.InstanceAdded( startInstance + 3, instances2[1], address(0), block.timestamp ); @@ -103,7 +106,7 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { instances[1] = address(0); // `addInstances()` - vm.expectRevert(SgxVerifier.SGX_INVALID_INSTANCE.selector); + vm.expectRevert(SgxVerifierBase.SGX_INVALID_INSTANCE.selector); sv.addInstances(instances); vm.stopPrank(); @@ -117,7 +120,7 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { instances[1] = Alice; // invalid as duplicate instance // `addInstances()` - vm.expectRevert(SgxVerifier.SGX_ALREADY_ATTESTED.selector); + vm.expectRevert(SgxVerifierBase.SGX_ALREADY_ATTESTED.selector); sv.addInstances(instances); } @@ -161,7 +164,7 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { vm.prank(Bob, Bob); sv.registerInstance(v3quote); - vm.expectRevert(SgxVerifier.SGX_ALREADY_ATTESTED.selector); + vm.expectRevert(SgxVerifierBase.SGX_ALREADY_ATTESTED.selector); vm.prank(Carol, Carol); sv.registerInstance(v3quote); } @@ -218,7 +221,7 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { vm.warp(block.timestamp + 5); vm.expectEmit(true, true, true, true); - emit SgxVerifier.InstanceAdded(id, newInstance, KNOWN_ADDRESS, block.timestamp); + emit SgxVerifierBase.InstanceAdded(id, newInstance, KNOWN_ADDRESS, block.timestamp); // `verifyProof()` sv.verifyProof(ctx, transition, proof); @@ -294,7 +297,7 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { }); // `verifyProof()` - vm.expectRevert(SgxVerifier.SGX_INVALID_PROOF.selector); + vm.expectRevert(SgxVerifierBase.SGX_INVALID_PROOF.selector); sv.verifyProof(ctx, transition, proof); } @@ -375,7 +378,7 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { TaikoData.TierProof memory proof = TaikoData.TierProof({ tier: 0, data: data }); // `verifyProof()` - vm.expectRevert(SgxVerifier.SGX_INVALID_INSTANCE.selector); + vm.expectRevert(SgxVerifierBase.SGX_INVALID_INSTANCE.selector); sv.verifyProof(ctx, transition, proof); vm.stopPrank(); diff --git a/packages/protocol/test/layer2/Lib1559Math.t.sol b/packages/protocol/test/layer2/LibEIP1559.t.sol similarity index 66% rename from packages/protocol/test/layer2/Lib1559Math.t.sol rename to packages/protocol/test/layer2/LibEIP1559.t.sol index b650f231e23..14751940dda 100644 --- a/packages/protocol/test/layer2/Lib1559Math.t.sol +++ b/packages/protocol/test/layer2/LibEIP1559.t.sol @@ -3,14 +3,14 @@ pragma solidity ^0.8.24; import "./TaikoL2Test.sol"; -contract TestLib1559Math is TaikoL2Test { +contract TestLibEIP1559 is TaikoL2Test { using LibMath for uint256; function test_ethQty() external { - assertEq(Lib1559Math.ethQty(0, 60_000_000 * 8), 1); - assertEq(Lib1559Math.ethQty(60_000_000, 60_000_000 * 8), 1); - assertEq(Lib1559Math.ethQty(60_000_000 * 100, 60_000_000 * 8), 268_337); - assertEq(Lib1559Math.ethQty(60_000_000 * 200, 60_000_000 * 8), 72_004_899_337); + assertEq(LibEIP1559.ethQty(0, 60_000_000 * 8), 1); + assertEq(LibEIP1559.ethQty(60_000_000, 60_000_000 * 8), 1); + assertEq(LibEIP1559.ethQty(60_000_000 * 100, 60_000_000 * 8), 268_337); + assertEq(LibEIP1559.ethQty(60_000_000 * 200, 60_000_000 * 8), 72_004_899_337); } function test_basefee() external pure { @@ -22,7 +22,7 @@ contract TestLib1559Math is TaikoL2Test { uint256 excess = i * 5_000_000; uint256 target = 5_000_000 * 8; - basefee = Lib1559Math.basefee(excess, target); + basefee = LibEIP1559.basefee(excess, target); if (basefee != 0) { console2.log( string.concat(Strings.toString(excess), ", ", Strings.toString(basefee)) @@ -33,7 +33,7 @@ contract TestLib1559Math is TaikoL2Test { } function test_mainnet_min_basefee() external pure { - console2.log("Mainnet minimal basefee: ", Lib1559Math.basefee(1_340_000_000, 5_000_000 * 8)); + console2.log("Mainnet minimal basefee: ", LibEIP1559.basefee(1_340_000_000, 5_000_000 * 8)); } function test_change_of_quotient_and_gasIssuancePerSecond() public { @@ -42,20 +42,20 @@ contract TestLib1559Math is TaikoL2Test { uint256 unit = 10_000_000; // 0.01 gwei // uint 0.01 gwei - uint256 baselineBasefee = Lib1559Math.basefee(excess, target) / unit; + uint256 baselineBasefee = LibEIP1559.basefee(excess, target) / unit; console2.log("baseline basefee: ", baselineBasefee); - uint256 basefee = Lib1559Math.basefee(excess, target * 2) / unit; + uint256 basefee = LibEIP1559.basefee(excess, target * 2) / unit; console2.log("basefee will decrease if target increases:", basefee); - basefee = Lib1559Math.basefee(excess, target / 2) / unit; + basefee = LibEIP1559.basefee(excess, target / 2) / unit; console2.log("basefee will increase if target decreases:", basefee); console2.log("maintain basefee when target increases"); { uint64 newTarget = 5 * 2_000_000; - uint64 newExcess = Lib1559Math.adjustExcess(excess, target, newTarget); - basefee = Lib1559Math.basefee(newExcess, newTarget) / unit; + uint64 newExcess = LibEIP1559.adjustExcess(excess, target, newTarget); + basefee = LibEIP1559.basefee(newExcess, newTarget) / unit; console2.log("old gas excess: ", excess); console2.log("new gas excess: ", newExcess); console2.log("basefee: ", basefee); @@ -65,8 +65,8 @@ contract TestLib1559Math is TaikoL2Test { console2.log("maintain basefee when target decreases"); { uint64 newTarget = 3 * 2_000_000; - uint64 newExcess = Lib1559Math.adjustExcess(excess, target, newTarget); - basefee = Lib1559Math.basefee(newExcess, newTarget) / unit; + uint64 newExcess = LibEIP1559.adjustExcess(excess, target, newTarget); + basefee = LibEIP1559.basefee(newExcess, newTarget) / unit; console2.log("old gas excess: ", excess); console2.log("new gas excess: ", newExcess); console2.log("basefee: ", basefee); @@ -80,13 +80,13 @@ contract TestLib1559Math is TaikoL2Test { uint256 unit = 10_000_000; // 0.01 gwei // uint 0.01 gwei - uint256 baselineBasefee = Lib1559Math.basefee(excess, target) / unit; + uint256 baselineBasefee = LibEIP1559.basefee(excess, target) / unit; console2.log("baseline basefee: ", baselineBasefee); console2.log("maintain basefee when target changes"); uint64 newTarget = 5_000_000 * 8; - uint64 newExcess = Lib1559Math.adjustExcess(excess, target, newTarget); - uint256 basefee = Lib1559Math.basefee(newExcess, newTarget) / unit; + uint64 newExcess = LibEIP1559.adjustExcess(excess, target, newTarget); + uint256 basefee = LibEIP1559.basefee(newExcess, newTarget) / unit; console2.log("old gas excess: ", excess); console2.log("new gas excess: ", newExcess); console2.log("basefee: ", basefee); diff --git a/packages/protocol/test/layer2/TaikoL2.t.sol b/packages/protocol/test/layer2/TaikoL2.t.sol index 20beeaa94d7..3088700fc6d 100644 --- a/packages/protocol/test/layer2/TaikoL2.t.sol +++ b/packages/protocol/test/layer2/TaikoL2.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.24; import "./TaikoL2Test.sol"; -contract SkipBasefeeCheckL2 is TaikoL2EIP1559Configurable { +contract TaikoL2ForTest is TaikoL2 { function skipFeeCheck() public pure override returns (bool) { return true; } @@ -12,14 +12,12 @@ contract SkipBasefeeCheckL2 is TaikoL2EIP1559Configurable { contract TaikoL2Tests is TaikoL2Test { using SafeCast for uint256; - // Initial salt for semi-random generation - uint256 salt = 2_195_684_615_435_261_315_311; - // same as `block_gas_limit` in foundry.toml + uint64 public constant L1_CHAIN_ID = 12_345; uint32 public constant BLOCK_GAS_LIMIT = 30_000_000; address public addressManager; - TaikoL2EIP1559Configurable public L2; - SkipBasefeeCheckL2 public L2skip; + uint64 public anchorBlockId; + TaikoL2ForTest public L2; function setUp() public { addressManager = deployProxy({ @@ -37,33 +35,20 @@ contract TaikoL2Tests is TaikoL2Test { }) ); - uint64 gasExcess = 0; - uint8 quotient = 8; - uint32 gasTarget = 60_000_000; - uint64 l1ChainId = 12_345; - - L2 = TaikoL2EIP1559Configurable( + L2 = TaikoL2ForTest( payable( deployProxy({ name: "taiko", - impl: address(new TaikoL2EIP1559Configurable()), - data: abi.encodeCall( - TaikoL2.init, (address(0), addressManager, l1ChainId, gasExcess) - ), + impl: address(new TaikoL2ForTest()), + data: abi.encodeCall(TaikoL2.init, (address(0), addressManager, L1_CHAIN_ID, 0)), registerTo: addressManager }) ) ); - L2.setConfigAndExcess(LibL2Config.Config(gasTarget, quotient), gasExcess); - ss.authorize(address(L2), true); - - gasExcess = 195_420_300_100; - vm.roll(block.number + 1); vm.warp(block.timestamp + 30); - vm.deal(address(L2), 100 ether); } @@ -72,18 +57,18 @@ contract TaikoL2Tests is TaikoL2Test { vm.fee(1); vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); - _anchor(BLOCK_GAS_LIMIT); + _anchorV2(BLOCK_GAS_LIMIT); vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); - vm.expectRevert(); // L2_PUBLIC_INPUT_HASH_MISMATCH - _anchor(BLOCK_GAS_LIMIT); + vm.expectRevert(TaikoL2.L2_PUBLIC_INPUT_HASH_MISMATCH.selector); + _anchorV2(BLOCK_GAS_LIMIT); } // calling anchor in the same block more than once should fail function test_L2_AnchorTx_revert_from_wrong_signer() external { vm.fee(1); - vm.expectRevert(); - _anchor(BLOCK_GAS_LIMIT); + vm.expectRevert(TaikoL2.L2_INVALID_SENDER.selector); + _anchorV2(BLOCK_GAS_LIMIT); } function test_L2_AnchorTx_signing(bytes32 digest) external { @@ -95,10 +80,10 @@ contract TaikoL2Tests is TaikoL2Test { signer = ecrecover(digest, v + 27, bytes32(r), bytes32(s)); assertEq(signer, L2.GOLDEN_TOUCH_ADDRESS()); - vm.expectRevert(); + vm.expectRevert(LibL2Signer.L2_INVALID_GOLDEN_TOUCH_K.selector); LibL2Signer.signAnchor(digest, uint8(0)); - vm.expectRevert(); + vm.expectRevert(LibL2Signer.L2_INVALID_GOLDEN_TOUCH_K.selector); LibL2Signer.signAnchor(digest, uint8(3)); } @@ -109,7 +94,7 @@ contract TaikoL2Tests is TaikoL2Test { assertEq(Alice.balance, 100 ether); // Random EOA cannot call withdraw - vm.expectRevert(); + vm.expectRevert(AddressResolver.RESOLVER_DENIED.selector); vm.prank(Alice, Alice); L2.withdraw(address(0), Alice); } @@ -118,9 +103,15 @@ contract TaikoL2Tests is TaikoL2Test { assertEq(L2.getBlockHash(uint64(1000)), 0); } - function _anchor(uint32 parentGasLimit) private { - bytes32 l1Hash = randBytes32(); - bytes32 l1StateRoot = randBytes32(); - L2.anchor(l1Hash, l1StateRoot, 12_345, parentGasLimit); + function _anchorV2(uint32 parentGasUsed) private { + bytes32 anchorStateRoot = randBytes32(); + LibSharedData.BaseFeeConfig memory baseFeeConfig = LibSharedData.BaseFeeConfig({ + adjustmentQuotient: 8, + sharingPctg: 75, + gasIssuancePerSecond: 5_000_000, + minGasExcess: 1_340_000_000, + maxGasIssuancePerBlock: 600_000_000 // two minutes + }); + L2.anchorV2(++anchorBlockId, anchorStateRoot, parentGasUsed, baseFeeConfig); } } diff --git a/packages/protocol/test/layer2/TaikoL2EIP1559Configurable.sol b/packages/protocol/test/layer2/TaikoL2EIP1559Configurable.sol deleted file mode 100644 index 3e6ce9fb20a..00000000000 --- a/packages/protocol/test/layer2/TaikoL2EIP1559Configurable.sol +++ /dev/null @@ -1,50 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; - -import "src/layer2/based/TaikoL2.sol"; - -/// @title TaikoL2EIP1559Configurable -/// @notice TaikoL2 with a setter to change EIP-1559 configurations and states. -/// @custom:security-contact security@taiko.xyz -contract TaikoL2EIP1559Configurable is TaikoL2 { - /// @notice EIP-1559 configuration. - LibL2Config.Config public customConfig; - - uint256[49] private __gap; - - /// @notice Emits when the EIP-1559 configuration and gas excess are changed. - /// @param config The new EIP-1559 config. - /// @param gasExcess The new gas excess. - event ConfigAndExcessChanged(LibL2Config.Config config, uint64 gasExcess); - - error L2_INVALID_CONFIG(); - - /// @notice Sets EIP1559 configuration and gas excess. - /// @param _newConfig The new EIP1559 config. - /// @param _newGasExcess The new gas excess - function setConfigAndExcess( - LibL2Config.Config memory _newConfig, - uint64 _newGasExcess - ) - external - virtual - onlyOwner - { - if (_newConfig.gasTargetPerL1Block == 0) revert L2_INVALID_CONFIG(); - if (_newConfig.basefeeAdjustmentQuotient == 0) revert L2_INVALID_CONFIG(); - - customConfig = _newConfig; - parentGasExcess = _newGasExcess; - - emit ConfigAndExcessChanged(_newConfig, _newGasExcess); - } - - /// @inheritdoc TaikoL2 - function getConfig() public view override returns (LibL2Config.Config memory) { - return customConfig; - } - - function ontakeForkHeight() public pure override returns (uint64) { - return 10_000; - } -} diff --git a/packages/protocol/test/layer2/TaikoL2NoFeeCheck.t.sol b/packages/protocol/test/layer2/TaikoL2NoFeeCheck.t.sol deleted file mode 100644 index f0a76219598..00000000000 --- a/packages/protocol/test/layer2/TaikoL2NoFeeCheck.t.sol +++ /dev/null @@ -1,201 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; - -import "./TaikoL2Test.sol"; - -contract SkipBasefeeCheckL2 is TaikoL2EIP1559Configurable { - function skipFeeCheck() public pure override returns (bool) { - return true; - } -} - -contract TaikoL2NoFeeCheckTests is TaikoL2Test { - using SafeCast for uint256; - - // Initial salt for semi-random generation - uint256 salt = 2_195_684_615_435_261_315_311; - // same as `block_gas_limit` in foundry.toml - uint32 public constant BLOCK_GAS_LIMIT = 30_000_000; - - address public addressManager; - SkipBasefeeCheckL2 public L2; - - function setUp() public { - addressManager = deployProxy({ - name: "address_manager", - impl: address(new AddressManager()), - data: abi.encodeCall(AddressManager.init, (address(0))) - }); - - SignalService ss = SignalService( - deployProxy({ - name: "signal_service", - impl: address(new SignalService()), - data: abi.encodeCall(SignalService.init, (address(0), addressManager)), - registerTo: addressManager - }) - ); - - uint64 gasExcess = 0; - uint8 quotient = 8; - uint32 gasTarget = 60_000_000; - uint64 l1ChainId = 12_345; - - gasExcess = 195_420_300_100; - L2 = SkipBasefeeCheckL2( - payable( - deployProxy({ - name: "taiko", - impl: address(new SkipBasefeeCheckL2()), - data: abi.encodeCall( - TaikoL2.init, (address(0), addressManager, l1ChainId, gasExcess) - ), - registerTo: addressManager - }) - ) - ); - - L2.setConfigAndExcess(LibL2Config.Config(gasTarget, quotient), gasExcess); - - ss.authorize(address(L2), true); - - vm.roll(block.number + 1); - vm.warp(block.timestamp + 30); - } - - function test_L2_NoFeeCheck_simulation_lower_traffic() external { - console2.log("LOW TRAFFIC STARTS"); // For parser - _simulation(100_000, 10_000_000, 1, 8); - console2.log("LOW TRAFFIC ENDS"); - } - - function test_L2_NoFeeCheck_simulation_higher_traffic() external { - console2.log("HIGH TRAFFIC STARTS"); // For parser - _simulation(100_000, 120_000_000, 1, 8); - console2.log("HIGH TRAFFIC ENDS"); - } - - function test_L2_NoFeeCheck_simulation_target_traffic() external { - console2.log("TARGET TRAFFIC STARTS"); // For parser - _simulation(60_000_000, 0, 12, 0); - console2.log("TARGET TRAFFIC ENDS"); - } - - function _simulation( - uint256 minGas, - uint256 maxDiffToMinGas, - uint8 quickest, - uint8 maxDiffToQuickest - ) - internal - { - // We need to randomize the: - // - parent gas used (We should sometimes exceed 150.000.000 gas / 12 - // seconds (to simulate congestion a bit) !!) - // - the time we fire away an L2 block (anchor transaction). - // The rest is baked in. - // initial gas excess issued: 49954623777 (from eip1559_util.py) if we - // want to stick to the params of 10x Ethereum gas, etc. - - // This variables counts if we reached the 12seconds (L1) height, if so - // then resets the accumulated parent gas used and increments the L1 - // height number - uint8 accumulated_seconds = 0; - uint256 accumulated_parent_gas_per_l1_block = 0; - uint64 l1Height = uint64(block.number); - uint64 l1BlockCounter = 0; - uint64 maxL2BlockCount = 180; - uint256 allBaseFee = 0; - uint256 allGasUsed = 0; - uint256 newRandomWithoutSalt; - // Simulate 200 L2 blocks - for (uint256 i; i < maxL2BlockCount; ++i) { - newRandomWithoutSalt = uint256( - keccak256( - abi.encodePacked( - block.prevrandao, msg.sender, block.timestamp, i, newRandomWithoutSalt, salt - ) - ) - ); - - uint32 currentGasUsed; - if (maxDiffToMinGas == 0) { - currentGasUsed = uint32(minGas); - } else { - currentGasUsed = - uint32(pickRandomNumber(newRandomWithoutSalt, minGas, maxDiffToMinGas)); - } - salt = uint256(keccak256(abi.encodePacked(currentGasUsed, salt))); - accumulated_parent_gas_per_l1_block += currentGasUsed; - allGasUsed += currentGasUsed; - - uint8 currentTimeAhead; - if (maxDiffToQuickest == 0) { - currentTimeAhead = uint8(quickest); - } else { - currentTimeAhead = - uint8(pickRandomNumber(newRandomWithoutSalt, quickest, maxDiffToQuickest)); - } - accumulated_seconds += currentTimeAhead; - - if (accumulated_seconds >= 12) { - console2.log( - "Gas used per L1 block:", l1Height, ":", accumulated_parent_gas_per_l1_block - ); - l1Height++; - l1BlockCounter++; - accumulated_parent_gas_per_l1_block = 0; - accumulated_seconds = 0; - } - - vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); - _anchorSimulation(currentGasUsed, l1Height); - (uint256 currentBaseFee,) = L2.getBasefee(l1Height, currentGasUsed); - allBaseFee += currentBaseFee; - console2.log("Actual gas in L2 block is:", currentGasUsed); - console2.log("L2block to baseFee is:", i, ":", currentBaseFee); - vm.roll(block.number + 1); - - vm.warp(block.timestamp + currentTimeAhead); - } - - console2.log("Average wei gas price per L2 block is:", (allBaseFee / maxL2BlockCount)); - console2.log("Average gasUsed per L1 block:", (allGasUsed / l1BlockCounter)); - } - - function test_L2_NoFeeCheck_L2_AnchorTx_signing(bytes32 digest) external { - (uint8 v, uint256 r, uint256 s) = LibL2Signer.signAnchor(digest, uint8(1)); - address signer = ecrecover(digest, v + 27, bytes32(r), bytes32(s)); - assertEq(signer, L2.GOLDEN_TOUCH_ADDRESS()); - - (v, r, s) = LibL2Signer.signAnchor(digest, uint8(2)); - signer = ecrecover(digest, v + 27, bytes32(r), bytes32(s)); - assertEq(signer, L2.GOLDEN_TOUCH_ADDRESS()); - - vm.expectRevert(); - LibL2Signer.signAnchor(digest, uint8(0)); - - vm.expectRevert(); - LibL2Signer.signAnchor(digest, uint8(3)); - } - - // Semi-random number generator - function pickRandomNumber( - uint256 randomNum, - uint256 lowerLimit, - uint256 diffBtwLowerAndUpperLimit - ) - internal - view - returns (uint256) - { - randomNum = uint256(keccak256(abi.encodePacked(randomNum, salt))); - return (lowerLimit + (randomNum % diffBtwLowerAndUpperLimit)); - } - - function _anchorSimulation(uint32 parentGasLimit, uint64 l1Height) private { - bytes32 l1Hash = randBytes32(); - bytes32 l1StateRoot = randBytes32(); - L2.anchor(l1Hash, l1StateRoot, l1Height, parentGasLimit); - } -} diff --git a/packages/protocol/test/layer2/TaikoL2Test.sol b/packages/protocol/test/layer2/TaikoL2Test.sol index 21602e5f721..a57ad6c00d7 100644 --- a/packages/protocol/test/layer2/TaikoL2Test.sol +++ b/packages/protocol/test/layer2/TaikoL2Test.sol @@ -2,8 +2,9 @@ pragma solidity ^0.8.24; import "src/layer2/DelegateOwner.sol"; -import "../layer2/TaikoL2EIP1559Configurable.sol"; -import "../layer2/LibL2Signer.sol"; -import "../shared/TaikoTest.sol"; +import "src/layer2/based/LibEIP1559.sol"; +import "src/layer2/based/TaikoL2.sol"; +import "test/layer2/LibL2Signer.sol"; +import "test/shared/TaikoTest.sol"; abstract contract TaikoL2Test is TaikoTest { } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a2afee63b23..dc2a41d20d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -424,6 +424,12 @@ importers: ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + eigenlayer-contracts: + specifier: github:Layr-labs/eigenlayer-contracts#dev + version: https://codeload.github.com/Layr-labs/eigenlayer-contracts/tar.gz/30040aa273edeefe83333fa9183a0a26a84cebf0(hardhat@2.22.13(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3))(typescript@5.4.3)(utf-8-validate@5.0.10)) + eigenlayer-middleware: + specifier: github:layr-Labs/eigenlayer-middleware#mainnet + version: https://codeload.github.com/layr-Labs/eigenlayer-middleware/tar.gz/7d49b5181b09198ed275783453aa082bb3766990 forge-std: specifier: github:foundry-rs/forge-std#v1.7.5 version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 @@ -3350,6 +3356,10 @@ packages: resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} engines: {node: '>=14.0.0'} + '@metamask/eth-sig-util@4.0.1': + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} + '@metamask/json-rpc-engine@7.3.2': resolution: {integrity: sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg==} engines: {node: '>=16.0.0'} @@ -3628,6 +3638,96 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nomicfoundation/edr-darwin-arm64@0.6.3': + resolution: {integrity: sha512-hqtI7tYDqKG5PDmZ//Z65EH5cgH8VL/SAAu50rpHP7WAVfJWkOCcYbecywwF6nhHdonJbRTDGAeG1/+VOy6zew==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-darwin-x64@0.6.3': + resolution: {integrity: sha512-4fGi79/lyOlRUORhCYsYb3sWqRHuHT7qqzyZfZuNOn8llaxmT1k36xNmvpyg37R8SzjnhT/DzoukSJrs23Ip9Q==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-arm64-gnu@0.6.3': + resolution: {integrity: sha512-yFFTvGFMhfAvQ1Z2itUh1jpoUA+mVROyVELcaxjIq8fyg602lQmbS+NXkhQ+oaeDgJ+06mSENrHBg4fcfRf9cw==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-arm64-musl@0.6.3': + resolution: {integrity: sha512-pOKmd0Fa3a6BHg5qbjbl/jMRELVi9oazbfiuU7Bvgn/dpTK+ID3jwT0SXiuC2zxjmPByWgXL6G9XRf5BPAM2rQ==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-x64-gnu@0.6.3': + resolution: {integrity: sha512-3AUferhkLIXtLV63w5GjpHttzdxZ36i656XMy+pkBZbbiqnzIVeKWg6DJv1A94fQY16gB4gqj9CLq4CWvbNN6w==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-x64-musl@0.6.3': + resolution: {integrity: sha512-fr6bD872WIBXe9YnTDi0CzYepMcYRgSnkVqn0yK4wRnIvKrloWhxXNVY45GVIl51aNZguBnvoA4WEt6HIazs3A==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-win32-x64-msvc@0.6.3': + resolution: {integrity: sha512-sn34MvN1ajw2Oq1+Drpxej78Z0HfIzI4p4WlolupAV9dOZKzp2JAIQeLVfZpjIFbF3zuyxLPP4dUBrQoFPEqhA==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr@0.6.3': + resolution: {integrity: sha512-hThe5ORR75WFYTXKL0K2AyLDxkTMrG+VQ1yL9BhQYsuh3OIH+3yNDxMz2LjfvrpOrMmJ4kk5NKdFewpqDojjXQ==} + engines: {node: '>= 18'} + + '@nomicfoundation/ethereumjs-common@4.0.4': + resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} + + '@nomicfoundation/ethereumjs-rlp@5.0.4': + resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} + engines: {node: '>=18'} + hasBin: true + + '@nomicfoundation/ethereumjs-tx@5.0.4': + resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/ethereumjs-util@9.0.4': + resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': + resolution: {integrity: sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': + resolution: {integrity: sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': + resolution: {integrity: sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': + resolution: {integrity: sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': + resolution: {integrity: sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': + resolution: {integrity: sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': + resolution: {integrity: sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer@0.1.2': + resolution: {integrity: sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==} + engines: {node: '>= 12'} + '@openzeppelin/contracts-upgradeable@4.9.6': resolution: {integrity: sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==} @@ -4254,6 +4354,34 @@ packages: '@scure/bip39@1.4.0': resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} + '@sentry/core@5.30.0': + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} + + '@sentry/hub@5.30.0': + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} + + '@sentry/minimal@5.30.0': + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} + + '@sentry/node@5.30.0': + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} + + '@sentry/tracing@5.30.0': + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} + + '@sentry/types@5.30.0': + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + + '@sentry/utils@5.30.0': + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} + '@shikijs/core@1.17.6': resolution: {integrity: sha512-9ztslig6/YmCg/XwESAXbKjAjOhaq6HVced9NY6qcbDz1X5g/S90Wco2vMjBNX/6V71ASkzri76JewSGPa7kiQ==} @@ -4827,6 +4955,9 @@ packages: '@types/babel__traverse@7.20.5': resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + '@types/bn.js@4.11.6': + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + '@types/bn.js@5.1.5': resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} @@ -4914,6 +5045,9 @@ packages: '@types/lodash@4.17.7': resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} + '@types/lru-cache@5.1.1': + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -5732,16 +5866,28 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} aes-js@4.0.0-beta.5: resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + agent-base@7.1.0: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + ajv-draft-04@1.0.0: resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} peerDependencies: @@ -5769,6 +5915,10 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + ansi-fragments@0.2.1: resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} @@ -6089,6 +6239,10 @@ packages: bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + boxen@7.1.1: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} @@ -6123,6 +6277,9 @@ packages: browser-readablestream-to-it@2.0.6: resolution: {integrity: sha512-csJm66U/gTC6VHjeaOaziK6Y6ENdrzlNLdXnsdnvGX+3hGvedkxTyiMk2WbgKR8F15ACxDLJhDuE/cmovLPBQQ==} + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + browserify-aes@1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} @@ -6415,6 +6572,14 @@ packages: class-is@1.1.0: resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -6446,6 +6611,9 @@ packages: cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -6599,6 +6767,10 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} @@ -6769,6 +6941,10 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -7006,6 +7182,14 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + eigenlayer-contracts@https://codeload.github.com/Layr-labs/eigenlayer-contracts/tar.gz/30040aa273edeefe83333fa9183a0a26a84cebf0: + resolution: {tarball: https://codeload.github.com/Layr-labs/eigenlayer-contracts/tar.gz/30040aa273edeefe83333fa9183a0a26a84cebf0} + version: 1.0.0 + + eigenlayer-middleware@https://codeload.github.com/layr-Labs/eigenlayer-middleware/tar.gz/7d49b5181b09198ed275783453aa082bb3766990: + resolution: {tarball: https://codeload.github.com/layr-Labs/eigenlayer-middleware/tar.gz/7d49b5181b09198ed275783453aa082bb3766990} + version: 0.0.0 + electron-fetch@1.9.1: resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} engines: {node: '>=6'} @@ -7069,6 +7253,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + envinfo@7.11.1: resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} engines: {node: '>=4'} @@ -7467,6 +7655,12 @@ packages: ethereum-cryptography@2.1.3: resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} + ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + + ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + ethereumjs-util@7.1.5: resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} engines: {node: '>=10.0.0'} @@ -7482,6 +7676,10 @@ packages: resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} engines: {node: '>=6.5.0', npm: '>=3'} + ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + event-emitter@0.3.5: resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} @@ -7661,6 +7859,10 @@ packages: resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} engines: {node: '>=18'} + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -7688,6 +7890,10 @@ packages: resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} hasBin: true + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + flatted@3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} @@ -7757,6 +7963,9 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + fp-ts@1.19.3: + resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} + fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -7880,6 +8089,10 @@ packages: engines: {node: 20 || >=22} hasBin: true + glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + deprecated: Glob versions prior to v9 are no longer supported + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -7956,6 +8169,11 @@ packages: h3@1.10.2: resolution: {integrity: sha512-r1iNNcFGL4G9pL3lgYxwX0O2ZmqdKqhILAJsnlw5icn5I1QHnADM4TgVdYRtHUqy+NntVpHIEFwnw/XCbebICg==} + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} @@ -7965,6 +8183,18 @@ packages: engines: {node: '>=6'} deprecated: this library is no longer supported + hardhat@2.22.13: + resolution: {integrity: sha512-psVJX4FSXDpSXwsU8OcKTJN04pQEj9cFBMX5OPko+OFwbIoiOpvRmafa954/UaA1934npTj8sV3gaTSdx9bPbA==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -8068,6 +8298,10 @@ packages: hastscript@9.0.0: resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} @@ -8148,6 +8382,10 @@ packages: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + https-proxy-agent@7.0.4: resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} engines: {node: '>= 14'} @@ -8221,6 +8459,9 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + import-fresh@2.0.0: resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} engines: {node: '>=4'} @@ -8283,6 +8524,9 @@ packages: invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + io-ts@1.10.4: + resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} + ioredis@5.3.2: resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} engines: {node: '>=12.22.0'} @@ -8778,6 +9022,10 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stream-stringify@3.1.6: + resolution: {integrity: sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==} + engines: {node: '>=7.10.1'} + json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -8955,6 +9203,10 @@ packages: locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -9065,6 +9317,9 @@ packages: lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -9477,6 +9732,10 @@ packages: resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} engines: {node: '>=10'} + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} @@ -9544,6 +9803,14 @@ packages: mlly@1.5.0: resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + mnemonist@0.38.5: + resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} + + mocha@10.7.3: + resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} + engines: {node: '>= 14.0.0'} + hasBin: true + mock-fs@4.14.0: resolution: {integrity: sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==} @@ -9809,6 +10076,9 @@ packages: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} + obliterator@2.0.4: + resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + oboe@2.1.5: resolution: {integrity: sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==} @@ -9921,6 +10191,10 @@ packages: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -9941,6 +10215,10 @@ packages: resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} engines: {node: '>=18'} + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -9961,6 +10239,10 @@ packages: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + p-map@7.0.2: resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} engines: {node: '>=18'} @@ -9973,6 +10255,10 @@ packages: resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} engines: {node: '>=14.16'} + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -10747,6 +11033,9 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -10956,6 +11245,9 @@ packages: resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} engines: {node: '>=0.10.0'} + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} @@ -11104,6 +11396,11 @@ packages: engines: {node: '>=10.0.0'} hasBin: true + solc@0.8.26: + resolution: {integrity: sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==} + engines: {node: '>=10.0.0'} + hasBin: true + solhint@4.5.4: resolution: {integrity: sha512-Cu1XiJXub2q1eCr9kkJ9VPv1sGcmj3V7Zb76B0CoezDOB9bu3DxKIFFH7ggCl9fWpEPD6xBmRLfZrYijkVmujQ==} hasBin: true @@ -11112,6 +11409,14 @@ packages: resolution: {integrity: sha512-OLCH6qm/mZTCpplTXzXTJGId1zrtNuDYP5c2e6snIv/hdRVxPfBBz/bAlL91bY/Accavkayp2Zp2BaDSrLVXTQ==} hasBin: true + solidity-ast@0.4.59: + resolution: {integrity: sha512-I+CX0wrYUN9jDfYtcgWSe+OAowaXy8/1YQy7NS4ni5IBDmIYBq7ZzaP/7QqouLjzZapmQtvGLqCaYgoUWqBo5g==} + + solidity-docgen@0.6.0-beta.36: + resolution: {integrity: sha512-f/I5G2iJgU1h0XrrjRD0hHMr7C10u276vYvm//rw1TzFcYQ4xTOyAoi9oNAHRU0JU4mY9eTuxdVc2zahdMuhaQ==} + peerDependencies: + hardhat: ^2.8.0 + solidity-stringutils@https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: resolution: {tarball: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461} version: 0.0.0 @@ -11703,6 +12008,9 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tsort@0.0.1: + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + tsutils@3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -11719,9 +12027,15 @@ packages: tween-functions@1.2.0: resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -11734,6 +12048,10 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + type-fest@0.7.1: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} @@ -11789,6 +12107,11 @@ packages: ufo@1.4.0: resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + uint8-varint@2.0.4: resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} @@ -12605,6 +12928,10 @@ packages: engines: {node: '>=8'} hasBin: true + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} @@ -12613,6 +12940,12 @@ packages: resolution: {integrity: sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==} engines: {node: '>= 0.10.0'} + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + workerpool@6.5.1: + resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -12805,14 +13138,26 @@ packages: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -13014,7 +13359,7 @@ snapshots: '@astrojs/telemetry@3.1.0': dependencies: ci-info: 4.0.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) dlv: 1.1.3 dset: 3.1.3 is-docker: 3.0.0 @@ -13584,7 +13929,7 @@ snapshots: '@babel/traverse': 7.25.6 '@babel/types': 7.25.6 convert-source-map: 2.0.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -13639,7 +13984,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -14451,7 +14796,7 @@ snapshots: '@babel/parser': 7.25.6 '@babel/template': 7.25.0 '@babel/types': 7.25.6 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -15875,11 +16220,19 @@ snapshots: '@metamask/eth-json-rpc-provider@1.0.1': dependencies: '@metamask/json-rpc-engine': 7.3.2 - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 5.0.2 transitivePeerDependencies: - supports-color + '@metamask/eth-sig-util@4.0.1': + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 6.2.1 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + '@metamask/json-rpc-engine@7.3.2': dependencies: '@metamask/rpc-errors': 6.1.0 @@ -16196,8 +16549,8 @@ snapshots: dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.3.4 - semver: 7.6.2 + debug: 4.3.7(supports-color@8.1.1) + semver: 7.6.3 superstruct: 1.0.3 transitivePeerDependencies: - supports-color @@ -16444,6 +16797,81 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@nomicfoundation/edr-darwin-arm64@0.6.3': {} + + '@nomicfoundation/edr-darwin-x64@0.6.3': {} + + '@nomicfoundation/edr-linux-arm64-gnu@0.6.3': {} + + '@nomicfoundation/edr-linux-arm64-musl@0.6.3': {} + + '@nomicfoundation/edr-linux-x64-gnu@0.6.3': {} + + '@nomicfoundation/edr-linux-x64-musl@0.6.3': {} + + '@nomicfoundation/edr-win32-x64-msvc@0.6.3': {} + + '@nomicfoundation/edr@0.6.3': + dependencies: + '@nomicfoundation/edr-darwin-arm64': 0.6.3 + '@nomicfoundation/edr-darwin-x64': 0.6.3 + '@nomicfoundation/edr-linux-arm64-gnu': 0.6.3 + '@nomicfoundation/edr-linux-arm64-musl': 0.6.3 + '@nomicfoundation/edr-linux-x64-gnu': 0.6.3 + '@nomicfoundation/edr-linux-x64-musl': 0.6.3 + '@nomicfoundation/edr-win32-x64-msvc': 0.6.3 + + '@nomicfoundation/ethereumjs-common@4.0.4': + dependencies: + '@nomicfoundation/ethereumjs-util': 9.0.4 + transitivePeerDependencies: + - c-kzg + + '@nomicfoundation/ethereumjs-rlp@5.0.4': {} + + '@nomicfoundation/ethereumjs-tx@5.0.4': + dependencies: + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + ethereum-cryptography: 0.1.3 + + '@nomicfoundation/ethereumjs-util@9.0.4': + dependencies: + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + ethereum-cryptography: 0.1.3 + + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer@0.1.2': + optionalDependencies: + '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.2 + '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.2 + '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.2 + '@openzeppelin/contracts-upgradeable@4.9.6': {} '@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2)': @@ -17315,6 +17743,55 @@ snapshots: '@noble/hashes': 1.5.0 '@scure/base': 1.1.8 + '@sentry/core@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/hub@5.30.0': + dependencies: + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/minimal@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/types': 5.30.0 + tslib: 1.14.1 + + '@sentry/node@5.30.0': + dependencies: + '@sentry/core': 5.30.0 + '@sentry/hub': 5.30.0 + '@sentry/tracing': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + + '@sentry/tracing@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/types@5.30.0': {} + + '@sentry/utils@5.30.0': + dependencies: + '@sentry/types': 5.30.0 + tslib: 1.14.1 + '@shikijs/core@1.17.6': dependencies: '@shikijs/engine-javascript': 1.17.6 @@ -18290,6 +18767,10 @@ snapshots: dependencies: '@babel/types': 7.25.6 + '@types/bn.js@4.11.6': + dependencies: + '@types/node': 20.12.7 + '@types/bn.js@5.1.5': dependencies: '@types/node': 20.12.7 @@ -18395,6 +18876,8 @@ snapshots: '@types/lodash@4.17.7': {} + '@types/lru-cache@5.1.1': {} + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.2 @@ -20573,16 +21056,29 @@ snapshots: acorn@8.12.1: {} + adm-zip@0.4.16: {} + aes-js@3.0.0: {} aes-js@4.0.0-beta.5: {} + agent-base@6.0.2: + dependencies: + debug: 4.3.7(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + agent-base@7.1.0: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + ajv-draft-04@1.0.0(ajv@8.12.0): optionalDependencies: ajv: 8.12.0 @@ -20619,6 +21115,10 @@ snapshots: ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + ansi-fragments@0.2.1: dependencies: colorette: 1.4.0 @@ -20783,7 +21283,7 @@ snapshots: common-ancestor-path: 1.0.1 cookie: 0.6.0 cssesc: 3.0.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) deterministic-object-hash: 2.0.2 devalue: 5.0.0 diff: 5.2.0 @@ -20914,7 +21414,7 @@ snapshots: axios@1.7.7: dependencies: - follow-redirects: 1.15.9 + follow-redirects: 1.15.9(debug@4.3.7) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -21051,6 +21551,17 @@ snapshots: bowser@2.11.0: {} + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + boxen@7.1.1: dependencies: ansi-align: 3.0.1 @@ -21091,6 +21602,8 @@ snapshots: browser-readablestream-to-it@2.0.6: {} + browser-stdout@1.3.1: {} + browserify-aes@1.2.0: dependencies: buffer-xor: 1.0.3 @@ -21407,6 +21920,10 @@ snapshots: class-is@1.1.0: {} + clean-stack@2.2.0: {} + + cli-boxes@2.2.1: {} + cli-boxes@3.0.0: {} cli-color@2.0.3: @@ -21443,6 +21960,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -21591,6 +22114,8 @@ snapshots: cookie-signature@1.0.6: {} + cookie@0.4.2: {} + cookie@0.6.0: {} core-js-compat@3.36.0: @@ -21780,12 +22305,16 @@ snapshots: dependencies: ms: 2.1.2 - debug@4.3.7: + debug@4.3.7(supports-color@8.1.1): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 decamelize@1.2.0: {} + decamelize@4.0.0: {} + decimal.js@10.4.3: {} decode-named-character-reference@1.0.2: @@ -21994,6 +22523,14 @@ snapshots: ee-first@1.1.1: {} + eigenlayer-contracts@https://codeload.github.com/Layr-labs/eigenlayer-contracts/tar.gz/30040aa273edeefe83333fa9183a0a26a84cebf0(hardhat@2.22.13(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3))(typescript@5.4.3)(utf-8-validate@5.0.10)): + dependencies: + solidity-docgen: 0.6.0-beta.36(hardhat@2.22.13(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3))(typescript@5.4.3)(utf-8-validate@5.0.10)) + transitivePeerDependencies: + - hardhat + + eigenlayer-middleware@https://codeload.github.com/layr-Labs/eigenlayer-middleware/tar.gz/7d49b5181b09198ed275783453aa082bb3766990: {} + electron-fetch@1.9.1: dependencies: encoding: 0.1.13 @@ -22082,6 +22619,8 @@ snapshots: entities@4.5.0: {} + env-paths@2.2.1: {} + envinfo@7.11.1: {} err-code@3.0.1: {} @@ -23018,6 +23557,21 @@ snapshots: '@scure/bip32': 1.3.3 '@scure/bip39': 1.2.2 + ethereumjs-abi@0.6.8: + dependencies: + bn.js: 4.12.0 + ethereumjs-util: 6.2.1 + + ethereumjs-util@6.2.1: + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.0 + create-hash: 1.2.0 + elliptic: 6.5.7 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + ethereumjs-util@7.1.5: dependencies: '@types/bn.js': 5.1.5 @@ -23080,6 +23634,11 @@ snapshots: bn.js: 4.11.6 number-to-bn: 1.7.0 + ethjs-util@0.1.6: + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + event-emitter@0.3.5: dependencies: d: 1.0.1 @@ -23322,6 +23881,10 @@ snapshots: find-up-simple@1.0.0: {} + find-up@2.1.0: + dependencies: + locate-path: 2.0.0 + find-up@3.0.0: dependencies: locate-path: 3.0.0 @@ -23356,6 +23919,8 @@ snapshots: dependencies: is-buffer: 2.0.5 + flat@5.0.2: {} + flatted@3.2.9: {} flattie@1.1.1: {} @@ -23368,7 +23933,9 @@ snapshots: optionalDependencies: debug: 4.3.4 - follow-redirects@1.15.9: {} + follow-redirects@1.15.9(debug@4.3.7): + optionalDependencies: + debug: 4.3.7(supports-color@8.1.1) for-each@0.3.3: dependencies: @@ -23403,6 +23970,8 @@ snapshots: forwarded@0.2.0: {} + fp-ts@1.19.3: {} + fraction.js@4.3.7: {} fresh@0.5.2: {} @@ -23526,6 +24095,15 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 2.0.0 + glob@7.2.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -23658,6 +24236,15 @@ snapshots: uncrypto: 0.1.3 unenv: 1.9.0 + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + har-schema@2.0.0: {} har-validator@5.1.5: @@ -23665,6 +24252,61 @@ snapshots: ajv: 6.12.6 har-schema: 2.0.0 + hardhat@2.22.13(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3))(typescript@5.4.3)(utf-8-validate@5.0.10): + dependencies: + '@ethersproject/abi': 5.7.0 + '@metamask/eth-sig-util': 4.0.1 + '@nomicfoundation/edr': 0.6.3 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@nomicfoundation/solidity-analyzer': 0.1.2 + '@sentry/node': 5.30.0 + '@types/bn.js': 5.1.5 + '@types/lru-cache': 5.1.1 + adm-zip: 0.4.16 + aggregate-error: 3.1.0 + ansi-escapes: 4.3.2 + boxen: 5.1.2 + chalk: 2.4.2 + chokidar: 4.0.0 + ci-info: 2.0.0 + debug: 4.3.7(supports-color@8.1.1) + enquirer: 2.4.1 + env-paths: 2.2.1 + ethereum-cryptography: 1.2.0 + ethereumjs-abi: 0.6.8 + find-up: 2.1.0 + fp-ts: 1.19.3 + fs-extra: 7.0.1 + glob: 7.2.0 + immutable: 4.3.7 + io-ts: 1.10.4 + json-stream-stringify: 3.1.6 + keccak: 3.0.4 + lodash: 4.17.21 + mnemonist: 0.38.5 + mocha: 10.7.3 + p-map: 4.0.0 + raw-body: 2.5.2 + resolve: 1.17.0 + semver: 6.3.1 + solc: 0.8.26(debug@4.3.7) + source-map-support: 0.5.21 + stacktrace-parser: 0.1.10 + tsort: 0.0.1 + undici: 5.28.3 + uuid: 8.3.2 + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - c-kzg + - supports-color + - utf-8-validate + has-bigints@1.0.2: {} has-flag@3.0.0: {} @@ -23899,6 +24541,8 @@ snapshots: property-information: 6.5.0 space-separated-tokens: 2.0.2 + he@1.2.0: {} + header-case@2.0.4: dependencies: capital-case: 1.0.4 @@ -23992,6 +24636,13 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.7(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + https-proxy-agent@7.0.4: dependencies: agent-base: 7.1.0 @@ -24055,6 +24706,8 @@ snapshots: immediate@3.0.6: {} + immutable@4.3.7: {} + import-fresh@2.0.0: dependencies: caller-path: 2.0.0 @@ -24118,6 +24771,10 @@ snapshots: dependencies: loose-envify: 1.4.0 + io-ts@1.10.4: + dependencies: + fp-ts: 1.19.3 + ioredis@5.3.2: dependencies: '@ioredis/commands': 1.2.0 @@ -24722,6 +25379,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stream-stringify@3.1.6: {} + json-stringify-safe@5.0.1: {} json-to-ast@2.1.0: @@ -24923,6 +25582,11 @@ snapshots: locate-character@3.0.0: {} + locate-path@2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + locate-path@3.0.0: dependencies: p-locate: 3.0.0 @@ -25026,6 +25690,8 @@ snapshots: dependencies: es5-ext: 0.10.62 + lru_map@0.3.3: {} + lz-string@1.5.0: {} magic-string@0.30.10: @@ -25819,6 +26485,10 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + minimatch@7.4.6: dependencies: brace-expansion: 2.0.1 @@ -25899,6 +26569,33 @@ snapshots: pkg-types: 1.0.3 ufo: 1.4.0 + mnemonist@0.38.5: + dependencies: + obliterator: 2.0.4 + + mocha@10.7.3: + dependencies: + ansi-colors: 4.1.3 + browser-stdout: 1.3.1 + chokidar: 3.6.0 + debug: 4.3.7(supports-color@8.1.1) + diff: 5.2.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.1.6 + ms: 2.1.3 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.5.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + yargs-unparser: 2.0.0 + mock-fs@4.14.0: {} moralis@2.26.2(debug@4.3.4): @@ -26138,6 +26835,8 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.3 + obliterator@2.0.4: {} + oboe@2.1.5: dependencies: http-https: 1.0.0 @@ -26276,6 +26975,10 @@ snapshots: dependencies: p-map: 2.1.0 + p-limit@1.3.0: + dependencies: + p-try: 1.0.0 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -26296,6 +26999,10 @@ snapshots: dependencies: yocto-queue: 1.1.1 + p-locate@2.0.0: + dependencies: + p-limit: 1.3.0 + p-locate@3.0.0: dependencies: p-limit: 2.3.0 @@ -26314,6 +27021,10 @@ snapshots: p-map@2.1.0: {} + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + p-map@7.0.2: {} p-queue@8.0.1: @@ -26323,6 +27034,8 @@ snapshots: p-timeout@6.1.2: {} + p-try@1.0.0: {} + p-try@2.2.0: {} p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da: {} @@ -27257,6 +27970,10 @@ snapshots: resolve-pkg-maps@1.0.0: {} + resolve@1.17.0: + dependencies: + path-parse: 1.0.7 + resolve@1.22.8: dependencies: is-core-module: 2.13.1 @@ -27535,6 +28252,10 @@ snapshots: serialize-error@2.1.0: {} + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -27760,6 +28481,18 @@ snapshots: transitivePeerDependencies: - debug + solc@0.8.26(debug@4.3.7): + dependencies: + command-exists: 1.2.9 + commander: 8.3.0 + follow-redirects: 1.15.9(debug@4.3.7) + js-sha3: 0.8.0 + memorystream: 0.3.1 + semver: 5.7.2 + tmp: 0.0.33 + transitivePeerDependencies: + - debug + solhint@4.5.4(typescript@5.4.3): dependencies: '@solidity-parser/parser': 0.18.0 @@ -27835,6 +28568,14 @@ snapshots: transitivePeerDependencies: - typescript + solidity-ast@0.4.59: {} + + solidity-docgen@0.6.0-beta.36(hardhat@2.22.13(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3))(typescript@5.4.3)(utf-8-validate@5.0.10)): + dependencies: + handlebars: 4.7.8 + hardhat: 2.22.13(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3))(typescript@5.4.3)(utf-8-validate@5.0.10) + solidity-ast: 0.4.59 + solidity-stringutils@https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: {} sonic-boom@2.8.0: @@ -28661,6 +29402,8 @@ snapshots: tslib@2.6.2: {} + tsort@0.0.1: {} + tsutils@3.21.0(typescript@5.4.3): dependencies: tslib: 1.14.1 @@ -28679,8 +29422,12 @@ snapshots: tween-functions@1.2.0: {} + tweetnacl-util@0.15.1: {} + tweetnacl@0.14.5: {} + tweetnacl@1.0.3: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -28689,6 +29436,8 @@ snapshots: type-fest@0.20.2: {} + type-fest@0.21.3: {} + type-fest@0.7.1: {} type-fest@2.19.0: {} @@ -28745,6 +29494,9 @@ snapshots: ufo@1.4.0: {} + uglify-js@3.19.3: + optional: true + uint8-varint@2.0.4: dependencies: uint8arraylist: 2.4.8 @@ -29875,6 +30627,10 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + widest-line@4.0.1: dependencies: string-width: 5.1.2 @@ -29888,6 +30644,10 @@ snapshots: isstream: 0.1.2 stack-trace: 0.0.10 + wordwrap@1.0.0: {} + + workerpool@6.5.1: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -30053,8 +30813,17 @@ snapshots: camelcase: 5.3.1 decamelize: 1.2.0 + yargs-parser@20.2.9: {} + yargs-parser@21.1.1: {} + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + yargs@15.4.1: dependencies: cliui: 6.0.0 @@ -30069,6 +30838,16 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + yargs@17.7.2: dependencies: cliui: 8.0.1 From d3a0864ca5fec0a7dcb5774f4e73696a1ad06ca6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Nov 2024 13:51:47 +0800 Subject: [PATCH 124/205] build(deps): bump github.com/swaggo/swag from 1.16.3 to 1.16.4 (#18372) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a60f1aac76a..d6a8d91b877 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/rabbitmq/amqp091-go v1.10.0 github.com/shopspring/decimal v1.4.0 github.com/stretchr/testify v1.9.0 - github.com/swaggo/swag v1.16.3 + github.com/swaggo/swag v1.16.4 github.com/testcontainers/testcontainers-go v0.30.0 github.com/urfave/cli/v2 v2.27.4 golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa diff --git a/go.sum b/go.sum index f26b5a742ab..d575e00f6eb 100644 --- a/go.sum +++ b/go.sum @@ -601,8 +601,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= -github.com/swaggo/swag v1.16.3 h1:PnCYjPCah8FK4I26l2F/KQ4yz3sILcVUN3cTlBFA9Pg= -github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk= +github.com/swaggo/swag v1.16.4 h1:clWJtd9LStiG3VeijiCfOVODP6VpHtKdQy9ELFG3s1A= +github.com/swaggo/swag v1.16.4/go.mod h1:VBsHJRsDvfYvqoiMKnsdwhNV9LEMHgEDZcyVYX0sxPg= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= From 3e9d617686849bf391119725608b5377925e5d91 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Nov 2024 13:52:31 +0800 Subject: [PATCH 125/205] build(deps): bump github.com/urfave/cli/v2 from 2.27.4 to 2.27.5 (#18373) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index d6a8d91b877..e8e6c8fd40c 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/swaggo/swag v1.16.4 github.com/testcontainers/testcontainers-go v0.30.0 - github.com/urfave/cli/v2 v2.27.4 + github.com/urfave/cli/v2 v2.27.5 golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa golang.org/x/sync v0.8.0 gopkg.in/go-playground/assert.v1 v1.2.1 @@ -77,7 +77,7 @@ require ( github.com/containerd/containerd v1.7.12 // indirect github.com/containerd/log v0.1.0 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect diff --git a/go.sum b/go.sum index d575e00f6eb..fbb58cb1a39 100644 --- a/go.sum +++ b/go.sum @@ -119,8 +119,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= -github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= +github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= @@ -626,8 +626,8 @@ github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2n github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/urfave/cli/v2 v2.27.4 h1:o1owoI+02Eb+K107p27wEX9Bb8eqIoZCfLXloLUSWJ8= -github.com/urfave/cli/v2 v2.27.4/go.mod h1:m4QzxcD2qpra4z7WhzEGn74WZLViBnMpb1ToCAKdGRQ= +github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= +github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.22.0/go.mod h1:0mw2RjXGOzxf4NL2jni3gUQ7LfjjUSiG5sskOUUSEpU= From 2297fcdb4100f42fcb7fcf481e9d9495a5d786f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Nov 2024 14:08:18 +0800 Subject: [PATCH 126/205] build(deps): bump github.com/testcontainers/testcontainers-go from 0.30.0 to 0.34.0 (#18374) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 20 ++++++++++---------- go.sum | 44 ++++++++++++++++++++++---------------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/go.mod b/go.mod index e8e6c8fd40c..03d916ed2bc 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( github.com/shopspring/decimal v1.4.0 github.com/stretchr/testify v1.9.0 github.com/swaggo/swag v1.16.4 - github.com/testcontainers/testcontainers-go v0.30.0 + github.com/testcontainers/testcontainers-go v0.34.0 github.com/urfave/cli/v2 v2.27.5 golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa golang.org/x/sync v0.8.0 @@ -54,7 +54,6 @@ require ( github.com/DataDog/zstd v1.5.6-0.20230824185856-869dae002e5e // indirect github.com/KyleBanks/depth v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/Microsoft/hcsshim v0.11.4 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/VictoriaMetrics/fastcache v1.12.2 // indirect github.com/andybalholm/brotli v1.1.0 // indirect @@ -74,16 +73,17 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/containerd/containerd v1.7.12 // indirect + github.com/containerd/containerd v1.7.18 // indirect github.com/containerd/log v0.1.0 // indirect - github.com/cpuguy83/dockercfg v0.3.1 // indirect + github.com/containerd/platforms v0.2.1 // indirect + github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect - github.com/distribution/reference v0.5.0 // indirect - github.com/docker/docker v25.0.6+incompatible // indirect + github.com/distribution/reference v0.6.0 // indirect + github.com/docker/docker v27.1.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect @@ -155,6 +155,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/pointerstructure v1.2.1 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/sys/sequential v0.5.0 // indirect github.com/moby/sys/user v0.1.0 // indirect @@ -215,10 +216,9 @@ require ( golang.org/x/text v0.18.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.24.0 // indirect - google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/grpc v1.63.2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect + google.golang.org/grpc v1.64.1 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/inconshreveable/log15.v2 v2.0.0-20200109203555-b30bc20e4fd1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index fbb58cb1a39..84f7c5f2b14 100644 --- a/go.sum +++ b/go.sum @@ -19,8 +19,6 @@ github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6Xge github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= -github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -113,12 +111,14 @@ github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/Yj github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= -github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= +github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao= +github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= -github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= +github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= +github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= +github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= +github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= @@ -151,10 +151,10 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnN github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= -github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg= -github.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY= +github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -449,6 +449,8 @@ github.com/mitchellh/pointerstructure v1.2.1/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8oh github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= @@ -612,8 +614,8 @@ github.com/taikoxyz/optimism v0.0.0-20241003061504-cdf8af288f39 h1:JssMxaDmORjQ9 github.com/taikoxyz/optimism v0.0.0-20241003061504-cdf8af288f39/go.mod h1:ym7scR7ZHvEmwx1DLGVDzFlAdR+uhP1+Z4XCiFuSD5s= github.com/taikoxyz/taiko-geth v1.11.1 h1:pur1WP6YJkwKhLVeN3Zf7dOwbPq6tS88gYod6QKlJc4= github.com/taikoxyz/taiko-geth v1.11.1/go.mod h1:+l/fr42Mma+xBnhefL/+z11/hcmJ2egl+ScIVPjhc7E= -github.com/testcontainers/testcontainers-go v0.30.0 h1:jmn/XS22q4YRrcMwWg0pAwlClzs/abopbsBzrepyc4E= -github.com/testcontainers/testcontainers-go v0.30.0/go.mod h1:K+kHNGiM5zjklKjgTtcrEetF3uhWbMUyqAQoyoh8Pf0= +github.com/testcontainers/testcontainers-go v0.34.0 h1:5fbgF0vIN5u+nD3IWabQwRybuB4GY8G2HHgCkbMzMHo= +github.com/testcontainers/testcontainers-go v0.34.0/go.mod h1:6P/kMkQe8yqPHfPWNulFGdFHTD8HB2vLq/231xY2iPQ= github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e h1:cR8/SYRgyQCt5cNCMniB/ZScMkhI9nk8U5C7SbISXjo= github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e/go.mod h1:Tu4lItkATkonrYuvtVjG0/rhy15qrNGNTjPdaphtZ/8= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= @@ -835,20 +837,18 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -910,8 +910,8 @@ gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg= gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= 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.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= -gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= k8s.io/api v0.26.2 h1:dM3cinp3PGB6asOySalOZxEG4CZ0IAdJsrYZXE/ovGQ= From ddc647327e8d58f5a2def5b902ad06800982544b Mon Sep 17 00:00:00 2001 From: David Date: Sun, 3 Nov 2024 14:14:52 +0800 Subject: [PATCH 127/205] feat(taiko-client): client changes based on #18150 (#18350) --- packages/taiko-client/bindings/.githead | 2 +- .../taiko-client/bindings/encoding/input.go | 2 +- .../bindings/encoding/input_test.go | 2 +- .../bindings/encoding/protocol_config.go | 79 -- .../bindings/gen_guardian_prover.go | 23 +- .../bindings/gen_lib_proposing.go | 190 ++--- .../taiko-client/bindings/gen_lib_proving.go | 323 ++------ .../taiko-client/bindings/gen_lib_utils.go | 158 +--- .../bindings/gen_lib_verifying.go | 177 +--- .../taiko-client/bindings/gen_prover_set.go | 56 +- .../taiko-client/bindings/gen_taiko_l1.go | 770 ++++++++++++++---- .../taiko-client/bindings/gen_taiko_l2.go | 36 +- .../bindings/gen_tier_provider.go | 19 +- .../driver/chain_syncer/blob/syncer.go | 8 +- .../driver/chain_syncer/blob/syncer_test.go | 6 +- packages/taiko-client/driver/driver.go | 9 +- packages/taiko-client/driver/state/state.go | 11 +- .../integration_test/deploy_l1_contract.sh | 2 +- .../taiko-client/internal/docker/start.sh | 4 +- .../taiko-client/internal/testutils/helper.go | 33 +- packages/taiko-client/pkg/rpc/methods.go | 7 +- packages/taiko-client/pkg/rpc/utils.go | 15 + packages/taiko-client/proposer/proposer.go | 7 +- .../taiko-client/proposer/proposer_test.go | 99 ++- .../transaction_builder/calldata_test.go | 6 +- .../transaction_builder/common_test.go | 8 +- packages/taiko-client/prover/prover.go | 14 +- 27 files changed, 957 insertions(+), 1109 deletions(-) delete mode 100644 packages/taiko-client/bindings/encoding/protocol_config.go diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead index d214b1e728d..34b5ba1cba0 100644 --- a/packages/taiko-client/bindings/.githead +++ b/packages/taiko-client/bindings/.githead @@ -1 +1 @@ -13cc0074a2295c5939cf83e23f531cb25c43bd64 +6b03929ae41f15c3a36b514cec3f8e91e64e8fab diff --git a/packages/taiko-client/bindings/encoding/input.go b/packages/taiko-client/bindings/encoding/input.go index 8cfc0e8811a..9be7c456a06 100644 --- a/packages/taiko-client/bindings/encoding/input.go +++ b/packages/taiko-client/bindings/encoding/input.go @@ -431,7 +431,7 @@ func UnpackTxListBytes(txData []byte) ([]byte, error) { } // Only check for safety. - if method.Name != "proposeBlock" { + if method.Name != "proposeBlock" && method.Name != "proposeBlockV2" { return nil, fmt.Errorf("invalid method name: %s", method.Name) } diff --git a/packages/taiko-client/bindings/encoding/input_test.go b/packages/taiko-client/bindings/encoding/input_test.go index 6d7f0ba9eaa..761bcef252a 100644 --- a/packages/taiko-client/bindings/encoding/input_test.go +++ b/packages/taiko-client/bindings/encoding/input_test.go @@ -50,7 +50,7 @@ func TestUnpackTxListBytes(t *testing.T) { txListBytes := randomBytes(1024) - tx, err := taikoL1.ProposeBlock( + tx, err := taikoL1.ProposeBlockV2( opts, randomBytes(1024), txListBytes, diff --git a/packages/taiko-client/bindings/encoding/protocol_config.go b/packages/taiko-client/bindings/encoding/protocol_config.go deleted file mode 100644 index ee2163db681..00000000000 --- a/packages/taiko-client/bindings/encoding/protocol_config.go +++ /dev/null @@ -1,79 +0,0 @@ -package encoding - -import ( - "math/big" - - "github.com/ethereum/go-ethereum/params" - - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" -) - -var ( - livenessBond, _ = new(big.Int).SetString("125000000000000000000", 10) - InternlDevnetProtocolConfig = &bindings.TaikoDataConfig{ - ChainId: params.TaikoInternalL2ANetworkID.Uint64(), - BlockMaxProposals: 324_000, - BlockRingBufferSize: 360_000, - MaxBlocksToVerify: 16, - BlockMaxGasLimit: 240_000_000, - LivenessBond: livenessBond, - StateRootSyncInternal: 16, - MaxAnchorHeightOffset: 64, - OntakeForkHeight: 2, - BaseFeeConfig: bindings.LibSharedDataBaseFeeConfig{ - AdjustmentQuotient: 8, - SharingPctg: 75, - GasIssuancePerSecond: 5_000_000, - MinGasExcess: 1_340_000_000, - MaxGasIssuancePerBlock: 600_000_000, - }, - } - HeklaProtocolConfig = &bindings.TaikoDataConfig{ - ChainId: params.HeklaNetworkID.Uint64(), - BlockMaxProposals: 324_000, - BlockRingBufferSize: 324_512, - MaxBlocksToVerify: 16, - BlockMaxGasLimit: 240_000_000, - LivenessBond: livenessBond, - StateRootSyncInternal: 16, - MaxAnchorHeightOffset: 64, - OntakeForkHeight: 840_512, - BaseFeeConfig: bindings.LibSharedDataBaseFeeConfig{ - AdjustmentQuotient: 8, - SharingPctg: 75, - GasIssuancePerSecond: 5_000_000, - MinGasExcess: 1_340_000_000, - MaxGasIssuancePerBlock: 600_000_000, - }, - } - MainnetProtocolConfig = &bindings.TaikoDataConfig{ - ChainId: params.TaikoMainnetNetworkID.Uint64(), - BlockMaxProposals: 324_000, - BlockRingBufferSize: 360_000, - MaxBlocksToVerify: 16, - BlockMaxGasLimit: 240_000_000, - LivenessBond: livenessBond, - StateRootSyncInternal: 16, - MaxAnchorHeightOffset: 64, - OntakeForkHeight: 538_304, - BaseFeeConfig: bindings.LibSharedDataBaseFeeConfig{ - AdjustmentQuotient: 8, - SharingPctg: 75, - GasIssuancePerSecond: 5_000_000, - MinGasExcess: 1_340_000_000, - MaxGasIssuancePerBlock: 600_000_000, - }, - } -) - -// GetProtocolConfig returns the protocol config for the given chain ID. -func GetProtocolConfig(chainID uint64) *bindings.TaikoDataConfig { - switch chainID { - case params.HeklaNetworkID.Uint64(): - return HeklaProtocolConfig - case params.TaikoMainnetNetworkID.Uint64(): - return MainnetProtocolConfig - default: - return InternlDevnetProtocolConfig - } -} diff --git a/packages/taiko-client/bindings/gen_guardian_prover.go b/packages/taiko-client/bindings/gen_guardian_prover.go index 657f3471514..c7b591b52c0 100644 --- a/packages/taiko-client/bindings/gen_guardian_prover.go +++ b/packages/taiko-client/bindings/gen_guardian_prover.go @@ -60,7 +60,7 @@ type TaikoDataTierProof struct { // GuardianProverMetaData contains all meta data concerning the GuardianProver contract. var GuardianProverMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approvals\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proofHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"approvalBits\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"_meta\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"approveV2\",\"inputs\":[{\"name\":\"_metaV2\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"guardianIds\",\"inputs\":[{\"name\":\"guardian\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"guardians\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestProofHash\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGuardians\",\"inputs\":[{\"name\":\"_newGuardians\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_minGuardians\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"_clearData\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBatchProof\",\"inputs\":[{\"name\":\"_ctxs\",\"type\":\"tuple[]\",\"internalType\":\"structIVerifier.ContextV2[]\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approved\",\"inputs\":[{\"name\":\"operationId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"approvalBits\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"minGuardiansReached\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConflictingProofs\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"guardian\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"currentProofHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newProofHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardianApproval\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"proofData\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardiansUpdated\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"guardians\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approvals\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proofHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"approvalBits\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveV2\",\"inputs\":[{\"name\":\"_metaV2\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"guardianIds\",\"inputs\":[{\"name\":\"guardian\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"guardians\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestProofHash\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGuardians\",\"inputs\":[{\"name\":\"_newGuardians\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_minGuardians\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"_clearData\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBatchProof\",\"inputs\":[{\"name\":\"_ctxs\",\"type\":\"tuple[]\",\"internalType\":\"structIVerifier.ContextV2[]\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approved\",\"inputs\":[{\"name\":\"operationId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"approvalBits\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"minGuardiansReached\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConflictingProofs\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"guardian\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"currentProofHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newProofHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardianApproval\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"proofData\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardiansUpdated\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"guardians\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // GuardianProverABI is the input ABI used to generate the binding from. @@ -846,27 +846,6 @@ func (_GuardianProver *GuardianProverTransactorSession) AcceptOwnership() (*type return _GuardianProver.Contract.AcceptOwnership(&_GuardianProver.TransactOpts) } -// Approve is a paid mutator transaction binding the contract method 0x98984761. -// -// Solidity: function approve((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) _meta, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns(bool) -func (_GuardianProver *GuardianProverTransactor) Approve(opts *bind.TransactOpts, _meta TaikoDataBlockMetadata, _tran TaikoDataTransition, _proof TaikoDataTierProof) (*types.Transaction, error) { - return _GuardianProver.contract.Transact(opts, "approve", _meta, _tran, _proof) -} - -// Approve is a paid mutator transaction binding the contract method 0x98984761. -// -// Solidity: function approve((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) _meta, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns(bool) -func (_GuardianProver *GuardianProverSession) Approve(_meta TaikoDataBlockMetadata, _tran TaikoDataTransition, _proof TaikoDataTierProof) (*types.Transaction, error) { - return _GuardianProver.Contract.Approve(&_GuardianProver.TransactOpts, _meta, _tran, _proof) -} - -// Approve is a paid mutator transaction binding the contract method 0x98984761. -// -// Solidity: function approve((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) _meta, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns(bool) -func (_GuardianProver *GuardianProverTransactorSession) Approve(_meta TaikoDataBlockMetadata, _tran TaikoDataTransition, _proof TaikoDataTierProof) (*types.Transaction, error) { - return _GuardianProver.Contract.Approve(&_GuardianProver.TransactOpts, _meta, _tran, _proof) -} - // ApproveV2 is a paid mutator transaction binding the contract method 0x360d230a. // // Solidity: function approveV2((bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) _metaV2, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns(bool) diff --git a/packages/taiko-client/bindings/gen_lib_proposing.go b/packages/taiko-client/bindings/gen_lib_proposing.go index f1f45d44b9e..182dadc0a2b 100644 --- a/packages/taiko-client/bindings/gen_lib_proposing.go +++ b/packages/taiko-client/bindings/gen_lib_proposing.go @@ -31,7 +31,7 @@ var ( // LibProposingMetaData contains all meta data concerning the LibProposing contract. var LibProposingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_ANCHOR_BLOCK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CUSTOM_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIMESTAMP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_ANCHOR_BLOCK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CUSTOM_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIMESTAMP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]}]", } // LibProposingABI is the input ABI used to generate the binding from. @@ -180,9 +180,9 @@ func (_LibProposing *LibProposingTransactorRaw) Transact(opts *bind.TransactOpts return _LibProposing.Contract.contract.Transact(opts, method, params...) } -// LibProposingBlockProposedIterator is returned from FilterBlockProposed and is used to iterate over the raw logs and unpacked data for BlockProposed events raised by the LibProposing contract. -type LibProposingBlockProposedIterator struct { - Event *LibProposingBlockProposed // Event containing the contract specifics and raw log +// LibProposingBlockProposedV2Iterator is returned from FilterBlockProposedV2 and is used to iterate over the raw logs and unpacked data for BlockProposedV2 events raised by the LibProposing contract. +type LibProposingBlockProposedV2Iterator struct { + Event *LibProposingBlockProposedV2 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -196,7 +196,7 @@ type LibProposingBlockProposedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *LibProposingBlockProposedIterator) Next() bool { +func (it *LibProposingBlockProposedV2Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -205,7 +205,7 @@ func (it *LibProposingBlockProposedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(LibProposingBlockProposed) + it.Event = new(LibProposingBlockProposedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -220,7 +220,7 @@ func (it *LibProposingBlockProposedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(LibProposingBlockProposed) + it.Event = new(LibProposingBlockProposedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -236,63 +236,52 @@ func (it *LibProposingBlockProposedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *LibProposingBlockProposedIterator) Error() error { +func (it *LibProposingBlockProposedV2Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *LibProposingBlockProposedIterator) Close() error { +func (it *LibProposingBlockProposedV2Iterator) Close() error { it.sub.Unsubscribe() return nil } -// LibProposingBlockProposed represents a BlockProposed event raised by the LibProposing contract. -type LibProposingBlockProposed struct { - BlockId *big.Int - AssignedProver common.Address - LivenessBond *big.Int - Meta TaikoDataBlockMetadata - DepositsProcessed []TaikoDataEthDeposit - Raw types.Log // Blockchain specific contextual infos +// LibProposingBlockProposedV2 represents a BlockProposedV2 event raised by the LibProposing contract. +type LibProposingBlockProposedV2 struct { + BlockId *big.Int + Meta TaikoDataBlockMetadataV2 + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed is a free log retrieval operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// FilterBlockProposedV2 is a free log retrieval operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) -func (_LibProposing *LibProposingFilterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*LibProposingBlockProposedIterator, error) { +// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) +func (_LibProposing *LibProposingFilterer) FilterBlockProposedV2(opts *bind.FilterOpts, blockId []*big.Int) (*LibProposingBlockProposedV2Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var assignedProverRule []interface{} - for _, assignedProverItem := range assignedProver { - assignedProverRule = append(assignedProverRule, assignedProverItem) - } - logs, sub, err := _LibProposing.contract.FilterLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + logs, sub, err := _LibProposing.contract.FilterLogs(opts, "BlockProposedV2", blockIdRule) if err != nil { return nil, err } - return &LibProposingBlockProposedIterator{contract: _LibProposing.contract, event: "BlockProposed", logs: logs, sub: sub}, nil + return &LibProposingBlockProposedV2Iterator{contract: _LibProposing.contract, event: "BlockProposedV2", logs: logs, sub: sub}, nil } -// WatchBlockProposed is a free log subscription operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// WatchBlockProposedV2 is a free log subscription operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) -func (_LibProposing *LibProposingFilterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *LibProposingBlockProposed, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { +// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) +func (_LibProposing *LibProposingFilterer) WatchBlockProposedV2(opts *bind.WatchOpts, sink chan<- *LibProposingBlockProposedV2, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var assignedProverRule []interface{} - for _, assignedProverItem := range assignedProver { - assignedProverRule = append(assignedProverRule, assignedProverItem) - } - logs, sub, err := _LibProposing.contract.WatchLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + logs, sub, err := _LibProposing.contract.WatchLogs(opts, "BlockProposedV2", blockIdRule) if err != nil { return nil, err } @@ -302,8 +291,8 @@ func (_LibProposing *LibProposingFilterer) WatchBlockProposed(opts *bind.WatchOp select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(LibProposingBlockProposed) - if err := _LibProposing.contract.UnpackLog(event, "BlockProposed", log); err != nil { + event := new(LibProposingBlockProposedV2) + if err := _LibProposing.contract.UnpackLog(event, "BlockProposedV2", log); err != nil { return err } event.Raw = log @@ -324,21 +313,21 @@ func (_LibProposing *LibProposingFilterer) WatchBlockProposed(opts *bind.WatchOp }), nil } -// ParseBlockProposed is a log parse operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// ParseBlockProposedV2 is a log parse operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) -func (_LibProposing *LibProposingFilterer) ParseBlockProposed(log types.Log) (*LibProposingBlockProposed, error) { - event := new(LibProposingBlockProposed) - if err := _LibProposing.contract.UnpackLog(event, "BlockProposed", log); err != nil { +// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) +func (_LibProposing *LibProposingFilterer) ParseBlockProposedV2(log types.Log) (*LibProposingBlockProposedV2, error) { + event := new(LibProposingBlockProposedV2) + if err := _LibProposing.contract.UnpackLog(event, "BlockProposedV2", log); err != nil { return nil, err } event.Raw = log return event, nil } -// LibProposingBlockProposedV2Iterator is returned from FilterBlockProposedV2 and is used to iterate over the raw logs and unpacked data for BlockProposedV2 events raised by the LibProposing contract. -type LibProposingBlockProposedV2Iterator struct { - Event *LibProposingBlockProposedV2 // Event containing the contract specifics and raw log +// LibProposingBondDebitedIterator is returned from FilterBondDebited and is used to iterate over the raw logs and unpacked data for BondDebited events raised by the LibProposing contract. +type LibProposingBondDebitedIterator struct { + Event *LibProposingBondDebited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -352,7 +341,7 @@ type LibProposingBlockProposedV2Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *LibProposingBlockProposedV2Iterator) Next() bool { +func (it *LibProposingBondDebitedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -361,7 +350,7 @@ func (it *LibProposingBlockProposedV2Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(LibProposingBlockProposedV2) + it.Event = new(LibProposingBondDebited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -376,7 +365,7 @@ func (it *LibProposingBlockProposedV2Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(LibProposingBlockProposedV2) + it.Event = new(LibProposingBondDebited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -392,52 +381,53 @@ func (it *LibProposingBlockProposedV2Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *LibProposingBlockProposedV2Iterator) Error() error { +func (it *LibProposingBondDebitedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *LibProposingBlockProposedV2Iterator) Close() error { +func (it *LibProposingBondDebitedIterator) Close() error { it.sub.Unsubscribe() return nil } -// LibProposingBlockProposedV2 represents a BlockProposedV2 event raised by the LibProposing contract. -type LibProposingBlockProposedV2 struct { +// LibProposingBondDebited represents a BondDebited event raised by the LibProposing contract. +type LibProposingBondDebited struct { + User common.Address BlockId *big.Int - Meta TaikoDataBlockMetadataV2 + Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposedV2 is a free log retrieval operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. +// FilterBondDebited is a free log retrieval operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) -func (_LibProposing *LibProposingFilterer) FilterBlockProposedV2(opts *bind.FilterOpts, blockId []*big.Int) (*LibProposingBlockProposedV2Iterator, error) { +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) +func (_LibProposing *LibProposingFilterer) FilterBondDebited(opts *bind.FilterOpts, user []common.Address) (*LibProposingBondDebitedIterator, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) } - logs, sub, err := _LibProposing.contract.FilterLogs(opts, "BlockProposedV2", blockIdRule) + logs, sub, err := _LibProposing.contract.FilterLogs(opts, "BondDebited", userRule) if err != nil { return nil, err } - return &LibProposingBlockProposedV2Iterator{contract: _LibProposing.contract, event: "BlockProposedV2", logs: logs, sub: sub}, nil + return &LibProposingBondDebitedIterator{contract: _LibProposing.contract, event: "BondDebited", logs: logs, sub: sub}, nil } -// WatchBlockProposedV2 is a free log subscription operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. +// WatchBondDebited is a free log subscription operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) -func (_LibProposing *LibProposingFilterer) WatchBlockProposedV2(opts *bind.WatchOpts, sink chan<- *LibProposingBlockProposedV2, blockId []*big.Int) (event.Subscription, error) { +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) +func (_LibProposing *LibProposingFilterer) WatchBondDebited(opts *bind.WatchOpts, sink chan<- *LibProposingBondDebited, user []common.Address) (event.Subscription, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) } - logs, sub, err := _LibProposing.contract.WatchLogs(opts, "BlockProposedV2", blockIdRule) + logs, sub, err := _LibProposing.contract.WatchLogs(opts, "BondDebited", userRule) if err != nil { return nil, err } @@ -447,8 +437,8 @@ func (_LibProposing *LibProposingFilterer) WatchBlockProposedV2(opts *bind.Watch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(LibProposingBlockProposedV2) - if err := _LibProposing.contract.UnpackLog(event, "BlockProposedV2", log); err != nil { + event := new(LibProposingBondDebited) + if err := _LibProposing.contract.UnpackLog(event, "BondDebited", log); err != nil { return err } event.Raw = log @@ -469,21 +459,21 @@ func (_LibProposing *LibProposingFilterer) WatchBlockProposedV2(opts *bind.Watch }), nil } -// ParseBlockProposedV2 is a log parse operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. +// ParseBondDebited is a log parse operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) -func (_LibProposing *LibProposingFilterer) ParseBlockProposedV2(log types.Log) (*LibProposingBlockProposedV2, error) { - event := new(LibProposingBlockProposedV2) - if err := _LibProposing.contract.UnpackLog(event, "BlockProposedV2", log); err != nil { +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) +func (_LibProposing *LibProposingFilterer) ParseBondDebited(log types.Log) (*LibProposingBondDebited, error) { + event := new(LibProposingBondDebited) + if err := _LibProposing.contract.UnpackLog(event, "BondDebited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// LibProposingBondDebitedIterator is returned from FilterBondDebited and is used to iterate over the raw logs and unpacked data for BondDebited events raised by the LibProposing contract. -type LibProposingBondDebitedIterator struct { - Event *LibProposingBondDebited // Event containing the contract specifics and raw log +// LibProposingBondDepositedIterator is returned from FilterBondDeposited and is used to iterate over the raw logs and unpacked data for BondDeposited events raised by the LibProposing contract. +type LibProposingBondDepositedIterator struct { + Event *LibProposingBondDeposited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -497,7 +487,7 @@ type LibProposingBondDebitedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *LibProposingBondDebitedIterator) Next() bool { +func (it *LibProposingBondDepositedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -506,7 +496,7 @@ func (it *LibProposingBondDebitedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(LibProposingBondDebited) + it.Event = new(LibProposingBondDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -521,7 +511,7 @@ func (it *LibProposingBondDebitedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(LibProposingBondDebited) + it.Event = new(LibProposingBondDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -537,52 +527,52 @@ func (it *LibProposingBondDebitedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *LibProposingBondDebitedIterator) Error() error { +func (it *LibProposingBondDepositedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *LibProposingBondDebitedIterator) Close() error { +func (it *LibProposingBondDepositedIterator) Close() error { it.sub.Unsubscribe() return nil } -// LibProposingBondDebited represents a BondDebited event raised by the LibProposing contract. -type LibProposingBondDebited struct { +// LibProposingBondDeposited represents a BondDeposited event raised by the LibProposing contract. +type LibProposingBondDeposited struct { User common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterBondDebited is a free log retrieval operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// FilterBondDeposited is a free log retrieval operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. // -// Solidity: event BondDebited(address indexed user, uint256 amount) -func (_LibProposing *LibProposingFilterer) FilterBondDebited(opts *bind.FilterOpts, user []common.Address) (*LibProposingBondDebitedIterator, error) { +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_LibProposing *LibProposingFilterer) FilterBondDeposited(opts *bind.FilterOpts, user []common.Address) (*LibProposingBondDepositedIterator, error) { var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) } - logs, sub, err := _LibProposing.contract.FilterLogs(opts, "BondDebited", userRule) + logs, sub, err := _LibProposing.contract.FilterLogs(opts, "BondDeposited", userRule) if err != nil { return nil, err } - return &LibProposingBondDebitedIterator{contract: _LibProposing.contract, event: "BondDebited", logs: logs, sub: sub}, nil + return &LibProposingBondDepositedIterator{contract: _LibProposing.contract, event: "BondDeposited", logs: logs, sub: sub}, nil } -// WatchBondDebited is a free log subscription operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// WatchBondDeposited is a free log subscription operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. // -// Solidity: event BondDebited(address indexed user, uint256 amount) -func (_LibProposing *LibProposingFilterer) WatchBondDebited(opts *bind.WatchOpts, sink chan<- *LibProposingBondDebited, user []common.Address) (event.Subscription, error) { +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_LibProposing *LibProposingFilterer) WatchBondDeposited(opts *bind.WatchOpts, sink chan<- *LibProposingBondDeposited, user []common.Address) (event.Subscription, error) { var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) } - logs, sub, err := _LibProposing.contract.WatchLogs(opts, "BondDebited", userRule) + logs, sub, err := _LibProposing.contract.WatchLogs(opts, "BondDeposited", userRule) if err != nil { return nil, err } @@ -592,8 +582,8 @@ func (_LibProposing *LibProposingFilterer) WatchBondDebited(opts *bind.WatchOpts select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(LibProposingBondDebited) - if err := _LibProposing.contract.UnpackLog(event, "BondDebited", log); err != nil { + event := new(LibProposingBondDeposited) + if err := _LibProposing.contract.UnpackLog(event, "BondDeposited", log); err != nil { return err } event.Raw = log @@ -614,12 +604,12 @@ func (_LibProposing *LibProposingFilterer) WatchBondDebited(opts *bind.WatchOpts }), nil } -// ParseBondDebited is a log parse operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// ParseBondDeposited is a log parse operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. // -// Solidity: event BondDebited(address indexed user, uint256 amount) -func (_LibProposing *LibProposingFilterer) ParseBondDebited(log types.Log) (*LibProposingBondDebited, error) { - event := new(LibProposingBondDebited) - if err := _LibProposing.contract.UnpackLog(event, "BondDebited", log); err != nil { +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_LibProposing *LibProposingFilterer) ParseBondDeposited(log types.Log) (*LibProposingBondDeposited, error) { + event := new(LibProposingBondDeposited) + if err := _LibProposing.contract.UnpackLog(event, "BondDeposited", log); err != nil { return nil, err } event.Raw = log diff --git a/packages/taiko-client/bindings/gen_lib_proving.go b/packages/taiko-client/bindings/gen_lib_proving.go index c52ec6130fb..b4a31484e70 100644 --- a/packages/taiko-client/bindings/gen_lib_proving.go +++ b/packages/taiko-client/bindings/gen_lib_proving.go @@ -31,7 +31,7 @@ var ( // LibProvingMetaData contains all meta data concerning the LibProving contract. var LibProvingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_DIFF_VERIFIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_DIFF_VERIFIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", } // LibProvingABI is the input ABI used to generate the binding from. @@ -249,14 +249,15 @@ func (it *LibProvingBondCreditedIterator) Close() error { // LibProvingBondCredited represents a BondCredited event raised by the LibProving contract. type LibProvingBondCredited struct { - User common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos + User common.Address + BlockId *big.Int + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterBondCredited is a free log retrieval operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// FilterBondCredited is a free log retrieval operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. // -// Solidity: event BondCredited(address indexed user, uint256 amount) +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) func (_LibProving *LibProvingFilterer) FilterBondCredited(opts *bind.FilterOpts, user []common.Address) (*LibProvingBondCreditedIterator, error) { var userRule []interface{} @@ -271,9 +272,9 @@ func (_LibProving *LibProvingFilterer) FilterBondCredited(opts *bind.FilterOpts, return &LibProvingBondCreditedIterator{contract: _LibProving.contract, event: "BondCredited", logs: logs, sub: sub}, nil } -// WatchBondCredited is a free log subscription operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// WatchBondCredited is a free log subscription operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. // -// Solidity: event BondCredited(address indexed user, uint256 amount) +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) func (_LibProving *LibProvingFilterer) WatchBondCredited(opts *bind.WatchOpts, sink chan<- *LibProvingBondCredited, user []common.Address) (event.Subscription, error) { var userRule []interface{} @@ -313,9 +314,9 @@ func (_LibProving *LibProvingFilterer) WatchBondCredited(opts *bind.WatchOpts, s }), nil } -// ParseBondCredited is a log parse operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// ParseBondCredited is a log parse operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. // -// Solidity: event BondCredited(address indexed user, uint256 amount) +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) func (_LibProving *LibProvingFilterer) ParseBondCredited(log types.Log) (*LibProvingBondCredited, error) { event := new(LibProvingBondCredited) if err := _LibProving.contract.UnpackLog(event, "BondCredited", log); err != nil { @@ -394,14 +395,15 @@ func (it *LibProvingBondDebitedIterator) Close() error { // LibProvingBondDebited represents a BondDebited event raised by the LibProving contract. type LibProvingBondDebited struct { - User common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos + User common.Address + BlockId *big.Int + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterBondDebited is a free log retrieval operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// FilterBondDebited is a free log retrieval operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BondDebited(address indexed user, uint256 amount) +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) func (_LibProving *LibProvingFilterer) FilterBondDebited(opts *bind.FilterOpts, user []common.Address) (*LibProvingBondDebitedIterator, error) { var userRule []interface{} @@ -416,9 +418,9 @@ func (_LibProving *LibProvingFilterer) FilterBondDebited(opts *bind.FilterOpts, return &LibProvingBondDebitedIterator{contract: _LibProving.contract, event: "BondDebited", logs: logs, sub: sub}, nil } -// WatchBondDebited is a free log subscription operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// WatchBondDebited is a free log subscription operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BondDebited(address indexed user, uint256 amount) +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) func (_LibProving *LibProvingFilterer) WatchBondDebited(opts *bind.WatchOpts, sink chan<- *LibProvingBondDebited, user []common.Address) (event.Subscription, error) { var userRule []interface{} @@ -458,9 +460,9 @@ func (_LibProving *LibProvingFilterer) WatchBondDebited(opts *bind.WatchOpts, si }), nil } -// ParseBondDebited is a log parse operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// ParseBondDebited is a log parse operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BondDebited(address indexed user, uint256 amount) +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) func (_LibProving *LibProvingFilterer) ParseBondDebited(log types.Log) (*LibProvingBondDebited, error) { event := new(LibProvingBondDebited) if err := _LibProving.contract.UnpackLog(event, "BondDebited", log); err != nil { @@ -470,9 +472,9 @@ func (_LibProving *LibProvingFilterer) ParseBondDebited(log types.Log) (*LibProv return event, nil } -// LibProvingProvingPausedIterator is returned from FilterProvingPaused and is used to iterate over the raw logs and unpacked data for ProvingPaused events raised by the LibProving contract. -type LibProvingProvingPausedIterator struct { - Event *LibProvingProvingPaused // Event containing the contract specifics and raw log +// LibProvingBondDepositedIterator is returned from FilterBondDeposited and is used to iterate over the raw logs and unpacked data for BondDeposited events raised by the LibProving contract. +type LibProvingBondDepositedIterator struct { + Event *LibProvingBondDeposited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -486,7 +488,7 @@ type LibProvingProvingPausedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *LibProvingProvingPausedIterator) Next() bool { +func (it *LibProvingBondDepositedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -495,7 +497,7 @@ func (it *LibProvingProvingPausedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(LibProvingProvingPaused) + it.Event = new(LibProvingBondDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -510,7 +512,7 @@ func (it *LibProvingProvingPausedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(LibProvingProvingPaused) + it.Event = new(LibProvingBondDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -526,41 +528,52 @@ func (it *LibProvingProvingPausedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *LibProvingProvingPausedIterator) Error() error { +func (it *LibProvingBondDepositedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *LibProvingProvingPausedIterator) Close() error { +func (it *LibProvingBondDepositedIterator) Close() error { it.sub.Unsubscribe() return nil } -// LibProvingProvingPaused represents a ProvingPaused event raised by the LibProving contract. -type LibProvingProvingPaused struct { - Paused bool +// LibProvingBondDeposited represents a BondDeposited event raised by the LibProving contract. +type LibProvingBondDeposited struct { + User common.Address + Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterProvingPaused is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// FilterBondDeposited is a free log retrieval operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. // -// Solidity: event ProvingPaused(bool paused) -func (_LibProving *LibProvingFilterer) FilterProvingPaused(opts *bind.FilterOpts) (*LibProvingProvingPausedIterator, error) { +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_LibProving *LibProvingFilterer) FilterBondDeposited(opts *bind.FilterOpts, user []common.Address) (*LibProvingBondDepositedIterator, error) { - logs, sub, err := _LibProving.contract.FilterLogs(opts, "ProvingPaused") + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _LibProving.contract.FilterLogs(opts, "BondDeposited", userRule) if err != nil { return nil, err } - return &LibProvingProvingPausedIterator{contract: _LibProving.contract, event: "ProvingPaused", logs: logs, sub: sub}, nil + return &LibProvingBondDepositedIterator{contract: _LibProving.contract, event: "BondDeposited", logs: logs, sub: sub}, nil } -// WatchProvingPaused is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// WatchBondDeposited is a free log subscription operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. // -// Solidity: event ProvingPaused(bool paused) -func (_LibProving *LibProvingFilterer) WatchProvingPaused(opts *bind.WatchOpts, sink chan<- *LibProvingProvingPaused) (event.Subscription, error) { +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_LibProving *LibProvingFilterer) WatchBondDeposited(opts *bind.WatchOpts, sink chan<- *LibProvingBondDeposited, user []common.Address) (event.Subscription, error) { - logs, sub, err := _LibProving.contract.WatchLogs(opts, "ProvingPaused") + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _LibProving.contract.WatchLogs(opts, "BondDeposited", userRule) if err != nil { return nil, err } @@ -570,8 +583,8 @@ func (_LibProving *LibProvingFilterer) WatchProvingPaused(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(LibProvingProvingPaused) - if err := _LibProving.contract.UnpackLog(event, "ProvingPaused", log); err != nil { + event := new(LibProvingBondDeposited) + if err := _LibProving.contract.UnpackLog(event, "BondDeposited", log); err != nil { return err } event.Raw = log @@ -592,21 +605,21 @@ func (_LibProving *LibProvingFilterer) WatchProvingPaused(opts *bind.WatchOpts, }), nil } -// ParseProvingPaused is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// ParseBondDeposited is a log parse operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. // -// Solidity: event ProvingPaused(bool paused) -func (_LibProving *LibProvingFilterer) ParseProvingPaused(log types.Log) (*LibProvingProvingPaused, error) { - event := new(LibProvingProvingPaused) - if err := _LibProving.contract.UnpackLog(event, "ProvingPaused", log); err != nil { +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_LibProving *LibProvingFilterer) ParseBondDeposited(log types.Log) (*LibProvingBondDeposited, error) { + event := new(LibProvingBondDeposited) + if err := _LibProving.contract.UnpackLog(event, "BondDeposited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// LibProvingTransitionContestedIterator is returned from FilterTransitionContested and is used to iterate over the raw logs and unpacked data for TransitionContested events raised by the LibProving contract. -type LibProvingTransitionContestedIterator struct { - Event *LibProvingTransitionContested // Event containing the contract specifics and raw log +// LibProvingProvingPausedIterator is returned from FilterProvingPaused and is used to iterate over the raw logs and unpacked data for ProvingPaused events raised by the LibProving contract. +type LibProvingProvingPausedIterator struct { + Event *LibProvingProvingPaused // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -620,7 +633,7 @@ type LibProvingTransitionContestedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *LibProvingTransitionContestedIterator) Next() bool { +func (it *LibProvingProvingPausedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -629,7 +642,7 @@ func (it *LibProvingTransitionContestedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(LibProvingTransitionContested) + it.Event = new(LibProvingProvingPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -644,7 +657,7 @@ func (it *LibProvingTransitionContestedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(LibProvingTransitionContested) + it.Event = new(LibProvingProvingPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -660,55 +673,41 @@ func (it *LibProvingTransitionContestedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *LibProvingTransitionContestedIterator) Error() error { +func (it *LibProvingProvingPausedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *LibProvingTransitionContestedIterator) Close() error { +func (it *LibProvingProvingPausedIterator) Close() error { it.sub.Unsubscribe() return nil } -// LibProvingTransitionContested represents a TransitionContested event raised by the LibProving contract. -type LibProvingTransitionContested struct { - BlockId *big.Int - Tran TaikoDataTransition - Contester common.Address - ContestBond *big.Int - Tier uint16 - Raw types.Log // Blockchain specific contextual infos +// LibProvingProvingPaused represents a ProvingPaused event raised by the LibProving contract. +type LibProvingProvingPaused struct { + Paused bool + Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionContested is a free log retrieval operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// FilterProvingPaused is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) -func (_LibProving *LibProvingFilterer) FilterTransitionContested(opts *bind.FilterOpts, blockId []*big.Int) (*LibProvingTransitionContestedIterator, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } +// Solidity: event ProvingPaused(bool paused) +func (_LibProving *LibProvingFilterer) FilterProvingPaused(opts *bind.FilterOpts) (*LibProvingProvingPausedIterator, error) { - logs, sub, err := _LibProving.contract.FilterLogs(opts, "TransitionContested", blockIdRule) + logs, sub, err := _LibProving.contract.FilterLogs(opts, "ProvingPaused") if err != nil { return nil, err } - return &LibProvingTransitionContestedIterator{contract: _LibProving.contract, event: "TransitionContested", logs: logs, sub: sub}, nil + return &LibProvingProvingPausedIterator{contract: _LibProving.contract, event: "ProvingPaused", logs: logs, sub: sub}, nil } -// WatchTransitionContested is a free log subscription operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// WatchProvingPaused is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) -func (_LibProving *LibProvingFilterer) WatchTransitionContested(opts *bind.WatchOpts, sink chan<- *LibProvingTransitionContested, blockId []*big.Int) (event.Subscription, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } +// Solidity: event ProvingPaused(bool paused) +func (_LibProving *LibProvingFilterer) WatchProvingPaused(opts *bind.WatchOpts, sink chan<- *LibProvingProvingPaused) (event.Subscription, error) { - logs, sub, err := _LibProving.contract.WatchLogs(opts, "TransitionContested", blockIdRule) + logs, sub, err := _LibProving.contract.WatchLogs(opts, "ProvingPaused") if err != nil { return nil, err } @@ -718,8 +717,8 @@ func (_LibProving *LibProvingFilterer) WatchTransitionContested(opts *bind.Watch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(LibProvingTransitionContested) - if err := _LibProving.contract.UnpackLog(event, "TransitionContested", log); err != nil { + event := new(LibProvingProvingPaused) + if err := _LibProving.contract.UnpackLog(event, "ProvingPaused", log); err != nil { return err } event.Raw = log @@ -740,12 +739,12 @@ func (_LibProving *LibProvingFilterer) WatchTransitionContested(opts *bind.Watch }), nil } -// ParseTransitionContested is a log parse operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// ParseProvingPaused is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) -func (_LibProving *LibProvingFilterer) ParseTransitionContested(log types.Log) (*LibProvingTransitionContested, error) { - event := new(LibProvingTransitionContested) - if err := _LibProving.contract.UnpackLog(event, "TransitionContested", log); err != nil { +// Solidity: event ProvingPaused(bool paused) +func (_LibProving *LibProvingFilterer) ParseProvingPaused(log types.Log) (*LibProvingProvingPaused, error) { + event := new(LibProvingProvingPaused) + if err := _LibProving.contract.UnpackLog(event, "ProvingPaused", log); err != nil { return nil, err } event.Raw = log @@ -901,154 +900,6 @@ func (_LibProving *LibProvingFilterer) ParseTransitionContestedV2(log types.Log) return event, nil } -// LibProvingTransitionProvedIterator is returned from FilterTransitionProved and is used to iterate over the raw logs and unpacked data for TransitionProved events raised by the LibProving contract. -type LibProvingTransitionProvedIterator struct { - Event *LibProvingTransitionProved // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *LibProvingTransitionProvedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(LibProvingTransitionProved) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(LibProvingTransitionProved) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *LibProvingTransitionProvedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *LibProvingTransitionProvedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// LibProvingTransitionProved represents a TransitionProved event raised by the LibProving contract. -type LibProvingTransitionProved struct { - BlockId *big.Int - Tran TaikoDataTransition - Prover common.Address - ValidityBond *big.Int - Tier uint16 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransitionProved is a free log retrieval operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. -// -// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) -func (_LibProving *LibProvingFilterer) FilterTransitionProved(opts *bind.FilterOpts, blockId []*big.Int) (*LibProvingTransitionProvedIterator, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - - logs, sub, err := _LibProving.contract.FilterLogs(opts, "TransitionProved", blockIdRule) - if err != nil { - return nil, err - } - return &LibProvingTransitionProvedIterator{contract: _LibProving.contract, event: "TransitionProved", logs: logs, sub: sub}, nil -} - -// WatchTransitionProved is a free log subscription operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. -// -// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) -func (_LibProving *LibProvingFilterer) WatchTransitionProved(opts *bind.WatchOpts, sink chan<- *LibProvingTransitionProved, blockId []*big.Int) (event.Subscription, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - - logs, sub, err := _LibProving.contract.WatchLogs(opts, "TransitionProved", blockIdRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(LibProvingTransitionProved) - if err := _LibProving.contract.UnpackLog(event, "TransitionProved", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransitionProved is a log parse operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. -// -// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) -func (_LibProving *LibProvingFilterer) ParseTransitionProved(log types.Log) (*LibProvingTransitionProved, error) { - event := new(LibProvingTransitionProved) - if err := _LibProving.contract.UnpackLog(event, "TransitionProved", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // LibProvingTransitionProvedV2Iterator is returned from FilterTransitionProvedV2 and is used to iterate over the raw logs and unpacked data for TransitionProvedV2 events raised by the LibProving contract. type LibProvingTransitionProvedV2Iterator struct { Event *LibProvingTransitionProvedV2 // Event containing the contract specifics and raw log diff --git a/packages/taiko-client/bindings/gen_lib_utils.go b/packages/taiko-client/bindings/gen_lib_utils.go index 72f84ffea2f..640b9986040 100644 --- a/packages/taiko-client/bindings/gen_lib_utils.go +++ b/packages/taiko-client/bindings/gen_lib_utils.go @@ -31,7 +31,7 @@ var ( // LibUtilsMetaData contains all meta data concerning the LibUtils contract. var LibUtilsMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", } // LibUtilsABI is the input ABI used to generate the binding from. @@ -180,162 +180,6 @@ func (_LibUtils *LibUtilsTransactorRaw) Transact(opts *bind.TransactOpts, method return _LibUtils.Contract.contract.Transact(opts, method, params...) } -// LibUtilsBlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the LibUtils contract. -type LibUtilsBlockVerifiedIterator struct { - Event *LibUtilsBlockVerified // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *LibUtilsBlockVerifiedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(LibUtilsBlockVerified) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(LibUtilsBlockVerified) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *LibUtilsBlockVerifiedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *LibUtilsBlockVerifiedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// LibUtilsBlockVerified represents a BlockVerified event raised by the LibUtils contract. -type LibUtilsBlockVerified struct { - BlockId *big.Int - Prover common.Address - BlockHash [32]byte - StateRoot [32]byte - Tier uint16 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBlockVerified is a free log retrieval operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. -// -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_LibUtils *LibUtilsFilterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*LibUtilsBlockVerifiedIterator, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - - logs, sub, err := _LibUtils.contract.FilterLogs(opts, "BlockVerified", blockIdRule, proverRule) - if err != nil { - return nil, err - } - return &LibUtilsBlockVerifiedIterator{contract: _LibUtils.contract, event: "BlockVerified", logs: logs, sub: sub}, nil -} - -// WatchBlockVerified is a free log subscription operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. -// -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_LibUtils *LibUtilsFilterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *LibUtilsBlockVerified, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - - logs, sub, err := _LibUtils.contract.WatchLogs(opts, "BlockVerified", blockIdRule, proverRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(LibUtilsBlockVerified) - if err := _LibUtils.contract.UnpackLog(event, "BlockVerified", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBlockVerified is a log parse operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. -// -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_LibUtils *LibUtilsFilterer) ParseBlockVerified(log types.Log) (*LibUtilsBlockVerified, error) { - event := new(LibUtilsBlockVerified) - if err := _LibUtils.contract.UnpackLog(event, "BlockVerified", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // LibUtilsBlockVerifiedV2Iterator is returned from FilterBlockVerifiedV2 and is used to iterate over the raw logs and unpacked data for BlockVerifiedV2 events raised by the LibUtils contract. type LibUtilsBlockVerifiedV2Iterator struct { Event *LibUtilsBlockVerifiedV2 // Event containing the contract specifics and raw log diff --git a/packages/taiko-client/bindings/gen_lib_verifying.go b/packages/taiko-client/bindings/gen_lib_verifying.go index 13038d7cc44..088fa79a641 100644 --- a/packages/taiko-client/bindings/gen_lib_verifying.go +++ b/packages/taiko-client/bindings/gen_lib_verifying.go @@ -31,7 +31,7 @@ var ( // LibVerifyingMetaData contains all meta data concerning the LibVerifying contract. var LibVerifyingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", } // LibVerifyingABI is the input ABI used to generate the binding from. @@ -180,162 +180,6 @@ func (_LibVerifying *LibVerifyingTransactorRaw) Transact(opts *bind.TransactOpts return _LibVerifying.Contract.contract.Transact(opts, method, params...) } -// LibVerifyingBlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the LibVerifying contract. -type LibVerifyingBlockVerifiedIterator struct { - Event *LibVerifyingBlockVerified // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *LibVerifyingBlockVerifiedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(LibVerifyingBlockVerified) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(LibVerifyingBlockVerified) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *LibVerifyingBlockVerifiedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *LibVerifyingBlockVerifiedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// LibVerifyingBlockVerified represents a BlockVerified event raised by the LibVerifying contract. -type LibVerifyingBlockVerified struct { - BlockId *big.Int - Prover common.Address - BlockHash [32]byte - StateRoot [32]byte - Tier uint16 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBlockVerified is a free log retrieval operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. -// -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_LibVerifying *LibVerifyingFilterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*LibVerifyingBlockVerifiedIterator, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - - logs, sub, err := _LibVerifying.contract.FilterLogs(opts, "BlockVerified", blockIdRule, proverRule) - if err != nil { - return nil, err - } - return &LibVerifyingBlockVerifiedIterator{contract: _LibVerifying.contract, event: "BlockVerified", logs: logs, sub: sub}, nil -} - -// WatchBlockVerified is a free log subscription operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. -// -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_LibVerifying *LibVerifyingFilterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *LibVerifyingBlockVerified, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - - logs, sub, err := _LibVerifying.contract.WatchLogs(opts, "BlockVerified", blockIdRule, proverRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(LibVerifyingBlockVerified) - if err := _LibVerifying.contract.UnpackLog(event, "BlockVerified", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBlockVerified is a log parse operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. -// -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_LibVerifying *LibVerifyingFilterer) ParseBlockVerified(log types.Log) (*LibVerifyingBlockVerified, error) { - event := new(LibVerifyingBlockVerified) - if err := _LibVerifying.contract.UnpackLog(event, "BlockVerified", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // LibVerifyingBlockVerifiedV2Iterator is returned from FilterBlockVerifiedV2 and is used to iterate over the raw logs and unpacked data for BlockVerifiedV2 events raised by the LibVerifying contract. type LibVerifyingBlockVerifiedV2Iterator struct { Event *LibVerifyingBlockVerifiedV2 // Event containing the contract specifics and raw log @@ -560,14 +404,15 @@ func (it *LibVerifyingBondCreditedIterator) Close() error { // LibVerifyingBondCredited represents a BondCredited event raised by the LibVerifying contract. type LibVerifyingBondCredited struct { - User common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos + User common.Address + BlockId *big.Int + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterBondCredited is a free log retrieval operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// FilterBondCredited is a free log retrieval operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. // -// Solidity: event BondCredited(address indexed user, uint256 amount) +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) func (_LibVerifying *LibVerifyingFilterer) FilterBondCredited(opts *bind.FilterOpts, user []common.Address) (*LibVerifyingBondCreditedIterator, error) { var userRule []interface{} @@ -582,9 +427,9 @@ func (_LibVerifying *LibVerifyingFilterer) FilterBondCredited(opts *bind.FilterO return &LibVerifyingBondCreditedIterator{contract: _LibVerifying.contract, event: "BondCredited", logs: logs, sub: sub}, nil } -// WatchBondCredited is a free log subscription operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// WatchBondCredited is a free log subscription operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. // -// Solidity: event BondCredited(address indexed user, uint256 amount) +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) func (_LibVerifying *LibVerifyingFilterer) WatchBondCredited(opts *bind.WatchOpts, sink chan<- *LibVerifyingBondCredited, user []common.Address) (event.Subscription, error) { var userRule []interface{} @@ -624,9 +469,9 @@ func (_LibVerifying *LibVerifyingFilterer) WatchBondCredited(opts *bind.WatchOpt }), nil } -// ParseBondCredited is a log parse operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// ParseBondCredited is a log parse operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. // -// Solidity: event BondCredited(address indexed user, uint256 amount) +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) func (_LibVerifying *LibVerifyingFilterer) ParseBondCredited(log types.Log) (*LibVerifyingBondCredited, error) { event := new(LibVerifyingBondCredited) if err := _LibVerifying.contract.UnpackLog(event, "BondCredited", log); err != nil { diff --git a/packages/taiko-client/bindings/gen_prover_set.go b/packages/taiko-client/bindings/gen_prover_set.go index b00641ce1c3..ad7e8f69e77 100644 --- a/packages/taiko-client/bindings/gen_prover_set.go +++ b/packages/taiko-client/bindings/gen_prover_set.go @@ -31,7 +31,7 @@ var ( // ProverSetMetaData contains all meta data concerning the ProverSet contract. var ProverSetMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"admin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveAllowance\",\"inputs\":[{\"name\":\"_address\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"_delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProver\",\"inputs\":[{\"name\":\"_prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isProver\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isValidSignature\",\"inputs\":[{\"name\":\"_hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"magicValue_\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_input\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawEtherToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProverEnabled\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"admin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveAllowance\",\"inputs\":[{\"name\":\"_address\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"_delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProver\",\"inputs\":[{\"name\":\"_prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isProver\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isValidSignature\",\"inputs\":[{\"name\":\"_hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"magicValue_\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_input\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawEtherToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProverEnabled\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // ProverSetABI is the input ABI used to generate the binding from. @@ -730,65 +730,44 @@ func (_ProverSet *ProverSetTransactorSession) Pause() (*types.Transaction, error return _ProverSet.Contract.Pause(&_ProverSet.TransactOpts) } -// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. -// -// Solidity: function proposeBlock(bytes _params, bytes _txList) payable returns() -func (_ProverSet *ProverSetTransactor) ProposeBlock(opts *bind.TransactOpts, _params []byte, _txList []byte) (*types.Transaction, error) { - return _ProverSet.contract.Transact(opts, "proposeBlock", _params, _txList) -} - -// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. -// -// Solidity: function proposeBlock(bytes _params, bytes _txList) payable returns() -func (_ProverSet *ProverSetSession) ProposeBlock(_params []byte, _txList []byte) (*types.Transaction, error) { - return _ProverSet.Contract.ProposeBlock(&_ProverSet.TransactOpts, _params, _txList) -} - -// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. -// -// Solidity: function proposeBlock(bytes _params, bytes _txList) payable returns() -func (_ProverSet *ProverSetTransactorSession) ProposeBlock(_params []byte, _txList []byte) (*types.Transaction, error) { - return _ProverSet.Contract.ProposeBlock(&_ProverSet.TransactOpts, _params, _txList) -} - // ProposeBlockV2 is a paid mutator transaction binding the contract method 0x648885fb. // -// Solidity: function proposeBlockV2(bytes _params, bytes _txList) payable returns() +// Solidity: function proposeBlockV2(bytes _params, bytes _txList) returns() func (_ProverSet *ProverSetTransactor) ProposeBlockV2(opts *bind.TransactOpts, _params []byte, _txList []byte) (*types.Transaction, error) { return _ProverSet.contract.Transact(opts, "proposeBlockV2", _params, _txList) } // ProposeBlockV2 is a paid mutator transaction binding the contract method 0x648885fb. // -// Solidity: function proposeBlockV2(bytes _params, bytes _txList) payable returns() +// Solidity: function proposeBlockV2(bytes _params, bytes _txList) returns() func (_ProverSet *ProverSetSession) ProposeBlockV2(_params []byte, _txList []byte) (*types.Transaction, error) { return _ProverSet.Contract.ProposeBlockV2(&_ProverSet.TransactOpts, _params, _txList) } // ProposeBlockV2 is a paid mutator transaction binding the contract method 0x648885fb. // -// Solidity: function proposeBlockV2(bytes _params, bytes _txList) payable returns() +// Solidity: function proposeBlockV2(bytes _params, bytes _txList) returns() func (_ProverSet *ProverSetTransactorSession) ProposeBlockV2(_params []byte, _txList []byte) (*types.Transaction, error) { return _ProverSet.Contract.ProposeBlockV2(&_ProverSet.TransactOpts, _params, _txList) } // ProposeBlocksV2 is a paid mutator transaction binding the contract method 0x0c8f4a10. // -// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) payable returns() +// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) returns() func (_ProverSet *ProverSetTransactor) ProposeBlocksV2(opts *bind.TransactOpts, _paramsArr [][]byte, _txListArr [][]byte) (*types.Transaction, error) { return _ProverSet.contract.Transact(opts, "proposeBlocksV2", _paramsArr, _txListArr) } // ProposeBlocksV2 is a paid mutator transaction binding the contract method 0x0c8f4a10. // -// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) payable returns() +// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) returns() func (_ProverSet *ProverSetSession) ProposeBlocksV2(_paramsArr [][]byte, _txListArr [][]byte) (*types.Transaction, error) { return _ProverSet.Contract.ProposeBlocksV2(&_ProverSet.TransactOpts, _paramsArr, _txListArr) } // ProposeBlocksV2 is a paid mutator transaction binding the contract method 0x0c8f4a10. // -// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) payable returns() +// Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) returns() func (_ProverSet *ProverSetTransactorSession) ProposeBlocksV2(_paramsArr [][]byte, _txListArr [][]byte) (*types.Transaction, error) { return _ProverSet.Contract.ProposeBlocksV2(&_ProverSet.TransactOpts, _paramsArr, _txListArr) } @@ -1003,27 +982,6 @@ func (_ProverSet *ProverSetTransactorSession) WithdrawToAdmin(_amount *big.Int) return _ProverSet.Contract.WithdrawToAdmin(&_ProverSet.TransactOpts, _amount) } -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ProverSet *ProverSetTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ProverSet.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ProverSet *ProverSetSession) Receive() (*types.Transaction, error) { - return _ProverSet.Contract.Receive(&_ProverSet.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ProverSet *ProverSetTransactorSession) Receive() (*types.Transaction, error) { - return _ProverSet.Contract.Receive(&_ProverSet.TransactOpts) -} - // ProverSetAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ProverSet contract. type ProverSetAdminChangedIterator struct { Event *ProverSetAdminChanged // Event containing the contract specifics and raw log diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go index f44e22c01e7..f916929026e 100644 --- a/packages/taiko-client/bindings/gen_taiko_l1.go +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -169,7 +169,7 @@ type TaikoDataTransitionState struct { // TaikoL1ClientMetaData contains all meta data concerning the TaikoL1Client contract. var TaikoL1ClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init3\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondWithdrawn\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondWithdrawn\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoL1ClientABI is the input ABI used to generate the binding from. @@ -1152,6 +1152,27 @@ func (_TaikoL1Client *TaikoL1ClientTransactorSession) Init2() (*types.Transactio return _TaikoL1Client.Contract.Init2(&_TaikoL1Client.TransactOpts) } +// Init3 is a paid mutator transaction binding the contract method 0x486e3cd7. +// +// Solidity: function init3() returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) Init3(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "init3") +} + +// Init3 is a paid mutator transaction binding the contract method 0x486e3cd7. +// +// Solidity: function init3() returns() +func (_TaikoL1Client *TaikoL1ClientSession) Init3() (*types.Transaction, error) { + return _TaikoL1Client.Contract.Init3(&_TaikoL1Client.TransactOpts) +} + +// Init3 is a paid mutator transaction binding the contract method 0x486e3cd7. +// +// Solidity: function init3() returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) Init3() (*types.Transaction, error) { + return _TaikoL1Client.Contract.Init3(&_TaikoL1Client.TransactOpts) +} + // Pause is a paid mutator transaction binding the contract method 0x8456cb59. // // Solidity: function pause() returns() @@ -1194,27 +1215,6 @@ func (_TaikoL1Client *TaikoL1ClientTransactorSession) PauseProving(_pause bool) return _TaikoL1Client.Contract.PauseProving(&_TaikoL1Client.TransactOpts, _pause) } -// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. -// -// Solidity: function proposeBlock(bytes _params, bytes _txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta_, (address,uint96,uint64)[] deposits_) -func (_TaikoL1Client *TaikoL1ClientTransactor) ProposeBlock(opts *bind.TransactOpts, _params []byte, _txList []byte) (*types.Transaction, error) { - return _TaikoL1Client.contract.Transact(opts, "proposeBlock", _params, _txList) -} - -// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. -// -// Solidity: function proposeBlock(bytes _params, bytes _txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta_, (address,uint96,uint64)[] deposits_) -func (_TaikoL1Client *TaikoL1ClientSession) ProposeBlock(_params []byte, _txList []byte) (*types.Transaction, error) { - return _TaikoL1Client.Contract.ProposeBlock(&_TaikoL1Client.TransactOpts, _params, _txList) -} - -// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. -// -// Solidity: function proposeBlock(bytes _params, bytes _txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta_, (address,uint96,uint64)[] deposits_) -func (_TaikoL1Client *TaikoL1ClientTransactorSession) ProposeBlock(_params []byte, _txList []byte) (*types.Transaction, error) { - return _TaikoL1Client.Contract.ProposeBlock(&_TaikoL1Client.TransactOpts, _params, _txList) -} - // ProposeBlockV2 is a paid mutator transaction binding the contract method 0x648885fb. // // Solidity: function proposeBlockV2(bytes _params, bytes _txList) returns((bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta_) @@ -2182,9 +2182,9 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerified(log types.Log) ( return event, nil } -// TaikoL1ClientBlockVerified0Iterator is returned from FilterBlockVerified0 and is used to iterate over the raw logs and unpacked data for BlockVerified0 events raised by the TaikoL1Client contract. -type TaikoL1ClientBlockVerified0Iterator struct { - Event *TaikoL1ClientBlockVerified0 // Event containing the contract specifics and raw log +// TaikoL1ClientBlockVerifiedV2Iterator is returned from FilterBlockVerifiedV2 and is used to iterate over the raw logs and unpacked data for BlockVerifiedV2 events raised by the TaikoL1Client contract. +type TaikoL1ClientBlockVerifiedV2Iterator struct { + Event *TaikoL1ClientBlockVerifiedV2 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2198,7 +2198,7 @@ type TaikoL1ClientBlockVerified0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1ClientBlockVerified0Iterator) Next() bool { +func (it *TaikoL1ClientBlockVerifiedV2Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2207,7 +2207,7 @@ func (it *TaikoL1ClientBlockVerified0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBlockVerified0) + it.Event = new(TaikoL1ClientBlockVerifiedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2222,7 +2222,7 @@ func (it *TaikoL1ClientBlockVerified0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBlockVerified0) + it.Event = new(TaikoL1ClientBlockVerifiedV2) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2238,31 +2238,30 @@ func (it *TaikoL1ClientBlockVerified0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1ClientBlockVerified0Iterator) Error() error { +func (it *TaikoL1ClientBlockVerifiedV2Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1ClientBlockVerified0Iterator) Close() error { +func (it *TaikoL1ClientBlockVerifiedV2Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1ClientBlockVerified0 represents a BlockVerified0 event raised by the TaikoL1Client contract. -type TaikoL1ClientBlockVerified0 struct { +// TaikoL1ClientBlockVerifiedV2 represents a BlockVerifiedV2 event raised by the TaikoL1Client contract. +type TaikoL1ClientBlockVerifiedV2 struct { BlockId *big.Int Prover common.Address BlockHash [32]byte - StateRoot [32]byte Tier uint16 Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// FilterBlockVerifiedV2 is a free log retrieval operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockVerified0(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1ClientBlockVerified0Iterator, error) { +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockVerifiedV2(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1ClientBlockVerifiedV2Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { @@ -2273,17 +2272,17 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockVerified0(opts *bind.Fil proverRule = append(proverRule, proverItem) } - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockVerified0", blockIdRule, proverRule) + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockVerifiedV2", blockIdRule, proverRule) if err != nil { return nil, err } - return &TaikoL1ClientBlockVerified0Iterator{contract: _TaikoL1Client.contract, event: "BlockVerified0", logs: logs, sub: sub}, nil + return &TaikoL1ClientBlockVerifiedV2Iterator{contract: _TaikoL1Client.contract, event: "BlockVerifiedV2", logs: logs, sub: sub}, nil } -// WatchBlockVerified0 is a free log subscription operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// WatchBlockVerifiedV2 is a free log subscription operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerified0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockVerified0, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerifiedV2(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockVerifiedV2, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { @@ -2294,7 +2293,7 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerified0(opts *bind.Watc proverRule = append(proverRule, proverItem) } - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockVerified0", blockIdRule, proverRule) + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockVerifiedV2", blockIdRule, proverRule) if err != nil { return nil, err } @@ -2304,8 +2303,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerified0(opts *bind.Watc select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1ClientBlockVerified0) - if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerified0", log); err != nil { + event := new(TaikoL1ClientBlockVerifiedV2) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerifiedV2", log); err != nil { return err } event.Raw = log @@ -2326,21 +2325,21 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerified0(opts *bind.Watc }), nil } -// ParseBlockVerified0 is a log parse operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// ParseBlockVerifiedV2 is a log parse operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerified0(log types.Log) (*TaikoL1ClientBlockVerified0, error) { - event := new(TaikoL1ClientBlockVerified0) - if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerified0", log); err != nil { +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerifiedV2(log types.Log) (*TaikoL1ClientBlockVerifiedV2, error) { + event := new(TaikoL1ClientBlockVerifiedV2) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerifiedV2", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1ClientBlockVerifiedV2Iterator is returned from FilterBlockVerifiedV2 and is used to iterate over the raw logs and unpacked data for BlockVerifiedV2 events raised by the TaikoL1Client contract. -type TaikoL1ClientBlockVerifiedV2Iterator struct { - Event *TaikoL1ClientBlockVerifiedV2 // Event containing the contract specifics and raw log +// TaikoL1ClientBlockVerifiedV20Iterator is returned from FilterBlockVerifiedV20 and is used to iterate over the raw logs and unpacked data for BlockVerifiedV20 events raised by the TaikoL1Client contract. +type TaikoL1ClientBlockVerifiedV20Iterator struct { + Event *TaikoL1ClientBlockVerifiedV20 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2354,7 +2353,7 @@ type TaikoL1ClientBlockVerifiedV2Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1ClientBlockVerifiedV2Iterator) Next() bool { +func (it *TaikoL1ClientBlockVerifiedV20Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2363,7 +2362,7 @@ func (it *TaikoL1ClientBlockVerifiedV2Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBlockVerifiedV2) + it.Event = new(TaikoL1ClientBlockVerifiedV20) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2378,7 +2377,7 @@ func (it *TaikoL1ClientBlockVerifiedV2Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBlockVerifiedV2) + it.Event = new(TaikoL1ClientBlockVerifiedV20) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2394,19 +2393,19 @@ func (it *TaikoL1ClientBlockVerifiedV2Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1ClientBlockVerifiedV2Iterator) Error() error { +func (it *TaikoL1ClientBlockVerifiedV20Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1ClientBlockVerifiedV2Iterator) Close() error { +func (it *TaikoL1ClientBlockVerifiedV20Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1ClientBlockVerifiedV2 represents a BlockVerifiedV2 event raised by the TaikoL1Client contract. -type TaikoL1ClientBlockVerifiedV2 struct { +// TaikoL1ClientBlockVerifiedV20 represents a BlockVerifiedV20 event raised by the TaikoL1Client contract. +type TaikoL1ClientBlockVerifiedV20 struct { BlockId *big.Int Prover common.Address BlockHash [32]byte @@ -2414,10 +2413,10 @@ type TaikoL1ClientBlockVerifiedV2 struct { Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerifiedV2 is a free log retrieval operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// FilterBlockVerifiedV20 is a free log retrieval operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. // // Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockVerifiedV2(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1ClientBlockVerifiedV2Iterator, error) { +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockVerifiedV20(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1ClientBlockVerifiedV20Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { @@ -2428,17 +2427,17 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockVerifiedV2(opts *bind.Fi proverRule = append(proverRule, proverItem) } - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockVerifiedV2", blockIdRule, proverRule) + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockVerifiedV20", blockIdRule, proverRule) if err != nil { return nil, err } - return &TaikoL1ClientBlockVerifiedV2Iterator{contract: _TaikoL1Client.contract, event: "BlockVerifiedV2", logs: logs, sub: sub}, nil + return &TaikoL1ClientBlockVerifiedV20Iterator{contract: _TaikoL1Client.contract, event: "BlockVerifiedV20", logs: logs, sub: sub}, nil } -// WatchBlockVerifiedV2 is a free log subscription operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// WatchBlockVerifiedV20 is a free log subscription operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. // // Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerifiedV2(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockVerifiedV2, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerifiedV20(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockVerifiedV20, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { @@ -2449,7 +2448,7 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerifiedV2(opts *bind.Wat proverRule = append(proverRule, proverItem) } - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockVerifiedV2", blockIdRule, proverRule) + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockVerifiedV20", blockIdRule, proverRule) if err != nil { return nil, err } @@ -2459,8 +2458,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerifiedV2(opts *bind.Wat select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1ClientBlockVerifiedV2) - if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerifiedV2", log); err != nil { + event := new(TaikoL1ClientBlockVerifiedV20) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerifiedV20", log); err != nil { return err } event.Raw = log @@ -2481,21 +2480,21 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerifiedV2(opts *bind.Wat }), nil } -// ParseBlockVerifiedV2 is a log parse operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// ParseBlockVerifiedV20 is a log parse operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. // // Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerifiedV2(log types.Log) (*TaikoL1ClientBlockVerifiedV2, error) { - event := new(TaikoL1ClientBlockVerifiedV2) - if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerifiedV2", log); err != nil { +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerifiedV20(log types.Log) (*TaikoL1ClientBlockVerifiedV20, error) { + event := new(TaikoL1ClientBlockVerifiedV20) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerifiedV20", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1ClientBlockVerifiedV20Iterator is returned from FilterBlockVerifiedV20 and is used to iterate over the raw logs and unpacked data for BlockVerifiedV20 events raised by the TaikoL1Client contract. -type TaikoL1ClientBlockVerifiedV20Iterator struct { - Event *TaikoL1ClientBlockVerifiedV20 // Event containing the contract specifics and raw log +// TaikoL1ClientBondCreditedIterator is returned from FilterBondCredited and is used to iterate over the raw logs and unpacked data for BondCredited events raised by the TaikoL1Client contract. +type TaikoL1ClientBondCreditedIterator struct { + Event *TaikoL1ClientBondCredited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2509,7 +2508,7 @@ type TaikoL1ClientBlockVerifiedV20Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1ClientBlockVerifiedV20Iterator) Next() bool { +func (it *TaikoL1ClientBondCreditedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2518,7 +2517,7 @@ func (it *TaikoL1ClientBlockVerifiedV20Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBlockVerifiedV20) + it.Event = new(TaikoL1ClientBondCredited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2533,7 +2532,7 @@ func (it *TaikoL1ClientBlockVerifiedV20Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBlockVerifiedV20) + it.Event = new(TaikoL1ClientBondCredited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2549,62 +2548,53 @@ func (it *TaikoL1ClientBlockVerifiedV20Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1ClientBlockVerifiedV20Iterator) Error() error { +func (it *TaikoL1ClientBondCreditedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1ClientBlockVerifiedV20Iterator) Close() error { +func (it *TaikoL1ClientBondCreditedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1ClientBlockVerifiedV20 represents a BlockVerifiedV20 event raised by the TaikoL1Client contract. -type TaikoL1ClientBlockVerifiedV20 struct { - BlockId *big.Int - Prover common.Address - BlockHash [32]byte - Tier uint16 - Raw types.Log // Blockchain specific contextual infos +// TaikoL1ClientBondCredited represents a BondCredited event raised by the TaikoL1Client contract. +type TaikoL1ClientBondCredited struct { + User common.Address + BlockId *big.Int + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerifiedV20 is a free log retrieval operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// FilterBondCredited is a free log retrieval operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. // -// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockVerifiedV20(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1ClientBlockVerifiedV20Iterator, error) { +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondCredited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondCreditedIterator, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) } - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockVerifiedV20", blockIdRule, proverRule) + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondCredited", userRule) if err != nil { return nil, err } - return &TaikoL1ClientBlockVerifiedV20Iterator{contract: _TaikoL1Client.contract, event: "BlockVerifiedV20", logs: logs, sub: sub}, nil + return &TaikoL1ClientBondCreditedIterator{contract: _TaikoL1Client.contract, event: "BondCredited", logs: logs, sub: sub}, nil } -// WatchBlockVerifiedV20 is a free log subscription operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// WatchBondCredited is a free log subscription operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. // -// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerifiedV20(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockVerifiedV20, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondCredited, user []common.Address) (event.Subscription, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) } - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockVerifiedV20", blockIdRule, proverRule) + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondCredited", userRule) if err != nil { return nil, err } @@ -2614,8 +2604,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerifiedV20(opts *bind.Wa select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1ClientBlockVerifiedV20) - if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerifiedV20", log); err != nil { + event := new(TaikoL1ClientBondCredited) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited", log); err != nil { return err } event.Raw = log @@ -2636,21 +2626,21 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerifiedV20(opts *bind.Wa }), nil } -// ParseBlockVerifiedV20 is a log parse operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// ParseBondCredited is a log parse operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. // -// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerifiedV20(log types.Log) (*TaikoL1ClientBlockVerifiedV20, error) { - event := new(TaikoL1ClientBlockVerifiedV20) - if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerifiedV20", log); err != nil { +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondCredited(log types.Log) (*TaikoL1ClientBondCredited, error) { + event := new(TaikoL1ClientBondCredited) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1ClientBondCreditedIterator is returned from FilterBondCredited and is used to iterate over the raw logs and unpacked data for BondCredited events raised by the TaikoL1Client contract. -type TaikoL1ClientBondCreditedIterator struct { - Event *TaikoL1ClientBondCredited // Event containing the contract specifics and raw log +// TaikoL1ClientBondDebitedIterator is returned from FilterBondDebited and is used to iterate over the raw logs and unpacked data for BondDebited events raised by the TaikoL1Client contract. +type TaikoL1ClientBondDebitedIterator struct { + Event *TaikoL1ClientBondDebited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2664,7 +2654,7 @@ type TaikoL1ClientBondCreditedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1ClientBondCreditedIterator) Next() bool { +func (it *TaikoL1ClientBondDebitedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2673,7 +2663,7 @@ func (it *TaikoL1ClientBondCreditedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBondCredited) + it.Event = new(TaikoL1ClientBondDebited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2688,7 +2678,7 @@ func (it *TaikoL1ClientBondCreditedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBondCredited) + it.Event = new(TaikoL1ClientBondDebited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2704,52 +2694,53 @@ func (it *TaikoL1ClientBondCreditedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1ClientBondCreditedIterator) Error() error { +func (it *TaikoL1ClientBondDebitedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1ClientBondCreditedIterator) Close() error { +func (it *TaikoL1ClientBondDebitedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1ClientBondCredited represents a BondCredited event raised by the TaikoL1Client contract. -type TaikoL1ClientBondCredited struct { - User common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos +// TaikoL1ClientBondDebited represents a BondDebited event raised by the TaikoL1Client contract. +type TaikoL1ClientBondDebited struct { + User common.Address + BlockId *big.Int + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterBondCredited is a free log retrieval operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// FilterBondDebited is a free log retrieval operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BondCredited(address indexed user, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondCredited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondCreditedIterator, error) { +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondDebited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondDebitedIterator, error) { var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) } - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondCredited", userRule) + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondDebited", userRule) if err != nil { return nil, err } - return &TaikoL1ClientBondCreditedIterator{contract: _TaikoL1Client.contract, event: "BondCredited", logs: logs, sub: sub}, nil + return &TaikoL1ClientBondDebitedIterator{contract: _TaikoL1Client.contract, event: "BondDebited", logs: logs, sub: sub}, nil } -// WatchBondCredited is a free log subscription operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// WatchBondDebited is a free log subscription operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BondCredited(address indexed user, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondCredited, user []common.Address) (event.Subscription, error) { +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondDebited, user []common.Address) (event.Subscription, error) { var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) } - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondCredited", userRule) + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondDebited", userRule) if err != nil { return nil, err } @@ -2759,8 +2750,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondCredited(opts *bind.WatchO select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1ClientBondCredited) - if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited", log); err != nil { + event := new(TaikoL1ClientBondDebited) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited", log); err != nil { return err } event.Raw = log @@ -2781,21 +2772,21 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondCredited(opts *bind.WatchO }), nil } -// ParseBondCredited is a log parse operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606. +// ParseBondDebited is a log parse operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BondCredited(address indexed user, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondCredited(log types.Log) (*TaikoL1ClientBondCredited, error) { - event := new(TaikoL1ClientBondCredited) - if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited", log); err != nil { +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondDebited(log types.Log) (*TaikoL1ClientBondDebited, error) { + event := new(TaikoL1ClientBondDebited) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1ClientBondDebitedIterator is returned from FilterBondDebited and is used to iterate over the raw logs and unpacked data for BondDebited events raised by the TaikoL1Client contract. -type TaikoL1ClientBondDebitedIterator struct { - Event *TaikoL1ClientBondDebited // Event containing the contract specifics and raw log +// TaikoL1ClientBondDepositedIterator is returned from FilterBondDeposited and is used to iterate over the raw logs and unpacked data for BondDeposited events raised by the TaikoL1Client contract. +type TaikoL1ClientBondDepositedIterator struct { + Event *TaikoL1ClientBondDeposited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2809,7 +2800,7 @@ type TaikoL1ClientBondDebitedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1ClientBondDebitedIterator) Next() bool { +func (it *TaikoL1ClientBondDepositedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2818,7 +2809,7 @@ func (it *TaikoL1ClientBondDebitedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBondDebited) + it.Event = new(TaikoL1ClientBondDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2833,7 +2824,7 @@ func (it *TaikoL1ClientBondDebitedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBondDebited) + it.Event = new(TaikoL1ClientBondDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2849,52 +2840,52 @@ func (it *TaikoL1ClientBondDebitedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1ClientBondDebitedIterator) Error() error { +func (it *TaikoL1ClientBondDepositedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1ClientBondDebitedIterator) Close() error { +func (it *TaikoL1ClientBondDepositedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1ClientBondDebited represents a BondDebited event raised by the TaikoL1Client contract. -type TaikoL1ClientBondDebited struct { +// TaikoL1ClientBondDeposited represents a BondDeposited event raised by the TaikoL1Client contract. +type TaikoL1ClientBondDeposited struct { User common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterBondDebited is a free log retrieval operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// FilterBondDeposited is a free log retrieval operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. // -// Solidity: event BondDebited(address indexed user, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondDebited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondDebitedIterator, error) { +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondDeposited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondDepositedIterator, error) { var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) } - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondDebited", userRule) + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondDeposited", userRule) if err != nil { return nil, err } - return &TaikoL1ClientBondDebitedIterator{contract: _TaikoL1Client.contract, event: "BondDebited", logs: logs, sub: sub}, nil + return &TaikoL1ClientBondDepositedIterator{contract: _TaikoL1Client.contract, event: "BondDeposited", logs: logs, sub: sub}, nil } -// WatchBondDebited is a free log subscription operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// WatchBondDeposited is a free log subscription operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. // -// Solidity: event BondDebited(address indexed user, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondDebited, user []common.Address) (event.Subscription, error) { +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondDeposited, user []common.Address) (event.Subscription, error) { var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) } - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondDebited", userRule) + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondDeposited", userRule) if err != nil { return nil, err } @@ -2904,8 +2895,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDebited(opts *bind.WatchOp select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1ClientBondDebited) - if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited", log); err != nil { + event := new(TaikoL1ClientBondDeposited) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondDeposited", log); err != nil { return err } event.Raw = log @@ -2926,12 +2917,447 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDebited(opts *bind.WatchOp }), nil } -// ParseBondDebited is a log parse operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c. +// ParseBondDeposited is a log parse operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. // -// Solidity: event BondDebited(address indexed user, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondDebited(log types.Log) (*TaikoL1ClientBondDebited, error) { - event := new(TaikoL1ClientBondDebited) - if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited", log); err != nil { +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondDeposited(log types.Log) (*TaikoL1ClientBondDeposited, error) { + event := new(TaikoL1ClientBondDeposited) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondDeposited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientBondDeposited0Iterator is returned from FilterBondDeposited0 and is used to iterate over the raw logs and unpacked data for BondDeposited0 events raised by the TaikoL1Client contract. +type TaikoL1ClientBondDeposited0Iterator struct { + Event *TaikoL1ClientBondDeposited0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBondDeposited0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBondDeposited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBondDeposited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBondDeposited0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBondDeposited0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBondDeposited0 represents a BondDeposited0 event raised by the TaikoL1Client contract. +type TaikoL1ClientBondDeposited0 struct { + User common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBondDeposited0 is a free log retrieval operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. +// +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondDeposited0(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondDeposited0Iterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondDeposited0", userRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBondDeposited0Iterator{contract: _TaikoL1Client.contract, event: "BondDeposited0", logs: logs, sub: sub}, nil +} + +// WatchBondDeposited0 is a free log subscription operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. +// +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondDeposited0, user []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondDeposited0", userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBondDeposited0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondDeposited0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBondDeposited0 is a log parse operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. +// +// Solidity: event BondDeposited(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondDeposited0(log types.Log) (*TaikoL1ClientBondDeposited0, error) { + event := new(TaikoL1ClientBondDeposited0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondDeposited0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientBondWithdrawnIterator is returned from FilterBondWithdrawn and is used to iterate over the raw logs and unpacked data for BondWithdrawn events raised by the TaikoL1Client contract. +type TaikoL1ClientBondWithdrawnIterator struct { + Event *TaikoL1ClientBondWithdrawn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBondWithdrawnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBondWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBondWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBondWithdrawnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBondWithdrawnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBondWithdrawn represents a BondWithdrawn event raised by the TaikoL1Client contract. +type TaikoL1ClientBondWithdrawn struct { + User common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBondWithdrawn is a free log retrieval operation binding the contract event 0x0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b455. +// +// Solidity: event BondWithdrawn(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondWithdrawn(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondWithdrawnIterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondWithdrawn", userRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBondWithdrawnIterator{contract: _TaikoL1Client.contract, event: "BondWithdrawn", logs: logs, sub: sub}, nil +} + +// WatchBondWithdrawn is a free log subscription operation binding the contract event 0x0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b455. +// +// Solidity: event BondWithdrawn(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondWithdrawn(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondWithdrawn, user []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondWithdrawn", userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBondWithdrawn) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondWithdrawn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBondWithdrawn is a log parse operation binding the contract event 0x0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b455. +// +// Solidity: event BondWithdrawn(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondWithdrawn(log types.Log) (*TaikoL1ClientBondWithdrawn, error) { + event := new(TaikoL1ClientBondWithdrawn) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondWithdrawn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientBondWithdrawn0Iterator is returned from FilterBondWithdrawn0 and is used to iterate over the raw logs and unpacked data for BondWithdrawn0 events raised by the TaikoL1Client contract. +type TaikoL1ClientBondWithdrawn0Iterator struct { + Event *TaikoL1ClientBondWithdrawn0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBondWithdrawn0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBondWithdrawn0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBondWithdrawn0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBondWithdrawn0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBondWithdrawn0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBondWithdrawn0 represents a BondWithdrawn0 event raised by the TaikoL1Client contract. +type TaikoL1ClientBondWithdrawn0 struct { + User common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBondWithdrawn0 is a free log retrieval operation binding the contract event 0x0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b455. +// +// Solidity: event BondWithdrawn(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondWithdrawn0(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondWithdrawn0Iterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondWithdrawn0", userRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBondWithdrawn0Iterator{contract: _TaikoL1Client.contract, event: "BondWithdrawn0", logs: logs, sub: sub}, nil +} + +// WatchBondWithdrawn0 is a free log subscription operation binding the contract event 0x0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b455. +// +// Solidity: event BondWithdrawn(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondWithdrawn0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondWithdrawn0, user []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondWithdrawn0", userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBondWithdrawn0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondWithdrawn0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBondWithdrawn0 is a log parse operation binding the contract event 0x0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b455. +// +// Solidity: event BondWithdrawn(address indexed user, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondWithdrawn0(log types.Log) (*TaikoL1ClientBondWithdrawn0, error) { + event := new(TaikoL1ClientBondWithdrawn0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondWithdrawn0", log); err != nil { return nil, err } event.Raw = log diff --git a/packages/taiko-client/bindings/gen_taiko_l2.go b/packages/taiko-client/bindings/gen_taiko_l2.go index ac1f4a9d472..9b3a541d934 100644 --- a/packages/taiko-client/bindings/gen_taiko_l2.go +++ b/packages/taiko-client/bindings/gen_taiko_l2.go @@ -29,15 +29,9 @@ var ( _ = abi.ConvertType ) -// LibL2ConfigConfig is an auto generated low-level Go binding around an user-defined struct. -type LibL2ConfigConfig struct { - GasTargetPerL1Block uint32 - BasefeeAdjustmentQuotient uint8 -} - // TaikoL2ClientMetaData contains all meta data concerning the TaikoL2Client contract. var TaikoL2ClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"adjustExcess\",\"inputs\":[{\"name\":\"_currGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_currGasTarget\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_newGasTarget\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"newGasExcess_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"anchor\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1StateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1BlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"anchorV2\",\"inputs\":[{\"name\":\"_anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_anchorStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateBaseFee\",\"inputs\":[{\"name\":\"_baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"_blocktime\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"basefee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"parentGasExcess_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getBasefee\",\"inputs\":[{\"name\":\"_anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"basefee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"parentGasExcess_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockHash\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structLibL2Config.Config\",\"components\":[{\"name\":\"gasTargetPerL1Block\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"basefeeAdjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_l1ChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_initialGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"l1ChainId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ontakeForkHeight\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"parentGasExcess\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"parentGasTarget\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"parentTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"publicInputHash\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"skipFeeCheck\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Anchored\",\"inputs\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"parentGasExcess\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"EIP1559_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_BASEFEE_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_FORK_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_L1_CHAIN_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_L2_CHAIN_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_SENDER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"adjustExcess\",\"inputs\":[{\"name\":\"_currGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_currGasTarget\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_newGasTarget\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"newGasExcess_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"anchor\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1StateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1BlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"anchorV2\",\"inputs\":[{\"name\":\"_anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_anchorStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateBaseFee\",\"inputs\":[{\"name\":\"_baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"_blocktime\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"basefee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"parentGasExcess_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getBasefee\",\"inputs\":[{\"name\":\"_anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"basefee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"parentGasExcess_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockHash\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getParentTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_l1ChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_initialGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"l1ChainId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ontakeForkHeight\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"parentGasExcess\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"parentGasTarget\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"parentTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"publicInputHash\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"skipFeeCheck\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Anchored\",\"inputs\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"parentGasExcess\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"EIP1559_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_BASEFEE_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_FORK_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_L1_CHAIN_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_L2_CHAIN_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_SENDER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoL2ClientABI is the input ABI used to generate the binding from. @@ -400,35 +394,35 @@ func (_TaikoL2Client *TaikoL2ClientCallerSession) GetBlockHash(_blockId *big.Int return _TaikoL2Client.Contract.GetBlockHash(&_TaikoL2Client.CallOpts, _blockId) } -// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. +// GetParentTimestamp is a free data retrieval call binding the contract method 0xa578781e. // -// Solidity: function getConfig() view returns((uint32,uint8)) -func (_TaikoL2Client *TaikoL2ClientCaller) GetConfig(opts *bind.CallOpts) (LibL2ConfigConfig, error) { +// Solidity: function getParentTimestamp() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientCaller) GetParentTimestamp(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _TaikoL2Client.contract.Call(opts, &out, "getConfig") + err := _TaikoL2Client.contract.Call(opts, &out, "getParentTimestamp") if err != nil { - return *new(LibL2ConfigConfig), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(LibL2ConfigConfig)).(*LibL2ConfigConfig) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err } -// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. +// GetParentTimestamp is a free data retrieval call binding the contract method 0xa578781e. // -// Solidity: function getConfig() view returns((uint32,uint8)) -func (_TaikoL2Client *TaikoL2ClientSession) GetConfig() (LibL2ConfigConfig, error) { - return _TaikoL2Client.Contract.GetConfig(&_TaikoL2Client.CallOpts) +// Solidity: function getParentTimestamp() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientSession) GetParentTimestamp() (uint64, error) { + return _TaikoL2Client.Contract.GetParentTimestamp(&_TaikoL2Client.CallOpts) } -// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. +// GetParentTimestamp is a free data retrieval call binding the contract method 0xa578781e. // -// Solidity: function getConfig() view returns((uint32,uint8)) -func (_TaikoL2Client *TaikoL2ClientCallerSession) GetConfig() (LibL2ConfigConfig, error) { - return _TaikoL2Client.Contract.GetConfig(&_TaikoL2Client.CallOpts) +// Solidity: function getParentTimestamp() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientCallerSession) GetParentTimestamp() (uint64, error) { + return _TaikoL2Client.Contract.GetParentTimestamp(&_TaikoL2Client.CallOpts) } // Impl is a free data retrieval call binding the contract method 0x8abf6077. diff --git a/packages/taiko-client/bindings/gen_tier_provider.go b/packages/taiko-client/bindings/gen_tier_provider.go index e1a9fb4b74f..a2dcc851196 100644 --- a/packages/taiko-client/bindings/gen_tier_provider.go +++ b/packages/taiko-client/bindings/gen_tier_provider.go @@ -31,17 +31,16 @@ var ( // ITierProviderTier is an auto generated low-level Go binding around an user-defined struct. type ITierProviderTier struct { - VerifierName [32]byte - ValidityBond *big.Int - ContestBond *big.Int - CooldownWindow *big.Int - ProvingWindow uint16 - MaxBlocksToVerifyPerProof uint8 + VerifierName [32]byte + ValidityBond *big.Int + ContestBond *big.Int + CooldownWindow *big.Int + ProvingWindow uint16 } // TierProviderMetaData contains all meta data concerning the TierProvider contract. var TierProviderMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"BOND_UNIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GRACE_PERIOD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinTier\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getProvider\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTier\",\"inputs\":[{\"name\":\"_tierId\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structITierProvider.Tier\",\"components\":[{\"name\":\"verifierName\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"cooldownWindow\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"provingWindow\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maxBlocksToVerifyPerProof\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getTierIds\",\"inputs\":[],\"outputs\":[{\"name\":\"tiers_\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"BOND_UNIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GRACE_PERIOD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinTier\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getProvider\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTier\",\"inputs\":[{\"name\":\"_tierId\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structITierProvider.Tier\",\"components\":[{\"name\":\"verifierName\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"cooldownWindow\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"provingWindow\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getTierIds\",\"inputs\":[],\"outputs\":[{\"name\":\"tiers_\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]}]", } // TierProviderABI is the input ABI used to generate the binding from. @@ -316,7 +315,7 @@ func (_TierProvider *TierProviderCallerSession) GetProvider(arg0 *big.Int) (comm // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16,uint8)) +// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16)) func (_TierProvider *TierProviderCaller) GetTier(opts *bind.CallOpts, _tierId uint16) (ITierProviderTier, error) { var out []interface{} err := _TierProvider.contract.Call(opts, &out, "getTier", _tierId) @@ -333,14 +332,14 @@ func (_TierProvider *TierProviderCaller) GetTier(opts *bind.CallOpts, _tierId ui // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16,uint8)) +// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16)) func (_TierProvider *TierProviderSession) GetTier(_tierId uint16) (ITierProviderTier, error) { return _TierProvider.Contract.GetTier(&_TierProvider.CallOpts, _tierId) } // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16,uint8)) +// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16)) func (_TierProvider *TierProviderCallerSession) GetTier(_tierId uint16) (ITierProviderTier, error) { return _TierProvider.Contract.GetTier(&_TierProvider.CallOpts, _tierId) } diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer.go b/packages/taiko-client/driver/chain_syncer/blob/syncer.go index 53a49961a0b..8320eb60c08 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer.go @@ -21,7 +21,6 @@ import ( "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/metadata" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" @@ -66,6 +65,11 @@ func NewSyncer( return nil, fmt.Errorf("failed to initialize anchor constructor: %w", err) } + protocolConfigs, err := rpc.GetProtocolConfigs(client.TaikoL1, &bind.CallOpts{Context: ctx}) + if err != nil { + return nil, err + } + return &Syncer{ ctx: ctx, rpc: client, @@ -73,7 +77,7 @@ func NewSyncer( progressTracker: progressTracker, anchorConstructor: constructor, txListDecompressor: txListDecompressor.NewTxListDecompressor( - uint64(encoding.GetProtocolConfig(client.L2.ChainID.Uint64()).BlockMaxGasLimit), + uint64(protocolConfigs.BlockMaxGasLimit), rpc.BlockMaxTxListBytes, client.L2.ChainID, ), diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go index 7c9c6546249..2c622d88dda 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go @@ -15,7 +15,6 @@ import ( "github.com/stretchr/testify/suite" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/metadata" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" @@ -162,8 +161,11 @@ func (s *BlobSyncerTestSuite) TestTreasuryIncome() { s.Greater(headAfter, headBefore) s.True(balanceAfter.Cmp(balance) > 0) + protocolConfigs, err := rpc.GetProtocolConfigs(s.RPCClient.TaikoL1, nil) + s.Nil(err) + var hasNoneAnchorTxs bool - chainConfig := config.NewChainConfig(encoding.GetProtocolConfig(s.RPCClient.L2.ChainID.Uint64())) + chainConfig := config.NewChainConfig(&protocolConfigs) for i := headBefore + 1; i <= headAfter; i++ { block, err := s.RPCClient.L2.BlockByNumber(context.Background(), new(big.Int).SetUint64(i)) s.Nil(err) diff --git a/packages/taiko-client/driver/driver.go b/packages/taiko-client/driver/driver.go index 51967df1d93..a5990139dcb 100644 --- a/packages/taiko-client/driver/driver.go +++ b/packages/taiko-client/driver/driver.go @@ -15,7 +15,6 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/urfave/cli/v2" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" chainSyncer "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" @@ -174,9 +173,15 @@ func (d *Driver) ChainSyncer() *chainSyncer.L2ChainSyncer { // reportProtocolStatus reports some protocol status intervally. func (d *Driver) reportProtocolStatus() { + protocolConfigs, err := rpc.GetProtocolConfigs(d.rpc.TaikoL1, &bind.CallOpts{Context: d.ctx}) + if err != nil { + log.Error("Failed to get protocol configs", "error", err) + return + } + var ( ticker = time.NewTicker(protocolStatusReportInterval) - maxNumBlocks = encoding.GetProtocolConfig(d.rpc.L2.ChainID.Uint64()).BlockMaxProposals + maxNumBlocks = protocolConfigs.BlockMaxProposals ) d.wg.Add(1) diff --git a/packages/taiko-client/driver/state/state.go b/packages/taiko-client/driver/state/state.go index 3f27585bcf4..0efcc2ad910 100644 --- a/packages/taiko-client/driver/state/state.go +++ b/packages/taiko-client/driver/state/state.go @@ -6,8 +6,6 @@ import ( "sync" "sync/atomic" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" - "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" @@ -64,10 +62,15 @@ func (s *State) init(ctx context.Context) error { return err } + protocolConfigs, err := rpc.GetProtocolConfigs(s.rpc.TaikoL1, &bind.CallOpts{Context: ctx}) + if err != nil { + return err + } + s.GenesisL1Height = new(big.Int).SetUint64(stateVars.A.GenesisHeight) - log.Info("Genesis L1 height", "height", stateVars.A.GenesisHeight) + s.OnTakeForkHeight = new(big.Int).SetUint64(protocolConfigs.OntakeForkHeight) - s.OnTakeForkHeight = new(big.Int).SetUint64(encoding.GetProtocolConfig(s.rpc.L2.ChainID.Uint64()).OntakeForkHeight) + log.Info("Genesis L1 height", "height", stateVars.A.GenesisHeight) log.Info("OnTake fork height", "height", s.OnTakeForkHeight) // Set the L2 head's latest known L1 origin as current L1 sync cursor. diff --git a/packages/taiko-client/integration_test/deploy_l1_contract.sh b/packages/taiko-client/integration_test/deploy_l1_contract.sh index 8b6b5d8fc8f..f900d106b1c 100755 --- a/packages/taiko-client/integration_test/deploy_l1_contract.sh +++ b/packages/taiko-client/integration_test/deploy_l1_contract.sh @@ -13,5 +13,5 @@ cd ../protocol && -vvvvv \ --evm-version cancun \ --private-key "$PRIVATE_KEY" \ - --block-gas-limit 100000000 \ + --block-gas-limit 200000000 \ --legacy diff --git a/packages/taiko-client/internal/docker/start.sh b/packages/taiko-client/internal/docker/start.sh index c8710765a9d..b5839a0e2ed 100755 --- a/packages/taiko-client/internal/docker/start.sh +++ b/packages/taiko-client/internal/docker/start.sh @@ -11,8 +11,8 @@ if [ "$L2_NODE" == "l2_reth" ];then exit 1 fi -# start docker compose service list -echo "start docker compose service: ${DOCKER_SERVICE_LIST[*]}" +# start docker compose services +echo "starting docker compose service: ${DOCKER_SERVICE_LIST[*]}" compose_up "${DOCKER_SERVICE_LIST[@]}" diff --git a/packages/taiko-client/internal/testutils/helper.go b/packages/taiko-client/internal/testutils/helper.go index 36d7adc9331..873f5ad74ab 100644 --- a/packages/taiko-client/internal/testutils/helper.go +++ b/packages/taiko-client/internal/testutils/helper.go @@ -17,7 +17,6 @@ import ( "github.com/phayes/freeport" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/metadata" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" ) @@ -202,12 +201,15 @@ func (s *ClientTestSuite) ProposeValidBlock( ontakeForkHeight, err := s.RPCClient.TaikoL2.OntakeForkHeight(nil) s.Nil(err) + protocolConfigs, err := rpc.GetProtocolConfigs(s.RPCClient.TaikoL1, nil) + s.Nil(err) + baseFee, err := s.RPCClient.CalculateBaseFee( context.Background(), l2Head, l1Head.Number, l2Head.Number.Uint64()+1 >= ontakeForkHeight, - &encoding.InternlDevnetProtocolConfig.BaseFeeConfig, + &protocolConfigs.BaseFeeConfig, l1Head.Time, ) s.Nil(err) @@ -290,40 +292,25 @@ func AssembleTestTx( value *big.Int, data []byte, ) (*types.Transaction, error) { - head, err := client.HeaderByNumber(context.Background(), nil) - if err != nil { - return nil, err - } - auth, err := bind.NewKeyedTransactorWithChainID(priv, client.ChainID) if err != nil { return nil, err } - gasTipCap, err := client.SuggestGasTipCap(context.Background()) - if err != nil { - return nil, err - } - tx, err := auth.Signer(auth.From, types.NewTx(&types.DynamicFeeTx{ To: to, Nonce: nonce, Value: value, - GasTipCap: gasTipCap, - GasFeeCap: new(big.Int).Add( - gasTipCap, - new(big.Int).Mul(head.BaseFee, big.NewInt(2)), - ), - Gas: 2100_000, - Data: data, + GasTipCap: new(big.Int).SetUint64(10 * params.GWei), + GasFeeCap: new(big.Int).SetUint64(20 * params.GWei), + Gas: 2_100_000, + Data: data, })) if err != nil { return nil, err } - if err = client.SendTransaction(context.Background(), tx); err != nil { - return nil, err - } - return tx, nil + + return tx, client.SendTransaction(context.Background(), tx) } // SendDynamicFeeTx sends a dynamic transaction, used for tests. diff --git a/packages/taiko-client/pkg/rpc/methods.go b/packages/taiko-client/pkg/rpc/methods.go index 7a747c419e6..35a96b6f2ba 100644 --- a/packages/taiko-client/pkg/rpc/methods.go +++ b/packages/taiko-client/pkg/rpc/methods.go @@ -58,8 +58,13 @@ func (c *Client) ensureGenesisMatched(ctx context.Context) error { } ) + protocolConfigs, err := GetProtocolConfigs(c.TaikoL1, &bind.CallOpts{Context: ctxWithTimeout}) + if err != nil { + return err + } + // If chain actives ontake fork from genesis, we need to fetch the genesis block hash from `BlockVerifiedV2` event. - if encoding.GetProtocolConfig(c.L2.ChainID.Uint64()).OntakeForkHeight == 0 { + if protocolConfigs.OntakeForkHeight == 0 { // Fetch the genesis `BlockVerified2` event. iter, err := c.TaikoL1.FilterBlockVerifiedV2(filterOpts, []*big.Int{common.Big0}, nil) if err != nil { diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go index 191f2ed0da8..78f35b62022 100644 --- a/packages/taiko-client/pkg/rpc/utils.go +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -33,6 +33,21 @@ var ( } ) +// GetProtocolConfigs gets the protocol configs from TaikoL1 contract. +func GetProtocolConfigs( + taikoL1Client *bindings.TaikoL1Client, + opts *bind.CallOpts, +) (bindings.TaikoDataConfig, error) { + var cancel context.CancelFunc + if opts == nil { + opts = &bind.CallOpts{Context: context.Background()} + } + opts.Context, cancel = CtxWithTimeoutOrDefault(opts.Context, defaultTimeout) + defer cancel() + + return taikoL1Client.GetConfig(opts) +} + // GetProtocolStateVariables gets the protocol states from TaikoL1 contract. func GetProtocolStateVariables( taikoL1Client *bindings.TaikoL1Client, diff --git a/packages/taiko-client/proposer/proposer.go b/packages/taiko-client/proposer/proposer.go index 171bcdb7403..c57edf632d5 100644 --- a/packages/taiko-client/proposer/proposer.go +++ b/packages/taiko-client/proposer/proposer.go @@ -85,8 +85,11 @@ func (p *Proposer) InitFromConfig( } // Protocol configs - p.protocolConfigs = encoding.GetProtocolConfig(p.rpc.L2.ChainID.Uint64()) - + protocolConfigs, err := rpc.GetProtocolConfigs(p.rpc.TaikoL1, &bind.CallOpts{Context: p.ctx}) + if err != nil { + return fmt.Errorf("failed to get protocol configs: %w", err) + } + p.protocolConfigs = &protocolConfigs log.Info("Protocol configs", "configs", p.protocolConfigs) if txMgr == nil { diff --git a/packages/taiko-client/proposer/proposer_test.go b/packages/taiko-client/proposer/proposer_test.go index 3f3d4e6ed3b..be89ee88e3d 100644 --- a/packages/taiko-client/proposer/proposer_test.go +++ b/packages/taiko-client/proposer/proposer_test.go @@ -127,7 +127,28 @@ func (s *ProposerTestSuite) TestTxPoolContentWithMinTip() { if os.Getenv("L2_NODE") == "l2_reth" { s.T().Skip() } - defer s.Nil(s.s.ProcessL1Blocks(context.Background())) + + // Empty mempool at first. + for { + poolContent, err := s.RPCClient.GetPoolContent( + context.Background(), + s.p.proposerAddress, + s.p.protocolConfigs.BlockMaxGasLimit, + rpc.BlockMaxTxListBytes, + s.p.LocalAddresses, + 10, + 0, + s.p.chainConfig, + ) + s.Nil(err) + + if len(poolContent) > 0 { + s.Nil(s.p.ProposeOp(context.Background())) + s.Nil(s.s.ProcessL1Blocks(context.Background())) + continue + } + break + } privetKeyHexList := []string{ "0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d", // 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 @@ -137,96 +158,90 @@ func (s *ProposerTestSuite) TestTxPoolContentWithMinTip() { "0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba", // 0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc } - var ( - p = s.p - privKeys []*ecdsa.PrivateKey - l2Cli = s.RPCClient.L2 - chainID = l2Cli.ChainID - ) - - for _, sk := range privetKeyHexList { - priv, err := crypto.ToECDSA(common.FromHex(sk)) + var privateKeys []*ecdsa.PrivateKey + for _, privateKeyHex := range privetKeyHexList { + priv, err := crypto.ToECDSA(common.FromHex(privateKeyHex)) s.Nil(err) - privKeys = append(privKeys, priv) + privateKeys = append(privateKeys, priv) } - originNonces := make(map[common.Address]uint64) - for _, priv := range privKeys { - auth, err := bind.NewKeyedTransactorWithChainID(priv, chainID) + originalNonceMap := make(map[common.Address]uint64) + for _, priv := range privateKeys { + transactOpts, err := bind.NewKeyedTransactorWithChainID(priv, s.RPCClient.L2.ChainID) s.Nil(err) - nonce, err := l2Cli.PendingNonceAt(context.Background(), auth.From) + nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), transactOpts.From) s.Nil(err) - originNonces[auth.From] = nonce + originalNonceMap[transactOpts.From] = nonce + // Send 1500 transactions to mempool for i := 0; i < 300; i++ { - _, err = testutils.AssembleTestTx(s.RPCClient.L2, priv, nonce+uint64(i), &auth.From, big.NewInt(1), nil) + _, err = testutils.AssembleTestTx(s.RPCClient.L2, priv, nonce+uint64(i), &transactOpts.From, common.Big1, nil) s.Nil(err) } } - signer := types.LatestSignerForChainID(chainID) for _, testCase := range []struct { blockMaxGasLimit uint32 blockMaxTxListBytes uint64 maxTransactionsLists uint64 - - txLengthList []int + txLengthList []int }{ { - p.protocolConfigs.BlockMaxGasLimit, + s.p.protocolConfigs.BlockMaxGasLimit, rpc.BlockMaxTxListBytes, - p.MaxProposedTxListsPerEpoch, + s.p.MaxProposedTxListsPerEpoch, []int{1500}, }, { - p.protocolConfigs.BlockMaxGasLimit, + s.p.protocolConfigs.BlockMaxGasLimit, rpc.BlockMaxTxListBytes, - p.MaxProposedTxListsPerEpoch * 5, + s.p.MaxProposedTxListsPerEpoch * 5, []int{1500}, }, { - p.protocolConfigs.BlockMaxGasLimit / 50, + s.p.protocolConfigs.BlockMaxGasLimit / 50, rpc.BlockMaxTxListBytes, 200, []int{129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 81}, }, } { - res, err := s.RPCClient.GetPoolContent( + poolContent, err := s.RPCClient.GetPoolContent( context.Background(), - p.proposerAddress, + s.p.proposerAddress, testCase.blockMaxGasLimit, testCase.blockMaxTxListBytes, - p.LocalAddresses, + s.p.LocalAddresses, testCase.maxTransactionsLists, 0, - p.chainConfig, + s.p.chainConfig, ) s.Nil(err) - checkNonces := maps.Clone(originNonces) - // Make sure all the nonce are in order. - for _, txList := range res { + nonceMap := maps.Clone(originalNonceMap) + // Check the order of nonce. + for _, txList := range poolContent { for _, tx := range txList.TxList { - sender, err := types.Sender(signer, tx) + sender, err := types.Sender(types.LatestSignerForChainID(s.RPCClient.L2.ChainID), tx) s.Nil(err) - s.Equalf(checkNonces[sender], tx.Nonce(), - fmt.Sprintf("%s nonce check, expect: %d, actual: %d", + s.Equalf(nonceMap[sender], tx.Nonce(), + fmt.Sprintf("incorrect nonce of %s, expect: %d, actual: %d", sender.String(), - checkNonces[sender], + nonceMap[sender], tx.Nonce(), )) - checkNonces[sender]++ + nonceMap[sender]++ } } - s.GreaterOrEqual(int(testCase.maxTransactionsLists), len(res)) + s.GreaterOrEqual(int(testCase.maxTransactionsLists), len(poolContent)) for i, txsLen := range testCase.txLengthList { - s.Equal(txsLen, res[i].TxList.Len()) - s.GreaterOrEqual(uint64(testCase.blockMaxGasLimit), res[i].EstimatedGasUsed) - s.GreaterOrEqual(testCase.blockMaxTxListBytes, res[i].BytesLength) + s.Equal(txsLen, poolContent[i].TxList.Len()) + s.GreaterOrEqual(uint64(testCase.blockMaxGasLimit), poolContent[i].EstimatedGasUsed) + s.GreaterOrEqual(testCase.blockMaxTxListBytes, poolContent[i].BytesLength) } } - s.Nil(p.ProposeOp(context.Background())) + s.Nil(s.p.ProposeOp(context.Background())) + s.Nil(s.s.ProcessL1Blocks(context.Background())) } func (s *ProposerTestSuite) TestProposeTxLists() { diff --git a/packages/taiko-client/proposer/transaction_builder/calldata_test.go b/packages/taiko-client/proposer/transaction_builder/calldata_test.go index a268508ee88..ad5b8f9741d 100644 --- a/packages/taiko-client/proposer/transaction_builder/calldata_test.go +++ b/packages/taiko-client/proposer/transaction_builder/calldata_test.go @@ -5,10 +5,6 @@ import ( ) func (s *TransactionBuilderTestSuite) TestBuildCalldata() { - tx, err := s.calldataTxBuilder.BuildLegacy(context.Background(), false, []byte{1}) + _, err := s.calldataTxBuilder.BuildOntake(context.Background(), [][]byte{{1}, {2}}) s.Nil(err) - s.Nil(tx.Blobs) - - _, err = s.calldataTxBuilder.BuildOntake(context.Background(), [][]byte{{1}, {2}}) - s.Error(err, "ontake transaction builder is not supported before ontake fork") } diff --git a/packages/taiko-client/proposer/transaction_builder/common_test.go b/packages/taiko-client/proposer/transaction_builder/common_test.go index a65e0a7c40d..ec0bf0584a2 100644 --- a/packages/taiko-client/proposer/transaction_builder/common_test.go +++ b/packages/taiko-client/proposer/transaction_builder/common_test.go @@ -10,9 +10,9 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/stretchr/testify/suite" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/config" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" ) type TransactionBuilderTestSuite struct { @@ -27,8 +27,10 @@ func (s *TransactionBuilderTestSuite) SetupTest() { l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) s.Nil(err) - protocolConfig := encoding.GetProtocolConfig(s.RPCClient.L2.ChainID.Uint64()) - chainConfig := config.NewChainConfig(protocolConfig) + protocolConfigs, err := rpc.GetProtocolConfigs(s.RPCClient.TaikoL1, nil) + s.Nil(err) + + chainConfig := config.NewChainConfig(&protocolConfigs) s.calldataTxBuilder = NewCalldataTransactionBuilder( s.RPCClient, diff --git a/packages/taiko-client/prover/prover.go b/packages/taiko-client/prover/prover.go index 36d7985465a..3edc8f3636e 100644 --- a/packages/taiko-client/prover/prover.go +++ b/packages/taiko-client/prover/prover.go @@ -44,7 +44,7 @@ type Prover struct { guardianProverHeartbeater guardianProverHeartbeater.BlockSenderHeartbeater // Contract configurations - protocolConfig *bindings.TaikoDataConfig + protocolConfigs *bindings.TaikoDataConfig // States sharedState *state.SharedState @@ -121,10 +121,14 @@ func InitFromConfig( } // Configs - p.protocolConfig = encoding.GetProtocolConfig(p.rpc.L2.ChainID.Uint64()) - log.Info("Protocol configs", "configs", p.protocolConfig) + protocolConfigs, err := rpc.GetProtocolConfigs(p.rpc.TaikoL1, &bind.CallOpts{Context: p.ctx}) + if err != nil { + return fmt.Errorf("failed to get protocol configs: %w", err) + } + p.protocolConfigs = &protocolConfigs + log.Info("Protocol configs", "configs", p.protocolConfigs) - chBufferSize := p.protocolConfig.BlockMaxProposals + chBufferSize := p.protocolConfigs.BlockMaxProposals p.proofGenerationCh = make(chan *proofProducer.ProofWithHeader, chBufferSize) p.assignmentExpiredCh = make(chan metadata.TaikoBlockMetaData, chBufferSize) p.proofSubmissionCh = make(chan *proofProducer.ProofRequestBody, p.cfg.Capacity) @@ -280,7 +284,7 @@ func (p *Prover) eventLoop() { defer forceProvingTicker.Stop() // Channels - chBufferSize := p.protocolConfig.BlockMaxProposals + chBufferSize := p.protocolConfigs.BlockMaxProposals blockProposedCh := make(chan *bindings.TaikoL1ClientBlockProposed, chBufferSize) blockVerifiedCh := make(chan *bindings.TaikoL1ClientBlockVerified, chBufferSize) transitionProvedCh := make(chan *bindings.TaikoL1ClientTransitionProved, chBufferSize) From bbd69ca583257ade30ac9ea2601509af5bc0789a Mon Sep 17 00:00:00 2001 From: David Date: Sun, 3 Nov 2024 15:33:08 +0800 Subject: [PATCH 128/205] docs(protocol): update mainnet deployment docs (#18366) --- .../deployments/hekla-contract-logs.md | 3 +- .../deployments/mainnet-contract-logs-L1.md | 54 ++++++++++++------- .../deployments/mainnet-contract-logs-L2.md | 17 +++--- 3 files changed, 46 insertions(+), 28 deletions(-) diff --git a/packages/protocol/deployments/hekla-contract-logs.md b/packages/protocol/deployments/hekla-contract-logs.md index c6381f3dd16..0f7f3270207 100644 --- a/packages/protocol/deployments/hekla-contract-logs.md +++ b/packages/protocol/deployments/hekla-contract-logs.md @@ -114,7 +114,7 @@ ### taikoL1 - proxy: `0x79C9109b764609df928d16fC4a91e9081F7e87DB` -- impl: `0x97cBaB3D9CFC4458321767B42A3760294d0A7076.` +- impl: `0x833958CF23DAA9F19Ab418BCA114C2842819284A` - owner: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190` - logs: - upgraded on May 10, 2024 at commit `4903bec` @@ -131,6 +131,7 @@ - upgraded on Sep 20, 2024 at commit `fd1c039` - upgraded on Oct 16, 2024 at commit `233806e` - upgraded on Oct 29, 2024 at commit `3d12cb2` + - upgraded on Nov 3, 2024 at commit `ea0158f` ### assignmentHook diff --git a/packages/protocol/deployments/mainnet-contract-logs-L1.md b/packages/protocol/deployments/mainnet-contract-logs-L1.md index 7abcfa39253..183a5364c0c 100644 --- a/packages/protocol/deployments/mainnet-contract-logs-L1.md +++ b/packages/protocol/deployments/mainnet-contract-logs-L1.md @@ -10,7 +10,7 @@ - ens: `sam.based.taiko.eth` - proxy: `0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa` -- impl: `0x2f7126f78365AD54EAB26fD7faEc60435008E2fD` +- impl: `0xEC1a9aa1C648F047752fe4eeDb2C21ceab0c6449` - owner: `admin.taiko.eth` - names: - taiko_token: `0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800` @@ -37,6 +37,7 @@ - Upgraded from `0xF1cA1F1A068468E1dcF90dA6add185467de80943` to `0x9496502d7D121B3D5eF25cA6c58d4f7593398a17` @commit`e79a367ad` @tx`0xe1ef58455de0b0331228e487d54720290ed8a73f709d2146bd43330d4a360bd3` - Upgraded from `0x9496502d7D121B3D5eF25cA6c58d4f7593398a17` to `0x2f7126f78365AD54EAB26fD7faEc60435008E2fD` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` - register `bridged_erc20` to `0x65666141a541423606365123Ed280AB16a09A2e1` @tx`0x0ad38201728e782a04d74c5984efedba4c2c0669c9ce791db2b010efe4f15b1d` + - Upgraded from `0x2f7126f78365AD54EAB26fD7faEc60435008E2fD` to `0xEC1a9aa1C648F047752fe4eeDb2C21ceab0c6449` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` #### taiko_token @@ -56,7 +57,7 @@ - ens: `signals.based.taiko.eth` - proxy: `0x9e0a24964e5397B566c1ed39258e21aB5E35C77C` -- impl: `0xDF8642a1FBFc2014de27E8E87283D6f3eEF315DF` +- impl: `0x45fed11Ba70D4217545F18E27DDAF7D76Ff499f3` - owner: `admin.taiko.eth` - logs: - deployed on May 1, 2024 @commit`56dddf2b6` @@ -65,12 +66,13 @@ - upgraded from `0xB11Cd7bA46a12F238b4Ad831f6F296262C1e652d` to `0x3d59c18b31A7D950EF9bd15eD285b6c182E0f0bb` @commit`a3faee0` @tx`0x13f54109cb7f7507ad03562b06ea8d8b472043186e44252302583bc64acfb20b` - restored from `0x3d59c18b31A7D950EF9bd15eD285b6c182E0f0bb` to `0xB11Cd7bA46a12F238b4Ad831f6F296262C1e652d` @commit`b90b932` @tx`0xdb5e926c96d112ce1389da77a927fba6c7d04a711839b9e14777530ebcf83914` - upgraded from `0xB11Cd7bA46a12F238b4Ad831f6F296262C1e652d` to `0xDF8642a1FBFc2014de27E8E87283D6f3eEF315DF` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` + - Upgraded from `0xDF8642a1FBFc2014de27E8E87283D6f3eEF315DF` to `0x45fed11Ba70D4217545F18E27DDAF7D76Ff499f3` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` #### bridge - ens: `bridge.based.taiko.eth` - proxy: `0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC` -- impl: `0xAc96FF285158bceBB8573D20d853e86BB2915aF3` +- impl: `0x2705B12a971dA766A3f9321a743d61ceAD67dA2F` - owner: `admin.taiko.eth` - logs: - deployed on May 1, 2024 @commit`56dddf2b6` @@ -86,6 +88,7 @@ - upgrade impl to `0xD28f2c26aD8bA88b0691F6BB41Ff021878052561` @commit`2b483de` @tx`0x0bbf7d1258c646f41a02a92a55825b1ebfd3659577d0f2b57b462f8895e23a04` - upgrade impl to `0x01E7D369a619eF1B0E92563d8737F42C09789986` @commit`04d8c87` @tx`0x13f54109cb7f7507ad03562b06ea8d8b472043186e44252302583bc64acfb20b` - Upgrade impl to `0xAc96FF285158bceBB8573D20d853e86BB2915aF3` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` + - Upgrade impl to `0x2705B12a971dA766A3f9321a743d61ceAD67dA2F` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` #### quota_manager @@ -108,7 +111,7 @@ - ens: `v20.based.taiko.eth` - proxy: `0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab` -- impl: `0x7ACFBb369a552C45d402448A4d64b9da54C3FF30` +- impl: `0xb20C8Ffc2dD49596508d262b6E8B6817e9790E63` - owner: `admin.taiko.eth` - logs: - deployed on May 1, 2024 @commit`56dddf2b6` @@ -117,12 +120,13 @@ - upgraded from `0x4F750D13005444407D44dAA30922128db0374ca1` to `0xF8bdaC4E68bA2595Be8381aaa5456917e374E737` @commit`d907359` @tx`0xdb5e926c96d112ce1389da77a927fba6c7d04a711839b9e14777530ebcf83914` - upgraded from `0xF8bdaC4E68bA2595Be8381aaa5456917e374E737` to `0xa303784B0557BF1F1FB8b8abEF2B18a005722689` @commit`04d8c87` @tx`0x13f54109cb7f7507ad03562b06ea8d8b472043186e44252302583bc64acfb20b` - upgraded from `0xa303784B0557BF1F1FB8b8abEF2B18a005722689` to `0x7ACFBb369a552C45d402448A4d64b9da54C3FF30` @commit`bb2abc5` @tx`0xee632b50626beb2f7db84c9c7f303f29366f86dfaccd24ddd831ceac714c20e5` + - upgraded from `0x7ACFBb369a552C45d402448A4d64b9da54C3FF30` to `0xb20C8Ffc2dD49596508d262b6E8B6817e9790E63` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` #### erc721_vault - ens: `v721.based.taiko.eth` - proxy: `0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa` -- impl: `0xD961e3Ef2D7DF58cDc67BFd9055255430E5e3fEc` +- impl: `0xA4C5c20aB33C96B1c281Dca37D03E23609274C49` - owner: `admin.taiko.eth` - logs: - deployed on May 1, 2024 @commit`56dddf2b6` @@ -130,12 +134,13 @@ - upgraded from `0x41A7BDD153a5AfFb10Ed1AD3D6a4e5ad001495FA` to `0x2dfef0339009Ce10786fc118C883BB97af3163eD` @commit`fa481c1` @tx`0x02ed558762eae5f0a930ba4a1047a02d4a793ea48890268c32df04e882f138ff` - upgraded from `0x2dfef0339009Ce10786fc118C883BB97af3163eD` to `0x55B5df6B53466446221180498BfD1C59e54732c4` @commit`d907359` @tx`0xdb5e926c96d112ce1389da77a927fba6c7d04a711839b9e14777530ebcf83914` - upgraded from `0x55B5df6B53466446221180498BfD1C59e54732c4` to `0xD961e3Ef2D7DF58cDc67BFd9055255430E5e3fEc` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` + - upgraded from `0xD961e3Ef2D7DF58cDc67BFd9055255430E5e3fEc` to `0xA4C5c20aB33C96B1c281Dca37D03E23609274C49` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` #### erc1155_vault - ens: `v1155.based.taiko.eth` - proxy: `0xaf145913EA4a56BE22E120ED9C24589659881702` -- impl: `0x89C68Bc7028f8b1e69A91382b0a4b1825085617b` +- impl: `0x838ed469db456b67EB3b0B74D759Be4DA999b9c8` - owner: `admin.taiko.eth` - logs: - deployed on May 1, 2024 @commit`56dddf2b6` @@ -143,6 +148,7 @@ - upgraded from `0xd90b5fcf8d00d333d107E4Ab7F94c0c0A41CDcfE` to `0x097BBBef669AaD66030aB223195D200eF9A47dc3` @commit`fa481c1` @tx`0x02ed558762eae5f0a930ba4a1047a02d4a793ea48890268c32df04e882f138ff` - upgraded from `0x097BBBef669AaD66030aB223195D200eF9A47dc3` to `0xca92880829139b310B6b0CB41f66D566Db1a59C8` @commit`d907359` @tx`0xdb5e926c96d112ce1389da77a927fba6c7d04a711839b9e14777530ebcf83914` - upgraded from `0xca92880829139b310B6b0CB41f66D566Db1a59C8` to `0x89C68Bc7028f8b1e69A91382b0a4b1825085617b` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` + - upgraded from `0x89C68Bc7028f8b1e69A91382b0a4b1825085617b` to `0x838ed469db456b67EB3b0B74D759Be4DA999b9c8` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` #### bridged_erc20 @@ -169,7 +175,7 @@ - ens: `ram.based.taiko.eth` - proxy: `0x579f40D0BE111b823962043702cabe6Aaa290780` -- impl: `0x4f6D5D3109C07E77035B410602996e445b18E8E9` +- impl: `0x190D5d50D98D2202a618f75B2fD9986e60E096be` - names: - taiko_token: `0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800` - signal_service: `0x9e0a24964e5397B566c1ed39258e21aB5E35C77C` @@ -202,14 +208,14 @@ - register `prover_set` to `0x74828E5fe803072AF9Df512B3911B4223572D652` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` - upgraded from `0x29a88d60246C76E4F28806b9C8a42d2183154900` to `0x4f6D5D3109C07E77035B410602996e445b18E8E9` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` - register `prover_set` to `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748` -- todo: - - deploy a new version (override function change) + - upgraded from `0x4f6D5D3109C07E77035B410602996e445b18E8E9` to `0x3202Fc255aE09F91DbbD5b000b87dA4A2E04eE37` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` + - upgraded from `0x3202Fc255aE09F91DbbD5b000b87dA4A2E04eE37` to `0x190D5d50D98D2202a618f75B2fD9986e60E096be` @commit`4fd7b59` @tx`0xf26d0526aa4b8225c603720ce0dc016803188b959c50677d5446087d1f2c4e60` #### taikoL1 - ens: `based.taiko.eth` - proxy: `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a` -- impl: `0xf0E6d34937701622cA887a75c150cC23d4FFDf2F` +- impl: `0xA3E75eDA1Be2114816f388A5cF53EbA142DCDB17` - owner: `admin.taiko.eth` - logs: - deployed on May 1, 2024 @commit`56dddf2b6` @@ -227,18 +233,21 @@ - Upgrade to `0xcEe590fACd976B9BDE87BC1B7620B284c5edD2C3` @commit`2dd30ab` @tx`0xc1f91c375713f601b99cf6d2cdb80c129e036a7c9ec5f75871c4d13216dbbb5c` - Upgrade to `0xBA1d90BCfA74163bFE09e8eF609b346507D83231` @commit`bb2abc5` @tx`0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7` - Upgrade to `0xf0E6d34937701622cA887a75c150cC23d4FFDf2F` @commit`b4f8547` @tx`0x8778064404816273804d74c97b051f3865bc03062cfa4b0e9567f4556ad31981` + - Upgrade to `0x4229d14F520848aa83760Cf748abEB8A69cdaB2d` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` + - Upgrade to `0xA3E75eDA1Be2114816f388A5cF53EbA142DCDB17` @commit`ea0158f` @tx`0x78ca7c7d9c7e5aa9c5e6ab80e0229289a8d3bc8df2c2b9ba6baa74a0f60a0703` #### tier_router -- impl: `0x2Ae89453c6c79Add793db7B9d23c275b90C26065` +- impl: `0x8f1C1D58C858e9a9eeCc587d7D51AECfd16b5542` - logs: - deployed on Oct 24, 2024 @commit`7334b1d` - deployed on Nov 1, 2024 @commit`f4f4796` + - deployed on Nov 2, 2024 @commit`9182fba` #### tier_sgx - proxy: `0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81` -- impl: `0x7EE4CEF8a945639e09DDf3032e9d95c8d90f07f3` +- impl: `0x81DFEA931500cdcf0460e9EC45FA283A6B7f0838` - owner: `admin.taiko.eth` - logs: - deployed on May 1, 2024 @commit`56dddf2b6` @@ -246,12 +255,13 @@ - Upgraded from `0xf381868DD6B2aC8cca468D63B42F9040DE2257E9` to `0xB0b782cf0fCEce896E0C041F8e54f86cA4cC8e9F` @commit`a3faee0` @tx`eth:0x40A2aCCbd92BCA938b02010E17A5b8929b49130D` - Upgraded from `0xB0b782cf0fCEce896E0C041F8e54f86cA4cC8e9F` to `0xEE5F6648307319263FFBaE91f68ac700b188fF24` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748` - Upgraded from `0xEE5F6648307319263FFBaE91f68ac700b188fF24` to `0x7EE4CEF8a945639e09DDf3032e9d95c8d90f07f3` @commit`dd09223` @tx`0x2e246e4b4637c4bf13dccea873a30e35e704bafa7f02e30c877ecec7d786e662` + - Upgraded from `0x7EE4CEF8a945639e09DDf3032e9d95c8d90f07f3` to `0x81DFEA931500cdcf0460e9EC45FA283A6B7f0838` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` #### guardian_prover_minority - ens: `guardians1.based.taiko.eth` - proxy: `0x579A8d63a2Db646284CBFE31FE5082c9989E985c` -- impl: `0x3c40CC51e78B4a622622F9A4Df1b40068bc8Df98` +- impl: `0xB866E9046CAf4D75e2cbCD8b5eA3f07Ea74F7B47` - owner: `admin.taiko.eth` - guardianProvers: - `0x000012dd12a6d9dd2045f5e2594f4996b99a5d33` @@ -269,14 +279,15 @@ - Upgraded from `0x717DC5E3814591790BcB1fD9259eEdA7c14ce9CF` to `0x750221E951b77a2Cb4046De41Ec5F6d1aa7942D2` @commit`b90b932` @tx`0x416560cd96dc75ccffebe889e8d1ab3e08b33f814dc4a2bf7c6f9555071d1f6f` - Upgraded from `0x750221E951b77a2Cb4046De41Ec5F6d1aa7942D2` to `0x253E47F2b1e91F2001d3578aeB24C0ccF464b65e` @commit`cd5144255` @tx`0x8030569e293baddbc4e8b26688a1ecf14a231d86c90e9d02dad1e919ea2f3964` - Upgraded from `0x253E47F2b1e91F2001d3578aeB24C0ccF464b65e` to `0x468F6A9C0ad2e9C8370687D2844A9e70fE942d5c` @commit`b955e0e` @tx`0x5a60c5815947a199cc84e1bc75539e01a202597b20c1f87bd9d02f8be6453abd` - - Upgraded from `0x468F6A9C0ad2e9C8370687D2844A9e70fE942d5c` to `0x7E717FFD6f7dD1008192bDC7193904FaB25BC8A4.` @commit`8a27cbe` @tx`eth:0x40A2aCCbd92BCA938b02010E17A5b8929b49130D` - - Upgraded from `0x7E717FFD6f7dD1008192bDC7193904FaB25BC8A4` to `0x3c40CC51e78B4a622622F9A4Df1b40068bc8Df98.` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748` + - Upgraded from `0x468F6A9C0ad2e9C8370687D2844A9e70fE942d5c` to `0x7E717FFD6f7dD1008192bDC7193904FaB25BC8A4` @commit`8a27cbe` @tx`eth:0x40A2aCCbd92BCA938b02010E17A5b8929b49130D` + - Upgraded from `0x7E717FFD6f7dD1008192bDC7193904FaB25BC8A4` to `0x3c40CC51e78B4a622622F9A4Df1b40068bc8Df98` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748` + - Upgraded from `0x3c40CC51e78B4a622622F9A4Df1b40068bc8Df98` to `0xB866E9046CAf4D75e2cbCD8b5eA3f07Ea74F7B47` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` #### guardian_prover - ens: `guardians.based.taiko.eth` - proxy: `0xE3D777143Ea25A6E031d1e921F396750885f43aC` -- impl: `0x3c40CC51e78B4a622622F9A4Df1b40068bc8Df98` +- impl: `0xB866E9046CAf4D75e2cbCD8b5eA3f07Ea74F7B47` - owner: `admin.taiko.eth` - guardianProvers: - `0x000012dd12a6d9dd2045f5e2594f4996b99a5d33` @@ -293,8 +304,9 @@ - Upgraded from `0x717DC5E3814591790BcB1fD9259eEdA7c14ce9CF` to `0x750221E951b77a2Cb4046De41Ec5F6d1aa7942D2` @commit`b90b932` @tx`0x416560cd96dc75ccffebe889e8d1ab3e08b33f814dc4a2bf7c6f9555071d1f6f` - Upgraded from `0x750221E951b77a2Cb4046De41Ec5F6d1aa7942D2` to `0x253E47F2b1e91F2001d3578aeB24C0ccF464b65e` @commit`cd5144255` @tx`0x8030569e293baddbc4e8b26688a1ecf14a231d86c90e9d02dad1e919ea2f3964` - Upgraded from `0x253E47F2b1e91F2001d3578aeB24C0ccF464b65e` to `0x468F6A9C0ad2e9C8370687D2844A9e70fE942d5c` @commit`b955e0e` @tx`0x5a60c5815947a199cc84e1bc75539e01a202597b20c1f87bd9d02f8be6453abd` - - Upgraded from `0x468F6A9C0ad2e9C8370687D2844A9e70fE942d5c` to `0x7E717FFD6f7dD1008192bDC7193904FaB25BC8A4.` @commit`8a27cbe` @tx`eth:0x40A2aCCbd92BCA938b02010E17A5b8929b49130D` - - Upgraded from `0x7E717FFD6f7dD1008192bDC7193904FaB25BC8A4` to `0x3c40CC51e78B4a622622F9A4Df1b40068bc8Df98.` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748` + - Upgraded from `0x468F6A9C0ad2e9C8370687D2844A9e70fE942d5c` to `0x7E717FFD6f7dD1008192bDC7193904FaB25BC8A4` @commit`8a27cbe` @tx`eth:0x40A2aCCbd92BCA938b02010E17A5b8929b49130D` + - Upgraded from `0x7E717FFD6f7dD1008192bDC7193904FaB25BC8A4` to `0x3c40CC51e78B4a622622F9A4Df1b40068bc8Df98` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748` + - Upgraded from `0x3c40CC51e78B4a622622F9A4Df1b40068bc8Df98` to `0xB866E9046CAf4D75e2cbCD8b5eA3f07Ea74F7B47` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` #### p256_verifier @@ -347,7 +359,7 @@ - ens: `labprover.taiko.eth` - proxy: `0x68d30f47F19c07bCCEf4Ac7FAE2Dc12FCa3e0dC9` -- impl: `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` +- impl: `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763` - enabled provers: - `0x000000629FBCf27A347d1AEbA658435230D74a5f` - `0x000000633b68f5d8d3a86593ebb815b4663bcbe0` @@ -363,12 +375,13 @@ - upgraded from `0xD547Ca5d6b50dC5E900a091978597eB51F18F9D1` to `0x518845daA8870bE2C59E49620Fc262AD48953C9a` @commit`2dd30ab` @tx`0xc1f91c375713f601b99cf6d2cdb80c129e036a7c9ec5f75871c4d13216dbbb5c` - upgraded from `0x518845daA8870bE2C59E49620Fc262AD48953C9a` to `0x74828E5fe803072AF9Df512B3911B4223572D652` @commit`bb2abc5` @tx`0xc1f91c375713f601b99cf6d2cdb80c129e036a7c9ec5f75871c4d13216dbbb5c` - upgraded from `0x74828E5fe803072AF9Df512B3911B4223572D652` to `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748` + - upgraded from `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` to `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` ### labcontester.taiko.eth - ens: `labcontester.taiko.eth` - proxy: `0xa01d464ca3982DAa97B19fa7F8a232eB11A9DDb3` -- impl: `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` +- impl: `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763` - enabled provers: - `0x00000027F51a57E7FcBC4b481d15fcE5BE68b30B` - logs: @@ -378,3 +391,4 @@ - upgraded from `0xD547Ca5d6b50dC5E900a091978597eB51F18F9D1` to `0x518845daA8870bE2C59E49620Fc262AD48953C9a` @commit`2dd30ab` @tx`0xc1f91c375713f601b99cf6d2cdb80c129e036a7c9ec5f75871c4d13216dbbb5c` - upgraded from `0x518845daA8870bE2C59E49620Fc262AD48953C9a` to `0x74828E5fe803072AF9Df512B3911B4223572D652` @commit`bb2abc5` @tx`0xc1f91c375713f601b99cf6d2cdb80c129e036a7c9ec5f75871c4d13216dbbb5c` - upgraded from `0x74828E5fe803072AF9Df512B3911B4223572D652` to `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748` + - upgraded from `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` to `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` diff --git a/packages/protocol/deployments/mainnet-contract-logs-L2.md b/packages/protocol/deployments/mainnet-contract-logs-L2.md index ecfb81db0bd..3faba5a7b13 100644 --- a/packages/protocol/deployments/mainnet-contract-logs-L2.md +++ b/packages/protocol/deployments/mainnet-contract-logs-L2.md @@ -46,7 +46,7 @@ #### bridge - proxy: `0x1670000000000000000000000000000000000001` -- impl: `0x4Ca6bE8C1Ec05beFB216bAEEF9EE36997e35E98E` +- impl: `0x95ae2918dcbc6aFF8B4c1F1BCC1bf819b6e08B83` - owner: `0xCa5b76Cc7A38b86Db11E5aE5B1fc9740c3bA3DE8` - todo: - change owner to DelegateOwner @@ -60,11 +60,12 @@ - upgrade impl to `0x0893c8821Fa358D5f3630695Ce062204814359A1` @commit`1bd3285` @tx`0x4605c4ce594e996bdbdb532a9aefe4fab1ea36f7e2ef63eef56a7e8033810df3` - upgrade impl to `0x8fb67c2c16dc8578b6d69bc668236924f4c1b0f7` @commit`3ae25fd` @tx`0xd95435c742c01B0E982913BcA252173Ae96DF61d` - upgrade impl to `0x4Ca6bE8C1Ec05beFB216bAEEF9EE36997e35E98E` @commit`a3e1cf7` @tx`0xdf0348394d5e58f801de917575aafdc1cb55533b14a6e46fd460d1437238dc02` + - upgrade impl to `0x95ae2918dcbc6aFF8B4c1F1BCC1bf819b6e08B83` @commit`9345f14` @tx`0xdbe9caf2b1282d0fecf9a752f2c1aeade8820bb66bb5ad210f0081996504173b` #### erc20_vault - proxy: `0x1670000000000000000000000000000000000002` -- impl: `0x33fBcde27fBA21e90582Df31DFB427D4dbdBefC1` +- impl: `0xb96AbB41b01E3ad519D00E80355a1c3801910F62` - owner: `0xCa5b76Cc7A38b86Db11E5aE5B1fc9740c3bA3DE8` - todo: - change owner to DelegateOwner @@ -75,13 +76,12 @@ - linked bridged TKO to `0xA9d23408b9bA935c230493c40C73824Df71A0975` @tx`0xe25d05320b95fbc3bffe0b7cbfe351dd5fa6413db307d5c28f7b70983567a43b` - linked bridged USDC to `0x07d83526730c7438048D55A4fc0b850e2aaB6f0b` @tx`0xf1752ac712779e9ae53d408abdc5eec70e63582433143d6d91a489a1e8fc4778` - changed owner to `0xCa5b76Cc7A38b86Db11E5aE5B1fc9740c3bA3DE8` @tx`0xf68861171c602e3e75ca69e950957fcb908c7949c6df9a9ea3026c238ebb1e9c` - - todo: - - upgrade + - upgrade impl to `0xb96AbB41b01E3ad519D00E80355a1c3801910F62` @commit`9345f14` @tx`0xdbe9caf2b1282d0fecf9a752f2c1aeade8820bb66bb5ad210f0081996504173b` #### erc721_vault - proxy: `0x1670000000000000000000000000000000000003` -- impl: `0xD68BFe63E0f2983D89cbB225BEd068a8f19f5e08` +- impl: `0xd532f20a4751156C566Da7745db95E7f80145B36` - owner: `0xCa5b76Cc7A38b86Db11E5aE5B1fc9740c3bA3DE8` - todo: - change owner to DelegateOwner @@ -90,11 +90,12 @@ - redeployed on May 22, 2024 @commit`b955e0e` - upgrade to `0xD68BFe63E0f2983D89cbB225BEd068a8f19f5e08` @`0x8705703a93cb4cfc1ae69d1277f4464f807c7615237f2b04ff010c6e45708d34` - changed owner to `0xCa5b76Cc7A38b86Db11E5aE5B1fc9740c3bA3DE8` @tx`0xf68861171c602e3e75ca69e950957fcb908c7949c6df9a9ea3026c238ebb1e9c` + - upgrade impl to `0xd532f20a4751156C566Da7745db95E7f80145B36` @commit`9345f14` @tx`0xdbe9caf2b1282d0fecf9a752f2c1aeade8820bb66bb5ad210f0081996504173b` #### erc1155_vault - proxy: `0x1670000000000000000000000000000000000004` -- impl: `0x3918a2910C393A1A2EF7AAc807970EFE47A54b7e` +- impl: `0xBBBC4ad39488b990E095042fa6c59A90d3817846` - owner: `0xCa5b76Cc7A38b86Db11E5aE5B1fc9740c3bA3DE8` - todo: - change owner to DelegateOwner @@ -103,6 +104,7 @@ - redeployed on May 22, 2024 @commit`b955e0e` - upgrade to `0x3918a2910C393A1A2EF7AAc807970EFE47A54b7e` @tx`0x264a2a553672a5480141638c3ca00a7bdf2c54e48c53f41867ca4f64703e16d7` - changed owner to `0xCa5b76Cc7A38b86Db11E5aE5B1fc9740c3bA3DE8` @tx`0xf68861171c602e3e75ca69e950957fcb908c7949c6df9a9ea3026c238ebb1e9c` + - upgrade impl to `0xBBBC4ad39488b990E095042fa6c59A90d3817846` @commit`9345f14` @tx`0xdbe9caf2b1282d0fecf9a752f2c1aeade8820bb66bb5ad210f0081996504173b` #### signal_service @@ -137,7 +139,7 @@ #### taikoL2 - proxy: `0x1670000000000000000000000000000000010001` -- impl: `0x0167000000000000000000000000000000010001` +- impl: `0x75E76c367D6be621bD90e4b1e32fBB3fF59150b6` - owner: `0xCa5b76Cc7A38b86Db11E5aE5B1fc9740c3bA3DE8` - todo: - change owner to DelegateOwner @@ -145,6 +147,7 @@ - deployed on May 1, 2024 @commit`56dddf2b6` - redeployed on May 22, 2024 @commit`b955e0e` - changed owner to `0xCa5b76Cc7A38b86Db11E5aE5B1fc9740c3bA3DE8` @tx`0xf68861171c602e3e75ca69e950957fcb908c7949c6df9a9ea3026c238ebb1e9c` + - upgrade impl to `0x75E76c367D6be621bD90e4b1e32fBB3fF59150b6` @commit`9345f14` @tx`0xdbe9caf2b1282d0fecf9a752f2c1aeade8820bb66bb5ad210f0081996504173b` #### bridged_taiko_token From 96b380a452f1055da960146b4bf1e94c1842da73 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 4 Nov 2024 09:54:43 +0800 Subject: [PATCH 129/205] feat(protocol): add `lastProposedIn` to slotB (#18379) --- .../protocol/contracts/layer1/based/ITaikoL1.sol | 4 ++++ .../contracts/layer1/based/LibProposing.sol | 1 + .../protocol/contracts/layer1/based/TaikoData.sol | 4 +--- .../protocol/contracts/layer1/based/TaikoL1.sol | 10 ++++++---- .../contracts/layer1/provers/ProverSet.sol | 15 +++++++++++++++ .../protocol/test/layer1/based/MockTaikoL1.sol | 2 ++ 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/ITaikoL1.sol b/packages/protocol/contracts/layer1/based/ITaikoL1.sol index 9ea3977ecdd..fbd2eca8185 100644 --- a/packages/protocol/contracts/layer1/based/ITaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/ITaikoL1.sol @@ -87,6 +87,10 @@ interface ITaikoL1 { view returns (TaikoData.TransitionState memory); + /// @notice Retrieves the ID of the L1 block where the most recent L2 block was proposed. + /// @return The ID of the Li block where the most recent block was proposed. + function lastProposedIn() external view returns (uint56); + /// @notice Gets the configuration of the TaikoL1 contract. /// @return Config struct containing configuration parameters. function getConfig() external pure returns (TaikoData.Config memory); diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index 27a2424fe91..1e220e1b8e1 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -278,6 +278,7 @@ library LibProposing { unchecked { ++_state.slotB.numBlocks; } + _state.slotB.lastProposedIn = uint56(block.number); LibBonds.debitBond(_state, _resolver, local.params.proposer, meta_.id, _config.livenessBond); diff --git a/packages/protocol/contracts/layer1/based/TaikoData.sol b/packages/protocol/contracts/layer1/based/TaikoData.sol index f9a2a59cb7c..893e6c7cb3c 100644 --- a/packages/protocol/contracts/layer1/based/TaikoData.sol +++ b/packages/protocol/contracts/layer1/based/TaikoData.sol @@ -191,9 +191,7 @@ library TaikoData { uint64 numBlocks; uint64 lastVerifiedBlockId; bool provingPaused; - uint8 __reservedB1; - uint16 __reservedB2; - uint32 __reservedB3; + uint56 lastProposedIn; uint64 lastUnpausedAt; } diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index a9c1e5054bb..f96916cbd09 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -58,10 +58,6 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { /// @notice This function shall be called by previously deployed contracts. function init2() external onlyOwner reinitializer(2) { - // reset some previously used slots for future reuse - state.slotB.__reservedB1 = 0; - state.slotB.__reservedB2 = 0; - state.slotB.__reservedB3 = 0; state.__reserve1 = 0; } @@ -287,6 +283,12 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { return state.slotB.lastUnpausedAt; } + /// @notice Retrieves the ID of the L1 block where the most recent L2 block was proposed. + /// @return The ID of the Li block where the most recent block was proposed. + function lastProposedIn() external view returns (uint56) { + return state.slotB.lastProposedIn; + } + /// @inheritdoc ITaikoL1 function getConfig() public pure virtual returns (TaikoData.Config memory) { return TaikoData.Config({ diff --git a/packages/protocol/contracts/layer1/provers/ProverSet.sol b/packages/protocol/contracts/layer1/provers/ProverSet.sol index d78df93f2ff..ca7098d6a98 100644 --- a/packages/protocol/contracts/layer1/provers/ProverSet.sol +++ b/packages/protocol/contracts/layer1/provers/ProverSet.sol @@ -30,6 +30,7 @@ contract ProverSet is EssentialContract, IERC1271 { error INVALID_STATUS(); error PERMISSION_DENIED(); + error NOT_FIRST_PROPOSAL(); modifier onlyAuthorized() { require( @@ -81,6 +82,20 @@ contract ProverSet is EssentialContract, IERC1271 { LibAddress.sendEtherAndVerify(admin, _amount); } + /// @notice Proposes a block only when it is the first block proposal in the current L1 block. + function proposeBlockV2Conditionally( + bytes calldata _params, + bytes calldata _txList + ) + external + onlyProver + { + ITaikoL1 taiko = ITaikoL1(taikoL1()); + // Ensure this block is the first block proposed in the current L1 block. + require(taiko.lastProposedIn() != block.number, NOT_FIRST_PROPOSAL()); + taiko.proposeBlockV2(_params, _txList); + } + /// @notice Propose a Taiko block. function proposeBlockV2(bytes calldata _params, bytes calldata _txList) external onlyProver { ITaikoL1(taikoL1()).proposeBlockV2(_params, _txList); diff --git a/packages/protocol/test/layer1/based/MockTaikoL1.sol b/packages/protocol/test/layer1/based/MockTaikoL1.sol index 344a51ffc7f..2deb5cef503 100644 --- a/packages/protocol/test/layer1/based/MockTaikoL1.sol +++ b/packages/protocol/test/layer1/based/MockTaikoL1.sol @@ -62,5 +62,7 @@ contract MockTaikoL1 is ITaikoL1 { returns (TaikoData.TransitionState memory) { } + function lastProposedIn() external view returns (uint56) { } + function getConfig() external pure virtual returns (TaikoData.Config memory) { } } From 1920521a2478d1e31745742f1ddbb296cdd98f6f Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:02:22 +0800 Subject: [PATCH 130/205] feat(protocol): allow any ERC20 tokens or Ether to be used as bonds (#18380) --- .../contracts/layer1/based/ITaikoL1.sol | 6 +- .../contracts/layer1/based/LibBonds.sol | 59 +++++++++++++------ .../contracts/layer1/based/LibProposing.sol | 12 ++-- .../contracts/layer1/based/LibProving.sol | 26 ++++---- .../contracts/layer1/based/LibUtils.sol | 24 ++++---- .../contracts/layer1/based/LibVerifying.sol | 10 ++-- .../contracts/layer1/based/TaikoL1.sol | 2 +- .../mainnet/addrcache/RollupAddressCache.sol | 3 + .../layer1/provers/GuardianProver.sol | 24 +++++--- .../contracts/layer1/provers/ProverSet.sol | 26 ++++++-- .../layer1/team/tokenunlock/TokenUnlock.sol | 6 ++ .../contracts/shared/common/LibStrings.sol | 1 + .../script/layer1/DeployProtocolOnL1.s.sol | 6 +- .../test/layer1/based/MockTaikoL1.sol | 2 +- .../test/layer1/based/TaikoL1TestBase.sol | 3 +- .../layer1/team/tokenunlock/TokenUnlock.t.sol | 1 + 16 files changed, 135 insertions(+), 76 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/ITaikoL1.sol b/packages/protocol/contracts/layer1/based/ITaikoL1.sol index fbd2eca8185..a3d1d02e660 100644 --- a/packages/protocol/contracts/layer1/based/ITaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/ITaikoL1.sol @@ -56,11 +56,11 @@ interface ITaikoL1 { /// @param _pause True to pause, false to unpause. function pauseProving(bool _pause) external; - /// @notice Deposits Taiko token to be used as bonds. + /// @notice Deposits bond ERC20 token or Ether. /// @param _amount The amount of Taiko token to deposit. - function depositBond(uint256 _amount) external; + function depositBond(uint256 _amount) external payable; - /// @notice Withdraws Taiko tokens. + /// @notice Withdraws bond ERC20 token or Ether. /// @param _amount Amount of Taiko tokens to withdraw. function withdrawBond(uint256 _amount) external; diff --git a/packages/protocol/contracts/layer1/based/LibBonds.sol b/packages/protocol/contracts/layer1/based/LibBonds.sol index 1f06b0485a6..7103e752422 100644 --- a/packages/protocol/contracts/layer1/based/LibBonds.sol +++ b/packages/protocol/contracts/layer1/based/LibBonds.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "src/shared/common/IAddressResolver.sol"; +import "src/shared/common/LibAddress.sol"; import "src/shared/common/LibStrings.sol"; import "./TaikoData.sol"; @@ -33,9 +34,11 @@ library LibBonds { /// @param amount The amount of tokens debited. event BondDebited(address indexed user, uint256 blockId, uint256 amount); + error L1_INVALID_MSG_VALUE(); + /// @dev Deposits TAIKO tokens to be used as bonds. - /// @param _state The current state of TaikoData. - /// @param _resolver The address resolver interface. + /// @param _state Pointer to the protocol's storage. + /// @param _resolver The address resolver. /// @param _amount The amount of tokens to deposit. function depositBond( TaikoData.State storage _state, @@ -44,14 +47,13 @@ library LibBonds { ) public { - emit BondDeposited(msg.sender, _amount); _state.bondBalance[msg.sender] += _amount; - _tko(_resolver).transferFrom(msg.sender, address(this), _amount); + _handleDeposit(_resolver, _amount); } /// @dev Withdraws TAIKO tokens. - /// @param _state The current state of TaikoData. - /// @param _resolver The address resolver interface. + /// @param _state Pointer to the protocol's storage. + /// @param _resolver The address resolver. /// @param _amount The amount of tokens to withdraw. function withdrawBond( TaikoData.State storage _state, @@ -62,11 +64,17 @@ library LibBonds { { emit BondWithdrawn(msg.sender, _amount); _state.bondBalance[msg.sender] -= _amount; - _tko(_resolver).transfer(msg.sender, _amount); + + address bondToken = _bondToken(_resolver); + if (bondToken != address(0)) { + IERC20(bondToken).transfer(msg.sender, _amount); + } else { + LibAddress.sendEtherAndVerify(msg.sender, _amount); + } } /// @dev Gets a user's current TAIKO token bond balance. - /// @param _state The current state of TaikoData. + /// @param _state Pointer to the protocol's storage. /// @param _user The address of the user. /// @return The current token balance. function bondBalanceOf( @@ -81,8 +89,8 @@ library LibBonds { } /// @dev Debits TAIKO tokens as bonds. - /// @param _state The current state of TaikoData. - /// @param _resolver The address resolver interface. + /// @param _state Pointer to the protocol's storage. + /// @param _resolver The address resolver. /// @param _user The address of the user to debit. /// @param _blockId The ID of the block to debit for. /// @param _amount The amount of tokens to debit. @@ -103,14 +111,13 @@ library LibBonds { _state.bondBalance[_user] = balance - _amount; } } else { - emit BondDeposited(msg.sender, _amount); - _tko(_resolver).transferFrom(_user, address(this), _amount); + _handleDeposit(_resolver, _amount); } emit BondDebited(_user, _blockId, _amount); } /// @dev Credits TAIKO tokens to a user's bond balance. - /// @param _state The current state of TaikoData. + /// @param _state Pointer to the protocol's storage. /// @param _user The address of the user to credit. /// @param _blockId The ID of the block to credit for. /// @param _amount The amount of tokens to credit. @@ -129,10 +136,26 @@ library LibBonds { emit BondCredited(_user, _blockId, _amount); } - /// @dev Resolves the TAIKO token address using the address resolver. - /// @param _resolver The address resolver interface. - /// @return tko_ The IERC20 interface of the TAIKO token. - function _tko(IAddressResolver _resolver) private view returns (IERC20) { - return IERC20(_resolver.resolve(LibStrings.B_TAIKO_TOKEN, false)); + /// @dev Handles the deposit of bond tokens or Ether. + /// @param _resolver The address resolver. + /// @param _amount The amount of tokens or Ether to deposit. + function _handleDeposit(IAddressResolver _resolver, uint256 _amount) private { + address bondToken = _bondToken(_resolver); + + if (bondToken != address(0)) { + require(msg.value == 0, L1_INVALID_MSG_VALUE()); + IERC20(bondToken).transferFrom(msg.sender, address(this), _amount); + } else { + require(msg.value == _amount, L1_INVALID_MSG_VALUE()); + } + emit BondDeposited(msg.sender, _amount); + } + + /// @dev Resolves the bond token address using the address resolver, returns address(0) if Ether + /// is used as bond asset. + /// @param _resolver The address resolver. + /// @return The IERC20 interface of the TAIKO token. + function _bondToken(IAddressResolver _resolver) private view returns (address) { + return _resolver.resolve(LibStrings.B_BOND_TOKEN, true); } } diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index 1e220e1b8e1..81f8c199fe1 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -46,9 +46,9 @@ library LibProposing { error L1_UNEXPECTED_PARENT(); /// @dev Proposes multiple Taiko L2 blocks. - /// @param _state The current state of the Taiko protocol. + /// @param _state Pointer to the protocol's storage. /// @param _config The configuration parameters for the Taiko protocol. - /// @param _resolver The address resolver interface. + /// @param _resolver The address resolver. /// @param _paramsArr An array of encoded data bytes containing the block parameters. /// @param _txListArr An array of transaction list bytes (if not blob). /// @return metas_ An array of metadata objects for the proposed L2 blocks (version 2). @@ -82,9 +82,9 @@ library LibProposing { } /// @dev Proposes a single Taiko L2 block. - /// @param _state The current state of the Taiko protocol. + /// @param _state Pointer to the protocol's storage. /// @param _config The configuration parameters for the Taiko protocol. - /// @param _resolver The address resolver interface. + /// @param _resolver The address resolver. /// @param _params Encoded data bytes containing the block parameters. /// @param _txList Transaction list bytes (if not blob). /// @return meta_ The metadata of the proposed block (version 2). @@ -108,9 +108,9 @@ library LibProposing { } /// @dev Proposes a single Taiko L2 block. - /// @param _state The current state of the Taiko protocol. + /// @param _state Pointer to the protocol's storage. /// @param _config The configuration parameters for the Taiko protocol. - /// @param _resolver The address resolver interface. + /// @param _resolver The address resolver. /// @param _params Encoded data bytes containing the block parameters. /// @param _txList Transaction list bytes (if not blob). /// @return meta_ The metadata of the proposed block (version 2). diff --git a/packages/protocol/contracts/layer1/based/LibProving.sol b/packages/protocol/contracts/layer1/based/LibProving.sol index c455434ae31..c568814ad4d 100644 --- a/packages/protocol/contracts/layer1/based/LibProving.sol +++ b/packages/protocol/contracts/layer1/based/LibProving.sol @@ -80,7 +80,7 @@ library LibProving { error L1_PROVING_PAUSED(); /// @dev Pauses or unpauses the proving process. - /// @param _state Current TaikoData.State. + /// @param _state Pointer to the protocol's storage. /// @param _pause The pause status. function pauseProving(TaikoData.State storage _state, bool _pause) public { require(_state.slotB.provingPaused != _pause, L1_INVALID_PAUSE_STATUS()); @@ -93,9 +93,9 @@ library LibProving { } /// @dev Proves or contests multiple Taiko L2 blocks. - /// @param _state Current TaikoData.State. - /// @param _config Actual TaikoData.Config. - /// @param _resolver Address resolver interface. + /// @param _state Pointer to the protocol's storage. + /// @param _config The protocol's configuration. + /// @param _resolver The address resolver. /// @param _blockIds The index of the block to prove. This is also used to select the right /// implementation version. /// @param _inputs A list of abi-encoded (TaikoData.BlockMetadataV2, TaikoData.Transition, @@ -152,9 +152,9 @@ library LibProving { } /// @dev Proves or contests a single Taiko L2 block. - /// @param _state Current TaikoData.State. - /// @param _config Actual TaikoData.Config. - /// @param _resolver Address resolver interface. + /// @param _state Pointer to the protocol's storage. + /// @param _config The protocol's configuration. + /// @param _resolver The address resolver. /// @param _blockId The index of the block to prove. This is also used to select the right /// implementation version. /// @param _input An abi-encoded (TaikoData.BlockMetadataV2, TaikoData.Transition, @@ -173,9 +173,9 @@ library LibProving { } /// @dev Proves or contests a single Taiko L2 block. - /// @param _state Current TaikoData.State. - /// @param _config Actual TaikoData.Config. - /// @param _resolver Address resolver interface. + /// @param _state Pointer to the protocol's storage. + /// @param _config The protocol's configuration. + /// @param _resolver The address resolver. /// @param _blockId The index of the block to prove. This is also used to select the right /// implementation version. /// @param _input An abi-encoded (TaikoData.BlockMetadataV2, TaikoData.Transition, @@ -393,7 +393,7 @@ library LibProving { } /// @dev Handle the transition initialization logic. - /// @param _state Current TaikoData.State. + /// @param _state Pointer to the protocol's storage. /// @param _blk Current TaikoData.BlockV2. /// @param _tran Current TaikoData.Transition. /// @param _local Current Local struct. @@ -459,8 +459,8 @@ library LibProving { /// @dev Handles what happens when either the first transition is being proven or there is a /// higher tier proof incoming. - /// @param _state Current TaikoData.State. - /// @param _resolver Address resolver interface. + /// @param _state Pointer to the protocol's storage. + /// @param _resolver The address resolver. /// @param _blk Current TaikoData.BlockV2. /// @param _ts Current TaikoData.TransitionState. /// @param _tran Current TaikoData.Transition. diff --git a/packages/protocol/contracts/layer1/based/LibUtils.sol b/packages/protocol/contracts/layer1/based/LibUtils.sol index 535f07cedb5..def7f9ca00c 100644 --- a/packages/protocol/contracts/layer1/based/LibUtils.sol +++ b/packages/protocol/contracts/layer1/based/LibUtils.sol @@ -1,8 +1,6 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; - import "src/shared/common/IAddressResolver.sol"; import "src/shared/common/LibStrings.sol"; import "src/shared/common/LibMath.sol"; @@ -66,8 +64,8 @@ library LibUtils { } /// @dev Retrieves a block's block hash and state root. - /// @param _state Current TaikoData.State. - /// @param _config Actual TaikoData.Config. + /// @param _state Pointer to the protocol's storage. + /// @param _config The protocol's configuration. /// @param _blockId Id of the block. /// @return blockHash_ The block's block hash. /// @return stateRoot_ The block's storage root. @@ -95,8 +93,8 @@ library LibUtils { /// @dev Gets the state transitions for a batch of block. For transition that doesn't exist, the /// corresponding transition state will be empty. - /// @param _state Current TaikoData.State. - /// @param _config Actual TaikoData.Config. + /// @param _state Pointer to the protocol's storage. + /// @param _config The protocol's configuration. /// @param _blockIds Id array of the blocks. /// @param _parentHashes Parent hashes of the blocks. /// @return transitions_ The state transition pointer array. @@ -124,8 +122,8 @@ library LibUtils { /// @dev Retrieves the transition with a given parentHash. /// @dev This function will revert if the transition is not found. - /// @param _state Current TaikoData.State. - /// @param _config Actual TaikoData.Config. + /// @param _state Pointer to the protocol's storage. + /// @param _config The protocol's configuration. /// @param _blockId Id of the block. /// @param _parentHash Parent hash of the block. /// @return The state transition pointer. @@ -148,8 +146,8 @@ library LibUtils { } /// @dev Retrieves a block based on its ID. - /// @param _state Current TaikoData.State. - /// @param _config Actual TaikoData.Config. + /// @param _state Pointer to the protocol's storage. + /// @param _config The protocol's configuration. /// @param _blockId Id of the block. /// @return blk_ The block storage pointer. /// @return slot_ The slot value. @@ -169,8 +167,8 @@ library LibUtils { /// @dev Retrieves the transition with a transition ID. /// @dev This function will revert if the transition is not found. - /// @param _state Current TaikoData.State. - /// @param _config Actual TaikoData.Config. + /// @param _state Pointer to the protocol's storage. + /// @param _config The protocol's configuration. /// @param _blockId Id of the block. /// @param _tid The transition id. /// @return The state transition pointer. @@ -193,7 +191,7 @@ library LibUtils { /// @dev Retrieves the ID of the transition with a given parentHash. This function will return 0 /// if the transition is not found. - /// @param _state Current TaikoData.State. + /// @param _state Pointer to the protocol's storage. /// @param _blk The block storage pointer. /// @param _slot The slot value. /// @param _parentHash The parent hash of the block. diff --git a/packages/protocol/contracts/layer1/based/LibVerifying.sol b/packages/protocol/contracts/layer1/based/LibVerifying.sol index e0d72d02ec8..a4a8833f0aa 100644 --- a/packages/protocol/contracts/layer1/based/LibVerifying.sol +++ b/packages/protocol/contracts/layer1/based/LibVerifying.sol @@ -31,9 +31,9 @@ library LibVerifying { error L1_TRANSITION_ID_ZERO(); /// @dev Verifies up to N blocks. - /// @param _state The current state of TaikoData. - /// @param _config The configuration of TaikoData. - /// @param _resolver The address resolver interface. + /// @param _state Pointer to the protocol's storage. + /// @param _config The protocol's configuration. + /// @param _resolver The address resolver. /// @param _maxBlocksToVerify The maximum number of blocks to verify. function verifyBlocks( TaikoData.State storage _state, @@ -175,8 +175,8 @@ library LibVerifying { } /// @dev Retrieves the prover of a verified block. - /// @param _state The current state of TaikoData. - /// @param _config The configuration of TaikoData. + /// @param _state Pointer to the protocol's storage. + /// @param _config The protocol's configuration. /// @param _blockId The ID of the block. /// @return The address of the prover. function getVerifiedBlockProver( diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index f96916cbd09..0a1175e5fce 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -144,7 +144,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { } /// @inheritdoc ITaikoL1 - function depositBond(uint256 _amount) external whenNotPaused { + function depositBond(uint256 _amount) external payable whenNotPaused { LibBonds.depositBond(state, this, _amount); } diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol index d69989ba6ad..cf5877f94d1 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol @@ -21,6 +21,9 @@ contract RollupAddressCache is AddressCache { return (false, address(0)); } + if (_name == LibStrings.B_BOND_TOKEN) { + return (true, 0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800); + } if (_name == LibStrings.B_TAIKO_TOKEN) { return (true, 0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800); } diff --git a/packages/protocol/contracts/layer1/provers/GuardianProver.sol b/packages/protocol/contracts/layer1/provers/GuardianProver.sol index 5a8f136efa8..542dc25481e 100644 --- a/packages/protocol/contracts/layer1/provers/GuardianProver.sol +++ b/packages/protocol/contracts/layer1/provers/GuardianProver.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "src/shared/common/EssentialContract.sol"; +import "src/shared/common/LibAddress.sol"; import "src/shared/common/LibStrings.sol"; import "../verifiers/IVerifier.sol"; import "../based/ITaikoL1.sol"; @@ -83,6 +84,7 @@ contract GuardianProver is IVerifier, EssentialContract { /// @param enabled True if TaikoL1 proving auto-pause is enabled. event ProvingAutoPauseEnabled(bool indexed enabled); + error GP_BOND_NOT_ERC20(); error GP_INVALID_GUARDIAN(); error GP_INVALID_GUARDIAN_SET(); error GP_INVALID_MIN_GUARDIANS(); @@ -153,21 +155,27 @@ contract GuardianProver is IVerifier, EssentialContract { /// @notice Enables unlimited allowance for Taiko L1 contract. /// @param _enable True if unlimited allowance is approved, false to set the allowance to 0. - function enableTaikoTokenAllowance(bool _enable) external onlyOwner { - address tko = resolve(LibStrings.B_TAIKO_TOKEN, false); + function enableBondAllowance(bool _enable) external onlyOwner { + address bondToken = resolve(LibStrings.B_BOND_TOKEN, true); + require(bondToken != address(0), GP_BOND_NOT_ERC20()); + address taiko = resolve(LibStrings.B_TAIKO, false); - IERC20(tko).approve(taiko, _enable ? type(uint256).max : 0); + IERC20(bondToken).approve(taiko, _enable ? type(uint256).max : 0); } - /// @notice Withdraws Taiko Token to a given address. + /// @notice Withdraws bond asset to a given address. /// @param _to The recipient address. /// @param _amount The amount of Taiko token to withdraw. Use 0 for all balance. - function withdrawTaikoToken(address _to, uint256 _amount) external onlyOwner { + function withdrawBond(address _to, uint256 _amount) external onlyOwner { require(_to != address(0), GV_ZERO_ADDRESS()); - IERC20 tko = IERC20(resolve(LibStrings.B_TAIKO_TOKEN, false)); - uint256 amount = _amount == 0 ? tko.balanceOf(address(this)) : _amount; - tko.transfer(_to, amount); + address bondToken = resolve(LibStrings.B_BOND_TOKEN, true); + if (bondToken != address(0)) { + uint256 amount = _amount == 0 ? IERC20(bondToken).balanceOf(address(this)) : _amount; + IERC20(bondToken).transfer(_to, amount); + } else { + LibAddress.sendEtherAndVerify(_to, address(this).balance); + } } /// @notice Called by guardians to approve a guardian proof (version 2). diff --git a/packages/protocol/contracts/layer1/provers/ProverSet.sol b/packages/protocol/contracts/layer1/provers/ProverSet.sol index ca7098d6a98..d557aba553c 100644 --- a/packages/protocol/contracts/layer1/provers/ProverSet.sol +++ b/packages/protocol/contracts/layer1/provers/ProverSet.sol @@ -29,6 +29,7 @@ contract ProverSet is EssentialContract, IERC1271 { event ProverEnabled(address indexed prover, bool indexed enabled); error INVALID_STATUS(); + error INVALID_BOND_TOKEN(); error PERMISSION_DENIED(); error NOT_FIRST_PROPOSAL(); @@ -57,11 +58,17 @@ contract ProverSet is EssentialContract, IERC1271 { { __Essential_init(_owner, _rollupAddressManager); admin = _admin; - IERC20(tkoToken()).approve(taikoL1(), type(uint256).max); + + address _bondToken = bondToken(); + if (_bondToken != address(0)) { + IERC20(_bondToken).approve(taikoL1(), type(uint256).max); + } } function approveAllowance(address _address, uint256 _allowance) external onlyOwner { - IERC20(tkoToken()).approve(_address, _allowance); + address _bondToken = bondToken(); + require(_bondToken != address(0), INVALID_BOND_TOKEN()); + IERC20(_bondToken).approve(_address, _allowance); } /// @notice Enables or disables a prover. @@ -74,7 +81,12 @@ contract ProverSet is EssentialContract, IERC1271 { /// @notice Withdraws Taiko tokens back to the admin address. function withdrawToAdmin(uint256 _amount) external onlyAuthorized { - IERC20(tkoToken()).transfer(admin, _amount); + address _bondToken = bondToken(); + if (_bondToken != address(0)) { + IERC20(_bondToken).transfer(admin, _amount); + } else { + LibAddress.sendEtherAndVerify(admin, _amount); + } } /// @notice Withdraws ETH back to the owner address. @@ -142,7 +154,9 @@ contract ProverSet is EssentialContract, IERC1271 { /// @notice Delegates token voting right to a delegatee. /// @param _delegatee The delegatee to receive the voting right. function delegate(address _delegatee) external onlyAuthorized nonReentrant { - ERC20VotesUpgradeable(tkoToken()).delegate(_delegatee); + address _bondToken = bondToken(); + require(_bondToken != address(0), INVALID_BOND_TOKEN()); + ERC20VotesUpgradeable(_bondToken).delegate(_delegatee); } // This function is necessary for this contract to become an assigned prover. @@ -164,7 +178,7 @@ contract ProverSet is EssentialContract, IERC1271 { return resolve(LibStrings.B_TAIKO, false); } - function tkoToken() internal view virtual returns (address) { - return resolve(LibStrings.B_TAIKO_TOKEN, false); + function bondToken() internal view virtual returns (address) { + return resolve(LibStrings.B_BOND_TOKEN, true); } } diff --git a/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol b/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol index 7dce22a5b95..5cdff124958 100644 --- a/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol +++ b/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol @@ -60,6 +60,7 @@ contract TokenUnlock is EssentialContract { error NOT_WITHDRAWABLE(); error NOT_PROVER_SET(); error PERMISSION_DENIED(); + error TAIKO_TOKEN_NOT_USED_AS_BOND_TOKEN(); modifier onlyRecipient() { if (msg.sender != recipient) revert PERMISSION_DENIED(); @@ -110,6 +111,11 @@ contract TokenUnlock is EssentialContract { /// @notice Create a new prover set. function createProverSet() external onlyRecipient returns (address proverSet_) { + require( + resolve(LibStrings.B_BOND_TOKEN, false) == resolve(LibStrings.B_TAIKO_TOKEN, false), + TAIKO_TOKEN_NOT_USED_AS_BOND_TOKEN() + ); + bytes memory data = abi.encodeCall(ProverSet.init, (owner(), address(this), addressManager)); proverSet_ = address(new ERC1967Proxy(resolve(LibStrings.B_PROVER_SET, false), data)); diff --git a/packages/protocol/contracts/shared/common/LibStrings.sol b/packages/protocol/contracts/shared/common/LibStrings.sol index b4e6093bfbe..d7058f2de39 100644 --- a/packages/protocol/contracts/shared/common/LibStrings.sol +++ b/packages/protocol/contracts/shared/common/LibStrings.sol @@ -5,6 +5,7 @@ pragma solidity ^0.8.24; /// @custom:security-contact security@taiko.xyz library LibStrings { bytes32 internal constant B_AUTOMATA_DCAP_ATTESTATION = bytes32("automata_dcap_attestation"); + bytes32 internal constant B_BOND_TOKEN = bytes32("bond_token"); bytes32 internal constant B_BRIDGE = bytes32("bridge"); bytes32 internal constant B_BRIDGE_WATCHDOG = bytes32("bridge_watchdog"); bytes32 internal constant B_BRIDGED_ERC1155 = bytes32("bridged_erc1155"); diff --git a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol index 085fbd47b2e..de02f6254c7 100644 --- a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol +++ b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol @@ -155,7 +155,10 @@ contract DeployProtocolOnL1 is DeployCapability { ), registerTo: sharedAddressManager }); + } else { + register(sharedAddressManager, "taiko_token", taikoToken); } + register(sharedAddressManager, "bond_token", taikoToken); // Deploy Bridging contracts deployProxy({ @@ -274,6 +277,7 @@ contract DeployProtocolOnL1 is DeployCapability { // --------------------------------------------------------------- // Register shared contracts in the new rollup copyRegister(rollupAddressManager, _sharedAddressManager, "taiko_token"); + copyRegister(rollupAddressManager, _sharedAddressManager, "bond_token"); copyRegister(rollupAddressManager, _sharedAddressManager, "signal_service"); copyRegister(rollupAddressManager, _sharedAddressManager, "bridge"); @@ -340,7 +344,7 @@ contract DeployProtocolOnL1 is DeployCapability { data: abi.encodeCall(GuardianProver.init, (address(0), rollupAddressManager)) }); - GuardianProver(guardianProverMinority).enableTaikoTokenAllowance(true); + GuardianProver(guardianProverMinority).enableBondAllowance(true); address guardianProver = deployProxy({ name: "guardian_prover", diff --git a/packages/protocol/test/layer1/based/MockTaikoL1.sol b/packages/protocol/test/layer1/based/MockTaikoL1.sol index 2deb5cef503..82e50637655 100644 --- a/packages/protocol/test/layer1/based/MockTaikoL1.sol +++ b/packages/protocol/test/layer1/based/MockTaikoL1.sol @@ -39,7 +39,7 @@ contract MockTaikoL1 is ITaikoL1 { function pauseProving(bool _pause) external virtual { } - function depositBond(uint256 _amount) external virtual { } + function depositBond(uint256 _amount) external payable virtual { } function withdrawBond(uint256 _amount) external virtual { } diff --git a/packages/protocol/test/layer1/based/TaikoL1TestBase.sol b/packages/protocol/test/layer1/based/TaikoL1TestBase.sol index b199dc59c7a..49c0d6e32df 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestBase.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestBase.sol @@ -105,11 +105,12 @@ abstract contract TaikoL1TestBase is TaikoTest { registerTo: address(addressManager) }) ); + registerAddress("bond_token", address(tko)); L1.init(address(0), address(addressManager), GENESIS_BLOCK_HASH, false); mine(1); - gp.enableTaikoTokenAllowance(true); + gp.enableBondAllowance(true); printVariables("init "); } diff --git a/packages/protocol/test/layer1/team/tokenunlock/TokenUnlock.t.sol b/packages/protocol/test/layer1/team/tokenunlock/TokenUnlock.t.sol index be96bb0a957..1bac31403c8 100644 --- a/packages/protocol/test/layer1/team/tokenunlock/TokenUnlock.t.sol +++ b/packages/protocol/test/layer1/team/tokenunlock/TokenUnlock.t.sol @@ -48,6 +48,7 @@ contract TestTokenUnlock is TaikoTest { }) ); + addressManager.setAddress(uint64(block.chainid), "bond_token", address(tko)); addressManager.setAddress(uint64(block.chainid), "taiko_token", address(tko)); addressManager.setAddress(uint64(block.chainid), "assignment_hook", assignmentHook); addressManager.setAddress(uint64(block.chainid), "taiko", taikoL1); From 71cfc5ce1ef06dcf099a4ce9b22bea6100406148 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 4 Nov 2024 10:33:40 +0800 Subject: [PATCH 131/205] feat(taiko-client): update Go contract bindings (#18381) --- packages/taiko-client/bindings/.githead | 2 +- .../bindings/gen_lib_proposing.go | 293 +------ .../taiko-client/bindings/gen_lib_proving.go | 157 +++- .../bindings/gen_lib_verifying.go | 303 +------ .../taiko-client/bindings/gen_taiko_l1.go | 787 ++++++++++++------ .../bindings/gen_tier_provider.go | 50 +- 6 files changed, 745 insertions(+), 847 deletions(-) diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead index 34b5ba1cba0..8284074ae88 100644 --- a/packages/taiko-client/bindings/.githead +++ b/packages/taiko-client/bindings/.githead @@ -1 +1 @@ -6b03929ae41f15c3a36b514cec3f8e91e64e8fab +bbd69ca583257ade30ac9ea2601509af5bc0789a diff --git a/packages/taiko-client/bindings/gen_lib_proposing.go b/packages/taiko-client/bindings/gen_lib_proposing.go index 182dadc0a2b..133643b6ce6 100644 --- a/packages/taiko-client/bindings/gen_lib_proposing.go +++ b/packages/taiko-client/bindings/gen_lib_proposing.go @@ -31,7 +31,7 @@ var ( // LibProposingMetaData contains all meta data concerning the LibProposing contract. var LibProposingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_ANCHOR_BLOCK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CUSTOM_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIMESTAMP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_ANCHOR_BLOCK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CUSTOM_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIMESTAMP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]}]", } // LibProposingABI is the input ABI used to generate the binding from. @@ -325,297 +325,6 @@ func (_LibProposing *LibProposingFilterer) ParseBlockProposedV2(log types.Log) ( return event, nil } -// LibProposingBondDebitedIterator is returned from FilterBondDebited and is used to iterate over the raw logs and unpacked data for BondDebited events raised by the LibProposing contract. -type LibProposingBondDebitedIterator struct { - Event *LibProposingBondDebited // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *LibProposingBondDebitedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(LibProposingBondDebited) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(LibProposingBondDebited) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *LibProposingBondDebitedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *LibProposingBondDebitedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// LibProposingBondDebited represents a BondDebited event raised by the LibProposing contract. -type LibProposingBondDebited struct { - User common.Address - BlockId *big.Int - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBondDebited is a free log retrieval operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. -// -// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) -func (_LibProposing *LibProposingFilterer) FilterBondDebited(opts *bind.FilterOpts, user []common.Address) (*LibProposingBondDebitedIterator, error) { - - var userRule []interface{} - for _, userItem := range user { - userRule = append(userRule, userItem) - } - - logs, sub, err := _LibProposing.contract.FilterLogs(opts, "BondDebited", userRule) - if err != nil { - return nil, err - } - return &LibProposingBondDebitedIterator{contract: _LibProposing.contract, event: "BondDebited", logs: logs, sub: sub}, nil -} - -// WatchBondDebited is a free log subscription operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. -// -// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) -func (_LibProposing *LibProposingFilterer) WatchBondDebited(opts *bind.WatchOpts, sink chan<- *LibProposingBondDebited, user []common.Address) (event.Subscription, error) { - - var userRule []interface{} - for _, userItem := range user { - userRule = append(userRule, userItem) - } - - logs, sub, err := _LibProposing.contract.WatchLogs(opts, "BondDebited", userRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(LibProposingBondDebited) - if err := _LibProposing.contract.UnpackLog(event, "BondDebited", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBondDebited is a log parse operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. -// -// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) -func (_LibProposing *LibProposingFilterer) ParseBondDebited(log types.Log) (*LibProposingBondDebited, error) { - event := new(LibProposingBondDebited) - if err := _LibProposing.contract.UnpackLog(event, "BondDebited", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// LibProposingBondDepositedIterator is returned from FilterBondDeposited and is used to iterate over the raw logs and unpacked data for BondDeposited events raised by the LibProposing contract. -type LibProposingBondDepositedIterator struct { - Event *LibProposingBondDeposited // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *LibProposingBondDepositedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(LibProposingBondDeposited) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(LibProposingBondDeposited) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *LibProposingBondDepositedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *LibProposingBondDepositedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// LibProposingBondDeposited represents a BondDeposited event raised by the LibProposing contract. -type LibProposingBondDeposited struct { - User common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBondDeposited is a free log retrieval operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. -// -// Solidity: event BondDeposited(address indexed user, uint256 amount) -func (_LibProposing *LibProposingFilterer) FilterBondDeposited(opts *bind.FilterOpts, user []common.Address) (*LibProposingBondDepositedIterator, error) { - - var userRule []interface{} - for _, userItem := range user { - userRule = append(userRule, userItem) - } - - logs, sub, err := _LibProposing.contract.FilterLogs(opts, "BondDeposited", userRule) - if err != nil { - return nil, err - } - return &LibProposingBondDepositedIterator{contract: _LibProposing.contract, event: "BondDeposited", logs: logs, sub: sub}, nil -} - -// WatchBondDeposited is a free log subscription operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. -// -// Solidity: event BondDeposited(address indexed user, uint256 amount) -func (_LibProposing *LibProposingFilterer) WatchBondDeposited(opts *bind.WatchOpts, sink chan<- *LibProposingBondDeposited, user []common.Address) (event.Subscription, error) { - - var userRule []interface{} - for _, userItem := range user { - userRule = append(userRule, userItem) - } - - logs, sub, err := _LibProposing.contract.WatchLogs(opts, "BondDeposited", userRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(LibProposingBondDeposited) - if err := _LibProposing.contract.UnpackLog(event, "BondDeposited", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBondDeposited is a log parse operation binding the contract event 0x8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db. -// -// Solidity: event BondDeposited(address indexed user, uint256 amount) -func (_LibProposing *LibProposingFilterer) ParseBondDeposited(log types.Log) (*LibProposingBondDeposited, error) { - event := new(LibProposingBondDeposited) - if err := _LibProposing.contract.UnpackLog(event, "BondDeposited", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // LibProposingCalldataTxListIterator is returned from FilterCalldataTxList and is used to iterate over the raw logs and unpacked data for CalldataTxList events raised by the LibProposing contract. type LibProposingCalldataTxListIterator struct { Event *LibProposingCalldataTxList // Event containing the contract specifics and raw log diff --git a/packages/taiko-client/bindings/gen_lib_proving.go b/packages/taiko-client/bindings/gen_lib_proving.go index b4a31484e70..45ae50c4a40 100644 --- a/packages/taiko-client/bindings/gen_lib_proving.go +++ b/packages/taiko-client/bindings/gen_lib_proving.go @@ -31,7 +31,7 @@ var ( // LibProvingMetaData contains all meta data concerning the LibProving contract. var LibProvingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_DIFF_VERIFIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_DIFF_VERIFIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", } // LibProvingABI is the input ABI used to generate the binding from. @@ -180,6 +180,161 @@ func (_LibProving *LibProvingTransactorRaw) Transact(opts *bind.TransactOpts, me return _LibProving.Contract.contract.Transact(opts, method, params...) } +// LibProvingBlockVerifiedV2Iterator is returned from FilterBlockVerifiedV2 and is used to iterate over the raw logs and unpacked data for BlockVerifiedV2 events raised by the LibProving contract. +type LibProvingBlockVerifiedV2Iterator struct { + Event *LibProvingBlockVerifiedV2 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LibProvingBlockVerifiedV2Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LibProvingBlockVerifiedV2) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LibProvingBlockVerifiedV2) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LibProvingBlockVerifiedV2Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LibProvingBlockVerifiedV2Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LibProvingBlockVerifiedV2 represents a BlockVerifiedV2 event raised by the LibProving contract. +type LibProvingBlockVerifiedV2 struct { + BlockId *big.Int + Prover common.Address + BlockHash [32]byte + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockVerifiedV2 is a free log retrieval operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_LibProving *LibProvingFilterer) FilterBlockVerifiedV2(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*LibProvingBlockVerifiedV2Iterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _LibProving.contract.FilterLogs(opts, "BlockVerifiedV2", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return &LibProvingBlockVerifiedV2Iterator{contract: _LibProving.contract, event: "BlockVerifiedV2", logs: logs, sub: sub}, nil +} + +// WatchBlockVerifiedV2 is a free log subscription operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_LibProving *LibProvingFilterer) WatchBlockVerifiedV2(opts *bind.WatchOpts, sink chan<- *LibProvingBlockVerifiedV2, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _LibProving.contract.WatchLogs(opts, "BlockVerifiedV2", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LibProvingBlockVerifiedV2) + if err := _LibProving.contract.UnpackLog(event, "BlockVerifiedV2", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockVerifiedV2 is a log parse operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. +// +// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) +func (_LibProving *LibProvingFilterer) ParseBlockVerifiedV2(log types.Log) (*LibProvingBlockVerifiedV2, error) { + event := new(LibProvingBlockVerifiedV2) + if err := _LibProving.contract.UnpackLog(event, "BlockVerifiedV2", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // LibProvingBondCreditedIterator is returned from FilterBondCredited and is used to iterate over the raw logs and unpacked data for BondCredited events raised by the LibProving contract. type LibProvingBondCreditedIterator struct { Event *LibProvingBondCredited // Event containing the contract specifics and raw log diff --git a/packages/taiko-client/bindings/gen_lib_verifying.go b/packages/taiko-client/bindings/gen_lib_verifying.go index 088fa79a641..92626c25e59 100644 --- a/packages/taiko-client/bindings/gen_lib_verifying.go +++ b/packages/taiko-client/bindings/gen_lib_verifying.go @@ -31,7 +31,7 @@ var ( // LibVerifyingMetaData contains all meta data concerning the LibVerifying contract. var LibVerifyingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", + ABI: "[{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]}]", } // LibVerifyingABI is the input ABI used to generate the binding from. @@ -179,304 +179,3 @@ func (_LibVerifying *LibVerifyingTransactorRaw) Transfer(opts *bind.TransactOpts func (_LibVerifying *LibVerifyingTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { return _LibVerifying.Contract.contract.Transact(opts, method, params...) } - -// LibVerifyingBlockVerifiedV2Iterator is returned from FilterBlockVerifiedV2 and is used to iterate over the raw logs and unpacked data for BlockVerifiedV2 events raised by the LibVerifying contract. -type LibVerifyingBlockVerifiedV2Iterator struct { - Event *LibVerifyingBlockVerifiedV2 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *LibVerifyingBlockVerifiedV2Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(LibVerifyingBlockVerifiedV2) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(LibVerifyingBlockVerifiedV2) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *LibVerifyingBlockVerifiedV2Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *LibVerifyingBlockVerifiedV2Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// LibVerifyingBlockVerifiedV2 represents a BlockVerifiedV2 event raised by the LibVerifying contract. -type LibVerifyingBlockVerifiedV2 struct { - BlockId *big.Int - Prover common.Address - BlockHash [32]byte - Tier uint16 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBlockVerifiedV2 is a free log retrieval operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. -// -// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) -func (_LibVerifying *LibVerifyingFilterer) FilterBlockVerifiedV2(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*LibVerifyingBlockVerifiedV2Iterator, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - - logs, sub, err := _LibVerifying.contract.FilterLogs(opts, "BlockVerifiedV2", blockIdRule, proverRule) - if err != nil { - return nil, err - } - return &LibVerifyingBlockVerifiedV2Iterator{contract: _LibVerifying.contract, event: "BlockVerifiedV2", logs: logs, sub: sub}, nil -} - -// WatchBlockVerifiedV2 is a free log subscription operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. -// -// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) -func (_LibVerifying *LibVerifyingFilterer) WatchBlockVerifiedV2(opts *bind.WatchOpts, sink chan<- *LibVerifyingBlockVerifiedV2, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - - logs, sub, err := _LibVerifying.contract.WatchLogs(opts, "BlockVerifiedV2", blockIdRule, proverRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(LibVerifyingBlockVerifiedV2) - if err := _LibVerifying.contract.UnpackLog(event, "BlockVerifiedV2", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBlockVerifiedV2 is a log parse operation binding the contract event 0xe5a390d9800811154279af0c1a80d3bdf558ea91f1301e7c6ec3c1ad83e80aef. -// -// Solidity: event BlockVerifiedV2(uint256 indexed blockId, address indexed prover, bytes32 blockHash, uint16 tier) -func (_LibVerifying *LibVerifyingFilterer) ParseBlockVerifiedV2(log types.Log) (*LibVerifyingBlockVerifiedV2, error) { - event := new(LibVerifyingBlockVerifiedV2) - if err := _LibVerifying.contract.UnpackLog(event, "BlockVerifiedV2", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// LibVerifyingBondCreditedIterator is returned from FilterBondCredited and is used to iterate over the raw logs and unpacked data for BondCredited events raised by the LibVerifying contract. -type LibVerifyingBondCreditedIterator struct { - Event *LibVerifyingBondCredited // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *LibVerifyingBondCreditedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(LibVerifyingBondCredited) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(LibVerifyingBondCredited) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *LibVerifyingBondCreditedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *LibVerifyingBondCreditedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// LibVerifyingBondCredited represents a BondCredited event raised by the LibVerifying contract. -type LibVerifyingBondCredited struct { - User common.Address - BlockId *big.Int - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBondCredited is a free log retrieval operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. -// -// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) -func (_LibVerifying *LibVerifyingFilterer) FilterBondCredited(opts *bind.FilterOpts, user []common.Address) (*LibVerifyingBondCreditedIterator, error) { - - var userRule []interface{} - for _, userItem := range user { - userRule = append(userRule, userItem) - } - - logs, sub, err := _LibVerifying.contract.FilterLogs(opts, "BondCredited", userRule) - if err != nil { - return nil, err - } - return &LibVerifyingBondCreditedIterator{contract: _LibVerifying.contract, event: "BondCredited", logs: logs, sub: sub}, nil -} - -// WatchBondCredited is a free log subscription operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. -// -// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) -func (_LibVerifying *LibVerifyingFilterer) WatchBondCredited(opts *bind.WatchOpts, sink chan<- *LibVerifyingBondCredited, user []common.Address) (event.Subscription, error) { - - var userRule []interface{} - for _, userItem := range user { - userRule = append(userRule, userItem) - } - - logs, sub, err := _LibVerifying.contract.WatchLogs(opts, "BondCredited", userRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(LibVerifyingBondCredited) - if err := _LibVerifying.contract.UnpackLog(event, "BondCredited", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBondCredited is a log parse operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. -// -// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) -func (_LibVerifying *LibVerifyingFilterer) ParseBondCredited(log types.Log) (*LibVerifyingBondCredited, error) { - event := new(LibVerifyingBondCredited) - if err := _LibVerifying.contract.UnpackLog(event, "BondCredited", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go index f916929026e..c50544445ba 100644 --- a/packages/taiko-client/bindings/gen_taiko_l1.go +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -169,7 +169,7 @@ type TaikoDataTransitionState struct { // TaikoL1ClientMetaData contains all meta data concerning the TaikoL1Client contract. var TaikoL1ClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init3\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondWithdrawn\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondWithdrawn\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init3\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondWithdrawn\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_ANCHOR_BLOCK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CUSTOM_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIMESTAMP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoL1ClientABI is the input ABI used to generate the binding from. @@ -2026,6 +2026,151 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockProposedV2(log types.Log) return event, nil } +// TaikoL1ClientBlockProposedV20Iterator is returned from FilterBlockProposedV20 and is used to iterate over the raw logs and unpacked data for BlockProposedV20 events raised by the TaikoL1Client contract. +type TaikoL1ClientBlockProposedV20Iterator struct { + Event *TaikoL1ClientBlockProposedV20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBlockProposedV20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBlockProposedV20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBlockProposedV20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBlockProposedV20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBlockProposedV20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBlockProposedV20 represents a BlockProposedV20 event raised by the TaikoL1Client contract. +type TaikoL1ClientBlockProposedV20 struct { + BlockId *big.Int + Meta TaikoDataBlockMetadataV2 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockProposedV20 is a free log retrieval operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. +// +// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockProposedV20(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientBlockProposedV20Iterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockProposedV20", blockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBlockProposedV20Iterator{contract: _TaikoL1Client.contract, event: "BlockProposedV20", logs: logs, sub: sub}, nil +} + +// WatchBlockProposedV20 is a free log subscription operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. +// +// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockProposedV20(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockProposedV20, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockProposedV20", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBlockProposedV20) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockProposedV20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockProposedV20 is a log parse operation binding the contract event 0xefe9c6c0b5cbd9c0eed2d1e9c00cfc1a010d6f1aff50f7facd665a639b622b26. +// +// Solidity: event BlockProposedV2(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address,uint96,uint64,uint64,uint32,uint32,uint8,(uint8,uint8,uint32,uint64,uint32)) meta) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockProposedV20(log types.Log) (*TaikoL1ClientBlockProposedV20, error) { + event := new(TaikoL1ClientBlockProposedV20) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockProposedV20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // TaikoL1ClientBlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the TaikoL1Client contract. type TaikoL1ClientBlockVerifiedIterator struct { Event *TaikoL1ClientBlockVerified // Event containing the contract specifics and raw log @@ -2492,9 +2637,301 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerifiedV20(log types.Log return event, nil } -// TaikoL1ClientBondCreditedIterator is returned from FilterBondCredited and is used to iterate over the raw logs and unpacked data for BondCredited events raised by the TaikoL1Client contract. -type TaikoL1ClientBondCreditedIterator struct { - Event *TaikoL1ClientBondCredited // Event containing the contract specifics and raw log +// TaikoL1ClientBondCreditedIterator is returned from FilterBondCredited and is used to iterate over the raw logs and unpacked data for BondCredited events raised by the TaikoL1Client contract. +type TaikoL1ClientBondCreditedIterator struct { + Event *TaikoL1ClientBondCredited // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBondCreditedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBondCredited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBondCredited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBondCreditedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBondCreditedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBondCredited represents a BondCredited event raised by the TaikoL1Client contract. +type TaikoL1ClientBondCredited struct { + User common.Address + BlockId *big.Int + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBondCredited is a free log retrieval operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. +// +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondCredited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondCreditedIterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondCredited", userRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBondCreditedIterator{contract: _TaikoL1Client.contract, event: "BondCredited", logs: logs, sub: sub}, nil +} + +// WatchBondCredited is a free log subscription operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. +// +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondCredited, user []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondCredited", userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBondCredited) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBondCredited is a log parse operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. +// +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondCredited(log types.Log) (*TaikoL1ClientBondCredited, error) { + event := new(TaikoL1ClientBondCredited) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientBondCredited0Iterator is returned from FilterBondCredited0 and is used to iterate over the raw logs and unpacked data for BondCredited0 events raised by the TaikoL1Client contract. +type TaikoL1ClientBondCredited0Iterator struct { + Event *TaikoL1ClientBondCredited0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBondCredited0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBondCredited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBondCredited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBondCredited0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBondCredited0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBondCredited0 represents a BondCredited0 event raised by the TaikoL1Client contract. +type TaikoL1ClientBondCredited0 struct { + User common.Address + BlockId *big.Int + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBondCredited0 is a free log retrieval operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. +// +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondCredited0(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondCredited0Iterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondCredited0", userRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBondCredited0Iterator{contract: _TaikoL1Client.contract, event: "BondCredited0", logs: logs, sub: sub}, nil +} + +// WatchBondCredited0 is a free log subscription operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. +// +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondCredited0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondCredited0, user []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondCredited0", userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBondCredited0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBondCredited0 is a log parse operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. +// +// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondCredited0(log types.Log) (*TaikoL1ClientBondCredited0, error) { + event := new(TaikoL1ClientBondCredited0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientBondDebitedIterator is returned from FilterBondDebited and is used to iterate over the raw logs and unpacked data for BondDebited events raised by the TaikoL1Client contract. +type TaikoL1ClientBondDebitedIterator struct { + Event *TaikoL1ClientBondDebited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2508,7 +2945,7 @@ type TaikoL1ClientBondCreditedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1ClientBondCreditedIterator) Next() bool { +func (it *TaikoL1ClientBondDebitedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2517,7 +2954,7 @@ func (it *TaikoL1ClientBondCreditedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBondCredited) + it.Event = new(TaikoL1ClientBondDebited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2532,7 +2969,7 @@ func (it *TaikoL1ClientBondCreditedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBondCredited) + it.Event = new(TaikoL1ClientBondDebited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2548,53 +2985,53 @@ func (it *TaikoL1ClientBondCreditedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1ClientBondCreditedIterator) Error() error { +func (it *TaikoL1ClientBondDebitedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1ClientBondCreditedIterator) Close() error { +func (it *TaikoL1ClientBondDebitedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1ClientBondCredited represents a BondCredited event raised by the TaikoL1Client contract. -type TaikoL1ClientBondCredited struct { +// TaikoL1ClientBondDebited represents a BondDebited event raised by the TaikoL1Client contract. +type TaikoL1ClientBondDebited struct { User common.Address BlockId *big.Int Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterBondCredited is a free log retrieval operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. +// FilterBondDebited is a free log retrieval operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondCredited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondCreditedIterator, error) { +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondDebited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondDebitedIterator, error) { var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) } - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondCredited", userRule) + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondDebited", userRule) if err != nil { return nil, err } - return &TaikoL1ClientBondCreditedIterator{contract: _TaikoL1Client.contract, event: "BondCredited", logs: logs, sub: sub}, nil + return &TaikoL1ClientBondDebitedIterator{contract: _TaikoL1Client.contract, event: "BondDebited", logs: logs, sub: sub}, nil } -// WatchBondCredited is a free log subscription operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. +// WatchBondDebited is a free log subscription operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondCredited, user []common.Address) (event.Subscription, error) { +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondDebited, user []common.Address) (event.Subscription, error) { var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) } - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondCredited", userRule) + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondDebited", userRule) if err != nil { return nil, err } @@ -2604,8 +3041,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondCredited(opts *bind.WatchO select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1ClientBondCredited) - if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited", log); err != nil { + event := new(TaikoL1ClientBondDebited) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited", log); err != nil { return err } event.Raw = log @@ -2626,21 +3063,21 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondCredited(opts *bind.WatchO }), nil } -// ParseBondCredited is a log parse operation binding the contract event 0x767672484792852973001cc22546fd96c3d7466da3c383e42741793dce5e4169. +// ParseBondDebited is a log parse operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // -// Solidity: event BondCredited(address indexed user, uint256 blockId, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondCredited(log types.Log) (*TaikoL1ClientBondCredited, error) { - event := new(TaikoL1ClientBondCredited) - if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited", log); err != nil { +// Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondDebited(log types.Log) (*TaikoL1ClientBondDebited, error) { + event := new(TaikoL1ClientBondDebited) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1ClientBondDebitedIterator is returned from FilterBondDebited and is used to iterate over the raw logs and unpacked data for BondDebited events raised by the TaikoL1Client contract. -type TaikoL1ClientBondDebitedIterator struct { - Event *TaikoL1ClientBondDebited // Event containing the contract specifics and raw log +// TaikoL1ClientBondDebited0Iterator is returned from FilterBondDebited0 and is used to iterate over the raw logs and unpacked data for BondDebited0 events raised by the TaikoL1Client contract. +type TaikoL1ClientBondDebited0Iterator struct { + Event *TaikoL1ClientBondDebited0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2654,7 +3091,7 @@ type TaikoL1ClientBondDebitedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1ClientBondDebitedIterator) Next() bool { +func (it *TaikoL1ClientBondDebited0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2663,7 +3100,7 @@ func (it *TaikoL1ClientBondDebitedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBondDebited) + it.Event = new(TaikoL1ClientBondDebited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2678,7 +3115,7 @@ func (it *TaikoL1ClientBondDebitedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBondDebited) + it.Event = new(TaikoL1ClientBondDebited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2694,53 +3131,53 @@ func (it *TaikoL1ClientBondDebitedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1ClientBondDebitedIterator) Error() error { +func (it *TaikoL1ClientBondDebited0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1ClientBondDebitedIterator) Close() error { +func (it *TaikoL1ClientBondDebited0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1ClientBondDebited represents a BondDebited event raised by the TaikoL1Client contract. -type TaikoL1ClientBondDebited struct { +// TaikoL1ClientBondDebited0 represents a BondDebited0 event raised by the TaikoL1Client contract. +type TaikoL1ClientBondDebited0 struct { User common.Address BlockId *big.Int Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterBondDebited is a free log retrieval operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. +// FilterBondDebited0 is a free log retrieval operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // // Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondDebited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondDebitedIterator, error) { +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondDebited0(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondDebited0Iterator, error) { var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) } - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondDebited", userRule) + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondDebited0", userRule) if err != nil { return nil, err } - return &TaikoL1ClientBondDebitedIterator{contract: _TaikoL1Client.contract, event: "BondDebited", logs: logs, sub: sub}, nil + return &TaikoL1ClientBondDebited0Iterator{contract: _TaikoL1Client.contract, event: "BondDebited0", logs: logs, sub: sub}, nil } -// WatchBondDebited is a free log subscription operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. +// WatchBondDebited0 is a free log subscription operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // // Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondDebited, user []common.Address) (event.Subscription, error) { +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDebited0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondDebited0, user []common.Address) (event.Subscription, error) { var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) } - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondDebited", userRule) + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondDebited0", userRule) if err != nil { return nil, err } @@ -2750,8 +3187,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDebited(opts *bind.WatchOp select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1ClientBondDebited) - if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited", log); err != nil { + event := new(TaikoL1ClientBondDebited0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited0", log); err != nil { return err } event.Raw = log @@ -2772,12 +3209,12 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDebited(opts *bind.WatchOp }), nil } -// ParseBondDebited is a log parse operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. +// ParseBondDebited0 is a log parse operation binding the contract event 0xf4636413c66bd7ef2a1d735c30d22543acb0fba1b0892503bef0734b237c3f37. // // Solidity: event BondDebited(address indexed user, uint256 blockId, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondDebited(log types.Log) (*TaikoL1ClientBondDebited, error) { - event := new(TaikoL1ClientBondDebited) - if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited", log); err != nil { +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondDebited0(log types.Log) (*TaikoL1ClientBondDebited0, error) { + event := new(TaikoL1ClientBondDebited0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited0", log); err != nil { return nil, err } event.Raw = log @@ -3219,9 +3656,9 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondWithdrawn(log types.Log) ( return event, nil } -// TaikoL1ClientBondWithdrawn0Iterator is returned from FilterBondWithdrawn0 and is used to iterate over the raw logs and unpacked data for BondWithdrawn0 events raised by the TaikoL1Client contract. -type TaikoL1ClientBondWithdrawn0Iterator struct { - Event *TaikoL1ClientBondWithdrawn0 // Event containing the contract specifics and raw log +// TaikoL1ClientCalldataTxListIterator is returned from FilterCalldataTxList and is used to iterate over the raw logs and unpacked data for CalldataTxList events raised by the TaikoL1Client contract. +type TaikoL1ClientCalldataTxListIterator struct { + Event *TaikoL1ClientCalldataTxList // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3235,7 +3672,7 @@ type TaikoL1ClientBondWithdrawn0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1ClientBondWithdrawn0Iterator) Next() bool { +func (it *TaikoL1ClientCalldataTxListIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3244,7 +3681,7 @@ func (it *TaikoL1ClientBondWithdrawn0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBondWithdrawn0) + it.Event = new(TaikoL1ClientCalldataTxList) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3259,7 +3696,7 @@ func (it *TaikoL1ClientBondWithdrawn0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1ClientBondWithdrawn0) + it.Event = new(TaikoL1ClientCalldataTxList) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3275,52 +3712,52 @@ func (it *TaikoL1ClientBondWithdrawn0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1ClientBondWithdrawn0Iterator) Error() error { +func (it *TaikoL1ClientCalldataTxListIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1ClientBondWithdrawn0Iterator) Close() error { +func (it *TaikoL1ClientCalldataTxListIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1ClientBondWithdrawn0 represents a BondWithdrawn0 event raised by the TaikoL1Client contract. -type TaikoL1ClientBondWithdrawn0 struct { - User common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos +// TaikoL1ClientCalldataTxList represents a CalldataTxList event raised by the TaikoL1Client contract. +type TaikoL1ClientCalldataTxList struct { + BlockId *big.Int + TxList []byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBondWithdrawn0 is a free log retrieval operation binding the contract event 0x0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b455. +// FilterCalldataTxList is a free log retrieval operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. // -// Solidity: event BondWithdrawn(address indexed user, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondWithdrawn0(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondWithdrawn0Iterator, error) { +// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterCalldataTxList(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientCalldataTxListIterator, error) { - var userRule []interface{} - for _, userItem := range user { - userRule = append(userRule, userItem) + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) } - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondWithdrawn0", userRule) + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "CalldataTxList", blockIdRule) if err != nil { return nil, err } - return &TaikoL1ClientBondWithdrawn0Iterator{contract: _TaikoL1Client.contract, event: "BondWithdrawn0", logs: logs, sub: sub}, nil + return &TaikoL1ClientCalldataTxListIterator{contract: _TaikoL1Client.contract, event: "CalldataTxList", logs: logs, sub: sub}, nil } -// WatchBondWithdrawn0 is a free log subscription operation binding the contract event 0x0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b455. +// WatchCalldataTxList is a free log subscription operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. // -// Solidity: event BondWithdrawn(address indexed user, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondWithdrawn0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondWithdrawn0, user []common.Address) (event.Subscription, error) { +// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientCalldataTxList, blockId []*big.Int) (event.Subscription, error) { - var userRule []interface{} - for _, userItem := range user { - userRule = append(userRule, userItem) + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) } - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondWithdrawn0", userRule) + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "CalldataTxList", blockIdRule) if err != nil { return nil, err } @@ -3330,8 +3767,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondWithdrawn0(opts *bind.Watc select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1ClientBondWithdrawn0) - if err := _TaikoL1Client.contract.UnpackLog(event, "BondWithdrawn0", log); err != nil { + event := new(TaikoL1ClientCalldataTxList) + if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList", log); err != nil { return err } event.Raw = log @@ -3352,21 +3789,21 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondWithdrawn0(opts *bind.Watc }), nil } -// ParseBondWithdrawn0 is a log parse operation binding the contract event 0x0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b455. +// ParseCalldataTxList is a log parse operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. // -// Solidity: event BondWithdrawn(address indexed user, uint256 amount) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondWithdrawn0(log types.Log) (*TaikoL1ClientBondWithdrawn0, error) { - event := new(TaikoL1ClientBondWithdrawn0) - if err := _TaikoL1Client.contract.UnpackLog(event, "BondWithdrawn0", log); err != nil { +// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseCalldataTxList(log types.Log) (*TaikoL1ClientCalldataTxList, error) { + event := new(TaikoL1ClientCalldataTxList) + if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1ClientCalldataTxListIterator is returned from FilterCalldataTxList and is used to iterate over the raw logs and unpacked data for CalldataTxList events raised by the TaikoL1Client contract. -type TaikoL1ClientCalldataTxListIterator struct { - Event *TaikoL1ClientCalldataTxList // Event containing the contract specifics and raw log +// TaikoL1ClientCalldataTxList0Iterator is returned from FilterCalldataTxList0 and is used to iterate over the raw logs and unpacked data for CalldataTxList0 events raised by the TaikoL1Client contract. +type TaikoL1ClientCalldataTxList0Iterator struct { + Event *TaikoL1ClientCalldataTxList0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3380,7 +3817,7 @@ type TaikoL1ClientCalldataTxListIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1ClientCalldataTxListIterator) Next() bool { +func (it *TaikoL1ClientCalldataTxList0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3389,7 +3826,7 @@ func (it *TaikoL1ClientCalldataTxListIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1ClientCalldataTxList) + it.Event = new(TaikoL1ClientCalldataTxList0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3404,7 +3841,7 @@ func (it *TaikoL1ClientCalldataTxListIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1ClientCalldataTxList) + it.Event = new(TaikoL1ClientCalldataTxList0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3420,52 +3857,52 @@ func (it *TaikoL1ClientCalldataTxListIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1ClientCalldataTxListIterator) Error() error { +func (it *TaikoL1ClientCalldataTxList0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1ClientCalldataTxListIterator) Close() error { +func (it *TaikoL1ClientCalldataTxList0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1ClientCalldataTxList represents a CalldataTxList event raised by the TaikoL1Client contract. -type TaikoL1ClientCalldataTxList struct { +// TaikoL1ClientCalldataTxList0 represents a CalldataTxList0 event raised by the TaikoL1Client contract. +type TaikoL1ClientCalldataTxList0 struct { BlockId *big.Int TxList []byte Raw types.Log // Blockchain specific contextual infos } -// FilterCalldataTxList is a free log retrieval operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. +// FilterCalldataTxList0 is a free log retrieval operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. // // Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterCalldataTxList(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientCalldataTxListIterator, error) { +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterCalldataTxList0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientCalldataTxList0Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "CalldataTxList", blockIdRule) + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "CalldataTxList0", blockIdRule) if err != nil { return nil, err } - return &TaikoL1ClientCalldataTxListIterator{contract: _TaikoL1Client.contract, event: "CalldataTxList", logs: logs, sub: sub}, nil + return &TaikoL1ClientCalldataTxList0Iterator{contract: _TaikoL1Client.contract, event: "CalldataTxList0", logs: logs, sub: sub}, nil } -// WatchCalldataTxList is a free log subscription operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. +// WatchCalldataTxList0 is a free log subscription operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. // // Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientCalldataTxList, blockId []*big.Int) (event.Subscription, error) { +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientCalldataTxList0, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "CalldataTxList", blockIdRule) + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "CalldataTxList0", blockIdRule) if err != nil { return nil, err } @@ -3475,8 +3912,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList(opts *bind.Watc select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1ClientCalldataTxList) - if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList", log); err != nil { + event := new(TaikoL1ClientCalldataTxList0) + if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList0", log); err != nil { return err } event.Raw = log @@ -3497,12 +3934,12 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList(opts *bind.Watc }), nil } -// ParseCalldataTxList is a log parse operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. +// ParseCalldataTxList0 is a log parse operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418. // // Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseCalldataTxList(log types.Log) (*TaikoL1ClientCalldataTxList, error) { - event := new(TaikoL1ClientCalldataTxList) - if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList", log); err != nil { +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseCalldataTxList0(log types.Log) (*TaikoL1ClientCalldataTxList0, error) { + event := new(TaikoL1ClientCalldataTxList0) + if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList0", log); err != nil { return nil, err } event.Raw = log @@ -4217,140 +4654,6 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseProvingPaused(log types.Log) ( return event, nil } -// TaikoL1ClientProvingPaused0Iterator is returned from FilterProvingPaused0 and is used to iterate over the raw logs and unpacked data for ProvingPaused0 events raised by the TaikoL1Client contract. -type TaikoL1ClientProvingPaused0Iterator struct { - Event *TaikoL1ClientProvingPaused0 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TaikoL1ClientProvingPaused0Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TaikoL1ClientProvingPaused0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TaikoL1ClientProvingPaused0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1ClientProvingPaused0Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TaikoL1ClientProvingPaused0Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TaikoL1ClientProvingPaused0 represents a ProvingPaused0 event raised by the TaikoL1Client contract. -type TaikoL1ClientProvingPaused0 struct { - Paused bool - Raw types.Log // Blockchain specific contextual infos -} - -// FilterProvingPaused0 is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. -// -// Solidity: event ProvingPaused(bool paused) -func (_TaikoL1Client *TaikoL1ClientFilterer) FilterProvingPaused0(opts *bind.FilterOpts) (*TaikoL1ClientProvingPaused0Iterator, error) { - - logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "ProvingPaused0") - if err != nil { - return nil, err - } - return &TaikoL1ClientProvingPaused0Iterator{contract: _TaikoL1Client.contract, event: "ProvingPaused0", logs: logs, sub: sub}, nil -} - -// WatchProvingPaused0 is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. -// -// Solidity: event ProvingPaused(bool paused) -func (_TaikoL1Client *TaikoL1ClientFilterer) WatchProvingPaused0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientProvingPaused0) (event.Subscription, error) { - - logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "ProvingPaused0") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TaikoL1ClientProvingPaused0) - if err := _TaikoL1Client.contract.UnpackLog(event, "ProvingPaused0", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseProvingPaused0 is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. -// -// Solidity: event ProvingPaused(bool paused) -func (_TaikoL1Client *TaikoL1ClientFilterer) ParseProvingPaused0(log types.Log) (*TaikoL1ClientProvingPaused0, error) { - event := new(TaikoL1ClientProvingPaused0) - if err := _TaikoL1Client.contract.UnpackLog(event, "ProvingPaused0", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // TaikoL1ClientStateVariablesUpdatedIterator is returned from FilterStateVariablesUpdated and is used to iterate over the raw logs and unpacked data for StateVariablesUpdated events raised by the TaikoL1Client contract. type TaikoL1ClientStateVariablesUpdatedIterator struct { Event *TaikoL1ClientStateVariablesUpdated // Event containing the contract specifics and raw log diff --git a/packages/taiko-client/bindings/gen_tier_provider.go b/packages/taiko-client/bindings/gen_tier_provider.go index a2dcc851196..70209eb847e 100644 --- a/packages/taiko-client/bindings/gen_tier_provider.go +++ b/packages/taiko-client/bindings/gen_tier_provider.go @@ -31,16 +31,17 @@ var ( // ITierProviderTier is an auto generated low-level Go binding around an user-defined struct. type ITierProviderTier struct { - VerifierName [32]byte - ValidityBond *big.Int - ContestBond *big.Int - CooldownWindow *big.Int - ProvingWindow uint16 + VerifierName [32]byte + ValidityBond *big.Int + ContestBond *big.Int + CooldownWindow *big.Int + ProvingWindow uint16 + MaxBlocksToVerifyPerProof uint8 } // TierProviderMetaData contains all meta data concerning the TierProvider contract. var TierProviderMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"BOND_UNIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GRACE_PERIOD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinTier\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getProvider\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTier\",\"inputs\":[{\"name\":\"_tierId\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structITierProvider.Tier\",\"components\":[{\"name\":\"verifierName\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"cooldownWindow\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"provingWindow\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getTierIds\",\"inputs\":[],\"outputs\":[{\"name\":\"tiers_\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]}]", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_daoFallbackProposer\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BOND_UNIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DAO_FALLBACK_PROPOSER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GRACE_PERIOD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinTier\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getProvider\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTier\",\"inputs\":[{\"name\":\"_tierId\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structITierProvider.Tier\",\"components\":[{\"name\":\"verifierName\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"cooldownWindow\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"provingWindow\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maxBlocksToVerifyPerProof\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getTierIds\",\"inputs\":[],\"outputs\":[{\"name\":\"tiers_\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]}]", } // TierProviderABI is the input ABI used to generate the binding from. @@ -220,6 +221,37 @@ func (_TierProvider *TierProviderCallerSession) BONDUNIT() (*big.Int, error) { return _TierProvider.Contract.BONDUNIT(&_TierProvider.CallOpts) } +// DAOFALLBACKPROPOSER is a free data retrieval call binding the contract method 0xbf62514d. +// +// Solidity: function DAO_FALLBACK_PROPOSER() view returns(address) +func (_TierProvider *TierProviderCaller) DAOFALLBACKPROPOSER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "DAO_FALLBACK_PROPOSER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DAOFALLBACKPROPOSER is a free data retrieval call binding the contract method 0xbf62514d. +// +// Solidity: function DAO_FALLBACK_PROPOSER() view returns(address) +func (_TierProvider *TierProviderSession) DAOFALLBACKPROPOSER() (common.Address, error) { + return _TierProvider.Contract.DAOFALLBACKPROPOSER(&_TierProvider.CallOpts) +} + +// DAOFALLBACKPROPOSER is a free data retrieval call binding the contract method 0xbf62514d. +// +// Solidity: function DAO_FALLBACK_PROPOSER() view returns(address) +func (_TierProvider *TierProviderCallerSession) DAOFALLBACKPROPOSER() (common.Address, error) { + return _TierProvider.Contract.DAOFALLBACKPROPOSER(&_TierProvider.CallOpts) +} + // GRACEPERIOD is a free data retrieval call binding the contract method 0xc1a287e2. // // Solidity: function GRACE_PERIOD() view returns(uint16) @@ -315,7 +347,7 @@ func (_TierProvider *TierProviderCallerSession) GetProvider(arg0 *big.Int) (comm // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16)) +// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16,uint8)) func (_TierProvider *TierProviderCaller) GetTier(opts *bind.CallOpts, _tierId uint16) (ITierProviderTier, error) { var out []interface{} err := _TierProvider.contract.Call(opts, &out, "getTier", _tierId) @@ -332,14 +364,14 @@ func (_TierProvider *TierProviderCaller) GetTier(opts *bind.CallOpts, _tierId ui // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16)) +// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16,uint8)) func (_TierProvider *TierProviderSession) GetTier(_tierId uint16) (ITierProviderTier, error) { return _TierProvider.Contract.GetTier(&_TierProvider.CallOpts, _tierId) } // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16)) +// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16,uint8)) func (_TierProvider *TierProviderCallerSession) GetTier(_tierId uint16) (ITierProviderTier, error) { return _TierProvider.Contract.GetTier(&_TierProvider.CallOpts, _tierId) } From 8dd14a1b4b21ce77ed3aac935b1d2c950e11e729 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 4 Nov 2024 11:12:07 +0800 Subject: [PATCH 132/205] feat(taiko-client): update Go contract bindings (#18384) --- packages/taiko-client/bindings/.githead | 2 +- .../bindings/gen_guardian_prover.go | 68 +++++++++---------- .../taiko-client/bindings/gen_lib_proving.go | 2 +- .../taiko-client/bindings/gen_prover_set.go | 23 ++++++- .../taiko-client/bindings/gen_taiko_l1.go | 67 ++++++++++++------ 5 files changed, 106 insertions(+), 56 deletions(-) diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead index 8284074ae88..e5421357157 100644 --- a/packages/taiko-client/bindings/.githead +++ b/packages/taiko-client/bindings/.githead @@ -1 +1 @@ -bbd69ca583257ade30ac9ea2601509af5bc0789a +71cfc5ce1ef06dcf099a4ce9b22bea6100406148 diff --git a/packages/taiko-client/bindings/gen_guardian_prover.go b/packages/taiko-client/bindings/gen_guardian_prover.go index c7b591b52c0..546b89e0554 100644 --- a/packages/taiko-client/bindings/gen_guardian_prover.go +++ b/packages/taiko-client/bindings/gen_guardian_prover.go @@ -60,7 +60,7 @@ type TaikoDataTierProof struct { // GuardianProverMetaData contains all meta data concerning the GuardianProver contract. var GuardianProverMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approvals\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proofHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"approvalBits\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveV2\",\"inputs\":[{\"name\":\"_metaV2\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"guardianIds\",\"inputs\":[{\"name\":\"guardian\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"guardians\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestProofHash\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGuardians\",\"inputs\":[{\"name\":\"_newGuardians\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_minGuardians\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"_clearData\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBatchProof\",\"inputs\":[{\"name\":\"_ctxs\",\"type\":\"tuple[]\",\"internalType\":\"structIVerifier.ContextV2[]\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approved\",\"inputs\":[{\"name\":\"operationId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"approvalBits\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"minGuardiansReached\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConflictingProofs\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"guardian\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"currentProofHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newProofHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardianApproval\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"proofData\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardiansUpdated\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"guardians\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approvals\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proofHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"approvalBits\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveV2\",\"inputs\":[{\"name\":\"_metaV2\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableBondAllowance\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProvingAutoPause\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"guardianIds\",\"inputs\":[{\"name\":\"guardian\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"guardians\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestProofHash\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseTaikoProving\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"provingAutoPauseEnabled\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGuardians\",\"inputs\":[{\"name\":\"_newGuardians\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_minGuardians\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"_clearData\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBatchProof\",\"inputs\":[{\"name\":\"_ctxs\",\"type\":\"tuple[]\",\"internalType\":\"structIVerifier.ContextV2[]\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approved\",\"inputs\":[{\"name\":\"operationId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"approvalBits\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"minGuardiansReached\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConflictingProofs\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"guardian\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"currentProofHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newProofHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardianApproval\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"proofData\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardiansUpdated\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"guardians\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingAutoPauseEnabled\",\"inputs\":[{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_BOND_NOT_ERC20\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GP_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // GuardianProverABI is the input ABI used to generate the binding from. @@ -867,6 +867,27 @@ func (_GuardianProver *GuardianProverTransactorSession) ApproveV2(_metaV2 TaikoD return _GuardianProver.Contract.ApproveV2(&_GuardianProver.TransactOpts, _metaV2, _tran, _proof) } +// EnableBondAllowance is a paid mutator transaction binding the contract method 0x640b4cac. +// +// Solidity: function enableBondAllowance(bool _enable) returns() +func (_GuardianProver *GuardianProverTransactor) EnableBondAllowance(opts *bind.TransactOpts, _enable bool) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "enableBondAllowance", _enable) +} + +// EnableBondAllowance is a paid mutator transaction binding the contract method 0x640b4cac. +// +// Solidity: function enableBondAllowance(bool _enable) returns() +func (_GuardianProver *GuardianProverSession) EnableBondAllowance(_enable bool) (*types.Transaction, error) { + return _GuardianProver.Contract.EnableBondAllowance(&_GuardianProver.TransactOpts, _enable) +} + +// EnableBondAllowance is a paid mutator transaction binding the contract method 0x640b4cac. +// +// Solidity: function enableBondAllowance(bool _enable) returns() +func (_GuardianProver *GuardianProverTransactorSession) EnableBondAllowance(_enable bool) (*types.Transaction, error) { + return _GuardianProver.Contract.EnableBondAllowance(&_GuardianProver.TransactOpts, _enable) +} + // EnableProvingAutoPause is a paid mutator transaction binding the contract method 0xe93640db. // // Solidity: function enableProvingAutoPause(bool _enable) returns() @@ -888,27 +909,6 @@ func (_GuardianProver *GuardianProverTransactorSession) EnableProvingAutoPause(_ return _GuardianProver.Contract.EnableProvingAutoPause(&_GuardianProver.TransactOpts, _enable) } -// EnableTaikoTokenAllowance is a paid mutator transaction binding the contract method 0x8e1bacd7. -// -// Solidity: function enableTaikoTokenAllowance(bool _enable) returns() -func (_GuardianProver *GuardianProverTransactor) EnableTaikoTokenAllowance(opts *bind.TransactOpts, _enable bool) (*types.Transaction, error) { - return _GuardianProver.contract.Transact(opts, "enableTaikoTokenAllowance", _enable) -} - -// EnableTaikoTokenAllowance is a paid mutator transaction binding the contract method 0x8e1bacd7. -// -// Solidity: function enableTaikoTokenAllowance(bool _enable) returns() -func (_GuardianProver *GuardianProverSession) EnableTaikoTokenAllowance(_enable bool) (*types.Transaction, error) { - return _GuardianProver.Contract.EnableTaikoTokenAllowance(&_GuardianProver.TransactOpts, _enable) -} - -// EnableTaikoTokenAllowance is a paid mutator transaction binding the contract method 0x8e1bacd7. -// -// Solidity: function enableTaikoTokenAllowance(bool _enable) returns() -func (_GuardianProver *GuardianProverTransactorSession) EnableTaikoTokenAllowance(_enable bool) (*types.Transaction, error) { - return _GuardianProver.Contract.EnableTaikoTokenAllowance(&_GuardianProver.TransactOpts, _enable) -} - // Init is a paid mutator transaction binding the contract method 0xf09a4016. // // Solidity: function init(address _owner, address _rollupAddressManager) returns() @@ -1098,25 +1098,25 @@ func (_GuardianProver *GuardianProverTransactorSession) UpgradeToAndCall(newImpl return _GuardianProver.Contract.UpgradeToAndCall(&_GuardianProver.TransactOpts, newImplementation, data) } -// WithdrawTaikoToken is a paid mutator transaction binding the contract method 0x694074c0. +// WithdrawBond is a paid mutator transaction binding the contract method 0xca288f18. // -// Solidity: function withdrawTaikoToken(address _to, uint256 _amount) returns() -func (_GuardianProver *GuardianProverTransactor) WithdrawTaikoToken(opts *bind.TransactOpts, _to common.Address, _amount *big.Int) (*types.Transaction, error) { - return _GuardianProver.contract.Transact(opts, "withdrawTaikoToken", _to, _amount) +// Solidity: function withdrawBond(address _to, uint256 _amount) returns() +func (_GuardianProver *GuardianProverTransactor) WithdrawBond(opts *bind.TransactOpts, _to common.Address, _amount *big.Int) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "withdrawBond", _to, _amount) } -// WithdrawTaikoToken is a paid mutator transaction binding the contract method 0x694074c0. +// WithdrawBond is a paid mutator transaction binding the contract method 0xca288f18. // -// Solidity: function withdrawTaikoToken(address _to, uint256 _amount) returns() -func (_GuardianProver *GuardianProverSession) WithdrawTaikoToken(_to common.Address, _amount *big.Int) (*types.Transaction, error) { - return _GuardianProver.Contract.WithdrawTaikoToken(&_GuardianProver.TransactOpts, _to, _amount) +// Solidity: function withdrawBond(address _to, uint256 _amount) returns() +func (_GuardianProver *GuardianProverSession) WithdrawBond(_to common.Address, _amount *big.Int) (*types.Transaction, error) { + return _GuardianProver.Contract.WithdrawBond(&_GuardianProver.TransactOpts, _to, _amount) } -// WithdrawTaikoToken is a paid mutator transaction binding the contract method 0x694074c0. +// WithdrawBond is a paid mutator transaction binding the contract method 0xca288f18. // -// Solidity: function withdrawTaikoToken(address _to, uint256 _amount) returns() -func (_GuardianProver *GuardianProverTransactorSession) WithdrawTaikoToken(_to common.Address, _amount *big.Int) (*types.Transaction, error) { - return _GuardianProver.Contract.WithdrawTaikoToken(&_GuardianProver.TransactOpts, _to, _amount) +// Solidity: function withdrawBond(address _to, uint256 _amount) returns() +func (_GuardianProver *GuardianProverTransactorSession) WithdrawBond(_to common.Address, _amount *big.Int) (*types.Transaction, error) { + return _GuardianProver.Contract.WithdrawBond(&_GuardianProver.TransactOpts, _to, _amount) } // GuardianProverAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the GuardianProver contract. diff --git a/packages/taiko-client/bindings/gen_lib_proving.go b/packages/taiko-client/bindings/gen_lib_proving.go index 45ae50c4a40..a9fb2d453b6 100644 --- a/packages/taiko-client/bindings/gen_lib_proving.go +++ b/packages/taiko-client/bindings/gen_lib_proving.go @@ -31,7 +31,7 @@ var ( // LibProvingMetaData contains all meta data concerning the LibProving contract. var LibProvingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_DIFF_VERIFIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_DIFF_VERIFIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_MSG_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", } // LibProvingABI is the input ABI used to generate the binding from. diff --git a/packages/taiko-client/bindings/gen_prover_set.go b/packages/taiko-client/bindings/gen_prover_set.go index ad7e8f69e77..25e434457b6 100644 --- a/packages/taiko-client/bindings/gen_prover_set.go +++ b/packages/taiko-client/bindings/gen_prover_set.go @@ -31,7 +31,7 @@ var ( // ProverSetMetaData contains all meta data concerning the ProverSet contract. var ProverSetMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"admin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveAllowance\",\"inputs\":[{\"name\":\"_address\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"_delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProver\",\"inputs\":[{\"name\":\"_prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isProver\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isValidSignature\",\"inputs\":[{\"name\":\"_hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"magicValue_\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_input\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawEtherToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProverEnabled\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"admin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveAllowance\",\"inputs\":[{\"name\":\"_address\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"_delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProver\",\"inputs\":[{\"name\":\"_prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isProver\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isValidSignature\",\"inputs\":[{\"name\":\"_hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"magicValue_\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlockV2Conditionally\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_input\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawEtherToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProverEnabled\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_BOND_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NOT_FIRST_PROPOSAL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // ProverSetABI is the input ABI used to generate the binding from. @@ -751,6 +751,27 @@ func (_ProverSet *ProverSetTransactorSession) ProposeBlockV2(_params []byte, _tx return _ProverSet.Contract.ProposeBlockV2(&_ProverSet.TransactOpts, _params, _txList) } +// ProposeBlockV2Conditionally is a paid mutator transaction binding the contract method 0x64834f6e. +// +// Solidity: function proposeBlockV2Conditionally(bytes _params, bytes _txList) returns() +func (_ProverSet *ProverSetTransactor) ProposeBlockV2Conditionally(opts *bind.TransactOpts, _params []byte, _txList []byte) (*types.Transaction, error) { + return _ProverSet.contract.Transact(opts, "proposeBlockV2Conditionally", _params, _txList) +} + +// ProposeBlockV2Conditionally is a paid mutator transaction binding the contract method 0x64834f6e. +// +// Solidity: function proposeBlockV2Conditionally(bytes _params, bytes _txList) returns() +func (_ProverSet *ProverSetSession) ProposeBlockV2Conditionally(_params []byte, _txList []byte) (*types.Transaction, error) { + return _ProverSet.Contract.ProposeBlockV2Conditionally(&_ProverSet.TransactOpts, _params, _txList) +} + +// ProposeBlockV2Conditionally is a paid mutator transaction binding the contract method 0x64834f6e. +// +// Solidity: function proposeBlockV2Conditionally(bytes _params, bytes _txList) returns() +func (_ProverSet *ProverSetTransactorSession) ProposeBlockV2Conditionally(_params []byte, _txList []byte) (*types.Transaction, error) { + return _ProverSet.Contract.ProposeBlockV2Conditionally(&_ProverSet.TransactOpts, _params, _txList) +} + // ProposeBlocksV2 is a paid mutator transaction binding the contract method 0x0c8f4a10. // // Solidity: function proposeBlocksV2(bytes[] _paramsArr, bytes[] _txListArr) returns() diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go index c50544445ba..1bf4df704ef 100644 --- a/packages/taiko-client/bindings/gen_taiko_l1.go +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -139,9 +139,7 @@ type TaikoDataSlotB struct { NumBlocks uint64 LastVerifiedBlockId uint64 ProvingPaused bool - ReservedB1 uint8 - ReservedB2 uint16 - ReservedB3 uint32 + LastProposedIn *big.Int LastUnpausedAt uint64 } @@ -169,7 +167,7 @@ type TaikoDataTransitionState struct { // TaikoL1ClientMetaData contains all meta data concerning the TaikoL1Client contract. var TaikoL1ClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init3\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondWithdrawn\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_ANCHOR_BLOCK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CUSTOM_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIMESTAMP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastProposedIn\",\"type\":\"uint56\",\"internalType\":\"uint56\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init3\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastProposedIn\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint56\",\"internalType\":\"uint56\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastProposedIn\",\"type\":\"uint56\",\"internalType\":\"uint56\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondWithdrawn\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastProposedIn\",\"type\":\"uint56\",\"internalType\":\"uint56\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_ANCHOR_BLOCK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CUSTOM_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_MSG_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIMESTAMP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoL1ClientABI is the input ABI used to generate the binding from. @@ -585,7 +583,7 @@ func (_TaikoL1Client *TaikoL1ClientCallerSession) GetLastVerifiedBlock() (struct // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // -// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint8,uint16,uint32,uint64)) +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint56,uint64)) func (_TaikoL1Client *TaikoL1ClientCaller) GetStateVariables(opts *bind.CallOpts) (TaikoDataSlotA, TaikoDataSlotB, error) { var out []interface{} err := _TaikoL1Client.contract.Call(opts, &out, "getStateVariables") @@ -603,14 +601,14 @@ func (_TaikoL1Client *TaikoL1ClientCaller) GetStateVariables(opts *bind.CallOpts // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // -// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint8,uint16,uint32,uint64)) +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint56,uint64)) func (_TaikoL1Client *TaikoL1ClientSession) GetStateVariables() (TaikoDataSlotA, TaikoDataSlotB, error) { return _TaikoL1Client.Contract.GetStateVariables(&_TaikoL1Client.CallOpts) } // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // -// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint8,uint16,uint32,uint64)) +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint56,uint64)) func (_TaikoL1Client *TaikoL1ClientCallerSession) GetStateVariables() (TaikoDataSlotA, TaikoDataSlotB, error) { return _TaikoL1Client.Contract.GetStateVariables(&_TaikoL1Client.CallOpts) } @@ -801,6 +799,37 @@ func (_TaikoL1Client *TaikoL1ClientCallerSession) InNonReentrant() (bool, error) return _TaikoL1Client.Contract.InNonReentrant(&_TaikoL1Client.CallOpts) } +// LastProposedIn is a free data retrieval call binding the contract method 0x5979f17c. +// +// Solidity: function lastProposedIn() view returns(uint56) +func (_TaikoL1Client *TaikoL1ClientCaller) LastProposedIn(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "lastProposedIn") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// LastProposedIn is a free data retrieval call binding the contract method 0x5979f17c. +// +// Solidity: function lastProposedIn() view returns(uint56) +func (_TaikoL1Client *TaikoL1ClientSession) LastProposedIn() (*big.Int, error) { + return _TaikoL1Client.Contract.LastProposedIn(&_TaikoL1Client.CallOpts) +} + +// LastProposedIn is a free data retrieval call binding the contract method 0x5979f17c. +// +// Solidity: function lastProposedIn() view returns(uint56) +func (_TaikoL1Client *TaikoL1ClientCallerSession) LastProposedIn() (*big.Int, error) { + return _TaikoL1Client.Contract.LastProposedIn(&_TaikoL1Client.CallOpts) +} + // LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. // // Solidity: function lastUnpausedAt() view returns(uint64) @@ -1020,7 +1049,7 @@ func (_TaikoL1Client *TaikoL1ClientCallerSession) Resolve0(_name [32]byte, _allo // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns(bytes32 __reserve1, (uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +// Solidity: function state() view returns(bytes32 __reserve1, (uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool,uint56,uint64) slotB) func (_TaikoL1Client *TaikoL1ClientCaller) State(opts *bind.CallOpts) (struct { Reserve1 [32]byte SlotA TaikoDataSlotA @@ -1048,7 +1077,7 @@ func (_TaikoL1Client *TaikoL1ClientCaller) State(opts *bind.CallOpts) (struct { // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns(bytes32 __reserve1, (uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +// Solidity: function state() view returns(bytes32 __reserve1, (uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool,uint56,uint64) slotB) func (_TaikoL1Client *TaikoL1ClientSession) State() (struct { Reserve1 [32]byte SlotA TaikoDataSlotA @@ -1059,7 +1088,7 @@ func (_TaikoL1Client *TaikoL1ClientSession) State() (struct { // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns(bytes32 __reserve1, (uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +// Solidity: function state() view returns(bytes32 __reserve1, (uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool,uint56,uint64) slotB) func (_TaikoL1Client *TaikoL1ClientCallerSession) State() (struct { Reserve1 [32]byte SlotA TaikoDataSlotA @@ -1091,21 +1120,21 @@ func (_TaikoL1Client *TaikoL1ClientTransactorSession) AcceptOwnership() (*types. // DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9. // -// Solidity: function depositBond(uint256 _amount) returns() +// Solidity: function depositBond(uint256 _amount) payable returns() func (_TaikoL1Client *TaikoL1ClientTransactor) DepositBond(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { return _TaikoL1Client.contract.Transact(opts, "depositBond", _amount) } // DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9. // -// Solidity: function depositBond(uint256 _amount) returns() +// Solidity: function depositBond(uint256 _amount) payable returns() func (_TaikoL1Client *TaikoL1ClientSession) DepositBond(_amount *big.Int) (*types.Transaction, error) { return _TaikoL1Client.Contract.DepositBond(&_TaikoL1Client.TransactOpts, _amount) } // DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9. // -// Solidity: function depositBond(uint256 _amount) returns() +// Solidity: function depositBond(uint256 _amount) payable returns() func (_TaikoL1Client *TaikoL1ClientTransactorSession) DepositBond(_amount *big.Int) (*types.Transaction, error) { return _TaikoL1Client.Contract.DepositBond(&_TaikoL1Client.TransactOpts, _amount) } @@ -4727,9 +4756,9 @@ type TaikoL1ClientStateVariablesUpdated struct { Raw types.Log // Blockchain specific contextual infos } -// FilterStateVariablesUpdated is a free log retrieval operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// FilterStateVariablesUpdated is a free log retrieval operation binding the contract event 0xb4be1a16d35fdd62eeaf9f552e025df3639847ddf2d61f011c72565056785ad2. // -// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint56,uint64) slotB) func (_TaikoL1Client *TaikoL1ClientFilterer) FilterStateVariablesUpdated(opts *bind.FilterOpts) (*TaikoL1ClientStateVariablesUpdatedIterator, error) { logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "StateVariablesUpdated") @@ -4739,9 +4768,9 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) FilterStateVariablesUpdated(opts *b return &TaikoL1ClientStateVariablesUpdatedIterator{contract: _TaikoL1Client.contract, event: "StateVariablesUpdated", logs: logs, sub: sub}, nil } -// WatchStateVariablesUpdated is a free log subscription operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// WatchStateVariablesUpdated is a free log subscription operation binding the contract event 0xb4be1a16d35fdd62eeaf9f552e025df3639847ddf2d61f011c72565056785ad2. // -// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint56,uint64) slotB) func (_TaikoL1Client *TaikoL1ClientFilterer) WatchStateVariablesUpdated(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientStateVariablesUpdated) (event.Subscription, error) { logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "StateVariablesUpdated") @@ -4776,9 +4805,9 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchStateVariablesUpdated(opts *bi }), nil } -// ParseStateVariablesUpdated is a log parse operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// ParseStateVariablesUpdated is a log parse operation binding the contract event 0xb4be1a16d35fdd62eeaf9f552e025df3639847ddf2d61f011c72565056785ad2. // -// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint56,uint64) slotB) func (_TaikoL1Client *TaikoL1ClientFilterer) ParseStateVariablesUpdated(log types.Log) (*TaikoL1ClientStateVariablesUpdated, error) { event := new(TaikoL1ClientStateVariablesUpdated) if err := _TaikoL1Client.contract.UnpackLog(event, "StateVariablesUpdated", log); err != nil { From 9b843d6ebe26b6e75c89148be52a3afeded79fa6 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 4 Nov 2024 12:52:26 +0800 Subject: [PATCH 133/205] ci(repo): improve workflow triggering conditions (#18385) --- .github/workflows/bridge-ui.yml | 27 +++++++-------- .github/workflows/docs-site--preview.yml | 7 ++-- .github/workflows/fork-diff--preview.yml | 8 ++--- .../guardian-prover-health-check-ui.yml | 33 ++++++++++--------- .../guardian-prover-health-check.yml | 4 ++- .github/workflows/nfts.yml | 3 +- .github/workflows/protocol-monitors.yml | 2 +- .github/workflows/protocol.yml | 5 +-- .github/workflows/relayer.yml | 6 ++-- .github/workflows/repo--do-not-merge-pr.yml | 1 + .github/workflows/repo--typo-check.yml | 1 + .github/workflows/repo--validate-pr-title.yml | 2 +- .github/workflows/snaefell-ui.yml | 2 +- .github/workflows/supplementary-contracts.yml | 2 +- .github/workflows/taiko-client--hive_test.yml | 2 +- .github/workflows/taiko-client--test.yml | 4 +-- .github/workflows/taikoon-ui.yml | 22 ++++++------- 17 files changed, 69 insertions(+), 62 deletions(-) diff --git a/.github/workflows/bridge-ui.yml b/.github/workflows/bridge-ui.yml index 2f747943982..584afad9af1 100644 --- a/.github/workflows/bridge-ui.yml +++ b/.github/workflows/bridge-ui.yml @@ -16,26 +16,27 @@ on: jobs: build-and-test: + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} uses: ./.github/workflows/bridge-ui--ci.yml # Deployment name follow the pattern: deploy___ # Internal Devnet - deploy_bridge-ui_devnet_preview: - if: ${{ github.ref_type != 'tag' }} - needs: build-and-test - uses: ./.github/workflows/repo--vercel-deploy.yml - with: - environment: "preview" - flags: "" - secrets: - vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_BRIDGE_UI_INTERNAL }} - vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} - vercel_token: ${{ secrets.VERCEL_TOKEN }} + # deploy_bridge-ui_devnet_preview: + # if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + # needs: build-and-test + # uses: ./.github/workflows/repo--vercel-deploy.yml + # with: + # environment: "preview" + # flags: "" + # secrets: + # vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_BRIDGE_UI_INTERNAL }} + # vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} + # vercel_token: ${{ secrets.VERCEL_TOKEN }} # Hekla testnet deploy_bridge-ui_hekla_preview: - if: ${{ github.ref_type != 'tag' }} + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: @@ -60,7 +61,7 @@ jobs: # Mainnet deploy_bridge-ui_mainnet_preview: - if: ${{ github.ref_type != 'tag' }} + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: diff --git a/.github/workflows/docs-site--preview.yml b/.github/workflows/docs-site--preview.yml index 817eb7a018f..b04a3548a5d 100644 --- a/.github/workflows/docs-site--preview.yml +++ b/.github/workflows/docs-site--preview.yml @@ -5,15 +5,14 @@ env: VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_DOCS_SITE }} on: - push: - branches-ignore: - - main - - release-please-* + pull_request: + types: [opened, synchronize, reopened, ready_for_review] paths: - "packages/docs-site/**" jobs: deploy-docs-site-preview: + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' runs-on: [arc-runner-set] steps: - name: Install Git diff --git a/.github/workflows/fork-diff--preview.yml b/.github/workflows/fork-diff--preview.yml index 0c62bcd22af..9ecdbc4477b 100644 --- a/.github/workflows/fork-diff--preview.yml +++ b/.github/workflows/fork-diff--preview.yml @@ -5,16 +5,14 @@ env: VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_FORK_DIFF }} on: - workflow_dispatch: - push: - branches-ignore: - - main - - release-please-* + pull_request: + types: [opened, synchronize, reopened, ready_for_review] paths: - "packages/fork-diff/**" jobs: deploy-fork-diff-preview: + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' runs-on: [arc-runner-set] steps: - name: Install Git diff --git a/.github/workflows/guardian-prover-health-check-ui.yml b/.github/workflows/guardian-prover-health-check-ui.yml index 52edcb02cb3..b1eb7738658 100644 --- a/.github/workflows/guardian-prover-health-check-ui.yml +++ b/.github/workflows/guardian-prover-health-check-ui.yml @@ -13,20 +13,23 @@ jobs: uses: ./.github/workflows/guardian-prover-health-check-ui--ci.yml # Deployment name follow the pattern: deploy___ - deploy_guardians-ui_mainnet_preview: - if: ${{ github.ref_name != 'main' }} - needs: build-and-test - uses: ./.github/workflows/repo--vercel-deploy.yml - with: - environment: "preview" - flags: "" - secrets: - vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_UI_MAINNET }} - vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} - vercel_token: ${{ secrets.VERCEL_TOKEN }} + + # deploy_guardians-ui_devnet_preview: + # if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + # needs: build-and-test + # uses: ./.github/workflows/repo--vercel-deploy.yml + # with: + # environment: "preview" + # flags: "" + # secrets: + # vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_UI_INTERNAL }} + # vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} + # vercel_token: ${{ secrets.VERCEL_TOKEN }} + + deploy_guardians-ui_hekla_preview: - if: ${{ github.ref_name != 'main' }} + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: @@ -37,15 +40,15 @@ jobs: vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} vercel_token: ${{ secrets.VERCEL_TOKEN }} - deploy_guardians-ui_devnet_preview: - if: ${{ github.ref_name != 'main' }} + deploy_guardians-ui_mainnet_preview: + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: environment: "preview" flags: "" secrets: - vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_UI_INTERNAL }} + vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_UI_MAINNET }} vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} vercel_token: ${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/guardian-prover-health-check.yml b/.github/workflows/guardian-prover-health-check.yml index f0278d76ee6..98d0267ed26 100644 --- a/.github/workflows/guardian-prover-health-check.yml +++ b/.github/workflows/guardian-prover-health-check.yml @@ -15,6 +15,7 @@ on: jobs: lint-guardian-prover-health-check: + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} name: lint-guardian-prover-health-check runs-on: [taiko-runner] steps: @@ -33,6 +34,7 @@ jobs: args: --config=.golangci.yml --timeout=4m test-guardian-prover-health-check: + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} runs-on: [taiko-runner] needs: lint-guardian-prover-health-check steps: @@ -58,7 +60,7 @@ jobs: push-guardian-prover-health-check-docker-image: # Skip dependabot PRs - if: ${{ github.event_name == 'pull_request' && ! startsWith(github.ref, 'refs/heads/dependabot/') }} + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} name: Build and push docker image runs-on: [taiko-runner] diff --git a/.github/workflows/nfts.yml b/.github/workflows/nfts.yml index c7098c1da0f..a7a8b5664d4 100644 --- a/.github/workflows/nfts.yml +++ b/.github/workflows/nfts.yml @@ -5,10 +5,11 @@ on: types: [opened, synchronize, reopened, ready_for_review] paths: - "packages/nfts/**" + - "!packages/nfts/contract_layout_*" jobs: build-nfts-contracts: - if: github.event.pull_request.draft == false + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' runs-on: [arc-runner-set] steps: - name: Cancel previous runs diff --git a/.github/workflows/protocol-monitors.yml b/.github/workflows/protocol-monitors.yml index 8c6a051c200..796dcc73123 100644 --- a/.github/workflows/protocol-monitors.yml +++ b/.github/workflows/protocol-monitors.yml @@ -8,7 +8,7 @@ on: jobs: deploy-protocol-monitors: - if: github.event.pull_request.draft == false + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' runs-on: [taiko-runner] permissions: # Give the necessary permissions for stefanzweifel/git-auto-commit-action. diff --git a/.github/workflows/protocol.yml b/.github/workflows/protocol.yml index 59bf0524996..6acfd7ce020 100644 --- a/.github/workflows/protocol.yml +++ b/.github/workflows/protocol.yml @@ -5,6 +5,7 @@ on: types: [opened, synchronize, reopened, ready_for_review] paths: - "packages/protocol/**" + - "!packages/protocol/contract_layout_*" - "!packages/protocol/audit/**" - "!packages/protocol/docs/**" - "!packages/protocol/simulation/**" @@ -12,7 +13,7 @@ on: jobs: build-protocol: - if: github.event.pull_request.draft == false + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' runs-on: [arc-runner-set] permissions: # Give the necessary permissions for stefanzweifel/git-auto-commit-action. @@ -66,7 +67,7 @@ jobs: pnpm test:deploy:l1 genesis-docker: - if: github.event.pull_request.draft == false + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' runs-on: [taiko-runner] permissions: # Give the necessary permissions for stefanzweifel/git-auto-commit-action. diff --git a/.github/workflows/relayer.yml b/.github/workflows/relayer.yml index 4509b06db06..7f4af982d0a 100644 --- a/.github/workflows/relayer.yml +++ b/.github/workflows/relayer.yml @@ -17,7 +17,7 @@ on: jobs: lint-relayer: name: lint-relayer - if: ${{ github.event_name == 'pull_request' && github.event.pull_request.draft == false }} + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} runs-on: [arc-runner-set] steps: - uses: actions/setup-go@v5 @@ -35,7 +35,7 @@ jobs: args: --config=.golangci.yml --timeout=4m test-relayer: - if: ${{ github.event_name == 'pull_request' && github.event.pull_request.draft == false }} + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} runs-on: [arc-runner-set] needs: lint-relayer steps: @@ -64,7 +64,7 @@ jobs: push-relayer-docker-image: # Skip dependabot PRs - if: ${{ github.event_name == 'pull_request' && ! startsWith(github.ref, 'refs/heads/dependabot/') }} + if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} name: Build and push docker image runs-on: [arc-runner-set] diff --git a/.github/workflows/repo--do-not-merge-pr.yml b/.github/workflows/repo--do-not-merge-pr.yml index 94daf14d590..b3e8484c8d6 100644 --- a/.github/workflows/repo--do-not-merge-pr.yml +++ b/.github/workflows/repo--do-not-merge-pr.yml @@ -6,6 +6,7 @@ on: jobs: check_label: + if: github.event.pull_request.draft == false runs-on: [arc-runner-set] steps: - name: Check for "option.do-not-merge" label diff --git a/.github/workflows/repo--typo-check.yml b/.github/workflows/repo--typo-check.yml index 0b5822526b1..326b57eede9 100644 --- a/.github/workflows/repo--typo-check.yml +++ b/.github/workflows/repo--typo-check.yml @@ -4,6 +4,7 @@ on: [pull_request] jobs: check-for-typos: + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' runs-on: [arc-runner-set] steps: diff --git a/.github/workflows/repo--validate-pr-title.yml b/.github/workflows/repo--validate-pr-title.yml index 9e8dd0a552d..3a1cd9ce203 100644 --- a/.github/workflows/repo--validate-pr-title.yml +++ b/.github/workflows/repo--validate-pr-title.yml @@ -8,7 +8,7 @@ on: jobs: validate-pr-title: - if: github.event_name == 'pull_request_target' + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' runs-on: [arc-runner-set] steps: - uses: amannn/action-semantic-pull-request@v5 diff --git a/.github/workflows/snaefell-ui.yml b/.github/workflows/snaefell-ui.yml index f1dbaffc27b..8a9f4d707d8 100644 --- a/.github/workflows/snaefell-ui.yml +++ b/.github/workflows/snaefell-ui.yml @@ -21,7 +21,7 @@ jobs: # Deployment name follow the pattern: deploy___ # The following Vercel project is not found, so disable it at least for now. # deploy_snaefell-ui_mainnet_preview: - # if: ${{ github.ref_name != 'main' }} + # if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} # needs: build-and-test # uses: ./.github/workflows/repo--vercel-deploy.yml # with: diff --git a/.github/workflows/supplementary-contracts.yml b/.github/workflows/supplementary-contracts.yml index cf584740577..f942e62677b 100644 --- a/.github/workflows/supplementary-contracts.yml +++ b/.github/workflows/supplementary-contracts.yml @@ -8,7 +8,7 @@ on: jobs: build-supplementary-contracts: - if: github.event.pull_request.draft == false + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' runs-on: [arc-runner-set] steps: - name: Cancel previous runs diff --git a/.github/workflows/taiko-client--hive_test.yml b/.github/workflows/taiko-client--hive_test.yml index 7445565f852..c9d7e971fee 100644 --- a/.github/workflows/taiko-client--hive_test.yml +++ b/.github/workflows/taiko-client--hive_test.yml @@ -10,7 +10,7 @@ on: jobs: hive_tests: - if: github.event.pull_request.draft == false && contains(github.event.pull_request.labels.*.name, 'option.hive-test') + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') && github.event.pull_request.draft == false && github.head_ref != 'release-please-*' name: hive tests runs-on: [arc-runner-set] timeout-minutes: 40 diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index fb0a26b4fd1..df3a17e0262 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -10,7 +10,7 @@ on: jobs: lint: - if: github.event.pull_request.draft == false + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' name: Lint runs-on: [ubuntu-latest] steps: @@ -30,7 +30,7 @@ jobs: run: golangci-lint run --path-prefix=./ --config=.golangci.yml integration_tests: - if: github.event.pull_request.draft == false + if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' name: Integration tests runs-on: [ubuntu-latest] timeout-minutes: 15 diff --git a/.github/workflows/taikoon-ui.yml b/.github/workflows/taikoon-ui.yml index 970bf3d0f92..7695075c480 100644 --- a/.github/workflows/taikoon-ui.yml +++ b/.github/workflows/taikoon-ui.yml @@ -17,17 +17,17 @@ jobs: uses: ./.github/workflows/taikoon-ui--ci.yml # Deployment name follow the pattern: deploy___ - deploy_taikoon-ui_mainnet_preview: - if: ${{ github.ref_name != 'main' }} - needs: build-and-test - uses: ./.github/workflows/repo--vercel-deploy.yml - with: - environment: "preview" - flags: "" - secrets: - vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_TAIKOON_UI_MAINNET }} - vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} - vercel_token: ${{ secrets.VERCEL_TOKEN }} + # deploy_taikoon-ui_mainnet_preview: + # if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + # needs: build-and-test + # uses: ./.github/workflows/repo--vercel-deploy.yml + # with: + # environment: "preview" + # flags: "" + # secrets: + # vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_TAIKOON_UI_MAINNET }} + # vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} + # vercel_token: ${{ secrets.VERCEL_TOKEN }} deploy_taikoon-ui_mainnet_production: if: ${{ startsWith(github.ref, 'refs/tags/taikoon-ui-v') }} From bca2698d5568b36b151b4e9d83d3c5a0b579a54d Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 4 Nov 2024 12:59:44 +0800 Subject: [PATCH 134/205] ci(protocol): release-please only crate draft PRs (#18392) --- .github/workflows/repo--release-please.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/repo--release-please.yml b/.github/workflows/repo--release-please.yml index b3934ccc1d7..ea86a330f51 100644 --- a/.github/workflows/repo--release-please.yml +++ b/.github/workflows/repo--release-please.yml @@ -21,3 +21,4 @@ jobs: - uses: googleapis/release-please-action@v4 with: token: ${{ secrets.RELEASE_PLEASE_TOKEN }} + draft: true From fac5c167357f430cfb030e7ceaa41bb8e4b938d4 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 4 Nov 2024 13:07:05 +0800 Subject: [PATCH 135/205] chore(protocol): change bond amounts, proving windows, and cooldown windows (#18371) --- .../contracts/layer1/based/LibProving.sol | 2 +- .../layer1/tiers/TierProviderBase.sol | 89 +++++++++---------- .../contracts/shared/common/LibStrings.sol | 1 + 3 files changed, 43 insertions(+), 49 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibProving.sol b/packages/protocol/contracts/layer1/based/LibProving.sol index c568814ad4d..d5b26727daf 100644 --- a/packages/protocol/contracts/layer1/based/LibProving.sol +++ b/packages/protocol/contracts/layer1/based/LibProving.sol @@ -144,7 +144,7 @@ library LibProving { } // If batch verifier name is not empty, verify the batch proof. - if (batchVerifierName != "") { + if (batchVerifierName != LibStrings.B_TIER_OPTIMISTIC) { IVerifier(_resolver.resolve(batchVerifierName, false)).verifyBatchProof( ctxs, batchProof ); diff --git a/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol b/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol index 27415a361ef..b1eadb72334 100644 --- a/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol +++ b/packages/protocol/contracts/layer1/tiers/TierProviderBase.sol @@ -10,80 +10,72 @@ import "./LibTiers.sol"; /// Ensure all modifications are reviewed by the devrel team. /// @custom:security-contact security@taiko.xyz abstract contract TierProviderBase is ITierProvider { - /// @dev Grace period for block proving service. - /// @notice This constant defines the time window (in minutes) during which the block proving - /// service may be paused if gas prices are excessively high. Since block proving is - /// asynchronous, this grace period allows provers to defer submissions until gas - /// prices become more favorable, potentially reducing transaction costs. - uint16 public constant GRACE_PERIOD = 240; // minutes - uint96 public constant BOND_UNIT = 75 ether; // TAIKO tokens + uint96 public constant BOND_UNIT = 50 ether; // TAIKO tokens /// @inheritdoc ITierProvider /// @notice Each tier, except the top tier, has a validity bond that is 75 TAIKO higher than the /// previous tier. Additionally, each tier's contest bond is 6.5625 times its validity bond. function getTier(uint16 _tierId) public pure virtual returns (ITierProvider.Tier memory) { if (_tierId == LibTiers.TIER_OPTIMISTIC) { - // cooldownWindow is 1440 minutes and provingWindow is 15 minutes - return _buildTier("", BOND_UNIT, 1440, 15); + return _buildTier(LibStrings.B_TIER_OPTIMISTIC, 1, 1440, 60); } // TEE Tiers - if (_tierId == LibTiers.TIER_SGX) return _buildTeeTier(LibStrings.B_TIER_SGX); - if (_tierId == LibTiers.TIER_TDX) return _buildTeeTier(LibStrings.B_TIER_TDX); - if (_tierId == LibTiers.TIER_TEE_ANY) return _buildTeeTier(LibStrings.B_TIER_TEE_ANY); + if (_tierId == LibTiers.TIER_SGX) { + // cooldownWindow is 240 minutes and provingWindow is 60 minutes + return _buildTier(LibStrings.B_TIER_SGX, 2, 240, 60); + } + if (_tierId == LibTiers.TIER_TDX) { + // cooldownWindow is 240 minutes and provingWindow is 60 minutes + return _buildTier(LibStrings.B_TIER_TDX, 2, 240, 60); + } + if (_tierId == LibTiers.TIER_TEE_ANY) { + // cooldownWindow is 240 minutes and provingWindow is 60 minutes + return _buildTier(LibStrings.B_TIER_TEE_ANY, 2, 240, 60); + } - // ZKVM Tiers - if (_tierId == LibTiers.TIER_ZKVM_RISC0) return _buildZkTier(LibStrings.B_TIER_ZKVM_RISC0); - if (_tierId == LibTiers.TIER_ZKVM_SP1) return _buildZkTier(LibStrings.B_TIER_ZKVM_SP1); - if (_tierId == LibTiers.TIER_ZKVM_ANY) return _buildZkTier(LibStrings.B_TIER_ZKVM_ANY); + // ZKVM Tiers: Allowing 120 minutes for proof aggregation. + if (_tierId == LibTiers.TIER_ZKVM_RISC0) { + // cooldownWindow is 240 minutes and provingWindow is 120 minutes + return _buildTier(LibStrings.B_TIER_ZKVM_RISC0, 3, 240, 120); + } + if (_tierId == LibTiers.TIER_ZKVM_SP1) { + // cooldownWindow is 240 minutes and provingWindow is 120 minutes + return _buildTier(LibStrings.B_TIER_ZKVM_SP1, 3, 240, 120); + } + if (_tierId == LibTiers.TIER_ZKVM_ANY) { + // cooldownWindow is 240 minutes and provingWindow is 90 minutes + return _buildTier(LibStrings.B_TIER_ZKVM_ANY, 3, 240, 120); + } if (_tierId == LibTiers.TIER_ZKVM_AND_TEE) { - return _buildZkTier(LibStrings.B_TIER_ZKVM_AND_TEE); + // cooldownWindow is 240 minutes and provingWindow is 90 minutes + return _buildTier(LibStrings.B_TIER_ZKVM_AND_TEE, 3, 240, 120); } // Guardian Minority Tiers if (_tierId == LibTiers.TIER_GUARDIAN_MINORITY) { - // cooldownWindow is 240 minutes and provingWindow is 2880 minutes - return _buildTier(LibStrings.B_TIER_GUARDIAN_MINORITY, BOND_UNIT * 3, 240, 0); + // cooldownWindow is 60 minutes and provingWindow is 120 minutes + return _buildTier(LibStrings.B_TIER_GUARDIAN_MINORITY, 4, 240, 120); } // Guardian Major Tiers if (_tierId == LibTiers.TIER_GUARDIAN) { - // cooldownWindow is 1440 minutes and provingWindow is 2880 minutes - return _buildTier(LibStrings.B_TIER_GUARDIAN, 0, 240, 0); + // cooldownWindow is 480 minutes + return _buildTier(LibStrings.B_TIER_GUARDIAN, 0, 480, 0); } revert TIER_NOT_FOUND(); } - /// @dev Builds a TEE tier with a specific verifier name. - /// @param _verifierName The name of the verifier. - /// @return A Tier struct with predefined parameters for TEE. - function _buildTeeTier(bytes32 _verifierName) - private - pure - returns (ITierProvider.Tier memory) - { - // cooldownWindow is 1440 minutes and provingWindow is 60 minutes - return _buildTier(_verifierName, BOND_UNIT * 2, 240, 60); - } - - /// @dev Builds a ZK tier with a specific verifier name. - /// @param _verifierName The name of the verifier. - /// @return A Tier struct with predefined parameters for ZK. - function _buildZkTier(bytes32 _verifierName) private pure returns (ITierProvider.Tier memory) { - // cooldownWindow is 1440 minutes and provingWindow is 180 minutes - return _buildTier(_verifierName, BOND_UNIT * 3, 240, 180); - } - /// @dev Builds a generic tier with specified parameters. /// @param _verifierName The name of the verifier. - /// @param _validityBond The validity bond amount. + /// @param _validityBondUnits The units of validity bonds. /// @param _cooldownWindow The cooldown window duration in minutes. /// @param _provingWindow The proving window duration in minutes. /// @return A Tier struct with the provided parameters. function _buildTier( bytes32 _verifierName, - uint96 _validityBond, + uint8 _validityBondUnits, uint16 _cooldownWindow, uint16 _provingWindow ) @@ -91,13 +83,14 @@ abstract contract TierProviderBase is ITierProvider { pure returns (ITierProvider.Tier memory) { + uint96 validityBond = BOND_UNIT * _validityBondUnits; return ITierProvider.Tier({ verifierName: _verifierName, - validityBond: _validityBond, - contestBond: _validityBond / 10_000 * 65_625, + validityBond: validityBond, + contestBond: validityBond / 10_000 * 65_625, cooldownWindow: _cooldownWindow, - provingWindow: GRACE_PERIOD + _provingWindow, - maxBlocksToVerifyPerProof: 0 // DEPRECATED - }); + provingWindow: _provingWindow, + maxBlocksToVerifyPerProof: 0 + }); } } diff --git a/packages/protocol/contracts/shared/common/LibStrings.sol b/packages/protocol/contracts/shared/common/LibStrings.sol index d7058f2de39..8437cf03fb9 100644 --- a/packages/protocol/contracts/shared/common/LibStrings.sol +++ b/packages/protocol/contracts/shared/common/LibStrings.sol @@ -26,6 +26,7 @@ library LibStrings { bytes32 internal constant B_TAIKO_TOKEN = bytes32("taiko_token"); bytes32 internal constant B_TIER_GUARDIAN = bytes32("tier_guardian"); bytes32 internal constant B_TIER_GUARDIAN_MINORITY = bytes32("tier_guardian_minority"); + bytes32 internal constant B_TIER_OPTIMISTIC = bytes32("tier_optimistic"); bytes32 internal constant B_TIER_ROUTER = bytes32("tier_router"); bytes32 internal constant B_TIER_SGX = bytes32("tier_sgx"); bytes32 internal constant B_TIER_TDX = bytes32("tier_tdx"); From 350264c98d6a96ea11d5b1cef684a81605d3826b Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Mon, 4 Nov 2024 13:57:52 +0800 Subject: [PATCH 136/205] feat(protocol): increase risc0 frequency in Hekla (#18407) --- packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol | 2 +- packages/protocol/deployments/hekla-contract-logs.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol b/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol index 2c77b524c95..4d99e08ee4a 100644 --- a/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol +++ b/packages/protocol/contracts/layer1/hekla/HeklaTierRouter.sol @@ -35,7 +35,7 @@ contract HeklaTierRouter is TierProviderBase, ITierRouter { /// @inheritdoc ITierProvider function getMinTier(address _proposer, uint256 _rand) public view override returns (uint16) { if (_proposer == DAO_FALLBACK_PROPOSER) { - if (_rand % 1000 == 0) return LibTiers.TIER_ZKVM_RISC0; + if (_rand % 100 == 0) return LibTiers.TIER_ZKVM_RISC0; else if (_rand % 1000 == 1) return LibTiers.TIER_ZKVM_SP1; else return LibTiers.TIER_SGX; } diff --git a/packages/protocol/deployments/hekla-contract-logs.md b/packages/protocol/deployments/hekla-contract-logs.md index 0f7f3270207..fc9a9303a1f 100644 --- a/packages/protocol/deployments/hekla-contract-logs.md +++ b/packages/protocol/deployments/hekla-contract-logs.md @@ -154,7 +154,7 @@ ### tierRouter -- impl: `0x45f63AF6ff5803BF4F2817FEe690f1cd5d5bc681` +- impl: `0x98d4FaD098526c4582063FA588C5e96229270366` - logs: - deployed on Jun 10, 2024 at commit `d5965bb` - upgraded on Jun 14, 2024 at commit `cc10b04` @@ -163,6 +163,7 @@ - upgraded on Sep 02, 2024 at commit `9dae5c8` - upgraded on Oct 24, 2024 at commit `78f9ac0` - upgraded on Oct 30, 2024 at commit `63455f9` + - upgraded on Nov 4, 2024 at commit `90b2693` ### prover_set From dd09f27f25d500ec65191771f1fe22397f0a58a8 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 4 Nov 2024 14:51:40 +0800 Subject: [PATCH 137/205] ci(protocol): release-please creates draft PRs (#18423) --- .github/workflows/repo--release-please.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/repo--release-please.yml b/.github/workflows/repo--release-please.yml index ea86a330f51..9b145a43659 100644 --- a/.github/workflows/repo--release-please.yml +++ b/.github/workflows/repo--release-please.yml @@ -18,7 +18,21 @@ jobs: release-please: runs-on: [arc-runner-set] steps: - - uses: googleapis/release-please-action@v4 + - name: Run Release Please + id: release_please + uses: googleapis/release-please-action@v4 with: token: ${{ secrets.RELEASE_PLEASE_TOKEN }} - draft: true + + - name: Convert PR to Draft + if: ${{ steps.release_please.outputs.pr != '' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + pr_number=${{ steps.release_please.outputs.pr }} + echo "Converting PR #$pr_number to draft..." + curl -X PATCH \ + -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github.v3+json" \ + -d '{"draft":true}' \ + "https://api.github.com/repos/${{ github.repository }}/pulls/$pr_number" \ No newline at end of file From 6aef03e87eaf3cdbfb7637bd6122525f75c611f0 Mon Sep 17 00:00:00 2001 From: AlexWu Date: Mon, 4 Nov 2024 23:18:06 +0100 Subject: [PATCH 138/205] chore(taiko-client): update CI badge and path (#18441) --- packages/taiko-client/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/taiko-client/README.md b/packages/taiko-client/README.md index 5ba73def53c..2f2bdd812f0 100644 --- a/packages/taiko-client/README.md +++ b/packages/taiko-client/README.md @@ -1,6 +1,6 @@ # taiko-client -[![CI](https://github.com/taikoxyz/taiko-mono/actions/workflows/taiko-client-test.yml/badge.svg)](https://github.com/taikoxyz/taiko-mono/actions/workflows/taiko-client-test.yml) +[![CI](https://github.com/taikoxyz/taiko-mono/actions/workflows/taiko-client--test.yml/badge.svg)](https://github.com/taikoxyz/taiko-mono/actions/workflows/taiko-client-test.yml) From 12059d5d9c14fead666ff7e2c99265271c754610 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 5 Nov 2024 07:12:35 +0800 Subject: [PATCH 139/205] ci(repo): delete some workflows and release configs (#18440) --- .github/workflows/snaefell-ui.yml | 35 ++++++++++--------------------- .github/workflows/taikoon-ui.yml | 34 ++++++++++-------------------- release-please-config.json | 6 +----- 3 files changed, 23 insertions(+), 52 deletions(-) diff --git a/.github/workflows/snaefell-ui.yml b/.github/workflows/snaefell-ui.yml index 8a9f4d707d8..68b424b20e7 100644 --- a/.github/workflows/snaefell-ui.yml +++ b/.github/workflows/snaefell-ui.yml @@ -1,18 +1,7 @@ name: Snaefell UI CI/CD on: - push: - paths: - - "packages/snaefell-ui/**" - branches-ignore: - - dependabot/** - tags: - - "snaefull-ui-v*" - - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - "packages/snaefell-ui/**" + workflow_dispatch: jobs: build-and-test: @@ -20,20 +9,18 @@ jobs: # Deployment name follow the pattern: deploy___ # The following Vercel project is not found, so disable it at least for now. - # deploy_snaefell-ui_mainnet_preview: - # if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} - # needs: build-and-test - # uses: ./.github/workflows/repo--vercel-deploy.yml - # with: - # environment: "preview" - # flags: "" - # secrets: - # vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_SNAEFELL_UI_MAINNET }} - # vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} - # vercel_token: ${{ secrets.VERCEL_TOKEN }} + deploy_snaefell-ui_mainnet_preview: + needs: build-and-test + uses: ./.github/workflows/repo--vercel-deploy.yml + with: + environment: "preview" + flags: "" + secrets: + vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_SNAEFELL_UI_MAINNET }} + vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} + vercel_token: ${{ secrets.VERCEL_TOKEN }} deploy_snaefell-ui_mainnet_production: - if: ${{ startsWith(github.ref, 'refs/tags/snaefull-ui-v') }} needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: diff --git a/.github/workflows/taikoon-ui.yml b/.github/workflows/taikoon-ui.yml index 7695075c480..68dcd504654 100644 --- a/.github/workflows/taikoon-ui.yml +++ b/.github/workflows/taikoon-ui.yml @@ -1,36 +1,24 @@ name: Taikoon UI CI/CD - on: - push: - paths: - - "packages/taikoon-ui/**" - branches-ignore: - - dependabot/** - - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths: - - "packages/taikoon-ui/**" + workflow_dispatch: jobs: build-and-test: uses: ./.github/workflows/taikoon-ui--ci.yml # Deployment name follow the pattern: deploy___ - # deploy_taikoon-ui_mainnet_preview: - # if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} - # needs: build-and-test - # uses: ./.github/workflows/repo--vercel-deploy.yml - # with: - # environment: "preview" - # flags: "" - # secrets: - # vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_TAIKOON_UI_MAINNET }} - # vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} - # vercel_token: ${{ secrets.VERCEL_TOKEN }} + deploy_taikoon-ui_mainnet_preview: + needs: build-and-test + uses: ./.github/workflows/repo--vercel-deploy.yml + with: + environment: "preview" + flags: "" + secrets: + vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_TAIKOON_UI_MAINNET }} + vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} + vercel_token: ${{ secrets.VERCEL_TOKEN }} deploy_taikoon-ui_mainnet_production: - if: ${{ startsWith(github.ref, 'refs/tags/taikoon-ui-v') }} needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: diff --git a/release-please-config.json b/release-please-config.json index db710e1e200..2d69ef058de 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -24,11 +24,7 @@ "packages/guardian-prover-health-check-ui": {}, "packages/protocol": {}, "packages/relayer": {}, - "packages/nfts": {}, - "packages/taikoon-ui": {}, "packages/taiko-client": {}, - "packages/supplementary-contracts": {}, - "packages/ui-lib": {}, - "packages/snaefell-ui": {} + "packages/ui-lib": {} } } From df160358ad022025e76b5957ad0952e4f804dacd Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Mon, 4 Nov 2024 19:53:54 -0800 Subject: [PATCH 140/205] feat(docs-site): update network config, list cooldown, proving windows and bonds for every tier, remove banner (#18377) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- .../proof-tier-config-hekla.webp | Bin 309484 -> 240829 bytes .../proof-tier-config-mn.webp | Bin 149029 -> 174450 bytes packages/docs-site/src/content/config.ts | 6 +-- .../guides/node-operators/enable-a-prover.mdx | 2 + .../network-reference/mainnet-addresses.md | 9 ++-- .../network-configuration.md | 26 ---------- .../network-configuration.mdx | 47 ++++++++++++++++++ 7 files changed, 57 insertions(+), 33 deletions(-) delete mode 100644 packages/docs-site/src/content/docs/network-reference/network-configuration.md create mode 100644 packages/docs-site/src/content/docs/network-reference/network-configuration.mdx diff --git a/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-hekla.webp b/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-hekla.webp index 840d7eadfbfdcb78862df70f6218443c239bb409..53d85d9dc5552d407959ca7f9d690ff27a73b8e3 100644 GIT binary patch literal 240829 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 z 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

L4^-Nh)#wPE${iUtS0*pS@b5c( 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

ZW8AH^oiFQ-{QSZ&OkEZ1$ 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

!Zmesyce82UG-@ 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%0AaF#30$4K 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

iU5FX}^L56(JC*%y8Rg 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%0AHBwtYhM4?4NW?J<+Q@^6ilI>F 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

5+-#*6c*ecQH5WN| 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 Hw|)N)?|1_i diff --git a/packages/docs-site/src/content/config.ts b/packages/docs-site/src/content/config.ts index 6770faff3b0..96cdce61ff5 100644 --- a/packages/docs-site/src/content/config.ts +++ b/packages/docs-site/src/content/config.ts @@ -8,9 +8,9 @@ export const collections = { description: z .string() .max(160, { message: "Must be 160 characters or less." }).optional(), - banner: z.object({ content: z.string() }).default({ - content: 'All Mainnet Node Runners: Protocol upgrade on Oct 31st in preparation for Ontake fork, upgrade needed. Please ensure your nodes are using the software tags listed in the announcement! Click here for more info', - }), + // banner: z.object({ content: z.string() }).default({ + // content: '', + // }), }), }), }), diff --git a/packages/docs-site/src/content/docs/guides/node-operators/enable-a-prover.mdx b/packages/docs-site/src/content/docs/guides/node-operators/enable-a-prover.mdx index 677f356f745..1a5569f047d 100644 --- a/packages/docs-site/src/content/docs/guides/node-operators/enable-a-prover.mdx +++ b/packages/docs-site/src/content/docs/guides/node-operators/enable-a-prover.mdx @@ -38,6 +38,8 @@ These are the bare minimum required settings along with a functional Taiko node The following steps can be done through the [ProverSet contract](/guides/node-operators/deploy-a-proverset/#deploying-a-proverset) if you have deployed one. We highly recommend this for a stable setup. +Please find all relevant bond, cooldown, and proving window information [here](/network-reference/network-configuration/#cooldown-window-proving-window-and-bonds). + ### Approve TaikoL1 as TAIKO spender (mainnet) diff --git a/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md b/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md index 32101e0930e..51235a9f596 100644 --- a/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md +++ b/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md @@ -15,14 +15,15 @@ description: Network reference page describing various important addresses on Ta | ERC20Vault | `0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab` | v20.based.taiko.eth | | ERC721Vault | `0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa` | v721.based.taiko.eth | | ERC1155Vault | `0xaf145913EA4a56BE22E120ED9C24589659881702` | v1155.based.taiko.eth | -| BridgedERC20 | `0xcc5d488073FA918cBbd73B9A523F3858C4de7372` | N/A | -| BridgedERC721 | `0xc4096E9ff1526Bd1840B65e9f45695135aC12De7` | N/A | -| BridgedERC1155 | `0x39E4C1214e733639d059979079A151911e42791d` | N/A | +| BridgedERC20 | `0x65666141a541423606365123Ed280AB16a09A2e1` | N/A | +| BridgedERC721 | `0xC3310905E2BC9Cfb198695B75EF3e5B69C6A1Bf7` | N/A | +| BridgedERC1155 | `0x3c90963cFBa436400B0F9C46Aa9224cB379c2c40` | N/A | | Contract Name (Rollup-Specific) | Address | ENS | | ------------------------------- | -------------------------------------------- | -------------------------- | | TaikoL1 | `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a` | based.taiko.eth | | RollupAddressManager | `0x579f40D0BE111b823962043702cabe6Aaa290780` | ram.based.taiko.eth | +| TierRouter | `0x8f1C1D58C858e9a9eeCc587d7D51AECfd16b5542` | N/A | | GuardianProver | `0xE3D777143Ea25A6E031d1e921F396750885f43aC` | guardians.based.taiko.eth | | GuardianProverMinority | `0x579A8d63a2Db646284CBFE31FE5082c9989E985c` | guardians1.based.taiko.eth | | AssignmentHook | `0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6` | N/A | @@ -33,7 +34,7 @@ description: Network reference page describing various important addresses on Ta | P256Verifier | `0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0` | N/A | | SigVerifyLib | `0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9` | N/A | | TokenUnlock | `0x035AFfC82612de31E9Db2259B9482D0Dd53B7819` | N/A | -| ProverSet | `0x34f2B21107AfE3584949c184A1E6236FFDAC4f6F` | N/A | +| ProverSet | `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763` | N/A | | labprover | `0x68d30f47F19c07bCCEf4Ac7FAE2Dc12FCa3e0dC9` | labprover.taiko.eth | | labcontester | `0xa01d464ca3982DAa97B19fa7F8a232eB11A9DDb3` | labcontester.taiko.eth | diff --git a/packages/docs-site/src/content/docs/network-reference/network-configuration.md b/packages/docs-site/src/content/docs/network-reference/network-configuration.md deleted file mode 100644 index 3010e042523..00000000000 --- a/packages/docs-site/src/content/docs/network-reference/network-configuration.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Network configuration -description: The network configuration page describes many of the configuration details of the network. ---- - -## Tier configuration (Mainnet) - -You can view the full `TierProviderV2` tier configuration [here](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/contracts/layer1/tiers/TierProviderV2.sol): - -![mainnet proof tiers](~/assets/content/docs/network-reference/proof-tier-config-mn.webp) - -If the function of the bonds is not clear to you, please find out more [here](/resources/terminology#bonding-related). - -## Network configuration (Mainnet) - -You can view the full network configuration by visiting the TaikoL1 contract on Etherscan [here](https://etherscan.io/address/0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a#readProxyContract). Then connect your wallet, and select "Read as Proxy". You can then see the config details for the network. - -## Tier configuration (Hekla) - -You can view the full post ontake fork `HeklaTierProvider` tier configuration [here](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/contracts/layer1/hekla/HeklaTierProvider.sol): - -![hekla proof tiers](~/assets/content/docs/network-reference/proof-tier-config-hekla.webp) - -## Network configuration (Hekla) - -You can view the full network configuration by visiting the TaikoL1 contract on Etherscan [here](https://holesky.etherscan.io/address/0x79C9109b764609df928d16fC4a91e9081F7e87DB#readProxyContract). Then connect your wallet, and select "Read as Proxy". You can then see the config details for the network. diff --git a/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx b/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx new file mode 100644 index 00000000000..cb9231207b2 --- /dev/null +++ b/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx @@ -0,0 +1,47 @@ +--- +title: Network configuration +description: The network configuration page describes many of the configuration details of the network. +--- + +import {Aside} from '@astrojs/starlight/components'; + +## Cooldown Window, Proving Window and Bonds + +This segment lists the cooldown windows and proving windows for every tier of proof in the Taiko protocol. + +The cooldown window describes how long after the proof has been provided that the block is verified. + +The proving window describes how long a prover has to provide a proof for a block after they have been assigned the block (i.e. a block has been proposed with them as the assigned prover). + +You can find all the corresponding values below in the above link too! + +| Tier | Cooldown Window | Proving Window | Bond | +| ----------------- | --------------- | -------------- | --------- | +| Optimistic | 1440 minutes | 255 minutes | 75 TAIKO | +| SGX | 240 minutes | 300 minutes | 150 TAIKO | +| ZK | 240 minutes | 420 minutes | 225 TAIKO | +| SGX & ZK | 240 minutes | 420 minutes | 225 TAIKO | +| Guardian Minority | 240 minutes | 240 minutes | 225 TAIKO | +| Guardian | 240 minutes | 240 minutes | 0 TAIKO | + +## Tier configuration (Mainnet) + +You can view the full `MainnetTierRouter` tier configuration [here](https://etherscan.io/address/0x8f1C1D58C858e9a9eeCc587d7D51AECfd16b5542#code): + +![mainnet proof tiers](~/assets/content/docs/network-reference/proof-tier-config-mn.webp) + +If the function of the bonds is not clear to you, please find out more [here](/resources/terminology#bonding-related). + +## Network configuration (Mainnet) + +You can view the full network configuration by visiting the TaikoL1 contract on Etherscan [here](https://etherscan.io/address/0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a#readProxyContract). Then connect your wallet, and select "Read as Proxy". You can then see the config details for the network. + +## Tier configuration (Hekla) + +You can view the full post ontake fork `HeklaTierRouter` tier configuration [here](https://holesky.etherscan.io/address/0x98d4FaD098526c4582063FA588C5e96229270366#code): + +![hekla proof tiers](~/assets/content/docs/network-reference/proof-tier-config-hekla.webp) + +## Network configuration (Hekla) + +You can view the full network configuration by visiting the TaikoL1 contract on Etherscan [here](https://holesky.etherscan.io/address/0x79C9109b764609df928d16fC4a91e9081F7e87DB#readProxyContract). Then connect your wallet, and select "Read as Proxy". You can then see the config details for the network. From 75ff1f87412c763e6ed3431d13689a629a2dd668 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 5 Nov 2024 13:32:39 +0800 Subject: [PATCH 141/205] fix(protocol): fix debitBond bug and add additional tests (#18443) --- .../contracts/layer1/based/LibBonds.sol | 15 ++-- .../layer1/team/tokenunlock/TokenUnlock.sol | 2 +- .../layer1/based/TaikoL1TestGroup11.t.sol | 69 +++++++++++++++++++ .../layer1/based/TaikoL1TestGroupBase.sol | 15 ---- 4 files changed, 79 insertions(+), 22 deletions(-) create mode 100644 packages/protocol/test/layer1/based/TaikoL1TestGroup11.t.sol diff --git a/packages/protocol/contracts/layer1/based/LibBonds.sol b/packages/protocol/contracts/layer1/based/LibBonds.sol index 7103e752422..64aceb36e94 100644 --- a/packages/protocol/contracts/layer1/based/LibBonds.sol +++ b/packages/protocol/contracts/layer1/based/LibBonds.sol @@ -35,6 +35,7 @@ library LibBonds { event BondDebited(address indexed user, uint256 blockId, uint256 amount); error L1_INVALID_MSG_VALUE(); + error L1_ETH_NOT_PAID_AS_BOND(); /// @dev Deposits TAIKO tokens to be used as bonds. /// @param _state Pointer to the protocol's storage. @@ -48,7 +49,7 @@ library LibBonds { public { _state.bondBalance[msg.sender] += _amount; - _handleDeposit(_resolver, _amount); + _handleDeposit(_resolver, msg.sender, _amount); } /// @dev Withdraws TAIKO tokens. @@ -111,7 +112,8 @@ library LibBonds { _state.bondBalance[_user] = balance - _amount; } } else { - _handleDeposit(_resolver, _amount); + // Note that the following function call will revert if bond asset is Ether. + _handleDeposit(_resolver, _user, _amount); } emit BondDebited(_user, _blockId, _amount); } @@ -138,17 +140,18 @@ library LibBonds { /// @dev Handles the deposit of bond tokens or Ether. /// @param _resolver The address resolver. + /// @param _user The user who made the deposit /// @param _amount The amount of tokens or Ether to deposit. - function _handleDeposit(IAddressResolver _resolver, uint256 _amount) private { + function _handleDeposit(IAddressResolver _resolver, address _user, uint256 _amount) private { address bondToken = _bondToken(_resolver); if (bondToken != address(0)) { require(msg.value == 0, L1_INVALID_MSG_VALUE()); - IERC20(bondToken).transferFrom(msg.sender, address(this), _amount); + IERC20(bondToken).transferFrom(_user, address(this), _amount); } else { - require(msg.value == _amount, L1_INVALID_MSG_VALUE()); + require(msg.value == _amount, L1_ETH_NOT_PAID_AS_BOND()); } - emit BondDeposited(msg.sender, _amount); + emit BondDeposited(_user, _amount); } /// @dev Resolves the bond token address using the address resolver, returns address(0) if Ether diff --git a/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol b/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol index 5cdff124958..1a2dad9cf12 100644 --- a/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol +++ b/packages/protocol/contracts/layer1/team/tokenunlock/TokenUnlock.sol @@ -85,7 +85,7 @@ contract TokenUnlock is EssentialContract { ) external nonZeroAddr(_recipient) - nonZeroValue(uint256(_tgeTimestamp)) + nonZeroValue(_tgeTimestamp) initializer { if (_owner == _recipient) revert INVALID_PARAM(); diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroup11.t.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroup11.t.sol new file mode 100644 index 00000000000..6f5feb65b58 --- /dev/null +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroup11.t.sol @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "./TaikoL1TestGroupBase.sol"; + +contract TaikoL10TestGroup11 is TaikoL1TestGroupBase { + // Test summary: + // 1. Zachary proposes a block with a custom proposer in the block parameters + // 2. The proposal will revert as Zachary is not registered as the preconf task manager. + function test_taikoL1_group_11_case_1() external { + vm.warp(1_000_000); + printBlockAndTrans(0); + + giveEthAndTko(Zachary, 10_000 ether, 1000 ether); + + ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); + + console2.log("====== Zachary proposes a block"); + + TaikoData.BlockParamsV2 memory params; + params.proposer = Alice; + proposeBlock(Zachary, params, LibProposing.L1_INVALID_CUSTOM_PROPOSER.selector); + } + + // Test summary: + // 1. Zachary proposes a block with a Alice as the proposer + // 2. Alice proves the block + // 3. Alice verifies the block to get back her bonds. + function test_taikoL1_group_11_case_2() external { + registerAddress("preconf_task_manager", Zachary); + + vm.warp(1_000_000); + printBlockAndTrans(0); + + giveEthAndTko(Zachary, 10_000 ether, 1000 ether); + giveEthAndTko(Alice, 10_000 ether, 1000 ether); + + ITierProvider.Tier memory tierOp = ITierProvider(tr).getTier(LibTiers.TIER_OPTIMISTIC); + + console2.log("====== Zachary proposes a block with Alice as the proposer"); + + TaikoData.BlockParamsV2 memory params; + params.proposer = Alice; + TaikoData.BlockMetadataV2 memory meta = proposeBlock(Zachary, params, ""); + + assertEq(totalTkoBalance(tko, L1, Zachary), 10_000 ether); + assertEq(totalTkoBalance(tko, L1, Alice), 10_000 ether - L1.getConfig().livenessBond); + + console2.log("====== Alice proves the block"); + // Prove the block + bytes32 blockHash = bytes32(uint256(10_000)); + bytes32 stateRoot = bytes32(uint256(20_000)); + + mineAndWrap(10 seconds); + proveBlock(Alice, meta, GENESIS_BLOCK_HASH, blockHash, stateRoot, meta.minTier, ""); + + assertEq(totalTkoBalance(tko, L1, Zachary), 10_000 ether); + assertEq(totalTkoBalance(tko, L1, Alice), 10_000 ether - tierOp.validityBond); + + printBlockAndTrans(meta.id); + + console2.log("====== Alice's block is verified"); + mineAndWrap(7 days); + verifyBlock(1); + + assertEq(totalTkoBalance(tko, L1, Zachary), 10_000 ether); + assertEq(totalTkoBalance(tko, L1, Alice), 10_000 ether); + } +} diff --git a/packages/protocol/test/layer1/based/TaikoL1TestGroupBase.sol b/packages/protocol/test/layer1/based/TaikoL1TestGroupBase.sol index 6accc380dc8..5948876c131 100644 --- a/packages/protocol/test/layer1/based/TaikoL1TestGroupBase.sol +++ b/packages/protocol/test/layer1/based/TaikoL1TestGroupBase.sol @@ -46,21 +46,6 @@ abstract contract TaikoL1TestGroupBase is TaikoL1TestBase { return L1.proposeBlockV2(abi.encode(params), new bytes(10)); } - function proposeBlockV2( - address proposer, - TaikoData.BlockParamsV2 memory params, - bytes4 revertReason - ) - internal - returns (TaikoData.BlockMetadataV2 memory) - { - bytes memory txList = new bytes(10); - - vm.prank(proposer); - if (revertReason != "") vm.expectRevert(revertReason); - return L1.proposeBlockV2(abi.encode(params), txList); - } - function proveBlock( address prover, TaikoData.BlockMetadataV2 memory meta, From 10d99d50d3866a6e233d9e3749ea5eb753335815 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 5 Nov 2024 13:53:33 +0800 Subject: [PATCH 142/205] feat(taiko-client): add chain ID to `TryDecompress()` (#18444) --- .../driver/chain_syncer/blob/syncer.go | 19 ++++++------------- .../txlist_decompressor.go | 19 +++++++++++++++++-- .../txlist_decompressor_test.go | 18 +++++++++--------- 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer.go b/packages/taiko-client/driver/chain_syncer/blob/syncer.go index 8320eb60c08..2abb04395d0 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer.go @@ -18,7 +18,6 @@ import ( "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/metadata" @@ -261,23 +260,17 @@ func (s *Syncer) onBlockProposed( return fmt.Errorf("failed to fetch tx list: %w", err) } - var decompressedTxListBytes []byte - if s.rpc.L2.ChainID.Cmp(params.HeklaNetworkID) == 0 { - decompressedTxListBytes = s.txListDecompressor.TryDecompressHekla( - meta.GetBlockID(), - txListBytes, - meta.GetBlobUsed(), - ) - } else { - decompressedTxListBytes = s.txListDecompressor.TryDecompress(meta.GetBlockID(), txListBytes, meta.GetBlobUsed()) - } - // Decompress the transactions list and try to insert a new head block to L2 EE. payloadData, err := s.insertNewHead( ctx, meta, parent, - decompressedTxListBytes, + s.txListDecompressor.TryDecompress( + s.rpc.L2.ChainID, + meta.GetBlockID(), + txListBytes, + meta.GetBlobUsed(), + ), &rawdb.L1Origin{ BlockID: meta.GetBlockID(), L2BlockHash: common.Hash{}, // Will be set by taiko-geth. diff --git a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go index e288115fc8b..1edd4158557 100644 --- a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go +++ b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go @@ -5,6 +5,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" @@ -39,6 +40,20 @@ func NewTxListDecompressor( // less than or equal to maxBytesPerTxList. // 2. The transaction list bytes must be able to be RLP decoded into a list of transactions. func (v *TxListDecompressor) TryDecompress( + chainID *big.Int, + blockID *big.Int, + txListBytes []byte, + blobUsed bool, +) []byte { + if chainID.Cmp(params.HeklaNetworkID) == 0 { + return v.tryDecompressHekla(blockID, txListBytes, blobUsed) + } + + return v.tryDecompress(blockID, txListBytes, blobUsed) +} + +// tryDecompress is the inner implementation of TryDecompress. +func (v *TxListDecompressor) tryDecompress( blockID *big.Int, txListBytes []byte, blobUsed bool, @@ -76,10 +91,10 @@ func (v *TxListDecompressor) TryDecompress( return txListBytes } -// TryDecompressHekla is the same as TryDecompress, but it's used for Hekla network with +// TryDecompressHekla is the same as tryDecompress, but it's used for Hekla network with // an incorrect legacy bytes size check. // ref: https://github.com/taikoxyz/taiko-client/pull/783 -func (v *TxListDecompressor) TryDecompressHekla( +func (v *TxListDecompressor) tryDecompressHekla( blockID *big.Int, txListBytes []byte, blobUsed bool, diff --git a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go index 980e866bb24..071ea04a0ec 100644 --- a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go +++ b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go @@ -39,12 +39,12 @@ func (s *TxListDecompressorTestSuite) SetupTest() { } func (s *TxListDecompressorTestSuite) TestZeroBytes() { - s.Empty(s.d.TryDecompress(chainID, []byte{}, false)) + s.Empty(s.d.TryDecompress(chainID, common.Big1, []byte{}, false)) } func (s *TxListDecompressorTestSuite) TestCalldataSize() { - s.Empty(s.d.TryDecompress(chainID, randBytes(rpc.BlockMaxTxListBytes+1), false)) - s.Empty(s.d.TryDecompress(chainID, randBytes(rpc.BlockMaxTxListBytes-1), false)) + s.Empty(s.d.TryDecompress(chainID, common.Big1, randBytes(rpc.BlockMaxTxListBytes+1), false)) + s.Empty(s.d.TryDecompress(chainID, common.Big1, randBytes(rpc.BlockMaxTxListBytes-1), false)) } func (s *TxListDecompressorTestSuite) TestValidTxList() { @@ -53,21 +53,21 @@ func (s *TxListDecompressorTestSuite) TestValidTxList() { decompressed, err := utils.Decompress(compressed) s.Nil(err) - s.Equal(s.d.TryDecompress(chainID, compressed, true), decompressed) - s.Equal(s.d.TryDecompress(chainID, compressed, false), decompressed) + s.Equal(s.d.TryDecompress(chainID, common.Big1, compressed, true), decompressed) + s.Equal(s.d.TryDecompress(chainID, common.Big1, compressed, false), decompressed) } func (s *TxListDecompressorTestSuite) TestInvalidTxList() { compressed, err := utils.Compress(randBytes(1024)) s.Nil(err) - s.Zero(len(s.d.TryDecompress(chainID, compressed, true))) - s.Zero(len(s.d.TryDecompress(chainID, compressed, false))) + s.Zero(len(s.d.TryDecompress(chainID, common.Big1, compressed, true))) + s.Zero(len(s.d.TryDecompress(chainID, common.Big1, compressed, false))) } func (s *TxListDecompressorTestSuite) TestInvalidZlibBytes() { - s.Zero(len(s.d.TryDecompress(chainID, randBytes(1024), true))) - s.Zero(len(s.d.TryDecompress(chainID, randBytes(1024), false))) + s.Zero(len(s.d.TryDecompress(chainID, common.Big1, randBytes(1024), true))) + s.Zero(len(s.d.TryDecompress(chainID, common.Big1, randBytes(1024), false))) } func TestDriverTestSuite(t *testing.T) { From 3d077f8ee520a116028711391c323c7badd1f2c6 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 5 Nov 2024 13:54:08 +0800 Subject: [PATCH 143/205] refactor(protocol): slightly improve EssentialContract (#18445) --- .../contracts/shared/common/EssentialContract.sol | 5 +++++ .../contracts/shared/signal/SignalService.sol | 14 +++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/protocol/contracts/shared/common/EssentialContract.sol b/packages/protocol/contracts/shared/common/EssentialContract.sol index 654393b21e7..70320ea9623 100644 --- a/packages/protocol/contracts/shared/common/EssentialContract.sol +++ b/packages/protocol/contracts/shared/common/EssentialContract.sol @@ -71,6 +71,11 @@ abstract contract EssentialContract is UUPSUpgradeable, Ownable2StepUpgradeable, _; } + modifier nonZeroBytes32(bytes32 _value) { + require(_value != 0, ZERO_VALUE()); + _; + } + /// @custom:oz-upgrades-unsafe-allow constructor constructor() { _disableInitializers(); diff --git a/packages/protocol/contracts/shared/signal/SignalService.sol b/packages/protocol/contracts/shared/signal/SignalService.sol index 8b4416eda8c..f7432392bb7 100644 --- a/packages/protocol/contracts/shared/signal/SignalService.sol +++ b/packages/protocol/contracts/shared/signal/SignalService.sol @@ -120,7 +120,7 @@ contract SignalService is EssentialContract, ISignalService { ) public view - nonZeroValue(uint256(_chainData)) + nonZeroBytes32(_chainData) returns (bool) { bytes32 signal = signalForChainData(_chainId, _kind, _blockId); @@ -193,8 +193,8 @@ contract SignalService is EssentialContract, ISignalService { view virtual nonZeroAddr(_app) - nonZeroValue(uint256(_signal)) - nonZeroValue(uint256(_value)) + nonZeroBytes32(_signal) + nonZeroBytes32(_value) returns (bytes32) { return LibTrieProof.verifyMerkleProof( @@ -234,8 +234,8 @@ contract SignalService is EssentialContract, ISignalService { ) private nonZeroAddr(_app) - nonZeroValue(uint256(_signal)) - nonZeroValue(uint256(_value)) + nonZeroBytes32(_signal) + nonZeroBytes32(_value) returns (bytes32 slot_) { slot_ = getSignalSlot(uint64(block.chainid), _app, _signal); @@ -276,7 +276,7 @@ contract SignalService is EssentialContract, ISignalService { private view nonZeroAddr(_app) - nonZeroValue(uint256(_signal)) + nonZeroBytes32(_signal) returns (bytes32 value_) { bytes32 slot = getSignalSlot(uint64(block.chainid), _app, _signal); @@ -295,7 +295,7 @@ contract SignalService is EssentialContract, ISignalService { private view nonZeroAddr(_app) - nonZeroValue(uint256(_signal)) + nonZeroBytes32(_signal) returns (CacheAction[] memory actions) { HopProof[] memory hopProofs = abi.decode(_proof, (HopProof[])); From 9549e7f3e899b22ff8c9ff7d731aa3ce250fd071 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 5 Nov 2024 14:20:34 +0800 Subject: [PATCH 144/205] fix(protocol): revert `B_TIER_OPTIMISTIC` back to `""` (#18446) --- packages/protocol/contracts/shared/common/LibStrings.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/shared/common/LibStrings.sol b/packages/protocol/contracts/shared/common/LibStrings.sol index 8437cf03fb9..8f18a6364c9 100644 --- a/packages/protocol/contracts/shared/common/LibStrings.sol +++ b/packages/protocol/contracts/shared/common/LibStrings.sol @@ -26,7 +26,7 @@ library LibStrings { bytes32 internal constant B_TAIKO_TOKEN = bytes32("taiko_token"); bytes32 internal constant B_TIER_GUARDIAN = bytes32("tier_guardian"); bytes32 internal constant B_TIER_GUARDIAN_MINORITY = bytes32("tier_guardian_minority"); - bytes32 internal constant B_TIER_OPTIMISTIC = bytes32("tier_optimistic"); + bytes32 internal constant B_TIER_OPTIMISTIC = bytes32(""); bytes32 internal constant B_TIER_ROUTER = bytes32("tier_router"); bytes32 internal constant B_TIER_SGX = bytes32("tier_sgx"); bytes32 internal constant B_TIER_TDX = bytes32("tier_tdx"); From 28f32a790cc680ecb3e6345221e4183af4f34b2e Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Tue, 5 Nov 2024 16:30:27 +0800 Subject: [PATCH 145/205] feat(taiko-client): compatible changes for `lastProposedIn` (#18442) --- .../taiko-client/bindings/gen_taiko_l1.go | 25 +++++++++++++++++++ packages/taiko-client/pkg/rpc/methods.go | 4 +-- packages/taiko-client/pkg/rpc/utils.go | 19 +++++++++++++- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go index 1bf4df704ef..8b975b5cd2d 100644 --- a/packages/taiko-client/bindings/gen_taiko_l1.go +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -143,6 +143,16 @@ type TaikoDataSlotB struct { LastUnpausedAt uint64 } +type TaikoDataSlotBV1 struct { + NumBlocks uint64 + LastVerifiedBlockId uint64 + ProvingPaused bool + ReservedB1 uint8 + ReservedB2 uint16 + ReservedB3 uint32 + LastUnpausedAt uint64 +} + // TaikoDataTransition is an auto generated low-level Go binding around an user-defined struct. type TaikoDataTransition struct { ParentHash [32]byte @@ -599,6 +609,21 @@ func (_TaikoL1Client *TaikoL1ClientCaller) GetStateVariables(opts *bind.CallOpts } +func (_TaikoL1Client *TaikoL1ClientCaller) GetStateVariablesV1(opts *bind.CallOpts) (TaikoDataSlotA, TaikoDataSlotBV1, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getStateVariables") + + if err != nil { + return *new(TaikoDataSlotA), *new(TaikoDataSlotBV1), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataSlotA)).(*TaikoDataSlotA) + out1 := *abi.ConvertType(out[1], new(TaikoDataSlotB)).(*TaikoDataSlotBV1) + + return out0, out1, err + +} + // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // // Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint56,uint64)) diff --git a/packages/taiko-client/pkg/rpc/methods.go b/packages/taiko-client/pkg/rpc/methods.go index 35a96b6f2ba..e89a79385ad 100644 --- a/packages/taiko-client/pkg/rpc/methods.go +++ b/packages/taiko-client/pkg/rpc/methods.go @@ -594,14 +594,14 @@ func (c *Client) CheckL1Reorg(ctx context.Context, blockID *big.Int) (*ReorgChec // If we rollback to the genesis block, then there is no L1Origin information recorded in the L2 execution // engine for that block, so we will query the protocol to use `GenesisHeight` value to reset the L1 cursor. if blockID.Cmp(common.Big0) == 0 { - slotA, _, err := c.TaikoL1.GetStateVariables(&bind.CallOpts{Context: ctxWithTimeout}) + state, err := GetProtocolStateVariables(c.TaikoL1, &bind.CallOpts{Context: ctxWithTimeout}) if err != nil { return result, err } if result.L1CurrentToReset, err = c.L1.HeaderByNumber( ctxWithTimeout, - new(big.Int).SetUint64(slotA.GenesisHeight), + new(big.Int).SetUint64(state.A.GenesisHeight), ); err != nil { return nil, err } diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go index 78f35b62022..a701e63302a 100644 --- a/packages/taiko-client/pkg/rpc/utils.go +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -2,6 +2,7 @@ package rpc import ( "context" + "errors" "math/big" "os" "os/signal" @@ -31,6 +32,7 @@ var ( syscall.SIGTERM, syscall.SIGQUIT, } + ErrSlotBMarshal = errors.New("abi: cannot marshal in to go type: length insufficient 160 require 192") ) // GetProtocolConfigs gets the protocol configs from TaikoL1 contract. @@ -63,9 +65,24 @@ func GetProtocolStateVariables( opts.Context, cancel = CtxWithTimeoutOrDefault(opts.Context, defaultTimeout) defer cancel() + var slotBV1 bindings.TaikoDataSlotBV1 slotA, slotB, err := taikoL1Client.GetStateVariables(opts) if err != nil { - return nil, err + if errors.Is(err, ErrSlotBMarshal) { + slotA, slotBV1, err = taikoL1Client.GetStateVariablesV1(opts) + if err != nil { + return nil, err + } + slotB = bindings.TaikoDataSlotB{ + NumBlocks: slotBV1.NumBlocks, + LastVerifiedBlockId: slotBV1.LastVerifiedBlockId, + ProvingPaused: slotBV1.ProvingPaused, + LastProposedIn: nil, + LastUnpausedAt: slotBV1.LastUnpausedAt, + } + } else { + return nil, err + } } return &struct { A bindings.TaikoDataSlotA From cbdea68cddf47f40e45e8750a40649ebeddec0be Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 5 Nov 2024 16:47:53 +0800 Subject: [PATCH 146/205] ci(protocol): revert release-please workflow (#18447) --- .github/workflows/repo--release-please.yml | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/.github/workflows/repo--release-please.yml b/.github/workflows/repo--release-please.yml index 9b145a43659..b3934ccc1d7 100644 --- a/.github/workflows/repo--release-please.yml +++ b/.github/workflows/repo--release-please.yml @@ -18,21 +18,6 @@ jobs: release-please: runs-on: [arc-runner-set] steps: - - name: Run Release Please - id: release_please - uses: googleapis/release-please-action@v4 + - uses: googleapis/release-please-action@v4 with: token: ${{ secrets.RELEASE_PLEASE_TOKEN }} - - - name: Convert PR to Draft - if: ${{ steps.release_please.outputs.pr != '' }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - pr_number=${{ steps.release_please.outputs.pr }} - echo "Converting PR #$pr_number to draft..." - curl -X PATCH \ - -H "Authorization: token $GITHUB_TOKEN" \ - -H "Accept: application/vnd.github.v3+json" \ - -d '{"draft":true}' \ - "https://api.github.com/repos/${{ github.repository }}/pulls/$pr_number" \ No newline at end of file From 60a6f1e86990884b1cfcab0e44ff33d6884ffee0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 20:48:56 +0800 Subject: [PATCH 147/205] build(deps): bump github.com/golang-jwt/jwt/v4 from 4.5.0 to 4.5.1 in the go_modules group (#18448) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 03d916ed2bc..5a7576e5e62 100644 --- a/go.mod +++ b/go.mod @@ -112,7 +112,7 @@ require ( github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect + github.com/golang-jwt/jwt/v4 v4.5.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/go-cmp v0.6.0 // indirect diff --git a/go.sum b/go.sum index 84f7c5f2b14..2a5672519f8 100644 --- a/go.sum +++ b/go.sum @@ -251,8 +251,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= +github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= From bd803307ef02170b1f2610ce7e5e0deb0e97f7af Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Tue, 5 Nov 2024 07:32:08 -0800 Subject: [PATCH 148/205] chore(main): release docs-site 1.15.0 (#18428) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 17 +++++++++++++++++ packages/docs-site/package.json | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8ad86e806be..a5630301506 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.14.0", + "packages/docs-site": "1.15.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index aec0022e570..fcb67c43af7 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [1.15.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.14.0...docs-site-v1.15.0) (2024-11-05) + + +### Features + +* **docs-site:** update network config, list cooldown, proving windows and bonds for every tier, remove banner ([#18377](https://github.com/taikoxyz/taiko-mono/issues/18377)) ([df16035](https://github.com/taikoxyz/taiko-mono/commit/df160358ad022025e76b5957ad0952e4f804dacd)) + + +### Documentation + +* **docs-site:** update mainnet prover docs ([#18367](https://github.com/taikoxyz/taiko-mono/issues/18367)) ([4fd7b59](https://github.com/taikoxyz/taiko-mono/commit/4fd7b5922dd1447d91ec7fea83c987cb1643cc1b)) + + +### Workflow + +* **protocol:** trigger patch release (1.10.1) ([#18358](https://github.com/taikoxyz/taiko-mono/issues/18358)) ([f4f4796](https://github.com/taikoxyz/taiko-mono/commit/f4f4796488059b02c79d6fb15170df58dd31dc4e)) + ## [1.14.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.13.0...docs-site-v1.14.0) (2024-10-25) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index 89aa71af7ed..a46fc88c3d8 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.14.0", + "version": "1.15.0", "scripts": { "dev": "astro dev", "start": "astro dev", From 0706f0aee9c318d8de298f98480a46de6337937c Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Wed, 6 Nov 2024 09:34:05 +0800 Subject: [PATCH 149/205] feat(taiko-client): revert pr 18442 (#18450) --- .../taiko-client/bindings/gen_taiko_l1.go | 25 ------------------- packages/taiko-client/pkg/rpc/methods.go | 4 +-- packages/taiko-client/pkg/rpc/utils.go | 21 +++------------- 3 files changed, 5 insertions(+), 45 deletions(-) diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go index 8b975b5cd2d..1bf4df704ef 100644 --- a/packages/taiko-client/bindings/gen_taiko_l1.go +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -143,16 +143,6 @@ type TaikoDataSlotB struct { LastUnpausedAt uint64 } -type TaikoDataSlotBV1 struct { - NumBlocks uint64 - LastVerifiedBlockId uint64 - ProvingPaused bool - ReservedB1 uint8 - ReservedB2 uint16 - ReservedB3 uint32 - LastUnpausedAt uint64 -} - // TaikoDataTransition is an auto generated low-level Go binding around an user-defined struct. type TaikoDataTransition struct { ParentHash [32]byte @@ -609,21 +599,6 @@ func (_TaikoL1Client *TaikoL1ClientCaller) GetStateVariables(opts *bind.CallOpts } -func (_TaikoL1Client *TaikoL1ClientCaller) GetStateVariablesV1(opts *bind.CallOpts) (TaikoDataSlotA, TaikoDataSlotBV1, error) { - var out []interface{} - err := _TaikoL1Client.contract.Call(opts, &out, "getStateVariables") - - if err != nil { - return *new(TaikoDataSlotA), *new(TaikoDataSlotBV1), err - } - - out0 := *abi.ConvertType(out[0], new(TaikoDataSlotA)).(*TaikoDataSlotA) - out1 := *abi.ConvertType(out[1], new(TaikoDataSlotB)).(*TaikoDataSlotBV1) - - return out0, out1, err - -} - // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // // Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint56,uint64)) diff --git a/packages/taiko-client/pkg/rpc/methods.go b/packages/taiko-client/pkg/rpc/methods.go index e89a79385ad..35a96b6f2ba 100644 --- a/packages/taiko-client/pkg/rpc/methods.go +++ b/packages/taiko-client/pkg/rpc/methods.go @@ -594,14 +594,14 @@ func (c *Client) CheckL1Reorg(ctx context.Context, blockID *big.Int) (*ReorgChec // If we rollback to the genesis block, then there is no L1Origin information recorded in the L2 execution // engine for that block, so we will query the protocol to use `GenesisHeight` value to reset the L1 cursor. if blockID.Cmp(common.Big0) == 0 { - state, err := GetProtocolStateVariables(c.TaikoL1, &bind.CallOpts{Context: ctxWithTimeout}) + slotA, _, err := c.TaikoL1.GetStateVariables(&bind.CallOpts{Context: ctxWithTimeout}) if err != nil { return result, err } if result.L1CurrentToReset, err = c.L1.HeaderByNumber( ctxWithTimeout, - new(big.Int).SetUint64(state.A.GenesisHeight), + new(big.Int).SetUint64(slotA.GenesisHeight), ); err != nil { return nil, err } diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go index a701e63302a..7bf74c7378a 100644 --- a/packages/taiko-client/pkg/rpc/utils.go +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -2,7 +2,6 @@ package rpc import ( "context" - "errors" "math/big" "os" "os/signal" @@ -32,7 +31,6 @@ var ( syscall.SIGTERM, syscall.SIGQUIT, } - ErrSlotBMarshal = errors.New("abi: cannot marshal in to go type: length insufficient 160 require 192") ) // GetProtocolConfigs gets the protocol configs from TaikoL1 contract. @@ -65,24 +63,11 @@ func GetProtocolStateVariables( opts.Context, cancel = CtxWithTimeoutOrDefault(opts.Context, defaultTimeout) defer cancel() - var slotBV1 bindings.TaikoDataSlotBV1 + // Notice: sloB.LastProposedIn and slotB.LastUnpausedAt are always 0 + // before upgrading contract, but we can ignore it since we won't use it. slotA, slotB, err := taikoL1Client.GetStateVariables(opts) if err != nil { - if errors.Is(err, ErrSlotBMarshal) { - slotA, slotBV1, err = taikoL1Client.GetStateVariablesV1(opts) - if err != nil { - return nil, err - } - slotB = bindings.TaikoDataSlotB{ - NumBlocks: slotBV1.NumBlocks, - LastVerifiedBlockId: slotBV1.LastVerifiedBlockId, - ProvingPaused: slotBV1.ProvingPaused, - LastProposedIn: nil, - LastUnpausedAt: slotBV1.LastUnpausedAt, - } - } else { - return nil, err - } + return nil, err } return &struct { A bindings.TaikoDataSlotA From bfb03864ee83ccc3bce989f3e9fd2309eb90c277 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Wed, 6 Nov 2024 15:42:50 +0800 Subject: [PATCH 150/205] docs(protocol): upgrade verifiers to support proof aggregation in Hekla (#18453) --- .../protocol/deployments/hekla-contract-logs.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/protocol/deployments/hekla-contract-logs.md b/packages/protocol/deployments/hekla-contract-logs.md index fc9a9303a1f..04193442245 100644 --- a/packages/protocol/deployments/hekla-contract-logs.md +++ b/packages/protocol/deployments/hekla-contract-logs.md @@ -211,6 +211,14 @@ - upgraded on Sep 20, 2024 at commit `fd1c039` - upgraded on Oct 29, 2024 at commit `3d12cb2` +### tier_sgx + +- proxy : 0x532EFBf6D62720D0B2a2Bb9d11066E8588cAE6D9 +- impl : 0x3c1b6b0F179dab0dE5e11C9B2a531C5c693Fd70C +- owner : 0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190 +- logs: + - upgraded on Nov 6, 2024 at commit `0706f0a` + ### risc0_groth16_verifier - addr : 0x5fd84014c62D5ea28D4533D5B1B48Ca44e571057 @@ -221,10 +229,11 @@ ### tier_zkvm_risc0 - proxy : 0x4fEd801C5a876D4289e869cbEfA1E1A448b10714 -- impl : 0x33BD79aA6a24d8ED4413E01FEc546D4d49bF6C39 +- impl : 0xAF9F3B3f9276f24e4143e6247795cf71985C4890 - owner : 0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190 - logs: - deployed on August 14, 2024 at commit `cba2a1e` + - upgraded on Nov 6, 2024 at commit `0706f0a` ### sp1_plonk_verifier @@ -237,11 +246,12 @@ ### tier_zkvm_sp1 - proxy : 0xFbE49f777E0078b3Fa0bae6de4794c88d6EA6DDD -- impl : 0x28d8F1DdAb35f34F5b97eE844bC74Bd237efe731 +- impl : 0xB83b7f7fA8f4e6332769D123b8C973F485aC4bBc. - owner : 0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190 - logs: - deployed on September 02, 2024 at commit `16ac02e` - upgraded on September 15, 2024 at commit `6f26434` + - upgraded on Nov 6, 2024 at commit `0706f0a` ## L2 Contracts From 94185feb207b9a2e74fb05a4898d25ce2008f826 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 6 Nov 2024 22:15:41 +0800 Subject: [PATCH 151/205] feat(protocol): allow `local.params.parentMetaHash` to remain as 0 (#18451) --- .../protocol/contracts/layer1/based/LibProposing.sol | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index 81f8c199fe1..9e78516baa4 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -202,11 +202,10 @@ library LibProposing { // Check if parent block has the right meta hash. This is to allow the proposer to make sure // the block builds on the expected latest chain state. - if (local.params.parentMetaHash == 0) { - local.params.parentMetaHash = parentBlk.metaHash; - } else { - require(local.params.parentMetaHash == parentBlk.metaHash, L1_UNEXPECTED_PARENT()); - } + require( + local.params.parentMetaHash == 0 || local.params.parentMetaHash == parentBlk.metaHash, + L1_UNEXPECTED_PARENT() + ); // Initialize metadata to compute a metaHash, which forms a part of the block data to be // stored on-chain for future integrity checks. If we choose to persist all data fields in From 1d9b753d7163104e5593d3c46d019d9cdae7d549 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Wed, 6 Nov 2024 18:55:51 -0800 Subject: [PATCH 152/205] feat(docs-site): update graphic for hekla network config (#18457) --- .../proof-tier-config-hekla.webp | Bin 240829 -> 266084 bytes .../network-reference/testnet-addresses.md | 12 ++++++++++++ 2 files changed, 12 insertions(+) diff --git a/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-hekla.webp b/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-hekla.webp index 53d85d9dc5552d407959ca7f9d690ff27a73b8e3..e5ec541ad00b3e13e01311de6a4573b27cce5299 100644 GIT binary patch literal 266084 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 z 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 z zyJvRdmF*!>X}{+-WE-S-+C&K ztE*MLFn0C&OB|i)&Sr|E<$#@|!wso)5`EeDx9HySRi)C4GPp~Qn2YoMIyP(1+HBC& zWhJd6*=j?I-ik`0eH8MYALa&U>KB zch3B^LcB1;>l(iZ)mB8UD(BjSSd7F=AA8Q$ZYEd7;&dF*J{5qet@vcj@8Yj^&n#YM zNE%M+e}evoLqrfYK>pU)9BBU6OTbX7$wH938`}g3C{tkbek{7N3Fvku=9&)s7m2Vf zo{Mn-wgnD+?@4UXUo#wTrnypMk*f{W5bo5=f!+qeYS64wOm%P;_8JAHKpvf$7nhozeq+T=u}wd zvd>l+kIHuC33ST9dj;HP=xF%eRE(z9&+1py4A+q^d=}*)1O;} znW9PFTzD{Qeb!c_A3fCLR51T2&vIP4ppWlSn{;V~l8Uv;k|jiwa`@GQUAMn7$CS6LpwAH*<$1bPZ z-k?#Zl8Zy9a?;0~$+jk=3hM6^&$NM!$%nHOf>*-EWF7I1)gjfSFH66TQ26=))7BjA zJAYXPJ#E=iqJUShOzcJNhA!j!5iNo$7q?0Eb2ASnh||rKWs7X^+a1lBc=lr(EZ5M{EmI%=KK`l$wu2H>u{C!tHupQW>DtTjzZjB z(6CZVuJ76O=7c~f!&YR*#6mCoEz%jM2%v zA;B^wxb~Y`kbq}vukr=%Hum- zrgGtg0}IYh`}tS?3BCJr3?>{36)*?BgZNzg zvx!Ru9&Y-kK*19dbQ-7cqJh0g|}S+Byr zSTECOH)D;7xieKmqP^una%NpvdMGJzR+Uq2O{zJu?|XFJf$r5yg9mHuKbyOEVA}EX z+VUaIIc5UMn@O1H$WGa_)l&!WG4`>2QOtz2p%8k>3V(g&Czw3ST>r9%%mB)O&CcHY zD;8Y+2-!K^VNjI7iD^8$3g@+>+b0YCKjGrOj{}Oe)`aL~!RfLXn=w}!$((Nt9p6~u zn3=%-!NqZ>enCNXgL>ZKG-G#HT{7RuJhs@c(iVwt0v87pl%E(x9H1m){f@EY&Ku>p10`? z<8h%Z)*kcmXIAj0e;!R$6f zSL5Q6zcX4e)RClqA#$VuGM=?&xsJ?mB>G;6mM!5KY!L=yZPSDFbZBlD#L49FJGC7o z3}9<7S;D#!lg_*M^q2FkAZO|+Yz#3M=DqEOCK*k=Zt!2Gi&;)9)&ck@PE(U2GMG<3 zhm&4j^N$_v%XU$Y)7#or@erpZH4)6aO-5@#-8Yxiyu8eP4La0M+V0h^51ks8vX>5< zMau=h`vG!K9j-*2t?Rl{QH*1l!#~OS$<0u7F>P12$oV14%W|Z}xJ0z`L3m@_JG`!3 zweH@JFu~BKjIZ11rIjAdCv>^JNE02A2~{rVD-a^w}IvGlbfxIcn#JxT4 zNaT`1arf{X=XcUC#Yq;n;(cSD)s;CyG9#MrVl8r;oYeD*2-D>mcVKdqiw8?{PTDMCtuD27v8<&Mh$vkWa;wsT0%xW$k^I1_cnrSeFi8qs|q+|A?52 zym&^ioj!+J(>1h4Nx;4evwd%GQI~7=U?NprTR#<^Sxed46Ry5#Qe6U9|JD_F)r*pc zJik?Fl}1jgc4l8_!u(2P$!bH{jjiI*iu;asQNCl&kHU+?v=)m`8%hTHacQzNvQ4Oh1%QEzpfq-@=~sxY{t}saumtNvq>7^oLXGt zn%?Z#jZ`b0{a&x2-qC<)67(Q2Dh|d`3c-wLww{F4lCfF)0WosT~r}JRjKy%NgSk|>oYO%PPR@Cld z^dtY^;1*t0z|exv!t_Y;m}L)%D9@k{o-#SzCwW=k^ZZ2eR2 zXLDXb8!jZIaZYL6QkncaiPbBfRI-SB>1lfGs@ZVNBOhWO$aRhTci)};Dqp#9!RsLA zdB^8%N2oh;Nt<6}VUw6`!LS*Z2o_S*{mtJ12ssnrK{6B7)0}Ajfg=AqYXqz<4c2S7 z^`_#Z1VhJ77>f-hjlQSm{edMrrqeHeZo-*6#cJeLB#_$KuGfZvU zBKebsVlJkeW1OW1qOH}_%Hn3|`GCN1IcNhFK*BvgA@FVfqPey_oCfJ@f2>+UsO-{h z0PJKk{XFcuK z8n6NlyteZLPVBd( z$wL#o_DJhhH?7P`N?Ipz-KYih`{dD9T({yQb@^r5Cp|v@8Y1Wt)qS^mk93P%oJ=}Q zv1q&;x?S~<#JWb=&BY<=Oe2MJ1P`vHZdct@Gw8#)A6*W4dr(b5m2j_YnrGgmcB=GP zcz>D>0e84FFQ317h%VDC%6%Q$C~GL~8={h@seu|BZ+2H)%d510Di zADZL+2VA>kg|7x0JG4}RC;YF|WLcX{uB&*2p6MFbNf^K(}8zD!>ImKsW^R_V^{6Eg> zy-ZeildNN~9kOKWM>P_pJ23~1F8{&4FX(J&Gsl5BI-qmdUkr^DW@ec7TaQsrJUFQ` z#(oJEw0ql}b75*Xn!J@tL|jh8w4KJB+8ss8QZk(Pj{XDvcV;hF-plTON5?bv8WYXC z=FCdUC>b7%CDS-`z1KYlPF}9v4VY%sjwRdDL2w->)qI*I$@dj$>}}FLb9GDYH$_~S z-!42-pT|{`q9B6&z2N18aZ3824d*e(QTUbnw#?C*9ZYqG(=?XY+b_@Zf$dB;hL^Y) z?7Gsi-+G#HgI~btefH(VAY;|)l8(T$q04Ixn8GDhL41YaJVXN^5h9DhZF?!F?q@5% z#5>jV$`>m~m%hCku;utdms8YHeB_r*iLc=oUu0a%|xjCNv~gdax&wneu?Mg3vj=p3>JOZ2X z(!i+WfAm%PGC06-c+2gZlbdikYi5-u8vWRpv}cI2dj)uITYRL(^za4V3ACU!UV{lM zs>M}}tUS+AC}KZCfO{YJ(H0XOzIK0ZLb2hu`Ng$ZdOJOrNHTu9hJre@*Dt0U_GaD^ ztW&N;9)0PNeUl+B>bTVx37m(gzJS_LinXkae?c^@TPmFi%D(b%xcA>_tCC0)Js}e1 z_A_WW_la*Go{K*UJj7I=B+g*zbq$r?O#M4qMzi>U(>ON2JG>VogxV1jLb2gl6LrB% zw3Lcy96bG3jqS?oXZQ}5bc5n$uIAphC(N2BVZ%`g;esO?`!gv9YM!185@SD03c5}X zTjE$Za_cz!PRi*W4bDyYiI}I+1coGPP$he8+}2vdab2O#$RYPgeMB8q3n|waPY$r0 z-(QzE;V~(Z?IoZ+w~eLbGP~iYYorPlO1{lqE?B=$Rnok&B^>SFR@C;lC1IC}x;ia* z=5-{Q1q(AbOWOt+*F`J#44%wf@}+0Yez>OvsWo>Gh3WX`DLR&y#J^|)AYdK z*Kxk;UUh*{N5`~%cDh#WsHydCP|U^oc;ZPAGoUYyHY13s#^&c+Ck2#d=UkORbWrp- z&u}3WubnM1U#qHu3mG@oM}_t&gAdM2Ux59@zb+DdG^>rmf-JS{_T?9hgC-xBMF^|E zW^KM6vU4Z)CMt+$H&11w!*FAw%-CMo#Udm`MCXvI@rv>RZKF-uu-;?msaGUZn(wlA zL@qPYhKWZp|BVF^Z)3q?8Dgrx#DdZOJX5(3x?(Z5y}7m3N53Yrl+dS@_!??r?5+NU zt{wZh(G^QX5V5LiPV()fG1paS+nEz=ebR(oa85nsXZk76HadpUnw#g;s2rGkkXbd7 zd{C(oGJ%+>iTUaEF=_&}_EMJ&d7oZwM5(H{_oh6{VQgF@3;R2mAj_qy8@;oilM4%t zb&rJn9o%`_9v7Fzp;+Pt(K5A zN{Z{_VPb4FYGJL;V#Z9>9(8~v4SRcl>@qLiM#eS*k8xyaTu-P%)}?zTxzf&3PV{ZYA%Ku-;y1@k9`KqRtE8D{mj9*&3z^$; zp!i$*-M_3JF{(RX`CWS04B*a*$W^`JD*3tr**4W?TvHY;oF{JqGQvT0omjRp&*ZZC z$>iB9snSFSmYQ|A3Z>zBkLIgko4{A`Y_#fc6Sh&)bt-<9ifu98Binc?J}v+awADEQXWI|(@M>jHq*)X8f%JCeeU(+QN|M68}oz3rU*BiIe5bg5B&`s zr&FmRFg&t;C;R>4s+>(u5hCHSv!TXiceie{>6{tDDT|Y9$LXAN3y7_COM|B(mue zW7PlwAR*6kx=l=yKNZQg-7u5WW=_?-EX8}q80we4GrvEj>%q~V!RotMrEhxSKW)Z# zA>ek!|9Em{?%cm`7>TZlu;EYn88+z7T-o0;Yzbm|_-Dc=l8t0*nm2}w@$`K!mx*J*GRkmm| zDg~JNf@f}yN6*GM`}WOZ=!)XYxFpC)^c!?s>)2bDNFpn^ba6I*DwX0f6n3qW?aGzp zt_)W4L_y|2@@5SiSEs?@HJuul@ebR$zFUjDNA6j)mP#fPWSvG6ew;NL<*Xq@i z5BG!VtQ=4mUfl0r{>@(hq6WvBh2t2n#ou%ga)=7~d!Wcg8W`^&auFa~g1o6PC~IB+ zCYhbB|NTHy1*}p;f&(iS!}scoNl%94K6l-qaW~eg>%;Zz?TZZwK_$9G1b34GQQn&7 zahzh;iuAHcasIfdIh$pDA)hY78|m)oOEQ{C^9Tprmfq6obpEkqm*YC&m&b}8-F<=g zoTqbo8S@Vx=x{y$;J*eZ9bp?TO7K1rBp(aMuNpOv;oz_Aemj$-slL)U#{8)w?Cpy2 z3@mPnT|}FYzI);$%S2)`-%N&@;N;Ls7D_1c2?&nmC{;2q}; z9(B&^@ig(waXt4?WuQy#(=?ih)MD38UMDgV43(aE-H|TK-e=fvyJ|6vCdtZ{iL@*7 z!a+Zr0^P0jmdU3KlZDFu1jVt z8RVjDqO$9r>}YR1-Fs}|BeT%OakO<h&&*aJTeE4gK_9t{4$Bc7^er_4o85q@(fN(Qf3$qa!45)5{~e$G=kueNO%|M_4|g2w4KZGD zJ6&HsY7y5?%pV;l^Gk$8qtD72$a}l4DDYaL{J>{qV_vqD<+d6wM%7w%gf0aF}rORU*$FEhr&(u(24p@ z#s=*2+~Im^$o3y!H4t^8>%MP`fMw{AOux59EXRAleYCXsJ7H>mFQSUF(A1sbJa-c9 zAoibM`ad7Aq!7PX5@IewUJl?vEk>qCAT>Yx+-_bf&*w6KT;-a--~nc{rFQMlmnz4n zOlCs_J1RzGznh)NCW;16;!49j5`*`zS%j*%@aycfhxrYgu!SWHHW>4-E@%J=-Zw!} zgHh#nw{Z2O{-_pbha0j#gpvOBU38NP-5t7FX&gz(OCq->hq4!cHts6`lODYIUtq$& z@Iu&A#E-><@2SZ{{j|t|rbgu@yrhB3;xboIz1mXUGZ5 zn`Sa0{xs29)1_^WM-8&fT8Re)r6v`V>G(0kxD2$8hFNm5FKT+-sGdT`ULzn=(}Z(W zx+5Tzq5OH7T~Pm4{eZRSxA)8c=cSPKZ;zF7Mrvz-^4C=K0ZLlcW9QAT?(?V!BvCp4 z9k5c%_=`~7!x^IPzh>Izl)(F!V$TAU`w0O7!=LQozu5%@l%TtJz816oqpqa0siBk5 z**aA}$z6In^zj{z?cOUMM)VF5#9RgN{dp{R9?S;#I~gZwGBVliv-9qz|4E+%Z`s@8 zAEml~IS$DKK45>4b%_xioQb;{q;Z4*QGrTMASod{%R~9I9*Fw>lwdvverkA(9LW~yMc2olyT?9rWf@e(0YN&=CL&%gfG zePgkKg(}&j?C{}#w$gu*N+n+SJZJq+5Y7Bc(R9rfzm1lE{H@1{E z(y8s|f+LKUG0z1)l9s6R85P57E@JF|A}f*c+v0wkB4P7?>Cpc?g@U5k^T?6_H2EmE z9G0;K-n-F<1nUY>08#~JwDF*^s+62u1P+Uy4k{kwlXb(-YuA%+7Z9*}n_B?uD}H^Y z!472VIU|{IU;~0#QJ}2DxOd0yoi_lQsAnGs zfcluuAe6_S#ol5AN7F{BTIV(IJhHyvg@uJBV40r)`is*Lnt?i}rFJ6E?+IuK2uz=( z#a^h|#e@ECUAk^lG@x);RyBkmfF>HRZLbO2#On7?Y{1?X$C8}DY4f4!+5hvav7P`0 z-`$p&g8#c=s9zZD&VFYHZd+=IqU?-$f?w*rPP%|+KP|9qO9bt{TU1JlI~$i%trmfi zU1t=XWE3&*Z^X9%h3L1Ib7T9A(T<3jtq$citn^ zi#)v*iPP8|{~vcdi}DjdmT0W4>fK_@u z0xV0HfIqG(H>mpYlm;$0pdhLpFY;iin-17DM&Fh(-}we4g zqbpHfvrTGH=%_51G0F!@{yCMTbiuT$Bnf-{c7yq!^EKcb6$08Cu;SO4#r6SJrHCVI zJc`V~RaWKJ7-&7>37hD0Uq*hO0B~jd1sX{&=7qNT^xRg}?SmhO%-E6vpSS;VJ?YdR z+y)u^MNa-&q(@4I`~hZbU=i@~7k&9rfJu-do#A%ObSV612&B&4BxKs`%L8T@u-YtW zFbL)Tti0%Ru+6_-6WafufC1Dy@VRY6#pV`iUA8JlP_IEZKzW(O|3}$dhgG?C-NS$z zC6tsLWBSs_8BF=3WPxL^_aM`_|`96$-jcn(>xHW%m$~ zvt7KDjZH8bynsu}W+m7JgKx56bU!$(|IiqV(MWj7;%u5)$X*HFy)~&I>~G|tOnE*% zt*$D;YLsd-tWL+{wd<*RoiY)8am%IEQay5I>EOafm+Wd=&;64+9A_KqM_-Q<`~#WR zAalScusHvl=ef`D1zgb8LHf4&=3k7~#x-U?{s2 zjEAPee3$==I1p4hef|m%QcG>7Cc)b_0_ORc%4STPz{lnSh`z}vpIMrC;JSJPQ8@*f zGmcKThu$%0C>uueGvxileH4F(xhq6p>O?SCjWxB}{r`&0ptk_D)R^c=p+5m%#0@m=;($gUwE~U;FZn3_%s>vQazb&W|^t z3u(Hqhu=uy@4dJvBKZie^x4*xFqiCiX2D6Iiy47ywJyU^vY49m2wW4@p!5e zAnj-rVY@s~oDCwiTHqgj*a{kj`mu<=!W3c%lsy6p(WO%{8jP@+*1$!+tVAv}G&B~5 ztexP{M>&Sbf);buAb6A6AKXq_fFlnVp4_sPo?3(WL9?~*R55s=||pS$RfEB1e%GOm%s0GT`Gr4FTiPyh~tY1^`ILXIo1 zkUIo>u!P%YQko=?f^-mcq%$tL?5r6w(OV9dbf#vN2ZG+`tpW|R2Em?~e$ZL*)dbI} zrT5-!_@t9L&c5Xvpnm(Vw>u5frR8K@$bX(ZhvbqMir z&5YiIk7)&1Aw+=Sk{xdD=R%ha5F@_p-`Otky6T!!N)d@mI#^Kt+sFD}M^wAWJzNu`1-sn881OE{!w;%Fcoo9x@`P~7Lkd1Ukuq*YdC{1 z(RbZo_t6@37Ok>^ntRJgTm$iu`~l0aX~E`pc)aaCxMW4km~*J^g>#n;R?132)L0Ib z@s)QVnBz3H{5?qdXVwINCJ@3PWDhDf>$_7L&$9~pOhXlu{QtQ-!^Fr5_#BqvmD6vF z2RA&n#d8=Brr=cpzJfhTiLjIeC1SUGJE0n!TDvNoY@I-gdAhj%$_RO*v+9|AvW6wL3>E@+-@1-?0<6)%o z4#>J*V)k`%gXnIru2x$Axtz0m+TQSJHt6Uq{~f~|6=>(Y5sZgv_o;W!m4BH9rZq-^ z110@3*j5Z|!i8p{;Wv-Le!qaAMC1^>15%XV-N|!We<;3hm7wi3MdEpp`xf@nM?|d} zIWRW$AvWvNpCeyD`u;v5c^_^xn59=RfT>TB?;Ww6NrdV#l)uQma{Gr+OTe|MdERX?)^Nm6StxgxuSyrq*#{{_P2CP42Pd-~(fM4^`#})MRn2g%vU(d%0|I5@P8g?%%&j7Qd z#DCQq1S}|04ozmT8;^uNTS~R|UG)Jw@6hAOybGK_;vTsC>8PsyAGNNuAdn98IfLcs5a`f+E=YO5{_>UK9FF^_( z`q6MI<-Z^H|Mtoi05D&mLXXS5|ML$@GLVKSbFg0g?>zrMg3j?@U%|)fITl7ef>nN} z-T(E9pDZNkZ*0{0S^me`{y%<#79APJzfk+H?WO;DWdAuHV#)~DGP>=f%)hVxzx|Lg ze5~KYs{gV2|Mu792$+LT*Hlpq__zB1-+n?GnN$Bm{Nw+89*hLhu;Zkr@@($>-~aaL zk-R|jvHo2T{Xf_B@8mO`5paP^vC)zL9hhl7R~TV*IAVoTjX(V@)Xf`W6ii_G_RHGkfH`r9x?SUorY5qxXA-@4PB zxO(BVHwE^-Hr}i2=Di*F=cXi}LJeYzIzQZhQ~uY+5Gx_7;r*oA*_Yt4 zXi72m@#zFT`V(x_or+tnY8a)2bW8_t3qsy52TYr^<2vn&s>sUZQ~z;Cisc{$?ls+_ zKcEp^*_ue>_&ey0Lo^C^1va8W=u!`E*a#m;&5C`l-Jh_h?LYl(ds}K#?8CEVbH`mp z$FFy6mbn`vSSSHKbRof=t}8A z{FS56BL+iCV@&K>0yFVvJ;nStWj4ZJY|+bTem8y1`!I#1lXAq+Z!Ek(<=u{az9pzW zv@nW=3tjFBe)Ahr^fX4E>3P*?+uzUB^AO9p6EpU#_O==v6Up=F>}isbx3j9-hTS8% zw{(~+n+ZPr>f^u;6Wb=R+RDUk;!SqhS}LH&Pcod5{vBdyKO?ow}2+$@NR^QBj92^1&{S&I(3!EuZQSRPL!5c8$Hti6tf7d0qmIP2%~T-3m;- zAkWi0M1HG3uHA|Br@qcewNZZV6SryTx#7*R`MCWZki@^5bWW&ey0BQkdy326b!Puu zq($ISt^fDlUh#qL@xVCu7_ERRg&*D0n@nE(kelR*_xG6={3#md1Hzm8JNj(XCTTkU zq@I*-__YFqi9P#F#nFoCFjV$oS}M9h`*r-N8EXO$m&xPcuqKs zAPy$^39wNsZr3H$upZoHbZd4?plJJ(&Fy{B(~q=i=)hVRKoq)zrxuPJtWw9@HmnzGj6m+6%b){UST@OQ+!NNlmE7HZL)#XwI|H^=MTb|NXx#w zRADk(kFyO5=Y;^#@H>fdpYhh*VM@ExxCS5S`x#x!{vXGYmKl|-NIqln^_9>?v%j?n zArjHbV~YuS8K+<}+QyyLlK=ay3^499-%@16FAnZnlC*Yz$*?0c*$Z#xN;lg6s!_`= zU}7nq>qr^_dH%HI5R6Vey)^Lqa`Yr1Sozs}Gk}B6qk{wf&7EM6BI%!u5x#8?O&pRP zOM=+HlZH~k5&tM_U88?yr(!u!H{z437yU64B+fXh2mwu-&XfC*Cp-RJ+y5!{ z@z=eEMTCAU+3^vUsQ3%|mq-=kd6syEvB3L|fpv&yvSR?S2H_o&<2}}0OcY}ei?5m- zqv?Nrf-q!3BQ6a5aY$*2UYQQl)){_<(4cg^CZU%I$9hn!`m96pbndt${FIki&5#4} zkkwr!0-b!BKkrb$=lN(*zhCh~!&s7B1$EGyH7)#-f5jnTbO$}ToW@lUiYk-8(tA+) zxCxg?`k9!kYXv134Pb{r*&&^F#WGUt2UZP37Z_<7fc!B>f{lLo@9Dn3mKEg(VGGUE zfaiBCBVfZ&^z>D^QcM5Yp25Eclp77dr7Nuga@z`-Jrf59N5r#^+-Dv&hkb&?=^1HT zp`!0nB%8vXM_tip>Y`=8Vf^YoX{yR|34?pj3}Rjv7)Z04a4F+pvnWWn2}Rv_em?4E zG67SD`{D90L8AnhrAo`K;jQ7}z2Wsf)5;;+&BvR+7QVWV*j4X2C9Vv=lbV+OfJdYK z@w=`4iEGqK0oY(0RSOWGDGZ6`D!jbb*GTrj49w^9L2;tY;lbUEyKh4_KzQs0ucZa3 zk+mBaf#-MeRnu-YK*~PIKfio#L!1H28{2zJDH>5~8hbQ&{kLtO*ef-#Y6|oTZ8~fcd95?oBB8?}K~I2Y_mJga+e77QwYX2Nb%>jF1AlNWU3x z52WE10O>8<-I&(^jq1P5rDn;02pwWG62V-kPm4&x;j%bg=n6O_6#^6(SJ49R%wX}p zpA58aAAx*c2&*Z;J;W_9ubAk;{aOUp3XR{fjfA#GpKgL5PpR34R<2&770D7^7$LfP z$b8NXF6$O%>8GZ@U7bA5z*MQ@)Nb30OX`)JOmSWaVl{ZsNew=j zitwD@JOeeww)5A_;v#a!9Kxn>)vXazpiO{120&|XA*UXX$G;n(-`2TEgEM`AG|=yz zec4Ry@`;-zkKPCK7Hvi7qq@Gc&DO8ASF&$wD_TKme9d}X@+Ft9mw8_v(-?UnetV+u z0A%ju7x|u1{Ge5WZ;KecA^yTvx#fr%$j0)>2krzvl2-xl+~99z;B5P3bv(R z2@b>7F+X7MT=gG7Gy#OS2EVooE(@7L-=WLB0;BX>0w5E?G@`@ZSz7ak(y9yJ)4Es{!hO!@szPxNGTT<@5MKp^K<}%)f1~;FI(X%#~ z`J`Yif29vl4K=P%Wx6U?`Cu(ByhT9sR7zIm=6%oxD$G>NtqT!alO9Rl1DL-UgcWz| zMV3k?*R~i+qok2eT16W73WV6!=Jx_gwiU9xjuKr?huTH3pl4kt* zk;v^*jM<9T&pES!qR-eod1}f@tr6Z!pcLPHHd~{(9s3Fhw)?mCD1gYXIT+(u?`Stc zx8OWOd|)k4hmby$kNIFP-3K7-Jc>#^nzhilvkrSx+ePG!3@uxMpTxDz?>SeUuk8j+ z<8aSw5#GiM1`~`S81+7@de5tnt3k+4bM$|~{(Ms4L)jZ@F__=L(3)4P9+*O(jOFw3oub3Z;h z5IC`7Y7OFMEQ5uLb`Ql(MX{TAleaxi;8~Fl6TL7zmr0(V=nBbu@0k%|EoV3OW#nJIu=~deVm=M_Z$7yp zpD>O$3IoA@1cg#X4JmK^>`yT16T+RJ&noA*&~BO|hfM*&=o|dZb+JdM&NP!{6)4$8Jy~G9l%w5bL7dBfARSy4bXqaq zRE_OSH^2!5qmx02l1`9qFh|uzdFKkn za~U+#W7$pDpW=(~X*Lc$0SvAi>{86_xrjn)O2Xh(Onw?Cs zntEXAQq5U$%E#>9HpusWknq9b9{TX0dN?$JgYd9uz#@j#SoVb#PNkJEpE<1D_t z{#st{qwklDxU+eLl;^82h)!u_P!VhaNf-yE?)h!a$6-ZHQB=?8-x$EmmuEPc{Oq!=dn2?F1j)FPKMP zAMPMeLNRjA985!jqs$@70z)?!6StwOGO>@+?KXMrD7)#S#vPRixi!H|NS*KW z+4zDBTx2TO55B#>$C_rr)y?lKuJ^?%@&pDY>1TB1vVR%8v@V63rhS-kG{W;&KHU5rR$l#kqVly zFYqjbDETjE-G?@og32u1DS@n!es04~Go||(*;V~Q8Ov5Tu%~SnvrZeXj1UI|3G$I%X&T4F9}iq&}OCJc_<%`t6eIi zdis9p;zq<^BG|fZEUDz0J~h-%&~p0)KB&KhpvgLwFWs$3?*b{R)+&JL6ME|xOr_k% zh_P_kht0kcHW8~Qy!|@tav_PJh13&7!s{P9&Lz4mt(HgqK!VVH!0r?5N>wk!&I_a~ zgEHlSZHMr|?mKNq-**Q0vJP<>u_hzL9IK~mj5$oc{x+laI|*Og_ybS=(N=hMmH;b| zU5z%z>&8Ivb!B-A|3TRRPL7^gn^2DVRUI&GN@#V~NcQy(PmUP>nCQCJniVj(Cc7ei z(Hy!S&{G`yKw>CPE|0W~z;CFGt&wZ%LqjZ^dIZ-=iyZUh`HlG=L5Jl_^F!suf%z}f z6Jy^VirR=~Uvb$qYp!RV;OR%zxnvrr*b=Z%u1PEsno4>qccH-RN@E@roN46tbDODo z4irl!LImY=>!K0s7joYD*^pA}iKZf?{|dR+0$6n_7V~e=g^_x$xVO=z6s#zn`{%Ai z>~9e_Rn+a4-?;{pxCiH{J>+`NwX76?#4;BWuK`HOU3nJ+2suo* z9)E@9aJAO(f-KX3h1vDvqhC;lD5^y7`w?L|&k%TxV@*)%1^kdJpm@u!$`HwQC{&?9 z(|nMp9Yvylp_SNx@z;}`saTaP&C(JJ$OUPPxU+YdTZi_b5T#NL4KgOiDxV<Yo7y%zJ zw|e#QML8YE8retgedr}&Rf*Fq1yTH((kb>!9GT-WtnQf~I-?Qi^bED!WUa@YH>%WZ zTbW{eE4PMU770EmbODK9t?EZ3kn%WC?Mo%^F@y?@=S|KbTIVt|G-l0q1y}}m$(su; z3x*Shgf$iyVJoaxdO3FVpwl_+eDS={NWO)4!fA>qi$uQy8oc)1>P9{&5JTVJZGBHg9{Oyz2N!{g_G!oOX>H z+qzv|D@VClm7a+uUt;oa1=~7BX1uNWo{lu|xz`Ktc+S&o@I1X_!ltbXN)t8ckZSUZ zTb^{@MABa<&kCR73ADHb?d?N^Tg)sTw&DH~O*eLvqZ=&mbOOY)aveEFnBHqbs@Dx{ zD)NlxIK1n;U(*z9V^+0`*oMK{$L^wCz1FlI0Qu^TQoY!z|C9*82En_yY%HrAN& zws#yZ$4!fbmm^tPB;|%E}hIpW6FfU14V;2`^Q=Bjc zV#`XyDo7$HTzVO4r&D;SK1j}QSW=F>7}OSR2~@MiXjN^Qckdd=u)imU(U=vOe7ykn z$MG^(wmvjJovJm(=C>K4md}6qIgd4~gg%bMfjxHJKaol`JV=_j9nV@v4m6~kW#C4{S-Dv=>>vc6wm9WOD`xM9(`D`S2@^c)01)9Bk7&DG7fJb^?xCLiC0oAwzte zHN>-vX32aLfJ(q<)_k`ew>e4mwK$b*ZF8`UC}M}i9k!c3RFOG|YxZWpDW~A5$BFn+ zdcrC&NK}CnqVu)Hw9sWXHP#F$ZJSVEmc~sIeY+*Ncx5KJ7-}yS_~s?{ALGFKM9XdC zyLFv2I58sE5rVFGFSdA#g^Bgza7SP79;@$rSAZ=N`8QZ39V)hMY2dy3b6bhxk0Ty~ zR_DluzjPb`#rz3I<*JElwdbhIY-bb!2Y5-Ge3xn;)WYQ#KgO_|mc_WN0gs6v-4!yM ztBpa?-yc9T9Kqe**}vRy&Xes~zuK}W^9mVKQb zxnf$LV2quRp``wNcvau~_z}=1VS{h``W)A_qw_|89fHthxzCbxXr4lJ1j7z@bARC# zi@$1(Y&0N;i>j6gvhvhs;mf!aNjqe>cc^n+I{M`BZCsHLf}c@Ce)Qq|gwPveTB!ehS&6_wuN*U?8}c zYgmjvEslHvA_8euGyiezO6!T6ru_x)sBBv3u0azd zsdBU3;&OiW`|X*HA;4l*R>&jI3VGSHOM*5)FR=S0YeU!Cv&)KDXD@iZ>Rkgv>-#_r z2#hyAyEO;5tQwFssA9o^rv`9L6-EXeBtRLw6tl{{N#1cyYxn8#ujr(QN+xsTcbuAJ z@njBQSEHMrZEMM)B_PBAv&7eSfNCTy!X@+L!NqdFacy=EKoo4H0lm<_7;hzUS%_uE z67t!bz@ApN znqm5h$_gHva9!1xIYC+*3205~qr1Wbg>HNHCg0M-t5l(a+5vi*@K^2#hyWfgS?w_+ ztxkuTcmV_zWT-;{4ZV*-V)Lmji8%jUv6vd^?_z!BqE94Ow3b^!|9+GOM{S#U&2 z@VQrY`2trbFpvz_CR@u+igw(_cu91(Q^y(d@%aj90uZ`#gxkhx7OUhwh zn7AkHp1@800=p{m^k{@kcK&BtWZ@%?Pm z1S+QSxYHLV76Z(W#MBcV7RP4_~F_FYAcE!JXWuCF65X2f160a(swScLrD;ec)YT` zocZ*8LSu0Ko@0 zVAm*;es?Ezvf!)YS8a5<+k0o!TsHt(0(n4I1K5c+zz^hy-H{5IjST=hH`z|oBkWmJ zaxpeR74T#^eJO4HEGWEfi3t#r*<8_!5@kM#isr$eVAb3L>_l3?pcSR_q2Y89D&a8T zlp#ZklaLF?!j!_P)a&QjE;Tr^X_nmPB=?vh$|EJu zzj}QQ!O-g~d2Jy6N3Ty1UBgVArPYy}%EfddGE&7aoWBc)`*M@aAa{Q9+L2{)I2BvIXE z@4lV&8Pi+}49cSV6&!+2x&=D15>};TZ`Hh%CcEWfEubQ@L!k8f1hwZoyXH4}h>dqs zFvZMSOiK>`vm!uZWGw|E?FvDE!KEh$U(xe{s!Y*JigWCA0cVts<<$v)jSb?uBHAWL};%i4XF zF2x+1>2E^1=y_2V-e6*{Zc#c#>gK*R4SAzcoyvM&=w=LIzjg)WR(D&fzHP0xty} zLA}fp)og7HvYiXtJCtz+ozzPBbGE0{^af)3O7KI`v^&t2YV%4#um7^;u#l!eZ3d-T zw#|TfF~7+|BuvYwtnAa(;EF?U40EqxfOOJ+7pR4rIeZLHe(l>AEZY`Fzb-NZ!}R4s z0z6X(A;Gb^KxHn;C+q4S&6sK<3_|Olc*JAYbTChDl27oQ;V2NlYxBtXieIRH?r>q+%( zbr2gicHrt;cGUDBz<)+itKfm=4y0zx4NTkzEBwVLKD6hGWrO*Qz~8RrfjQC4^fA{As-QMScm=*2r8G<-n?lY$5ejWb(G{Z}gUp)^+J-@g^-8-L&wX#o5mr#0y#&=Q| zbBpRpo8X3%4Oj7dEno51x=Lox)ZNl#ThD?6f~Uc}dDn=|B*%!$I~@usQ?dyls^Vyz zX5&L<5-OW>G#;OR$>K}FjK4>G9fcr@UUw$eeSH)N&K=wjk+@yl$nWUl@xu~BQ@y^B zM^Z_xdipHw^f(P$`y;LN@32||9C{wN~x^WLHxz~0OwICSm zo?zW{4q=!RQ>}NFaQJTHWOKs^815xpm+m(lD6Gv6;VsQCZno%4kX7_Zti1^pxrBgW z#qkV@+(M>Uy&C0!N3;va_i`MJ(Yt{?r})-{o$g_`_;V`-Jk|pUY$k0M3?c)1)#_|N z-k#ZB_@1Suaj}s7*W#KLvC3Gl>L4EZ2=tBl0yVPAmjn*_f(n|2HbtAS;WPycx32~< zUIyiAMy;5?jhg=2#(h$-;+w(zF7ii2;xI2{#cc-8+^5STyH7X0$%2!Vq~cc~;q9VN ze5VtqGtprzhFs+>zYpwY^RYFAH?WCmU%UYcfK7u*iAo|+6$EAEdq%y4UyMCGzm#T6 zL2Ew@BLijR3#`b{@i2D}EOU5u4F7=ejLQZk_po;AZ#=Sf?ZJeEDcJXafc zRaMj4=ZabHmjuS~LiS0$YNHbG&2<;pvu6B+UwoYCLD^rdZ+pRN^MPw7 zz%c(pe?ru}Rstix`D(*A;0o~fje1cmeV#B;I>Sw>X9XBRg7YWr&E~3^M3tA(P@hst~<#_rKr9IHz>#YC23+TjS6_;u=wvQf0UPMf?(onESG`Kiu@oQa|K3NYV z1~}9BLismO7q5@6Kk_yeQeC=n!v6l=pmw}xUXtTDcCC=7TcbjaE&A4)MJ+|(t!HN_ z(jx6(mP6;=(#28Rr~Jg|9kZO(`{NfiKABW_TXTk<;8v{(Iu0lBhrSzP2S)VfPj@>M z#12le{}_RmXhhM0Zv8QND=*d~&k<)=A@VelY}^;SM7wTvbS7HK4|f)4&i#O^4z0R+ zoFqz6ORGBX@@bYkmC|_o!0$mfOdz-6)bw`tq-nTaI(kO-y`*mqwB^ZeFWr0ERr=)C zi}^r~GUiu$o1Cwh=z4^zVeX5q4@abGQ~YT4Zr^Pffh#86RIGn4l?-q%kzo-yp4 zOSy4QdkpN$th$(S^|KiXC!+SuFFq+)e{Q2o^^-q0i8WpnxJq|=3O>vrV>RwI--cAPsqlf85PvRo)hqI4P+hD%^7^Of$p}>M9s=}>OqZd};Y3+fWReYKeC5opXYza5ivKS#+$W1u*G9mrfKZ-!8w^Wb_B z={RAKr)UNnB2=_!XKn!F@~JdDexXa-4+g;mse`vDm8}1xy!n&)1dZ)!34~&Zb-HKd9p?uP?El zh%Yk}$J8T11%A&^bqUy7vau<9Mtf2TpPmfGr~ya2pFX808C@{b&4RQ2c8u>XsU&|r zp_HGYwpTIXo$!<9KPhUyM&Y;n<84;VZykm^(FGxMMtEdw?khNsRi_0%Eh3%jNclzd zg+U&Zg$ZzJCs=)c#Y+n&W#TV?#zx)utGBOl)eQ_u;|OAzru`&!p}le&J5Yhk(g&9y zQbC(d!vE~T%y+C-d*`j0bIE!IweH9WI{K@G{o4(?M#gEFDSKid*c_K=_Yggs4-a&V~G*Xt@umaaZw_g#@O4*Z7V$I=vK5? zuw=W(8{jhbQqWu|t8(~2i9Ga_ddweiL?1G7VILysa(v%}>7mR#Pjd1_5+Z4lNAI?ybv2Y&LzZxphJA(WOYjqAp^ zb!tDx@K$K``Y}622EE7~ME3gG&T~z93+lZ_Ls_G;g~&wMl(r#xhl@mgY7+&%Ke*iDGNwT6|1H z#->J4#LVW-GYi9!OF6R@7Bvh$t%895Wiwg_=ZkKoY2!>--}qFA5NrSbk2V9S#U1a* z9vU6r1b3o6*uRXXKDdmLNpSc^o>lTb-LI`H-lA_v#>I6hz3yL7qw8O{xP&|5NI#}R zF>*#{dAJ*$qd8a&h5LXZKu-{d7+<%;JmJh%=d=jwF4l@RI%%==jJ;*{rmp=OMK(iG zhMQVedy?n_GXFeX8H*xeu8r}2yqn~{Z*j79a1B z2X)SneJ{!huzzJqQ1xAVQnAv{fro3+<095qceMb9Uj2tlV_1O?{aP>JNeBoTzhb|D zN80*u0F)?lcCS{1pERi#K9Q!dDv(U=_y$tt;LT+8W!AI=zPgR-5j0Me+G8|v%8s~P z8!7(q!3lj+Y}X4bJDwNuw`Op(`OJEj)Wl+1bTooqcH|`Ojy|t>Xw-h7R{C<4ml|vT zo3C|#Qidcax!B8vj>=gYA8XM!jaUA>e6=CLcTv)%{7trIe15dV+VU@BlM5vF`<-(C zT4`suU&cP$NrjGSf35O+T&S^7bR8(R+gzkI+e;q3CK%Ip4D_WptX%?6N1hzeaP&bx zaq@@FQrUdgs{sN=1#SIQ3yr65@C0k<`$@lr^(9&0-%F_@{hj;{%wQvQG$xb%kNS(&++C^j>Np&X)+vu1Q)8(n#^fTezc z_z)5%fvIsP&+nBo>yWVfDC?IO@XqFtInkd$xh!m1%&iOP303W{$r*Y2s=Clp>T^Fm zSa6BPv^)h`1)G=ZR4My)Ki*LHKi$N0V(zK&GH-8(p9yQo%C{B37bMx5v@6Dp+RhfV zx!zQgV!TC6$QrViCVco@M2A_qkb*&@KJ0F!_83z0*@)rQPSi7>~ zA`JE~FI#(im@O+;jQs5baIPLsaV zVfD5`AE1t#AvC-mc1tB^=F!(`gU^+%a}4uGlj#VAB2DdCK-%Qly3bq`+FIZI;*TgH zf*RyJ7{B|dJ+;@1E0X{pr><$OGfj%M;i=h5#TT61n`p_WGYJ-NNw1U=@~%E9P%e@v zm>E(gYZC9ZKZ6(EKD|JiSv#~(vjdbE>yubn8FVqvT?p#w%3hfIX<49mVol_z*q@rP zYryJDqhwHI5cW3qvzVr4Q#YS~xFBfZHPj4g@(be`T<*I_gf zbI~cJs$9!hFnWh?2Vkps_t$L2(LxOd8uH!)j~PavHUnow*wiyMJJ(T4Kqv$28C{6Z z95t(cZs-m4q8lZPOS{nNJ9B9UK#Xn|(>L;1J@(Iw?6^J**%A-NeEtzx8Cy2QyEnMl ziiT0{Ml&I7Fm5*3-G&71Gm>v$c71$=N@@ih^HdHo9N}acchbz-pSS$)>;Nkmi^HKRVB{* zQ(bbLButt=919e%S#~wmiDf_sWn%}KrFPr>**UZQ6f}fw0-5EmUc|cy2y!f3KQ}=` z7e@|B1RpsX5mib{%(%+z6c=EdY{@vtY=5U#)lGn?u^Xf`<5h4hUBozb< z@*dCLam&>H7MM3_^U;6W0NDA-n`geOpTwhNmPO&VW@%0YI4fmOaN|M8fh^_5Z7;t9 z^8uBl@!6I#y@-_N z*Sqj3uE~F+ZlzltqyOToUFj?X0De6aHic!P^%f7+wd+B=D?+U3N;4`FUdoyGzpKhP zx^pFJk9iX-5*TK(0&cKY#xC0s2Ek2pL~tUAN3vAtFOixwtrDx(%wzXNL#1DN3oFHB zC7Mi7nRJxDjkgI{x~piHeh`RBsc<_v>xy~*H_Zz_ODu*2#07`Mv2P>`X-WGNF~w_a z4<wxetK!V4(%7(NBB0vzVvvtiF;AZEKsd> ztxkv9IB@_0@=NTdQFEfp%8=K!iM{u5k>Z`W`^>E&-*-7v?F1jMNmqleuM_#f``fR* zmUy<$52v5_08fcYirOjVZfZY;W=#b!h`qRf0R{KUlSncDX0HzJUHvLcE6etH{&t5q zGJ*gGDrJ4&aL|J3^c&cdyWOQTi5a3AqrtgXYhAN-IhwcF>wrA@(*f1qsrdC*sK~B# z#k4}oI`PUuI@=e!J63g;_(H`O3SiW~W9nnsgD0H5wgOGW69GC^kqROO8tTKRf_X#+ zJ}wrgHxdX`$^_1w?dS)B)q7F=9~4b;?6<#6=yi>y52ni@O`3EBK=>v>Fe5O0aWg-A z^EKH@3(M#pc}EHM51K^u{a>|wFTPYid7^~NE>xYd;H=>M>5LSWT@-T%MxOhDGjV39 zBen18a}gQKi?1-;G<$6eWfDJ?_Izvob52+68G-bc58A`RbT|1ek=%ph+@VjZ#{5jA zJVucZbtZu+>aSdPf5c10@38b+@nN=MJI`kvZYs8>)k?H^ZJv{Sb#*<97Y1CP^pbwH zr;e{b$TJT=gL_Xc^yT9m6ff!XA~}nN=jNxFF3k(&wA{QM_&ENuy!td&;3L6mBIbmG zhnA)#XuPxLWb^h3_JX?45nPksDNGgHNpTGtv3x%gSq3P_?g$m5F9DSLJa0&9LDk%g zh@GLRZStO1j(+VKIg5#Fdw^B*-oT_XH??B2m-=vmV>q}_D1`j_H`C=ki@E#>uS-GW zb?zbZho1;ZTQ=Q$a|#>|IqIs$v2tue8YonD?75ak6|^3$M%v?AW?47n@4zSy=C?Zj z%4+`Y{w>|b#2-5AtELGd9g#!rP-@LT^oriI^(?I`iYwlGL&|b8T0hpLy;dk<{z-X- zV^Vn%Wp3M_2Qnh*?6)?2cHe0Fo8mL9 z^uO9MFM7en2UV{2Hg43d z`A<#q6J!?eW(tefIF|rJHH7!9T4UYrNCuu@b&~B*jYS%coC^C>Q)}8Q_#1uVi{@FG z<-rc5w)iR=IbJ85ff@YV*iD(Ea|&>j&X`ZqGk9|(G1S-9wBA(bcsKFroLYB!=5SK* z6@Jd#Gu1PWYhoT7{A^+0F;KJJnJ*KB=4=bh`wL9U4sw83=0D!whU%ZfTe0%!xUh@E zYCMr}9lNHVxE5rt;%7)qzC3VzZGFn|aczFE^Y^NS_&1d~ z-s@pw(HCR*ay(VfqpG2|V1!jH6_0d?02i`LQgHcJhi%ScnYH-FhMhCtsH0nDeC4#~ z$TL}w?qOrDo7*#2Z`z;p7jQVdc~jVZW4LecizV?-0k{j~<@98ux(LNCu$Gk2Vc z)f=~jx@gE@-0*{SPjHY``5E5lA0=eUg?(5p{Gznc^-lB~tYsW%6uOwE_-G*LgLXN7 zlbkYYps_4u`%tu~O|2x>N9+X0g&HbXV0>&a_2cpuj$xqib0Fh$alm4Drd5(ht0N{Y z;lb)!lGp(y(Rpq?Z_;xsdQ=$LnuHJ?H2^&i30tso2z0?BAg0G=Bp8fJeKFaQ^nmtL zZGsSr49m17P-pP*fc5Up(@z#=S`w%v&?OnyFVnD%bq@>|p(WFJa~le?f))o>+W`CN za}Fy_n8KQ*`nVVaH!deC2wk)~&@8di^)xj$jQ(+j=bS~oxyZKWSbo&q+b-KDOINRY z(R;I(Bov8~=>*Qa0evdE#;T2Ojr$&FN_B6DeX5HmXy2%gzOwYTsAW;rAb0(h`0Qvq zna0CWLCmEEZr^j(ow(`!ylUlPP5Ch3*32i9qjPid>W3Q=#V)ob6*v2CrZ>iWb)1?$ zD@3y`FKJVoxhdR(kwcgcOw4zpz7~W-S8l44nywO$r(+Wgb6XCWU)x$>SQ{5auPxCm zUY^;cT*nd-#j;|+*A*nPOnK^o{p{l-4MYU&`8m=O8gsNKlbp9-d9;@S$&I}iQKcxx zUfNa)RrT-)s<7I!z?hcaihJpjOU+HDAHVuZM=n?zeS`*SEZgHREBf-AKqGorS4)w%7Ze02S%TiyGv@{$-vNwaB1nIzLoGM;__cHLwAnt^ zuTn|$whvNG5Cr5t9d*11QsR)7@~D${G-NCKwWt{2SXG$`TUa<>vCG4~ z_hJ5BUTB+^&2{)}^d1*avK8>);&vsUAUyBictXwF0~4!M-HPyafcHo;SE5zJhhwb3 z1C>}<>9l|aBIR7^< z9Ndyg^oDb{?(#s59d-HQnZbB{8e5bZKRR#UX;_?hw*V)a3nkR}qZ2eM39ktRlMWoW z+`@8^_1yXb{mjbd(98}+q>F4im>c^O$^^T&xidB;!k_X3aa`p7f4$){@`i5BA?zI% z$Qv5%=XTftb;S@GH#Y73Gc67N#QAU67g(@U_z}ru5f8Ity(|b$r^ZjezUi%0<_;J+9*NB0cs}M}VG{M=beb=Wu8mr{Nt`hmJ)K2UX())DJjOqm$!{(5uu#46B)(u7~B0-ySuI?l7 zHX!f5?uzq}1sTG5AI&98ZKx^I|N;x}RJv$^K`_TK=Nr&7#qrPY)ZvKcic1v?hv9C2HIGcI4ghN2`C8q42AE?^_l~U zb55WWMA!U(BR6}gG(M}0_+qEOcj9oLH2x%k!GdfuoHIAQUfLjyXqYl#M+AC)&i8QE z7Unv_$h#wv72HdGz{HV>GyI*2h}k21UTfm>@bOiZ!i>HpCknek;I>M>v5#@>C~O%z zWXtdwb6-OUufXvqeFvISlfZLnx)T=+^Z1-tB~KXMoPjRB9;4dDqdkO%ZEzBP@HuzL z!m-$p*b8E->Ys185~)wf!qy_cSQLS(fUUBXTvsB`kOMU5=T}W*G#$r$oOQ+0HbM_t zT``tMT7Gc*tbU?#*bF;5_Z}!BMCvxVB~SB+eF4e~Ua-SpahOM^bnigRkIq#^0izUo zT(M~Rw1S&Vpj!3eip8K>KQLQkgpu(KPz;nt+{1w&q0lDcZTb^hu7-d+-+|VBu4umm?mdv;dwm=0 z3nHsmG%NzV68-l^z|C>y+`f)4tUTjeGXw*K4-66BGosm+0H%=IUr8I?FDu6LDM5sz z6qU&r`TYM8_7zZ7Ze6t;+y%(vaXzd?<|pO3+XuQBQ%x~3&s(cW zm^&^b{|d%2q=$oZ^W9$~8wSOud?(2chIE{A`v4}lO)vmWxpj*^dKMMT71?Oq?|Hu4 zNi7dJdzU8|85MLSOd9oJjlXRce=9^fGPl2flS`gTo3^~rKFbndN3} zMP3N)Pspb6ttN8hGax|G7uWB-;OLPjodNP^+HOnn?#26bk$1(XK_^A$(Y(IFT@T(8 zLXR?D-;+=R`h=EBr%{54yE2QNuAua$Y%4W)i;;X151{UcHLT1_#U5~=%)sb zdCcUV+T#L^Ij;8W#kcQ~UHqJn6hwS;lG&%I1=A)I=7O#x8PKiyBdIhS4AgQ&x+|K#Xz^8h~*p7=PVMW|H=tN|3S4niI}u}Wetyy?Y*$%i~eFM&7A z`eTU`WXpburjY<=Hi>n6c!aZfd4lzX8~>y%sd;yI&RCY_QPd zpzM@tu$JZX+^P4fjGgWtfLkzLJNbF%CnKb)3P_#mdULKrkJM{oVLCtn_@Ne@t_*}t zkM7RBP$3R@H4e3i_KX_<&p;_Qs`n~9n8S!wzU5(X_eWYIU|a~j>u61e5c7rXbzi49 zOE$eh#mm17I<`xY8X%z@dh_X$&(h3-x-)uLFjky;fd+R=D^d9rjO}(y>y4%`&B>-1 zW$Yk3iP*m-hWyOH9waJ(bl@^cFNO@Q`#0y8oRD8{)yY1gx%w7FB3G0x2*PVJ47ouPNH0;CATa?HeN4@rZWCcu^@<6^A!Zb1x9 zt)U$fay{N87;pF1z6PD>w((ruFr}bF4cWz&!GlzI`7e$a=x&Z29d6GQAF*}rhwst+ z5U+l)bmbmd(;Hpy6B8)8ocWAJ1O?#T<648T(3Vhw0mA$K)_8@}SciPzgbH=K7aIjv z=AAT}#efnk{|2#^wl})yGf+k-vi0yLguwbXkGi=LS%@2cv+47OlOq_>?k;C{1ZapB)A<85h3y=XVy1!GKNt8(v-_~Z5Ph?n$wcsZvww->xTNOPBD7eG` z$>`Y>%idS@Wr*=FZLF zYs!-v{dEJ`d*1(=p)mqnW-SGl} z+GG)h_f*vRfXt%-jGrmyj%ku%ume6nr_p=M~@sL3W@;MY%w9F3&ZBW=)noE2d#Hsr%Kiy`n$sIa$p#BGUo< zaD2-i%-N`h+CqhvK;{OgA&Rf<0lFzJ9Ph``Hs=nxpY6Z?TI>Kk2@vCjhkFnwbY)FuQfKP)wvofj%*!)nb&By1KovH{4DSS;&+(*12AQWkxs+8WGYO5{gD4HejkudjGyd>&7&ZCYS1 z+_|3icb6Rjv6sx2S$8LBwQ6?;u zyQWk-eE1_;TNwyBNe>LaXmq~W65XI|ljJDY6F5I-iK-|4OPxcS)Hhpl@gLt&8ApZ zdjvb0TnUQ|!o<@0QHMXzw|y8`7DI$$lk9(ka_7PNxo(Q4EefT3Ho?y@~yc=CD$E6wk$M+VaU z5CR0p+G8Nbgn7soMF^A^Ge3G?az0i zkIg=B98P>6!0da6=MIjyN(>0nCp7(-c*8m9q2=PY#qrnW61c3}WCz!vd*NEU$A0IgZZI+Y?+XxW=%jVxG_)tC@c|#VZYM4Q6H4i9kOz)Es56NQX&jAL3 znY>2U{hfijHH2e-! z1ct*froE1IavoB9?%az^$V1fH*Is}XXtAuDW8gE8!yt}-#LM=&w8`zRG7;?x5F%OC zILmwqB&}tdx&cxyIK^%Gl{*p)W<>X7;e)Rf%%m$01pg0Y{(b+i)KJNRc;VC141-VSsGV*9!j3D2)(b+bO3J^WEvm?zIpryd6*Yv6~M#S}|tU z|H0aVeH89>aPaK=X87cK$2E5C? zy%(deB0*dIqq@5>c(qttC!9fk_D^vN3oOondT_tys)2=qRq4yYdg!hGA0YcrYkK&xW zaV*YJ(6Comy6IcDVd0FDmc<}1x6HF(@*q-Zr_px>#po%rNF5+q;cJ8@U%?~AqQocL z(I(ITZWd%WaRY@oU7v#+iI%^Tdk2$%K_MDQ5N~MN2HC71-QS3m5KiL3Z3O5t3Sk;o zjD@v&-@&f|BY%(K&o{xDy{2CCAGd&C87Wu%Pla5HP^NLdC6kD@5LcKniIk3K3X}U) z>oL%rA)^0s5B{7K2kY6UsAWM8%_jqD8+2bpgF8)D>rLK*VuR~g`HCT`(szGZf`C2z za6)HC{4GTA2dZ;0>L}(0g=lRDtPk;=!%7$;PR+C)FHo@sl>W5$Lq;uMDkx>)MP$*i zNiYTS)??tR0#P#-Q2pUk=BF}RR9Csk#CzytJw$Np_6x{9Od-WLX~PgXu=tWUWi+;du_q3jcTSZFeT7kBi?A+ zBIKKfF`gn})dn~ey*<3;dsicU!68o7m*_i?nxHI3n(K#l?3}jERFlrl$OPz}qqXop zByDhsY*ntcZ7T!#?N6wtY)l{fDhKEbw4owW1Nh^ zWb}WCBEzY`0kAWGw)@Zd5ALUp|0#kC(a93_IOO8cp`EKAQyK6$%EjAEX$A^$W0}LN z%m+G3?YDrVL9`QZy;r$epE#Bm*xZ#8hw0B@hCL?GpSvD51Nc_2nY;pTvbQ}9aX>FY z4vxQbNal>D0T?zgGgxthmz4np@dw+_RLmKvwi8xtt~9nErEb9xKoQU^?8%q+=p{ly zs4U2b+tLCd`_8^5cVOP=Px(=`NIQ?5*Lk?gv&K3e*g7%ieX?0j;@b>Vt!8^56)%KY3jN~GZ)+%W@lY&$$8aRHdg zAWF-PUetme8aQ2&z*)#A0f{)D&GY(Fjh0Ho;Cx4oN5F#QPL|rH>K1}W1m&sSb3v3e z=7mFwqOU+ddr5KL&8qI?$Q>cfBSjX9N)4T9opGX8ngEpEKx&C8tcSbitLSUtjt1h{ zj9Xv$aDU82ifWgToa);xgB%M5w5jd5CeGIik;_~W4w!@;4zz8je~&6wVtnl%kSTG(QP#6_V->e}^7nxd%Y@7o60H>(9a2e0HFJK=mAj)$Ocvr( zl1nc%JKqXbxL7EW$5KtkHD?d7?%rgIz^9=olFgAMTMKCR`l!RUsgyfd!}o$9YM&VG2h{wN{Yy9^c=UrZI8g8y^p zBM#ERSe#Advl$cNY5t|CPA?OawZY@piS=7fwNcNa zEEv=ITeOQ{lhL>0hVs*96a^1h_|20{E?zX zK)J=cV>fkyZ`2`t&mLDP4VU(5#jE!X@9ExE*ceW8Qw)j|o<5dNS>Q`wOSf;?u6uYm zX|R|43pHFyQIXT2nlr=QY5FNHYKA_^<_z|wmm!`1$LIgde$&rNiPh5%F!zAXoaoD4 zYN@M#t>%m%EqvR1V!GDJV#Vam=~8u>cK;Ea_*LT9XVglJ!rpu|qPhxo0pq53GA7Lg z%;VeLn!RbPbQR`v55HU&3+J}$$}Xt8%g&H=+V$1?la~u@-2CV|GN0~KiITQbpjWBr z1<2$Xv6SMaiJvkLyPQbxhJH*LZ6%RRcSX~(+p?yC+SV&>5>uQ(~&tgL%SB^jNA*@v#! zwIqnvtWNHj*6Q<}AMwJ-KBBTQwbWbYbZ!$h`L$N-sVMw^a~g1BgUQNoAS<+U zr4MsAL+0ianql;BnB2!7@V-8Jr$sYP`+zpcE+oxaXQy$Fu{pDUG2r_Lbzd|zt%HxW zOci|9u{h!x6Zn*2xk?;eN0=R$1f+945#t)X~y(yLjk`S$mUCa&~igDLAe z6Un$UH(qbUvNhW^-`P#4`hJqJt+QLDw z#baK&!@$>~duEV^D!MdAB}!abUUlkTxv@k2b19S8YsewhHrO z>V{1ij&I4eXYD$)otY6+W>Au%gj|4wyXO`E3@@Cc2vcH@0-A3Ujvb?7$3eK}jR7%e z!$&)qNWJiP#dq_BMO0$%47Ech2SaKu%l+_o70Qj^X0Da&f2vd5`97O?I@ z+&{m!VcorlEqw4TItwVKzRxAe%G4c}2c=}GEkXACo+RJ>HFKmUfqp{P_Ny=JCe=(9 zG(ey^GM8kRVVr;d=+!u*Iz-D?_RtaBC16yH1Ezs%7E3)^akB7EN|%(z$3=}&Tge=& z`R?W%_qC%z)~Fi@h24a7Ss@%FGh_c}a9)+dAkREBaeDbau{;xo-O`8MRjaHBQkaz4 zZLD8gCP9^{?n|1mU>44DV>+F8-8>(gIE2W=fJ$`yjI2o@qtru2chh>+;=8zJ4*!qU zx4dDXBqiWxo2ecDVmt~kix2`-^?gmC`YW*3b9dp|E8t!;>IMiooScL0x^IQ_2pqlym-GvE!7(uki$4`5WFy$R~9?&sp)R11=SUAbH5 zvYh~Y%T^B;_Mi9WrR)2=Yv^C#DbRi=56V3C)*C0yMe?D1{=HOtG_ySZ+#L>P%eUGV z#vpR6-8$>&J_4#Fc2T-Sp2T^$C{u~}_n*8fj?ZPhPft{l!OX)JI2;Y0mUH#Mtv_%XJaF6>NK%*#3DGxb)Vb@Cn|yz6>XF>M@r{s}F2 z$HSU*oaBe>fzg0`ByjX~8;OzjOX&Hlb{D}8mI356>eD)^rtHn_6WepjyS5n@!hWYo zBZI?N1env}fhGscqz=^iq^wl&34^gbMeJ~zB4~pEx=brEY9^}hYDK)Ce$lO#ZBMKI z{l9=AU}Js<#VHl<^r{CF zkD?VTkU9hgMi5+KUP{>C9)qRJszBuE6phneKAt7J9Ti>L*;fpE_nJ6|zgCt^3j0-- zZn+jLO&B`*(>Wwv>;)-XHYCmx8gDXgv`rcY2_^qeIoja@M@k|cBImpf7-C62rb}2J%mMj;M05(o9$mDp{zw@2;Jiah4sjmS&+=9+*rVp21XsPcm=Y<>gGCz%8KMJ;D0oCl>mZ*`JphP+qY?Np0(8zi?-trbb+UtKcP;lvHd2$xbiq~*zKF-3ByJv}A!YIflweoSUS+Dp@KNFzlb zL%Fm}xRd(A6ouyX-i}w8l)|yL!5bpt1}RKej$Kb$cvNzoy6#zJ3q_P&^U6IBGOMc{+RGsFmO=6fMUWer1F<*fZ2I1KM!Er;E@aV( z>VQYwdaUXAbp1mVVTaW(ON&1_0-)@IxlnWS)7j+_6&DTJy0pI-qS5 zgv9xz_XvVo$E$!?l{*ruBxlv?w%XZG#*&Q6hQ~>#8l%WzE)#iFSllJPXpfI~uL04U z!E~fJj20ZM*j9Eip6}vZk|Lf7(Zp0w?7NKi+$oi@k3Z&7-K!}Z_7@g zEPi{jy_K7wMCnb!o>KILuPKJECKvV&hbkxnOcJlXqV5$XHk_+bEn4#Wpk|Gb+S({8 z%yXziZ~kDwj2kLNs*!~pc5c=|c)~TJ-;#DdCY@N)j7=qotN%5s_mOVkB%5qk*kPIC zhU|K-XbfL z&ELJaw-a!@>5`1@qPbiDe25WdS*_#ZBQy3LSUGE8J*~WJHRF>0Q4m##g91o>{TNOY z_9!=tw1-kw>|J4m%$ZV)05yXlWZazUQGG?;(K6O=yA|jT3TlZ3%J)K`fuFFQlR$k$ zMM#GabB(;5fso5tQu1YKOctI5c9r^6^?&eIa3BUZOH6t8Bzz(w8_ET4t1#JP~j;>0^WS6lSEsqSYI`sfFR3YwEFRWM&{s=wGAA&I)i(a>Ny57AF zl1}Kv7V*HsuCCbnTZW%a)yS?5kvwo>ku`-dL2d`5&X;{6D-1qUwNV(Q{r#CA8+|mo zfe-;mmT?nE$9REWgRo1yok4}aUOm}Yi!>((I~n^wEKf3_T6@7;x~>Ej3WL zTK-rEUZL+F14IB55m@+*HY&x%yvUn`J5I1B<8RfX<37-Q1(=bo}~8}P%uHxLE!mzVTMAN81;?*K?b zf5iSjyIXi8Y|=0+-EAZ_n0R5Ak|04Ef>T%{Bis@_!s{@0fkn-4B!w)T95npfH|^zr zbuJvak_+KdJOSekYKNe3Vvlic!`MsF7rgh3Q5BqDLcfkL*(|KCO8OAjjQB4f98IW} zn{e%R-9Pr=p!N_w4gxCY@VLYY+~AcAQ0O|wtFb!TfX_2NT#hk{f}R9k1KVT|W(sFa z6t?&?BH?}tklFfxblmwLP?D@X6gl>zqkyLFcN-eS5ol2lfXmP)7VyYD>}+MvR>w4d zM-b>rK`^V@$#fzAsbR{(-J$n2?Vy0(H~I$nkAp;%8}vQg4Lm7h6tBf!BTIo1dIXuj zHOsJ&D?M}(+-bxT9nzq2jIa2awG;OYk#VhVB7>$H#|v>T0>sX;mdgeO=t<~R%yTvI zerFef;}fG;=}n;<)6mQLN#cb(ww%*W&5h9q2t81-NfRq~a5{eJ`d3k07Cr$*#37^a z`5&ifSqx-CEfqu3QFL$-HagtG(bgJ)ZYo^oMDRX0(Io}db0pu6fiHh!k>HRjQ%viz zFA|FJY_lITMoPrx>mqT2tJUXnMgHnwndXMhV<7iJ52U3cG-y`VLtI^XT42s>Cy$1O zEWn86)1}$oOa`T9xo>aW^qFhL8*rOCJL(l(D&}044V9LW+jak*LSN^jM<;*! zJ;CdzrPI8v%5s52w);;cl@iI&fL%1~PnGRq#vAH-U7`*m@eLO0aur%=pWhTtz?K$J z|2I&CY;za@LUFQ$|20JD2};_D)wX0ZrFFk6%{~uhsX1+`>>%NW$x7>qB8B1$UV$gi zCLQw$3pKk#XBwVXSo#IcCZ=y3m`tQ_R#?|e)$|hJ%RWLb{Zi*lWjz<4N0;oj^+Xtf zak3vzk`j6EtY~u0kl9{?cdW@F*wTID!5G&r#)@}C-$J(W+m0TmEP_S7$^5!aouXbK(xsts?j6^G3r<*)wYp*bR zDo(Qw$O`H8-iVhOUEu6(FJDJY*l!kaN&-=#P*WI27Cw^JqIBIE^p3SE0H^(Bwvvft zNz_Sb#?A!WuXY!U=YYcU$bDeK=JR+b)i-66-UhK}Q=Z9Qf}1CMZvvLKd!OM($tCMrNl}n%zN%Gz&knoX5s*TrAtDM3LgpXub+T@^O zmjiwXuw&fKjp0VQoU5Y6U|^!8Yo24joJnMf!QA?p_N)6fKcbJ%yM`Z%d`qn4YP6ZS zbF$PQMv+*JD|EO$ZeDgGKy|u%kEUJSkb%}uh!(fIUfw_`>MCnkennwr{s9@BsK=ZR zRX*X`O?>oEnHCFOiAo_6f7H8=Q4RQTNMbNI4aBCCR1`<7MPK1gkQXo7w&2BwnW3-oF#E-H_19wjrH zAe9)H-_u`ui}N|b1^dOMOv8^zLN*-+%eoO^z6W;{z3$K0ob4s6c2pfV3A9QrhVE-lE|g^y zjkQ)cBwD>C(Ti;*VqGuqu*W4C+9stXdQz@-;eZvgIm0RHw6?k_JmK1*rIM>%ldd#uH@ z=z>6e^yY}}``)lSmTcG4NsD_=f?@XZ&BA*7eD>C%w?r=^)|d}O=a}%t<|W|e1+FdD zLb;?ujNj+xr)TaTznAT=PzSg_#ab9Aw;itgae?=+iAgGNB>KU2J-Y=p<(q{UgSqT7 z3SK>*n@$3bmX2bM)-0Zc32L~$oQD|_J(+C1i~5?7diA!=bY+leciF|rx~|%q$6GbT zH*UiyOM^*gJ1XwjTJt(F(2q?`r-}(PB5-;^woeP_zsv+KCbIEBN_p@2rl#}9 z*za|9h9lf%56?e5vNZ5qxKaGMwhw1x+DLBETBJsIY>y>1)^V>*oDZ27eH|B8De$^Ovud(Ch8)b;ym|BDH(h;g!TDL<-KYizH zV7kE&K4ea==%)K(xPXYep(b=Y=;p}xZ;3>l+cd#W+ve7vmyc#*XQ;`SwG*NFwDug4 zQA3rm!n$4aAcxsuxJKo)r!MtCh{kUczhp%_j_9jr>O}3U^xpvsZO8VZy>30X$*(Qq zuTbuf_MLFY)0quxx=r!vw#D8<%JJvu3#S*;EKSrZ|nK^<52RncL7MC3Hw z(*3D_V^M!ylN!P^^jG6{!7Sh091oH`6lXvD&PBOx9%KTPBMA?9A#^NHj;qc z{sN82O@CYWBzqzon$ZOs`wm93ciseF&7MQWSbQ#Ky}U6w*j;})=YY*HB&72+lGWpn z)Iju87!VA5Li=tE{?5Q*C3Q%ls#fFe+w7KA##E|iciR&yzGr?4^}520 zU#Gt&n;0Y>{vc0Sig@=R(K85>|Hw@o`ThN7;TdUG>xov^@=W)G=fPPNvOp$iWae$Y{0fA+0$YriuAsqZFCgx4~ZDi~)vj^pE)qzvyeX7w{n!OM?cP-3mqTcPaRfSpY}-K*0nk{ zdBe6bBA>%Kz39q+R@&FNe~SiVkr!!#opT(&yOPM6EG2*6U6QBj;(GDdxbH?d98X@9 z>$ET9OeX?DL(0dn!8}G81#boxCg%%sml?(-t@4BT8DfORHI{O0GV9YPpNynVSt`(Ftl^tiT7XA<$ANJ+3A%_r?m zKIb<@T}1Sb8o!LK$ZZK?Kf(IZQfjR4Gghi!q&TkM`az|@TF1*<|A=GkY%aKLKL=H1 zK9Immi}J_&SaVr`iD=R$nJNf;9(uZ~v5xBR)cW7tRienfOf)sR3cz&I1{_Q@v2ec?o zmzrKC5LCi_wao7An}sGB2E^U_I`+Z4;mqERaq4ZE)r5TE4V&Gex~8U|x?7^&A6q=P z1Y`^S_%`-YJdV1GM-HQ>^40Gy>8DSSpQE|g8oJ=`2Ety-Hdh`|ypQL0Adj@ixvR)AFsg^P+Uu6xLK&3j`TEJ@&eN;sP7e{ad{b+m0^ z4EFaalc;ggO?qxj+;8TIgqKS4-IL_0fHfgf6<3ej9X6Kf%QGRw6$4Ssq|eR#d&pkF zpnnP4g4?N`WishZ2x9R4Gg&0AX)TTGvGJZ#64o{J3)tPy(sX>_GS*=KD)QMs8yGjQ z#;5(TlZAGrqXt|las^ju?DwFG^&Bj1B(Qn*vT72ZzGp(5(!Bc{lRN9IWf!5HDUk^x zZ{y>voFXk#_upHd?@%%}%1(XEZb`Cx`7@eUF@=Au$*7L4ZsGA*jcsEj%gnCI`@Wpw z8upDeAH_S0WI4qf;jRkz(;Z(r^lmJIGsUf+^#PC9f^hPgBhtJT>3zIY527@wKflJ4 zIB?5O8<885=ZJr>-Ng87nRonQs`qW>OaeIuz0HC~HA}$tKRkp_p>?Q{+cfIWeo7?? z3KLaxn%Gv9gpLOjrHksC_EY!r8}?Fb??-H4*KR}%-qhN$4O3 z3tdQNWx7Sd@D;&@sgOqnxl)7Y5t1~ zgrKJP=@mvF=n(vNMc27VUF5LD((RPjOUHE4jM?jKw@0`*mR--A23lKZ@|-s^GOT#+ zd`Y3%NTKmU>gU!`6y!}D^@ z@}x2+HAJ@aW6}xnWU$KfGNpv?8`*-Y|DG55oi|4=yePsxN^>?c1hGCIbc0sLCdUTZ z^hBXuwfB5yNMogz@7dM{2ADtWvf9YMDKkm6NQ)M`g+YJc*sgbs(B>t7-k9nL($Wjh zb`-kBbk3*2jed5w-A_%p8?6sM3KVVD zkjNG$vI)3@9O0~;4TPb#%cPA)=rp2fp z{p@7TQqyY&t~2>2(JAqna8abjL8H$_Ou9fy{y-f6snC0`P94P`l=AWD)2A$6IyLHg z?=!VmXbVWa(=Aia8%1ouI;@hRVdvE&N*}F&th@iLp7@4a{DZ{x&lFQ^d91k6>@(hU zK0fE!giM}T>@Jyex@`-`4k#cH#lmP=E-Mw*on}qb#fgz9t0^H-1zG`KR^>o z!LG5*?}dog4_G390v5Z>Ks`4eR0Cubx|7}Ho4XCKvfq!(jjd`h*?J{5+xsxi;?Mw1 z=flK#pT`(>%|kG+3BCr~FeT(934ofs2{KqtO2VOzog2iR%G|?(dWVDy=s9q+0DZwFw=9SQN9Q9Mrc z5&;VesKk?tKz8b+2za2mC`U0CY`DXI8 zyXu{A>bFxlBvzxcEZUBxYG!T;xu2gq%EHZId-eu+?Ymjmd00Un@)I0cx5@3qgD>D} zlFpy3FYqXb(o8{D10MYQnV%#|MDVRAJ+i7n%n+YzHH!l21p$FC2K0X z9e@J62n>(o)b+f0E%zaEGk|u7eu7&r(@*cXD~GI`--~U#r~jxAPYFv2`SeJ>Q9LNK zyK|5pl;7r-zZhe(>CU^}+K57tCjKRYDMvTUYva(PK<@qcucViz44f{=4skEesh3;u zAJOI6*yexPh622k-GDR7YuN*dX9K7=tCvq}AVxm`T9lZpu5|#*<*a`s>FYC|#&hcF z0wQy7Mm2Dj`vf$?hzS#4kmzz=>r;HO@c!--O9F_yfwzO7)t69@t5HAh?>zf652R?n zvPu?!tS`_bd*M4`qun?l|DMLs=&!I_fWoet#w7T6*a`Uoa*~d&=dM)hY*wtIiq^$) zA^^C^Id6`>S%6dFPzh;p)bEI|fzr7ru*6a{fY`{8DOio-5J9zK@UedDkh&f_kcf}H zWzzKt(69@SG<<*@{1>a1#tp!Bb1qW--nP+BGya;y|6$%O!#Z&1vRJX|6TI7d_L0{{ zIQA)dZD*S|DYy=QrP2tIicuvA+fU5?IpY5FH~niUjjVgxxf|@5Nqr;XpUO@&HVp18 z3V6}TiL1ck06b2oo8la>As-gMwFhy8xBDW5aFYPREl%}Ns0l}X*On~mN`C#?Ku+*x z_H@2F=gDjUjwAVIh3lD&3U;osaRg`<@CRpH=fu^|?2Y zFFXUwY7(Z^wP(1TPz%CaVD-}rZ|?U5V_fZ>|9j=Q4bDHFxW8Lj0z(@J;_m@!^U7!) zf#ThJJH-IU`UEbr_ld6JX3ghnU=0L0c7Pj5usq5$&UA1(16X;;#lFn29g`oZ$~#U0 zY)SW{R}4G_tq>ds48=qMH&WATO!int-}M2c>K}U$cNpMhlC+q8!s*KZY;P$z>N=>l zg`oJQ!0gmwo*~OCS}mVZ2BQT?LHUE*NN3O6X=&Jq?Ss{lKTK^c@LulyqQ#bRLG6m) z=yTe?T_J|+2P}ofmV48w!NMVQw)3&SNJkLjlv7d;oaCf?vy==%4vi2O+a8#*bpt*+ zs|3Z~7%c{iGs>*+HDvib#6s%8WJF^I4j}E{I-;vWOIQJGlDRy* z|15Rg!FgQV^io6{^gt^p!BG)kxB2}R?gYmmMqmkjfEX7Gp;Ah6?jB+U6Y(Nzhw@pD za;c|I0$(}EW^WIKwp#)ZL^A=zrW6mvc~k0*VGLNr#rdf`U_lg&9;b?`+#HgUtdKP=j zR-3IRFbPqIEc;SdjiQ7fC$MSGYZ!fWr#RYQ>E#4k2=PXd{2evHB&Pt=7Eden!mMfq zGDmkP21I4#utUkfIz+8J5Q5~_xjimw*cKwG7CU(BEs;hzFD& z5_1|DBqruhacQddSh-g_ySE!%L{>Jvqd3yGp5LOAa!kGoouw?1pH5dS81nP&-`V@| zs*c+wyUa97gOm&B?*RJ&1(=9Yd&0k38)8Kmv#6s$2tBjgPRqfA$Xap{cpjT?IK*Bp z>Y_;iWc4F~bsz?q0MyUr0bFYlQhfmMGb~BhK=3{aoj~8=bi6@ezC@27K@Do})q_Yy zUm1b&H~W|!^~x?bP$_%~724Y~ALt^cQ(@-L_=RGKAz>}E7BB5i^0Ru1hziTafTTDK zn!XhL&rE#1GPD!%A!T#p0#o8FQ4h<-UnC3vNRVsAY)o%~5huJSoIkm?G-S$@<|Uh5 zYM>>KvAA?(UgjOUXhJO!dK&e)oPWZn_tmdr>F>E<2u#5bEAR|Fet+Nx16ew-%Ju_r zVo1dlphMpRiUdG{%fWcQEmUzF64Wbd{PAqX9k5vJJIG9B--rh-0&)I6!=RcP+c|M& z;4&iwW|AjDGH1Y+p3XGQ?Va4q61q0vrBl_7n5xUxZ}ERJ$!9$SVP)M`-vr}7cF`rK z!0{8}oan8Ermf~Mu{#*7Nu79x6%0r7op+%Wzw8}9%hy%0UlYFny-R451{o{M$)vD< zcU}E2n}Lzc`>FJ|yI@g`0TTo~ml|lxCV=I@%X>x+IWuQBvaR=(Z=Az68bq!Z8~dOX+IbQ=(ZMf*BH{&Ar+mhoq=xncQkDE!R0P zpYPS~bFVy2I72Mb2G}gfK1A;58rdvN-QsA8kg6ejFd@LJ!!G+k&lSQL_#i*+d2WjC zkhZn&{3D9R_o%>0-F`#Lwy+Ji(h`N0$jl6cR8J*Fr(5}>Kp6Oki&$V4j zT&qtJv({KgeS^u#0&m|3o6EroFp~HOr}%g}$9L!YX&+Sc-<=e~=V;KOzRX`hVFiE~ zAjsll^aXzh83qiJLdi*U&nv?4w@nxEN_hgnl^j5|Edj6^bfB?MiBq-8aGkBBS8!X1 z4A|K#qzP%x=#}XE5pwEkhpm@L&y<_TLfWEX6hNRX8u+O4FX?%oEEyK`>>3t=8N8># zHI+@TQCq1PW3}5nCzXLt`i$Dc6xn8}{9;#zJWl0JOY}>0DHd9Z<+XS6PhUMMdKEqr z?N+@^PZP7oviRDbN9x_J*zljSuUO)*hF<-VK4U*pdFXK{V!G{c=z8elC6apNHB#TW zF?DL|z2TN-;rY1L0uoy{sSo_AA|HD3=`)aRz_(+5=YnGQKFOKY!J$xg_0uHNlE=K@ zTOk5_d-)83nX#es#)5Sk-)JSL72LyiFKdjf(}rZ(tV15fY|cg-VfLbbZ1(t15a8|vxxDHj)@3NewyZ8Wc)*WGXo=5$No zv{6fN;H9HkA__bghJoWqdOOh{<3mDrzjX>yrg15CgZYrJk9?&sEsMd!5i)~ErJcI_ z?)txv&f*88KL$Y$k&I|t4*zaN^A547I= zwCK}+J)dQhn}PCRiWnQxSdQ1>Sf{aYV>_|dalzlDJ^C!T#{TaY}^0c2n7C2dqEd+3H#B?XS3y$WGQm~;*7WSx2jtblz zudraGltcaj1b_;Gn8afc%vs-={;#%!;tn#Q{^k8RPw&g6n{wJw@UMB|5G}m)6v#!E z0@-Cvpu$rCW=-?&RX{bWZtY#NA;*xaxsc=PHw}t?wRKfcdjEf4JDM5zOunL(6aDv2 z`1CtKS!WcSUo62v1w(zN)JSH+Aeb_R_XPO9rIuj7`Y#u|;%5n&Jl-+*@vl*4+!dr6 zlf>==fM*`5=xSkCT3su4 z`bhuV+g>&*W-9pcH`}=Tmxh@Cmjl!o5_ z?V^{zr^F6=VW?Hc=(5i*zr1|t-(I6kj^M|G8YR9!#;w3BRdMz!-;9F!mrw%6cWRu< z*#NB0s_fjiY}N36STh~$1gCiJbljP+j4f?kMgK4DgP9H*Wo{df=a(&}-%mVQ1`S61 zTvq%vf+4h9usmS+YUuS2o59mB7|tB8I3-Ct*qyj`btn&jwWXmRYcH;rWCd$_G`tV>D--;&n0^`xL&=+5tKbECp2n;sY zZDBsMg(4jX(YtiNt!SYxg5yATv{zDp{WPH<62^SM)$4f)kE*LCuW9O=Q}oYLA!p0M z`&=Yy>GMu?=7a1d_Z&Z~QvdsueugwVTT?D$DZz+{2QFVlIyLee&y9K~{|a%j3tq>9K@KiT7-YkYeDyC!v++~+S3)fMi1(fot#$N z56xDF$cnd|0z&PmP`h}3|0H-`Y0yBXFuGJIEOPl__@VdE=Xp(iG%-NXQu#^Fgc{&z zLvC$uqS_7#Oj`?4j1DnH?(sEp z>Y|}9x3x?}Dr<^!NLT3po@b1c!7NpYF(3*}Dzxxu+0A>4%>EHZFF^C?qEoo9zPV#J z-&S3^TZ9)JfcE=0F{8x<=3T*_Do(Qlas}fw z!4&v>lx*z_wmVRJWl$ht6UIx3|JhGSiNha_tm9Y3v*3Te8O{3DZB^GL;zA4_g+E93 zSNQ$1sg_GGg_@Y~ir;XdR_9k_Wg%>|U$OQQKjcZI5pNnH5$f*-Bqa4yYqt}%!kD!8 zN&B+Ik6gp}*LF}WBN{X>$sU4>4|+FEhUic8c0jmElPVq|AKwi2lFt@8qpE<-RWC4@ zGXeTYA3#14T7FaT@hc$Z$Dv}qnL{A97dMeT$R7_^l0sItOZh1E2qwq#yS4294`c5g zPxb%)kCzlu$ZQ$OL1r2%J0mkA^KcMZ5wb%B;K zyk4*O?e_WJZomJ$%B%A{&&T6&J+AA1-S78HnML2OPbK#P_hLX_);nY0`TC*%hG%aj z;aWQW@Xy@&caaH$>rk%uoDCH*eh)K9`etQAPT%ddsj$Wvr1)JK zc<>1kue|~XRqlCk0X%y8>UlNIWtK2?BL5n-`yV*p>3z7p_bN1=e|VgKAXB|nl=rTc ze|ID1b*9=AiukPS?^@*bv(JWc$SCgr&u&hD-8?}i@(EekhAaCqX%p@wmg^hTxy6>xi3z^18nu<@|0Mt#1ZKc?#eg1olPu*B_l8WYFGw zk-q~qlA07ZeBnp-77;rYo!uo(p3~$HJ_T4-qZN|HDv5+ z?f?R6fkw^>lJ7FNCY|bsW&O^**3RG(fa2M0_55`Q8U{CYqLjzgRYb>l+B?j^jLwP3 zRcJ1qe7_2dW4dydor*8_-n+p`vc%{)p?yo3MZWP$v2NB-4(7B4VCW+JM@dI<%Yx@s z{&`?k2iRU+eO0EW$Rfb@JUmicdov*5F)bOW40{m=MtATiY$}=rbhvR1aYD@oSF5q6 z)Dz(Hk_#5w1EVQIvG9_ag#kay0`RFlrF#Xmn{(jymkXGEY;BYCTo10P<`lXx5lnjW zczl+QAGXPmV41$fn7PCy@fxDpp9tlO3R61W^}5I4O7}?;5_Ob4x8|s&{+Pe?a#N4- zbw2z51P1SWRInuvX>KCPi|PmBl$6r90Ywk?+v+@5vYu>9c80p5?z2|Z&}MXqX~_T% zz%llg9hl7Udy;rDpq9Nb;g;dbjTAq`gpvXraCO>gR78y8gNWBdRY%w%wO0y6h!r-s9A>}>Gf70__eJLB2Nqozpz{^|tj1-S013nX*yDHU0Dl)SfX z`L_&(SfdFe;|);vE+QH>9f%NCE{q~iOC5*e{ z>r%Ni0>*eH-UmqP@;mA)7OGFVM?Dxwl@0B_c!jEg*t^ZL67q3D%Wr8)j*85CVNQZ& z0+N^XQ;w4+b0m~EU6rQ-M#;q=zOUIBD@CiE5T*Oi(-T34vHu7pS#V(^b--m0Kk_>s zh7Xr~9a8y*uEo-JZNaF9B8dICfEE}~I$^JSLU^t)0)ZHnH=_2<_s7?BMfW#QS3v~n zL>$k|^lf@wx{XM{EAWxd=YGYs_t5TX8nX(5h?9*GJ3*Dkhin|f2V-e`YCU@uP?!o) z3~l|65ZCnAu6E5~7gPEP($O;l^Z$8NuCuUTPMm4_{j4lRrD{3XU!jQ=W5hkHML~tE zJV~LSl~dHItDI#sSY5RP0`_7UHCE9fxA+LkYva6XR0>#8iH${u92cm8fO2RH z7nR|6yn9{%CE!c-9UyD!!0UX+FeyJPT~}ryg><2r2D#%=#?5Hq8~#1u>r%Z%fW`R! z;+#5HJff&DIdw1hde#6K{>~dG`qgZJW6iz%TO8L}P9Y&+u;_b|QsUmG7=0ok6E&bo z2k-a`U86_EB%Qa2f{*z>fqI{J80=%YC+^6fTzcjdLD1zbZ-6^ zVqXX_(Zv?sJ{K|jQMq2Yes<1klbXEP=NEP%Afjb2f^f1B(fN!L(-z55ecKV9}PbdvJHpQ(b& z-VVG*OM12Rtj7|%bnYDOYK^tR#^eUhU@KY>=SgjPx2Ml5oXF-Ckonbsh`Sa89M17t zC0?jwEOQQeJ68Fe+TplO7-P&!dtQIPI7`@mqS_O!`=ra^M*IEPNw>-5N)z1X?~+YK z-@RU5&RRB}`YprO(`AfgFQPy;d6y>bSj~gg(9oVQi?~i1;+n&Ne0>uHoDDZn5`2a~u}tTRHH3iA>%=>@PidoXd>E6{W>t z5(&h(b#09&g5T(){j31$l)S*}8zh01lu+a)p^KsU_DUk9E9z`h zdq|tNBu5y(U7tgGhFl0h2KIY}6VyLa`;00b*JC4L1yIWSp1-X%^y1<71goueNJPqy z57=jlfg!*axNAd3_^6;mOYd{+rMt$EL^*Z#+gBOD{<6Oq3jwro=cf-D4aP9|&jkvqWX2&|DL zL=46ns;|KGZ-&UIQi$#D-f~I^9OERm>swLKMmFnc>A#yb7LumQ@p)cu1hk_%OGQ@) zh^$es*(+<~G58mC$R%9W?j6+s`Cp8}0l_HZ zs!UMGUi+ONLo86yjV2@{WiMpDAoWhWI*=sAVI}^+Vn91FLk{~>aPr#;Z;=Jz zy8ncyaRdtpL5coe4IMZD2P-Zs9RXY*nRsI$JNXnoe{bdF0=*cL86YvzW$N!b=`t6q zwRKN>edX0kTNNFJubjadrhoGziFU}N`D3$cWKNeDgy8Py^mf?!>Xc`G>{DSPX%#Mk%f`lo|ou(Y^grWv5o5NhD(QeGp;y|s`?QXrzYomDe%#NNCZ02$iLekAw5}ZMaFjig=pv5nTYNq$L zpO?f@78dShM`C+kG^;DX6jmRm(L{S+f{N1ymKRs$*^FF35(@B{BLa-h-A007-tGfi4-IF6W2W~n5KE%|Cb2-jPO#>jW}SNDuzj<_P7Tar9GnG#&y zt_Ql|BF%=LM$Bw%^`G6s5hSBKnRevg{S@Lwyo`$w%LTYh;VR(}qY!%QqZCclbFzPa zg#~mpq$6cR&78;zEi3G^V`qBLP{&_B$vQLme$#Fs!FBwE@YL&wJ{BktRH1P=jC-JzTA-fs(4&9XA`T$j)^j$8koOga+*(V0 zSNa{*Blg9eGunpXu?3JRd_H<>cK-Y2UAWvoW{=_d-xq=}d+jIg#dk=*2Rt|Xc)Fkn zb%%=f@WZ;scLZPnbwg@2KG0EY-7BIc2f@LI4!zKmy@%&5Q5x8fa^-*} zB=FvbZSwbku;dVP*%yQybTue>`f+bFa;m{|p~{zdPC=MQ5Y45nIag$Wfb-~c**XTT zp>*&HY;h`y9k9pq7DG?*&9^}57GU}aeJlXWxN}8~&TrtU`{t{+Y_2q~PJJy9#nf#v ze1*x4Wskaat$5vmt9McCM)wfXF{93DnCeUGU-X5htngdX(`sB;Zn-CccI*xo(D_%V&R3#uO{Dlyf1TQ zz5OQtlsg`fCIks9zebl@v<5hhDRkm3gA@dDJDxi;hR%@XR^*B8ZaW}_*S)?|ww3LN zD49;XcYcQcm=V01atI)7>(v{F)fNsy!C%1W($~(Q{Qy$tJ998uG&@&Wj2!4OE{N~W z90CA9Q@ zzq*(2&mU5uARSGWwhC2{4kV5vO)E<*&(}bWY0p=V)GH5_l6CJqH7*hYkKCLrz>GSk zFRG1z$#^ZyIf>Iz(>PABYq>+mRn~5FxQbFtrYqS4aRyfM!;JF%f@?n{lmAQ^ke#Ys zZ{&#o+DN_YfppsCM-7Va#efHTJ(Ah=mA58}53ZJNLcY~k`pUXEhNcX4pW8Ppg=C)w z_6ZR(x=0kfsofmq6UalvHZ681v4^#jau3p>(BqURF4W?pbJ7g3O_D~KJ7z0MH?Wpg5dk1~wgKu{&q$8F=&pwB9F9_6H78PqUT#X>C>KXFZe+IzGfS=8Ob{ zbs5)+Utl}#l2XlMn@Zp6`by*E0iY}_tpjNVr)whh?1fzAM1p%=UE56QT$o3 z_o~axK&IDn4O{4b=vw7tcehes)=p#>_cW2UW^hC=<`0C{xl0-fk84OkwM`P8~=HI|NU_TVAKsmo>C-os-8t| z7TX!XYfjVjA#4lc1_W95|6Xk-l#-j3Y5I94f>_!AG0e~{YqiHFj}2F-rQXOB>EB*S z+${unsa%BYAG0De$2rBU+^rowHxB*w|=VlZ)Ro}$G&<$ zV2In+3O5gc%yqCIZ}oTr@j|Z?;k5V_5XyI~?;TKvd(h_bbPN&tLx*UcS(M z`Qev1H^RI%lzC<~VI&AwD;`oX7{$krTwdJ{SX-((hnsOrd+GAt<@guH2#b>lrmI_% zZHEc(Y=+l<=lu#k63JvE$zeQ%CYZh{Urv*spoK9a`)pqy=YI)mPLB2ToXHLQ8J>^2 zS~=-;R#8bz0j}TxeqZauBP{Tz-pB{Nhq6A7YGEZpA2mLm$kQ_RNZ)4A)c;i=ZJlED zhI`v}k}>1%ppat$xqgh!FVAU}r~peQlcoqEoy>s0eXH^eSF#p%2{q5fUK|?82xD)A zUC^HRSm6%Zay82S=NwkMt6x?&<@%<0EI{eHcvUEcAxaW{BgYlhu&5R${=lfe>Qr9bB_|n*|QMd_++;fJC zz20ZWQ7mxChCv8{8pD3C8JPb+`)28t-IA0+P93_`?Gg zww_Sb>tB6hQH2qKOy}{1J9}q*@9pp9dY2)UOSem*N2;zAl&VF|h75zg38l!Q*T{Dm zp8VAzg;qCz9)J*mt}hu|Fr`}<-;Q)1$lL<#`hb-d5yprA8gPrV*j1n)Ws@u7O`eZ2 zI-zM8(^*H&gX;8sY$RjTI_NgTYmOcOj<|ZWDUNn`!E@INGTew$zmN&istri1{Z3w8 z1ezMJ7l4uHW_-B#kzKoE>h<5Q%l$5C_ZK0WMLN?-Pk3I_pvZp0Kq>1ucQ>-vl;YdD z!l#o(qvSFl%o!AF1v%mFhw75fNIb!G;(1*lMVbqfqR4x{GiM8=Dt&X)h5FF>9G)Mr z7Sw#2w%PZ6Ug!oW0*ExqfAehqkJCa&_6^Em zuFYo$vEMQ`ZnPmqy&a&A&wqvpFzKRX4=zwWvH++eLZydZ@7_?rSluSfIw#Gn>&H74 z*QS|tj)B{#b2LOoa@Z<`3b{&#K*B){u~L<96s`0 zSAJaV(5_RZc9QuDg*<+vz5;laKk17 z4K!=KQEnw`EkD^>_fJcm3#y;Pr)v8iSC!jW6`GOA8$E=O79HMUmv(eh9pqO}Gu>}D zXyPreJj^-e(dHdyV%P4}ATt+98=eFzp?R@L=7BelCaXmwonx?1&L`YWS=}S3{5>vz zqd&kN(Cf|-64ph4D9*z~zU)Edu|D$XZFZU!Hfr~wTf?as1#VaE?)l_dKg@Z22HK{4 ztfsG`hzT&=wfX*D?ZAqre#iHZcKW(OWOFx5$vB=^7v=vwU-}m$opE&K#IlK_d^<=Y z6`H@{0ZeVB`JBj<;bP1)PbidHB*mVu6=h{sS@3;)(53I~KxK1Z4Dfm?9(# z`>Yu=oKbBmpQwB|`!TmAhoUQ5u*9Ohrsm0^>fo#)oEgjtamr#F-KtV!^q+*8872A; zmvAjKUYlPNe27XH6o=D!YMt87JmlBl(;gEdJr68Pj{K(00rw+ezU4l@&O>F@TGrLM z|FJZElTp9Me3kpdrS*ky;}ATJQM%8LvJUa`eVNEHj+%D=V-yLq^gSRBJx5{G~)xmFSE!ChlH`(g)*CX}Z%LE8_LDJwt->)`f zz{noPuz#E@JnhJ;aC^I|xIZjh`fuf`>>N;2TMmtyGV@+gWmUex50rt0^^h zh9S&#Ar8l*^&YQ)MePJeDpOV9sr&lu)U>a_lTa8DZ*-1{pyiTT@1Jfd0atinR z9lzexcPh(|y1WP}2SdT3XgbT|l)92x6ek`eYaLCUuc(r-vshzlkxhADdlMyYrt^Co z6jot-ZRrzg!)?aIP@8@(AwpWWtP`u9lfbY16NbA9UA+(eFCn}Qzdc?OEznTKeUI_9 z1vDO~_IZ7QF?*A>eI~|^$HnzJYkJNu1oWva!}uE)twDQrPnfV+ey6kkNEe^b66z?KlE9;r~2k!&c^><^cul{<8_p_A4Zm;or+W12($Qb`!?Af zYI{>nZbC1BTz2=Q7#fnpn4Cm;1$N>bS_J%)jKaOPf!YvR&>3lpbmk0OBFlS`u)uWMCigxyn$^tEX*E#l>#F{!ybxr`=CaLL3zs#LUDJA?n;771w`kGBD9 zCQo!E8;4Vj|y9P*WGRvlXlcT!<+NH06Xu)^lO$sb+=W9J*4Dqn6%ok)LH zXS9{kH?#9X*b`OO3N!AC)TeKd2-c_)8>RA=^nEECC6MsfTr+>n%xFXF4=}hudZP zTO)0BkKXGWGTF$`kK%r3y%G{?byN9Fw!BsNtSh)Kt#Hz}r9A^Fu7e(g%eZ(7-j`M9 zv77d;RZvmRbfOkE`^di=948DHa>+l7!sXX0q5M;*pHw*&_}uZ|R7l=(KuaKl>&CX2 zhsskP@8;DrS;2(ma2g2|JHEWL{zvD_X+7iQtfwB$4(LFYm*+oPc4UnC$<3UsBiA+z zm}1mzRD7n%V`ZoQrF?BRd#xx`D2ZxWOBC&n-|VUnh<;PlIpS;E@w}*NILptv3Rg|R zWg#}eDpHus1k5soyEI*c@}Hn?F@4S_Mjh*sIPlnz&U6kSjf&mxX#wIpTgPcB|Rpg9cR$kdLG} zmV)%FpYd>dT1w@I-q0Tz7-Rcas*V=PJZGld505^JsKATy~eQ z^j0e&lh1ICFbf1ff{CRp>-^5y0Ky^26tY;;H9#QZi$Q!>grcv}#-?rm_sPN;( z!J;e^)CX51ouBy%n#=}{N3;E;$YPC_MMT*>FK@g+05^!ej#D-YS z449G*XH9&nbezYb1-^+2m)+s~@tP7vpWWHeYa_6?K3bkLzS^aQ;@+!G!)hX&MIzJJm9$DNI0=Cuka<&hno2Hn-YV3CV`c_Rg9Y(5F0QrDj@cw~pHe5$t|^_^#N1UG)4aYl9MP9O z;}ytI;Zcn>D&3#RUkp~%MLQcKp<`L?IBAFAYQ<`6Y!1Nm>@5%eAGf@mG9VP!PAMQO z_l*?k4F_`3X3F@#g(ItddIEX~*NlYu3TDp~z6^9GTJS+p5RACZrRC zo5Fd9oK$N#%5E@_FmkDG9B5S(<0+}Ul_Mpv2-H>W|O_7_OB`` zV3wHwgbaBHDq~EmeHWy;z5X85+uus0ZOXh1O(QjxR^&(Lb!}c(k^d}hX=2)r`?L*> z>zWP%YbwTR)s-x>17(W&F`sdDMC< zFod5lu%G~hqQc}3=>4)0#2Rx$KrERazKN%+2vwV(apN}epEde&lGa_HzLt6^(!_%= z(6np>D`!HvCGX5!R~3D53t;x4jA{M$E%lgZnQPNwA3(vKc%M{2qj?s&`!Qw9PS04M z`#P01ooFJ>?p7~4PAMw7u}J(#2tg10v?Z6s+t2JbG!&r~$B>*8+g_9+e1GwbFVh44 zM$xP5xNj7646S8fQvUynNsdM${Wo<0ur7EI-OZyo9Z>rbD3n6l&D3@!-Nu34s?d1P zgR~b75LlcSBR6No^W606DphVfm6T%QYyP?Ui`a&P1RxVw*`J+1IE@Qr5Kg|zm9ix; z(HwK9%AF8`d!beB<3g4=6z8$Cm{AO@FemiDn46A4zdO!0sv{@7ufa;6Zb?g&@wTe4 zow|N@MZTbAG*3En-fG^DF)_WzRaqIA-+|zi!wH3buxOcCx*~?S68NY8DihLX^lHO6 zshoLe~6xaeW4BT*ti)-SF5&@HLqJ^H*aM*c?=*`d-nuimUc4%dZU%@&5Zx&ZJhKL zk?!0TZgN8ci8Qd>jYRS*PcEfBm^kF4#z zNkMdlJx)No940x=K_^OCEAk<9%vB&wUm;E~`klvvxN$>#ytQ({=E^QKRWp`_P67?_ zsF0I#_dwtQGV&)%-~xWAXL|lG%T1z_R8FbEhbp0n>}_{mt*^$d3wdJbUJaRtMY0VlH=ZM3Mvpk- zEa^MeP4-tM3{N5=-^Ciz30&)_4$MnnXj-bd6;x3l2g(aac>nLD0?U!F5rFXKj@js< z)U`0<(6qq4RgSlWc9S1e$@-CnNgyF>An|T9K5ZnzEd1f+?{BV}MqJ4f!uk9?qk?8L z;i8iEH^SVPV+4;=o-(rpwo-aw?+nrg&0`^%T*p`RF|)Qh&g1XR67L*QT%OH+1I%BR z_sBcPC$=N++yoJybsn2|=tXGav05MW^t^)QsfSi(Yh0`Met6m@GM}1KOX!zZE#LU| zx61lt zt~0D0UXofLsnaHfl?J7TCPcm`r!0Cs-OZYEQ2o9jN4)&lgZJfe=%vWO4WLOZ`rFa@n-RVUd{<`CDLI7 zS_@al!S4Hwzc!dNRX^Tj^=8Rp3NVZGKV&5QhZUN%NVYL}F1_Vaht&CG34Qcn$4^Er z^x#yKr#m4rfpkK|(e}$*(oy+#Rd`9XC!ok@?LGe%;RS(mlyqc@ntOH=h?pe^-|41( z@a4{2WL9o2NAoO;Y7M+!#Rn^BxQUTnM>-igN4JwKswGgm^w^i-Be}dt+a)PA{nmkH zWrCP*jT_HGg#524gdp#o!t&#NXy%3Q8o1Hi1xKH;T>a!7cp9yHgvj6Y_~O)NkP|(F z^YvHRA#oHTwiXC#Ea8M5CvPLPZ0my0g6n{6c4ZyRKS}xxxl}J(TtpxK{WKc>5<)4Z zwG3oKZ#ZqFeVsolvlVlTKmUP!h~nwp9sSVyg;kYtNRaWC<}uf=Q|~h#-_I9NSgN>m zf_ypiMpFLZkaf-}O!)hP%o`C}5FySWB$e0wxA~BlpD*Ecd<5+kJHdxcC_Z)3EC^{k zJA)U?xU1k1IFD@btO-F!e*Rgh!^G8B=UyxL>XPY-339P2uMY-D6IC)_j-gt>r*;Jp zZ(8W@2HjtfH(8IBH!3Y3wsor2uRd^L%b@KP@dcSAR`1g@OG;{QnPEwy;f*`Uzsf`2 z_oz4QXr?4{*9MegR5!3;vw*2k{6&G=)b&z1@Ln<$fVq`1YVikR!zm|SP^)~A{VCAH zHqhu79pk=+@$F;I1@h6=u=yX-$gzi=4ViE^KMvwJxoG&8|FY|o8sHQ&e19sSFME6X zTlzZ8>Fa^YVuoU$*Fhqj9DKxam*8u^`}`74q;g?#K=72Wkf2ftcuMp)x~fshIc^-a ztK=*Wk%yqU3ooZ76TW~%(o+QG8#)zt+ciKOnQA-(SSHB4FJ2F>X$9_D6|~{R3Xo`V zBj~u=294QMDme)V@cU{1u&k19&}`i9nxn>2UKcq-f8j4gA|nqC?b1hGpt~sK?E3T? zz8s}i}T+LE8V zT0z*BKuOV6`<&P)`2n67V$bheLE;>h+^Vd7_9^cCTiqU=q`yJsH#bY_u zbnTHkx(EoV@|PAUT3I z;K&vb9kXDVXD75Wnqo_rkyP)}FN8pkG(cfsFE_Ry5ix-#CjhSH+TuQY#Y{*_FxM!@ z$ew+NHcvLBJ7eS#qiHu01ELpi6N1kt2yt8fc@K6pa_jX=QL==~!+Z>cfeXLc(Qs%k z5cxmabztE;!3&f>P=kB|>rJF7+{tgJk`Lh@d zWw(L}^X2*)y1PI?DT+35Yedr`4D-lN{=&n%n_cf`;Xy)g&H%5aDZ{kTrwvNbHntRY zMd~!D>OJ(J5NOgw18WDytw{-5w6U1a>0@hlFQn9D5$pQ{@3#V5aD?E;9$pkW&QS2m zm65fr8j)tqbGht-@aVj&XIsba*I3YIT&dqddiQHHU9DOMuBJ3AfU*yu$1;^uKG6uV zIcyC1WnPU!TnMgmZ%aEFN5Z*+W_xfv*7wos)|GaVCq|`z8N0NM-qM~&Y~A~BXVnJU zaKxPd{h}n2rinKey#KHw!`z83OCFC7>;Ux`TL_at-5<5!i}T)T=g-n!{v5dpal?xG z^9z&fn?R=P?`Iee1tGvUG|I{bnly!=I}#rG`fU@n-1NnD@yEv#3*x96P1-`0*T0Jh71WmW+c zIChWAYF7YB>4$>#E->5j3yigXitqkZ5k`7m$M>OMaX0FsYg`KrwRP5|BzK_mb8qt@ zgIoAmW!94E5U=(UVsmjbUZ_anYt$8Q=$Kr?&qEJsaP5p1VAV<(Ps9?8@&1SXcCMSY zIEaseX6RqFG%DS2yqUCRDW_HD7o6^+3OA!?+!!n6C(bLvyM47_U*;S3mrUCLA;^=s z-or8~`RiXXY?1^S+vWlh1)grwOn{g4#Z`op<+)!6kz=foN&BA2E`1AK_YZG$TI}6< z2n_*CS!~Ca5Yr7jUq!R%#EPG^Dp{%m!h`P29B?XF?gafn#b~%#qgoDjW%x)Zc>y__Wu7R%CK78)>yS_COD8olm7^5_D80IzNF`Weq$M z*V&)XWts9ETCQ=dXO$%&x&z?R2pM%SG?b&G+Mq4(N23LJhkYKFVBc$9QUonSq5b+h z4dLj{Mi53-1geXfx12VY$rc1+w8Ie5bZ2&E{bMES7h{drgV>c`hIO7^J7FlHW8eTRX^ zRGG!~Ozx$sr0v}cd553Bnk4YoJRqhD{d3?8iK%y%PN`K|ltlRdCBuP!;g9xsdn`ET zx}S3Aqs6wM)tem1|8PMDV!&TkyM#CB058Ux36PJ#)Vcdh1*WcCON8BD3%lXE9Z&UG z^K@ofw8EdUGqfh(W;arnd^MiFfuq)~(lKlop*<@Sl&7!OZxOSx@t}bkSB3H@G&m!U zH`WtKj$|`4`@~pjEbkt8C;04@@#J3Xxkw822X>lHCdvIJwub%XueTTsAGY`71JDcF z5bt-jH@jq_#t|+@+$$%tp&oPpAqBTkx>nt(XJfpHdFJ#QA(5r52KvwCJaQ6tA7Thv2ycl zw7`fS3^GhulOmxTy?H%qMob=~&9l7t;|YJ@;W_g-yQfEwpZ@@ayx>Q>tU=n(0wsSZ z8JyHa{?c~87WLU){X?8XgX**X+SO>&AC8ccy}k)=*4pF}lG&?bK=~77X4qV_@qTw_ z;YC)G={3G3wZ~(Cf#0Sc8D+YrE>B+>Fv4r3Q4_;p|65fDvdX^m2ousFRsZ`-YR@&5 z6bxA5S%WwylWJpce6^;4 zn_kA~vD%(j%{HlUFPME{xo^UX$-aN#>tuVXHC)Kcp~_we^n3@qqM3Byq?`CCFN>0p z#F-)e^zxy7m2V1$3;k-U2L!Sm5vna)gkUd|)9R~2y+ucZ z7^XPSk47>x4U^)m2j8Y-W-a7^!;`km5D}Xr@NIh;ofi{jTm!;p)(~~56DoS$-ZO`7 z2-AwNH!$&&pTI9~7RVxjrubejvCPOfzjwE3E$8q13(;K2(RRhzMe0rp*KZ>i8r0Ke zXL6I8sf11R4O7a^>O*zWuEn~Wmp4QKm1_~+4HQPT9W^EXAbIe~$^ zR!U^F-ZFfVhg-GmN|e(akR=xSSUIdb zzp2Syo9P2nFZRq^e7k@>*<)W`j^e4fEMC?Y^%C5ps&qX3^8=3Vz+Eq-CZa{v*Rb57 zcWg^%@VZ@JwvVR&3;(R35w5pO=fMt)<78&zvtwuPMe94ur>-Sxns#7CBLZDM-?VEp z#bxg(qRt5x6U*Z!qfpq;qId^vJjNb~zr& z1A2x8pu9TrjqU=smSer?XvI1UU7#&vkZO?g+H;<%+-H3yF3@1b&;`FCXf1eAXihR_ zD?qwhf|+$JW9k|@w18vjiDrm4U5cMPFIiaa8RfeR+N~+3F)jUtC&sv~s#_ls9>7bP zYFh*$kD)NwASiCdPZQdG84N6tPTI^g@S`u{cyf5o1Zm%RX8-532@z6d_4DT&1b zb_MEC+p;lwNVKK0bg=CRWZ4UVK>QCZQOEO_lMy~x_^+-_!omWNfu^?BCqNnlfdmj6 zYMVI8rQKp59LL#Mqh%F#m2XCiEQER}MLs2txEf#&T|^Yt*`Pp8GRCJzpII?i{7P79 zad7w7mEyN>gJ5qdc1-F-igF7Uxsd$=2>!LH<__HP6&vG?(whEp2>qpbSli*bQxS!3 zL##72uam`lgQZ+xWXx(N7_X9M#dA!9i z;=5iS$wAGp^D)d(&!lc8wFYN3Mv#?JZ-)ZQ_PBdh7odmEDTNfp7KtWz=OPB={o9T6 zpyrENmmbb3S&jOUBTx|OnEQc{W4HEG;qqPUfumaxaPA`CnWn~L3+RHq9^=~u@1OFm zI;CBAkF`9Uy{RsW@j0KsrT@o@1iV6?{d(TpTDDSpWt;b31@#Y7Y09rgmssuaHAO1a=TVg^v6mXnuep5AC;9~^Hf|C@ zSg(Phmp*1#gEzfH%Q!Vuo%gwj$Z4u|{f;eg55SLB>&cH~0auSb@Bw-OA6dzhw8mdJ z93^qic3-kZ?7i)@2KO2=j&6`A#s}W__qBKDV;C^H73Y8xCQLyFcM;upBSKnXZ6Z5x zj8A_-=B0^;2*^A*EEKx4EWfyCln%DPUYm-)y7A*lHbhFhEra&tK*;~Pfy||$+^pp} z{53@;a8fnToH42GK{|W3c%S&7G6~hT`HciR>a}wVsuFf7)w?!qljjb zqy!@d6m5$Vu;-cF?zBDfjhdrwq^o05J1KZihv(52=-`i?5{ElHp|0KK>8*UxXT{g| z&=3IBA|+T$(sao?hjHbp%^(^;F19dzqV`?q50)Yol~aJs$|0E7bXFRo(*Vd(L-sh( zhTg?5&M@$K>qN!oCuwaP*^2UBSH`A~S&E#@)UNpf2Qi-9sq9>IM@j9ug(jWOL2BAh zr7c`4W};j!Uk$FVt%SdFW|qCmRkJD7Ze@YazJT80`URI&&Mc2PAVZ#AwG|Ojxjf0L zor_|PH_L|AODsE@%r)I2>2h5@@^BlYtIRLRWY0#d@di!;JNVj1XHf32@8?&tkL0)0 zBspkuohSKQ;NuLAV;&1t1ZTTE&9}csb;W5vczC*zn51)OnlK(BJ!p+KnbD`x?uhW) z$Go6NKTW;)iEUvYbuyi7RmM_|hbQ&xqPO6qT<)SPS-CD;s7i@5!}V*$&6>#5_r^wh zmUxJgE!t-qWNPsy(z!&MmKlfo$zxWl8-1%bI}948_2gX#-new%AmpbQR6ek4wvs69 z6Zc&FNYWCZ&$sZ2?aEC43+>6r_c&m-p1}9DfyshbmWTW2{H$rMFp2xCto(0n{0y7$ z4xr%inJao1n~7aMl+>z}4}xmakuyjC0&_3PZu1&6SJe0Y#VvlGq1ss>$*Nl^pbP@v zk3S&pM;ZjFI4PSXRI_2=K1b(}$z#M{h>emffig^3aS6(DoG~k2@;e9m0e-l|b!8kl zbaW)>;diyyP-t(wf}Y*eRC)SZOaA@3=hW^EsveKVWnuEQU(i;dZ7Qnp7G!;p>gCat zLhD}7Ty19L27XzCK20HDFxyRxzK~fe>O1uY>ZN8BaP2!cjN=+<4|`S{qKWbP#l(i5 zFRz-SVX6sG&1~?v(B&MUxcb5W$+WuGDz!)A!{x?OH@CK-Lt`@^ zo`f40D4IkI+wq@Pl#7lmt$Y3>n;@yRG5ByL*lMIcY|Od()}*GyjQlu-{tAtvXOa}_ z`(gA}(KO>J;C6we;_A>XHtLy+Z=^Vezh$8dO5O6YQJf1~in8B=XE>LW4lsjZKqMkH zsM-aSNfr6UU`O>gvW!pL+|yqu2Q5jH-2diRZOgWbXY|acWm;Ez_6!KlLg*(D2Fah5be%$LN-Sr!`64q|&=-a}%LOr5qpk3>v&mh{d|sS{EI;>Mcc1 zpb(G)gGh}~)^&&&4jipC>FOYVaYuCA{XukAdaU7D>7Uq2nyK|rM4PmAHc>J*7p{y@ zkFe2m$={25cHAi^Tc(M^*ja-U_v$M=IhwGKz zM*p$wOoHtEdISn*)0KQ2Rh9bd!_EB7rs!@gK~p{fA98bL&kNw#=o-r^*N?;D+mK}t zJ-zoQE#V>>VlMpTPopRDAFC&SQfd7Rhg`m6C|Jq=V|}Fd%hR`0=cvmY9FM+iuW|lp zub*)Q@q0w0P%D;5>;7Q0;km$mkg$f>OBVKp$sTm{4T1(7rF>%xoye9^M#^y z(hGs(g(Ft-|K8Yl%iU$DI%iUosBGg#SNc+ICisK2v$rTbfh?ahYb08S!_V_FW zV7&0S>hN_Pl5^XA2)VrXVk96J^>3e0wbSa(W-2wKlDG`Y2Pn~z<`?~aDJVJbhWxrO z$MSI9)_fAC9eG!dvxUEvxvN599T%EQI{?1vH*4)^zR zWFQ8`-N~;kej*CAu65m(tCCbSLslKRk&uxPlaG`)n%S_c1ow3qHSp z;vg?!T8w@fG8MfRRN=HDZ6ph~k&@PD`w|bZqxcS2xV}r1JMg-PdD>BF3a`U)Z~N?J zBaAQM4-1|2L!wE z$+uQ7B^9^Rwk*oLqbC{krMj#0x6T`sVk+?EPGFW0dYNVgfPIc)S?Wh?Sx-n60t9&J z)dKC%?t{SR6j-`dStQ2)Ff-fOk=w?tTgz|X=mo>hve?iP(&(9O7<8W&)9X^!Optfa zc9Eu^a$^`3>?52bcQ4Wmzg-20-j*4<%(6P)MElE`Koh$+QqeQ!@lH|kfb(HLLtw*f zJMYG{Rpf(=vpj#%PugWpU1kCEAZZBrMHgM|Img-fj}4rXN_nu{*h&BBElo$e5gB9U z-7c(tiZQ{1stzj-#u7@2qMi+siN~ru-6(ge(^H$W+G&npNB8+D51xl?)^gLI4U*J1`Vi#OB^vAzJJ~3GIoRqI!TObp)Ee0r> za^DND%-6@e4v`ypl(bEqdVFG5 zAxOSgba*W1ylYMT^QeC^fm@kQ%;vXWmW)FNcwALq6?bRRumpE;X{}K|_ucoSx`qo9 z7NV~jIyMl=DX|lyMcBrqE552?U5B-VA)%wBBr5v+IRX81v>!~3c!qAt`*8^NSe$i9 z%w`UVmb9J)yW`o=)i%6lG;6*2p^zfL37LB+Uz+j{5hJmkn?=|<+1swo*NN9W@MwA z9A~ubz?vw-R6H_1D(c5Mf$|hK0WD*7@KD8EUdY!a`VMH_+~(n4{K>w+pCC_-o-ztQ zSkBPN_TpS|S%L?THCY_>C$?K|gwNFDsB!lEA4j(+7OFBIj5Q8#!(0GoyLTuP1&uAB ze#ZOeGE5>f5?s!+%$}unK@oFz=JSLAWkIkaN4;H>z9#?(72i#qP(7Phmn}#1D-ll6 zT!l{4b43G`{$&C07;g@FKLxh^;An;@`pcQaXuTOxYDL`RD2uEoM=Uehat@y4 zZ&vIyWM4*Mxv(ClHP)*Vl8*O^qH!J|eM*s`uZ!1C=J~kx2!GPhJxz+V6)b(S^fh^+ z?*x-iveVXG=5=+HbN;~|S4{D)A=CTTaosZ_w|~q48uLAG8yLGMOdT-sA)*sn}euW?c9q8#x!#HYl1 zyg8=juntiP!?T@yRIS3jL8zZcq;nAt9}XMEy`HvZH@FT3j{|F@v{q@G94)Tx0wzyIM*f2+I;Tk+ky)vgaPm1Iu)M-#A&N#jR#TlT?H;U|W@XNl z`q%vCF3<_Z0S;>IP7Es_z@rYcnmIJ@uS~H8!E9e35CCgjE>FzA~5SXF0D4s!mQ}DXh=?3Htq+ z6ugu19p29-D^ooJi=tGPzEwLKfH5B(#%K5h)LDCDd=10z19xgkP#r8Xg zihsUjP&jeW$`8B(YNT9B)m6w&M8bOU!0Fl(o~X(prSewMHgtCQ=vP6#Jc5bx%X86` zO-UQpyJFMVeZ@}O-^V_c&rW{0z-J|c-9HN-#rywJ^_Ed_HPNRIrqNz4;VezV^^zs9vNw= z<-#7fuXbysUXzT- zboYcH6LYtNw%XDv+S5PoCi zfCL`p;a4dk?c1UBdJsdhbEgz$d5F0T#bon;FuESp@ak{w!>QqAG!pH#bIX647jg7^ z$FaY+&*QH@thc5VV-{xsOh)^M5~p|HIv4pQQbJPbK}8x^Sm(3W+f}tR2p>rypvCqI zyV;wy0U0Ay2IfFvkhE$lPn92LCbf{v?wDKRTnUU#iyqpy(nG-8DRJ8LkZtFB`FjSX zYl!tvgXhh0%PE9y=b6@hmd#-6*GjIg9ifx|a0VfYKg&0*w$RGdetkQND~t0W=y_cO z=>e$9rF|nX;;}o{>4`rjpz9;#l^d-<`3O;`)AD^y8f^&P5Y>!6NE9&s7i1zXh`~5| z-wmv9c?Yy_&PdJnu3r|8{@OgwX=p|j#y0#~vCaGYC(5N}&lH}keLNsXnyu|m`DA|4`mfWT9ZcH`|g?mT*0 ziKBaM6)vXJIYVmhntA`IUh;s8Hr($5RK5REN*~$&RUfC0kUUFnU2D*QP>NDhf0WSc zn3<4!Ugfm4uyyMVR|tSpEpr78ZPmW+y!~&3ZL5O4HT&l2kLTTF(WUoWz;nXyGM&!@ z%cy|*0qt+8L9(Hg@qgVI;m6Dc1ZK=o2@|J*MMSdvcVfvNlHlhi1KT~g@_pY^y6EPj zv7q%CE%wUk{hYF?Rx7#v4mQZ0nonOA+zVHLrPE>QJ-u%3KTDUvU+5tz*c0;V<%4na zZ-EvWDDr8-q6cEWutGDct9AHhiba!l`G5U>Amj)m?)GKj1;orFnc&}B17=^+{YZ+ zYfD9reA$#bo6B4@ixWir03l4aVS0e;Z=S_)AMg~nzrK-!Z@4aWz*HiAw*7p_B{scmU?1H{LnEJD zR;bwEIqluK%5QF)@iZRjNTw)=`jsV_q%;R^RB%zJjm;2Tn|B1@FfKwa$J= z+U4aiQl%ayzp?D!!i(_)#D6!7-4&^-Sur2n{P~VCxmXUQ_NYOrDS+UtmS$j?f zP1Jq^c374J-D(ie;Z|iGC7ND3teFgD#*rch07;5HkA_Q-=Lqx$% zg0la)g=0cM*gt#~iMCNy9`*pczf3}tEmU^GPw&eYYE5|nS{d}~Xs#RGd&LyL2e{>5 zIBch4xPV8m%}AW%(!j7Vl6oz-4HBIvKJ#4raj$bMuUqaGlbQ;K`G-OH*EN(i=W6}= z{cOKSODceG{p7hk;DqCLkFDUhT@RlL4qAY2hc)D?>9d@sm23%;dNr=aAufC_3S6;) zm_N=FL^{_?CAZcY=r1R;%x6un;MLUeTzn1Mxv&Z54t?7={EZF%9$#<6X2KsgK4|sx zCC?r#n((^5x%Zizr>o;!fUSMilH@c`eZ0xt_Z6x*+Z)9xC)_pTgMfJHq@Pt-Bt4^# z-EBW<`gb9K%Ky({)bM}(tBh>a5q4NV{&VUcdb>EHqM-OcBljUl>uWd5soNNGIhE*K znFOyn`ivH>vseAMWa(g#`20%S;Fej(2Q2*Us##ji{r+*e-1Y_J*D6xg=_sL7I@aSj zJo{NbTFvc8!s=Dg->8Ybriy-HL7Ue_zWUS~IDJd&)A~BQ9c4(QX0Y}O32sler@Wgr z1Wh#VwgGL9?*6W2Cu=m_JT^{`i)Evq_b0`iH!r9|)J4r6AVu&0LN*pxiO_kqXL;j? z4pV4-ah>@}_Ca2q$K*5jZHtu4=5jeVJy_ma*KAm?d@LT2TB&&%X5Ffs)7p3$&tJwE zE#Vhd;q%xszYPR0Uy}!&l?;+HeHwiX9vcxz^Y&g0ICl{Jn+w*;VxN@KWF*WmFmOs4 z_q*&gg~&gfdlYn4Kgn6d|v^Pfepb! z7S>zQT=w5E{~I;n_wOz6NC@XbeU^QVhcStp7}pvYIKO`idb&6#7%*77&-K%Jp10i| zQSrDh9J9TMmLO%s5;R+?B{g5NSLv+X6CSUsw**mwm-z;XG%VY{l%Z?yKYBDgFOXT! z{t=VMXK+6t*10%eX#~iQ>0GT{Yeu^ZmzZb(=htr)Y0o+L&u(CgjrMI+Kyc8pgTfk)^-^t1oh`&PsFlJeuS#RT1EAin)>Ed{l1A^M z6*K8|%*s93dQ#trdM9kMvF=hbj_=Y*$i5O*QC3%D0MT~8@^9fSe9IcGek-^JIp;H0 z{ClhHw$onrrekHk{k5j&`Du_N1oHwv)Oa5^2t%IqcOwyZ-ndUnh|tWDypMv-jTw^? zQqn^pv@@XQE^G<%Gv}Kx*Z8W2`Wy0*PlJWP*xci?{{`>$Y1ePDI?wMk)OOKQX653S zPS5AX`jb~vP_EB%i}uFTu(|Oc>m53^tBbvU+~rC8=<1?Wt>+ki%^=jQl`=wmqwE0iI5i{i}saE^@j^ zhp>H%2>V&6we9+1NyRXe*U}>{>eyra6%4CKXS>nP5ENk8&TH99ud!Y{%N_@-6W8Y@ zLyos4uY6&DK;(Dj zZ}KAuVvDfj;Xe`oU)RY9wQlQDpJb!+V|c`2X1%R1RPN)-9CA^N*Qu2)bBlob!UjVQ z=O`7z>lNg}?rp_(w({ZBd6RNG^(GG|gMK0YmqjGTRO}$H@io_|2$?^j*sE{l&DZ^K z!}QW=qh@2YVsZ}-;24)v`3(p?(%<)TnZbJdEVp1Xms8Vs2YF9Z8FO!-+1mCZmd$)P z8}6`a>018ES(}di1P}CrM<6L^-Sh7+JqPu`MB%!RX)R~P8d~iQ3-a27KrOniPO56uO20g3J#@J{&cNJxz(R+5+xOld&nI3NukyzyS2r#8^-KGE$GdEl z^>}C@m!_corPVb3dfvF$$bNBqUsXSygG1x(UrpZAKZQFtMsJn3J#sh~82AxtzAY6L zyE@*KfiH$J;M;%`CY|PGD}LY3{<Gl3UW?e({5Q9BGh``M@%eK}WKXoC5jptu?G>Zp; zqf4KE{=fi(N*44Rj?!|0Va^MR(P%r$G61`Er#wwPEowin(U`{jB&k1ui(k{~E81Bg z=KAHBti>KQp&I+D_L<|#g=GTUw)V>T(z@sCE1s-pAV!rG`1_qs5DFJUmWI19xW)Vo za<)TKQ$qbfNWQUpvvRxc$kpR`FKszcL*GHH%4PdV-9E>~cKMs%z;H_cePr<{+elY6 z&h0l_FUa;%Mv@6)u^T&b~(y1{ex(~w@P*GEhJVu^@8KZt0ufsiw@L1TSvI&P7G zA9(zAM^khuhG+Z}eHN#;MLKbt#_CPOBu~@n)WG>4fC+c)tX}C@o2bQ6nHZ&TJKuU{ zijQ3)V$YF7CU}MiY&oXVxGx&UBV#h|H_~Fh#7x?L@QWJlUDhi1%=OaP?g8UcCf45T z^`rHz&(htOT17-_67S%KV>j>B0B8><&8ug(M)?eLs1PenHm6_D8xcM^nx(7+u4~I& zfZKs)p4Ihdmuxk=46@hmbN;?xa}WIsJIlW}2TSs5f$(}@jT}e&zH@fRy3I8=+hdQC zwyNbdzA*yZW%72r(Y^!HJYs9%=Q~TC+g>+Q;NfeX8?m7hu^u@5lU^oS{znYt`Fl&u zXE|;)aF`G(yLeF?Wy9ZX1>8xBIN-wJJqo#|W z#_1}S0K9iDcy@`M#eJJc^5p=nvUN{)^&QICm`z1@0=_v<=U?4&d8Hx6ve}OV<}p8O z%rc?LMG!usz=Y#56M#kP$Y2oOf5{iY&}?=7%%Ia49Vbe%1B=AzB9DL$73}}jKim-! zmKyRAe{?dK$oEj0wZDu;LdXlNsGRznUC@Zae#FK;aXe;;q2FLr7AjDhanRPD z3lutgfArn$T@23CKJyHnhS@3+Z!}hwtDFIRCojkYV?-(pZY(hvot78gx4>rL@2}GY zb=npavW(F6mMTW=A6M*;o4(=Nm5=9)R27%nD5ChU<}j%WT}BQzGs$<^-i+uy`xD6| zFT5yW`orr%VWRkEAN=77lF6nScf-WY(6H;9D7y>=+NWAEbP zOL2|yqf{=E5oO7@G;r+l-_Pp)A?TT}2yBLK`|9?jCS^y5jP$52h6Zel+CRFhjK=<;)7-(?4m+Mi*Ys+T~l8DO%Finux$mrzGA3T>QXK?q4 ze6_`d%kF!=VhU};B^wl04HT?G;f!3T!1iJ`bI&f53wUT%bq!J}E=AhNO$ZwCs|lNtu{ z=h$}`JH^jP`8QZl!H`QAMIIiK1qKZIP^Z#^-$8;G9cq9KeWJ*Z^mO^>Tv7g>oD$Nl zGP12b7q!QyA=>B?9s5^q?^x+LNmk2pZI=wU`;RrwcmBznI_SMckyw6D@*jg1W|uaf z=ADLJ859X%EE4r=3&bgofSu$f+mab4T!skE>_Dw(v0U#xHkdfYg!)X!usRZ<;Cg;? z!yVwHBrfujkTB+FZhIEsdiU7fk{qs>+>YJ@>U*MZdN7J5a72lE#YPhrl7M zVDrPD53=gu^i$;uSoW`8T0@u?id#Jgv z0i77EE|HSk#M15a(tTT;E45Z!kUU?<;}BUl2#+%^ch&Xy32^#$6cS4^?BaHwL{(V} zf*1Bi+X9*Srx-B)Zm^?dR>s^JX}z!bakQjCe;rICz6f^^IOza}Lm_+iv5BjPVl1ExjCpe2o^+LWP6)GqUr;^mZfQFRo>j0qzfD`Uu#X?yyAc zzs=1#DWO$4FH90&9;0!bogco`aV+Rf<#FpD8d*9(a^ELq1awyYqQ)Q^vA4V^(oH7P z=ia?3-Hr(b3CVaYsISon!Kf)1Z@)pZD<{k~#*VZUC@{TlrVgWBHUyr>v*RHeA5FSP zVxrg9%{SuRC3M$3w(gI(zQk|}c=Uq9myZ>EK$$c5 zDcM|JXIRjSuy1;k8!1O%f2!ShxMNB}*yJiRdFHTONf_Md%Nl%~$uW#ZGknXK2_p4p zG@5OyZ7X_kKL-IkRrUi(qTg!-Zoxw91>QdXse!10^)&eI%dEB;&&8=o#VVik$C4|~ z)PAu}Za*4fTq~HgjN}FuD|GCKTn1e@H*>ip{kxmE@-NtiIrPLUSKz9V^x?7e0$BTB zfCJ}Jj!%NuEdt;kYNKXvuNd$HEkYJ&#+|urwBz^iK$Pj4L9bKyBiYa)lVQXJ-jTa4-QMAJ_^;)kri!`!I2t6sNiYP=g0D}j z|JapFIS!^2z{s+y4*d(T7NNeO)oH{TsOsMsn?^ZDcRl3Z!$$7TM}S&hdp%vStgLF6#fOpriITWv4?FOtYGc-+p3oX;yFcS19Yev=mz!2C;p zuz~Lc-H>6_kCP!q`K^4v!J z5UeQNCSu~0s38BPcQm_>Imnf>Cks~q?Dl$y5w6=2pEsx3j$vappV%+;`UFjmC4S*F z8Npt^%~Kdw>k)#K=nw}!VhA43rC2#go;oPVQ6VfG#R~|&%z+g@GRITxQJp<1QAjR}|9r9XnpqsGK*4+`Q()(nlz-B~5B))57cSEJheZWy<>>B$C zpz5DS@7bw)aWKDfw=CN1H09Rx^c4Mmo}d}EOp%+j$yu2kJ-wxj zh5}wq3Vfv=GA9%*kjfin>Im_Z$?Po&&D|C%9H1*HO;yKyV)nVidb-=vvD$N|Fd3q3 zv($+UB*SQMGwtV%8WyTkwW6{BUo*#y@=Wb3c^WP_Kc`J}vJx zIq~MpjBwM7irrdZR^Hv#oO^mu3j-XVN;i5KO-syz8u31-oq7l0caH(&PVWXcVkl(s z3Gwqq)I08Kwem1pmpkGV<=e~DN7&&nRk)rPn!mK|%HM^RaB2JW!_NkWwj?CrF$zkZ2BVwbk`t zOX7#lU=$rL`3Hxm9)z{4pYu{XkSr!L{l!20@@E4n2jRb74+-YITwo}b4>F9||AbkD zzj7%w`!Jc*7cs!Iz2Ydzivybe@i3R1J? zW?fg-PA;$91%-r#ol4-ZG+c#Wu3~9?M6!1+{%UVnZKrI8Ck0>pwb3H1y47SQ0f1m! zyKI(-eU1$1K$41ImJ<>doKvhL;H#T&{|F^+Dk4Mb^^$OD^}jg#{AT^ zuGa#&!dTUMji!0|Pl`5iv1cIL*T9*YukIQ2dBoCjj+}8WW~=CI=BddRlQGR2Sl3ix0`V41MGA=&C7Xy!~pq1F59U{w7Af(`jp~QKlRGD zkjKc3o?rtN#IT@>@!nGm$XxFKok4^oqU*Q1IJ|KJKa9`fI*J`0s}Pj*S3ii&RQe^; zG9*|;N&GFy0Q?->|3%PyJ%mFFP2@~G1ylf1cQ4%4Q9e=qPPv@Oky2T9Nuqm?_jP#3 zOb2y!Ped^1Se6QTLM*Igy*O|K{*JqH>!un0X{LJiSTHs+&{|MvYwxgFqea6$cfhY{ zASO@(_XR5JF(!Xt23wYnUq8|O%lxyW36%iP4P((-2dpV$Wp|mGoP+lc<2m(be$P|{ zf{V{Z8y&-w0P`{El7)?_3Zq%x#GE@E_(PkZqPh@!mrpA5x`|Yew}0_IIHQ`G?B~Eb zkzdx2SZhf}8so+VR&`gBKYQ2*^5A%ph1OJoF=zYmRwi%xC~4rJ+8THIKRxU2MRj{D zQ?kYuRA=@z%QOkaL-0>F8lGFq@Zso1O@z~#R5wPG-`@asW3$+C1Rxc$FPrD5mNV=m zKx{7@V@=6YV`6~|k_gQKfH!tnJiA6>!=aYJ{J^|PcJkL$+n@nOAB-d@ja9D&_}iVC z`BuqENK+Tgiu}dD03QH{qLg1CZAL>Sa<4I3G$yc)D{tR{!VNFfd8g;)3zq`+rdu(q zQ~Z#YKFdcEc-mi2Hjpxjx>`;6>}AACo3WP8-R`rKMsBob#Y>a=V84Q#no@4awt=?i zH2VztzBzx{5}4o7oqT6Xyni%q+MFj8awrB*W_821^dTlWx%N4ebu49pS06ez4=wN{ z?=B7QTL&nW&GKH$itv{R}1Vwf!frAuG+=6l6DljzN z)fFemAEo_tN!SY~YPCt-QPrbZx&=Kg{MOXnyft;l%*yM%SROrn34J-CY<#u;M=me@c5GL}j;&kDN|jA*Yo3|p9fu>T`^6PLSflFKuw zv4?hySH94qrc>i^XSg1I8Q&9r-0ag)+03VOhy&m9^XZO-vj z?1|3}T)>&fX!>wXs(~lHDZ;6zGH%-1=jZW#e+kb#uLv7IJipMB$-; z${}TeX~cJh4H{LYYVY)#qj^@D8b3DZkitzYjcNaK%B4SEV}id4EZ2av^J0w|ZP8`4 zagU8tvV_5QF5y&q2N}XmN>Imz1Iw^z#d znnY03`;!OAlTtD9F&(qaD3v?}A*rhlt0;Tu9kHWN5pBLC^rE*I{TUPg7JWU1Ub-9r zi`{k&H8}|_sYSpGBUHnK6uoNgU;s5157LbT4U}r^8jKC4k3!CPQIK9 zq2)?7ZvL=v-rjub?dr)_6cQ%3nh-QIg#fN>w26_r>}S;-n3J#E?$Eqd3(tUsno1`?Rz_Tp1H{WP(xwo*SRpf>ok*fq#B}}uSz5*3QoYa*ZlhOd1DaL zo>F9e`3u=1@88*|F$AS|hvEvrO@R5;+=-~~nLPpOsZIn#VizMJ50 zr6u+KjYw~p66XFcG+ZF)QSPLrYo_DI)WcC~6OGSu>u%FhohI4ILG{_eqGxw{g)GR2 z7tTy7?#~v7p8#utOeM`HtVl6 zl!FD`CTu$a&=aR=Ts_|;_0HpFK%z6|3w$U_^r|BTF;`pVz@Xd%F zvWGn3ANYtOpGRY?5YmJ^vzkP&s<@(VqQfru)DoKj{?AyLhlk{6(+yb_)*t0%0|hKZ z3_3I(5f*sF_ru23&%%^lb;o+Az;d(Pw`zYaz8ZMRo5h)LCd%=ta$LW_uL2u)p?*+l1%W6iT0>@@4pO%a5r(Uvf z`Q%AYj$_fnw6R4Cr3w)CU9b7b2eXgYi4#A>*!t_1;#)`f)Ekb!pxiP{qOGzeC2rER znXyrv(}hh*YaFwq3wYipKJ@TFvrnP-6@Qbdxw=;Fmof(@6A&OZNuZ^O8^K~P=*tfc z1z**{W9*0rO3XoepDq&!q{@xYXC?U$A-Mb^a?~EqUgF;L&G^*}*oI2`60MjO?V-h9 zQ%i@em7zd>=9sFjb?4Up-9kn_tblho$=AaTE6yp>pLKb>+zWIMvX$eFO}edm znLw<{r2iR256SYM90|;e6zn&wWDh@sxWo36%2Tpe0kaO`{w?ZH z&F7Q^Ov|nB{v@$noYt&bckSp6t|0{7rR!vO?8UOIuTS_jpCrCW;{V0>vcK=OryDkk zDTwYCDJ-2X!AB#hnXIyPZWOCNIhH+N2Lz6g@m!CF#5-IeEOt&4d6!JiEWyR72Enn_ zrVh^*4jw^20qnO)jz~oO>~>?%9Q;7qiUS1_9(R3yFZ;?5M#Mkislf3pDsIENg^W$McQ{# zN@=rlt<#emhXy=@8N_*2_*rhW#nnR7u?D*;ZTVS@HxwY}1xdM=R!PFvL;1W=12aNe z9bLccT7M!Y^>WDL&_;La^MY$X(bHjfK}17K7&pM+k1jr2zA|p`c1-O5U{>XF($&eY zZU9I&AIyD3J!i}w|BENF-r;Dhl!K9gMsBr$D*1TyA=z}n$!u5fA$rD?g^X}tjN<0j zwwYDrTW(|xTBvi>Mw%G3S?N|N90>_DTzO^8U4KViD9l(Y>))2{cPsWB9N~)q3?o;Y zZ6tX4(`CTrH(~e0^mm-|_DV@t;*`HHLf&6_xupD2xo=?FkGxafov@968r70Ijb!^! zuK34C!a;oU$XtB$=h&jgYB|4?*~Jw8Kz;w+yVr4kvQ7uFUT}EKNk$kCd+ij@ss4+w z!^!jKMK&?$y@V{jfLf+spfdHJO9uLroWfq8Vs@{Vxf^KTU=a~gNVz%@3%!EuPDr=+ z9l-)~2XdQe2t?YKT%(55x#!LDtRd-{{{5mai_;;589bYG)7gfH!rllw;?xwW&Qj+^ zysu|B2%6B12*_Be{<9I8dj*;Rx_1w$&zU|4C(Bx}-e_p)hr-h0x|kO0VjiS&O%@MC zF%OXDf9cdMq7nOTt==;#rhz}e9JT(`kZk=|ZLn%dXOo+L(*pziXOk7YRh{hv%TibG znVTm@cMJZD4snN>$MrMCdQv{+_DdLpaPEe1FE!a&YV9`n3Q2B{!V%;ZPK$RqvYy=Ryczh)`eupEoxO#i zgWbqrRRL*j9rerPhXI+ zSIqVpoe78zPosP!Hp5Wa&`|X2NNDPSCQD;HUHUSQ29?5%O-r)R5pk93`L8g7UNLaHYBY|udV?TTIi&?5Ub?s@Ax_vXBVMf>jJF=6Kw!lTk0YsfwdwFR! z2l5au#2>tWrG%`;6Mj%^^?B=091>2$ysaudeK^*2w%^zXCqO9bLTkwnLbN*s!Su@q zBRjCJsJsTh>bZz9F8Gxb%87pth^~n?N5?>?rYsnSFTW&PDYwuNc{lmo8`f1@#>~_4 z6ggoH2k!OxN=aEi!hEo6ah+Kcw~9(NM9R)aVmxAABD_C0t{INxJ(1Q>yN%=smG!nWSw2pLI4FC>kkfq#yFNVWbrJ^=?Ufi z3BBOeH!$vVrt=n5a5N!JiD+MQa3CfGkyiZIsrhdzFZ>5jQ@@da(rpEq$Uo-fBytk4 z#E!1MiYHooMnoa0Sy=NvsQnR3%TaS(QN^vKQe>E z7P^HdCNw;-35lBa`h3&aM%>DGRGn1e7=3~qyk zGX5`@s^SXu-I;snqsoLJa!R@{6DWerL^}0mCJoem=j-Hq+Z=*{HSc{3&j3!Qna>iv2%i|t@-0v?cr2v{uv^B@I7G0qW;F z(nXf-&k_`C2p^ndjBWG>p26{5RI`;!2P*v6fhNHkzQoL)aaY#FuxpdZy`}Nh4S@r! zO)t}hJipCp^~Ze>T_bnnzJC9E3jCpI2#``kiW%Lz)Q(o%#e z68uo2EfYL>kJ4fef11Kw0GX7n3-Uxo1T#_wXXfhV`q=d@gLtrw^9)f-pc2Wt#;N}n92!VXdAoxd;= zrIG@MCxxxH-~Z(YkJkQ76^W>W3@=68JOk<1IRa|bdjm94drbo$G?K)dY*%5*nD3RD zzCA$0nH@*LhF!(F9ZZDQZ=TdLj)gH8t!#D3$h0vZ zi`YT`W0HGHi1p=`c=**?kpGIUW5ANV`FgpsAWzJ5kvJD9=p@AR{ghK6-Pza>STz&W zaUQUvI5DlHCjJV7eQ)aRcp9JE@Bl^c^5v}qhorqOgijHU95fXzUv8F){KFV;*9y5^ zkw9dFlO|emi5aIg#F`$Et;{L>&{DU^T$|49e>+rzLY4iYcQ{!)K#=beXy97S1>M<# zEO!*Rj1EPO^M-Yv&d>BfpzkOMN&U^$+QR5xPTduT+U-w&P2Vpb)E}Mf9iO6F?|;8v zsTblAOz7m@cx=#2klpnWeza>6c_Z*@pCL3WmoiW)&n+DU&rG~r#pmqT8&$%cgBWr% zsJ1IGQo+xk9OiYWV#=H)-VW6usOH$C3>lW=em#%0_dAa5)ak>Uul%UBQ<4d;)S}+& z@i+zI*HMe+U=n?B`xTv*yKQuynRtNcmlHH4RrrndLUZ*@SSiUPTJVN=RcGkY*VW<6 z)8CiPt8*{7XS_(5=M-1chM0 zvmb&A-$!-lh`+J>i7_Hq4I&66eE!Tc5YC&Y^Fe)BpQSPuodpxJx-l@(Wf0b1Bo~9s zNMI6O8UDYDMfw)-i7I}MUTL`rDE2YJqqOwFK8*3t@MJS=sL^OJ3m=ST|b+Sli8s?+^VZ+ow7OJdtnnP<9$T zeKwJUgeuCWe_G_M<8dJ~>g1A!{K;QLkTmhK;RA&QgVZ+3Z@V2DD`M(3VCn9R%n0nN2Pk)PCH3N^-BX z_F}q=zy!Lup24&47syMzkVBHe%XcZk|K*#RphhOKc3JhC7ynwk1^y2V1U@u;i*8{-0u;@%CH z;^r`_j^yhkGb5vDMPCwbp_%I1v#JR1SGL!`%4`~yyzKEF>a%%2?ri|H2bs-Iq5 zou?EN@y?eD{D5k%UECQUIl{Oj`>g@FAZm%r6I&oGCV00?=dtxKbbSO`61~HX#2#4K2^BY&0}^2n#Bc?f8GjgWXaEE7|{&2!zdt zgNzZla3dUWZ>g6CMlttAIcnc~Sl(9Xz5Q)YEGi`JD@s6wQZ53A(U6EoB7wv)GKn$4 zzwi&B2zi&l_05#R9Frv(gh07buguOMY@T^J+)hJn*?ce``knI5}Bz`x}Lka8DrD<{krFc|=OHmR=wsnMj5@F{%=IR0SDei`yF9!Ch zGgnqQQxU@m7M@YY5+4m#O?XPl|3j}u$SEO_Ne(UF3yDmT2njOCNaJAtBHJOq;UTkk z*NWNcppA`(4ftO#05Wnz7%1rmVdV-|D4sHD$cocI{z3Ebl#&=^Q6YjeS}3X#eU96+ z#fMJ_iym^eY?A)3d4At4wEtq9_Z4;jvKK4rYx$*dA0SL=c-e6Rcph7K*$PUdE4?We z5M8=K`}IO$9Q69K$8UI>ZLFa_m+^Ao3iUznfteZPTo>@X6BTzy?`gbYzP^rs*Ry45 zhNJng5GsAfC*pyN+cIAv5w|Iwg?8`J&(z*k_bQ_GiylM3mW}H5B}p4&;N~`m3u|O~ zv22gfyGNkISRpSk48qw}1oM0{7$!d5aL3Bl_tIm`ZDF(X3`#QZ8vC*mF1nHaKh)HA zzpso&klr)gW0`VC#9Nz5DIV>gKsij`_m!s<|NpLMKGlHZVW_#Pm1u|n3PDvcrGJ6X zh_;p`zTG>xmSW4;tTUcnQ*4fzpFpy9!Ld=|! z<}$KFTLZjv;33U^H~y4UuyUgB3H~$!dlb!q2B9Dn{wQ}ccNOZOwf`Ltj|k|hIx}fe zmT%9FBD|l_>jO0Sn0olqo{wd~MwlyH+QmHl;d{8EMj+u0Z>sYvqgP+y9Z@{04_ z7*E`1ict;O|4mA8|5$*eU&)Fv7Fxw9?~9dgWHz2*Oh;1aZPBMZ5d(DJijhY6Zz#yO zvda$11_$iW$!$0Mqk7uDRqVWJ*q_vWUM z+vU1|@z*S3T%bD_e-FXq!(^khlt@F0hY?c*l1tb;trXUz?!7`BPjmcMlZ5DE+!tJuu?y>sI%g6>?Kv5W4or=25sb6@|9mcORLcy8@izY#Z|V(CzG8S){^dPp%KB`&D3_-_T?^iLRHM9`Cr zqzCY}BDk)l5q5+9XUH0EtHcbIj#`e@{%ht)HV=+ky-@dOQ6OrTez<_cUU+h=Jxnr> zL!&xVj%i$f|3tjOts~GN@*)gDBKjxOH#%X2D?3%@U*@IAkLn_?zWnK7TfyrB-{_0m zL)(-jm9Al|yzidhP4-o(pF<)zHPJLTK~x_YqmykO!}(7uM&vKbxtn?P37v3ib4@@hRK0oIfw{zLbXuU6aL~_}%nPtR zI-jjT-meXflkTcpkPF>G)wP3?_LI4}iO5iP1{>rc)+{eXvAHtxYw|Bc>OJ%=_1xGD zW_G+k_tjtmWFR3IwUH{4M#ahXYA-#K~Z;a07m~w~>23 zOE<``36sLv5%WQ%XO!;Y7GptD(Tv@c?wj=WP2*~uXPNRZPg#)X)6esG@K|-L8sZ!H zks=W)tiw^IlsMmorN*qz4M>}kYy~a6!i$ne2y`aaVH0KiJRhz|RvDDmELmtpkxD7M5AqCUjx2y~ah+&@LeI~^&zoHQu8mJn39HcxIC2&T%4=Pa_@B!5fIPfwc z!c{hRfi5)d5`%w^W>?ob<`S4#f zzXv7E$-^z>yG>S>x|-yhuiFsOFG4O4>RZpupaQ71kHJTbV|uZ5IPDL^W$rm+rJJ-L zR6pxB@3UYfM$qFR#q8i8n7j;=vL+=(FsMVqlqcEpcx$GB-ziOfqz}dYbBkLY3v~Y# zDujUTFvv>v+fPQWM61|ugc3q~URr7xJa8^PE~Lt!C;m-O&@d7(8l}NGwx9%NZS%>5 ze=dLyxNx!F?Cu~2^f_&R_32L#}v@F(fS=On;_xoc;Sb3m5?0Efpu+KRK;< z$Hp1qxDi6%)uB`fg%{CE^$$M|fjrrn`oCE+5@TwQQ$F!H#7T5a&;dI3#a99K7DC9l zw>Priv)G@sv6j}PV62SXuUV(7dWxZxI@<_%NRVZ>pfiG}Wz*9*gZiNfMUsx?Gr#fX z3QJD-$CW&foB+o5Z`5AXOrB*5q*xptJbc$d&t)w4lm@vZfENl~gvf&<;6X>}0+zn3 z>Q_u@sli7H1yL-TbvFRR^afJmC7YTc;&OIATPs6bEG?HhX6qLC2c_BQrus1eoCydv(qaf zN3)N<_9tdT2x!n7rRT~UbqTs%j`pZP#+%VpxZC`?H~IiH$1+JNUNT->cap@Nw0@AUbAb36hm@HVav(hFjcNc?=t?-i8H|dcs?N|`-8@ESv1U>+?Wa2Ud>5k`jHXl zoRs%N0zD2$>VZ)Q+V$pG%uJUkcr0_k@1zT=?N_x}!%T zo2ePC7yq~Qe~5^rE%0FQ^S(=s`}QfVW6uVU=!sD`ifk}_Q_hOF_hQ}`PAbs=0!Mc| z&|@lV=0O_Ge67kz8jNit4}7g97PC=o_wp*_di!ni+6QYWN|27+tK0yd2E7Sw&cn?8Sar&GOq#(%G}9W<^N&pEu-?g)CWSXvOnFtaidyVwdu z4m*4TZr*f30nT4eMs2O>d{b88aw8I!jg7v|S*+zsV8=KM@)g@Uw{c4Hp3uLu!b~qa zsrwg+&PcbenIAw<=5ftY*xIkSDlz_B+)n{bo+e&oH8qS`%tnzK!^@84`^ph8!ga4!Q!+c|77_?pkLHGY?X*Qu3%H&X0ohp1sA z0`K=7=qZ=u?P-5X`Ka=v{&Rc>R~5kIR&0uqp6bjCt2*;QU8)xXxFrj$pFb1qV$un5 zOGq%g==*&9(3*;5_+|FDyGhoPI*wa5Ch!b^5#QD-7Yee*Bc(!Dzo%t`>B~xSuAmDP=MtN z=xI)Wo33-3c}F9GLh>q~ta5~1gs(jMnsvPX!K8hEjbZ#e-wCLmVDZg=3#1$_a-r?} zh_yCmtdXZbZ6W#wHc&UEJpQ$?x~oA=;i7wF1{1;9Ps6;qsb_@}PH=&Tg^a9SI}<4Q;wJB3LO@EFw(u?E*~l z{{LZgRm&0nn4aqf^Z&B!;cuPF#e`)MmgN zT0KkvaR+*0ol=mA^!*hwOeSkGa{0j&UcD)1FW~~@oRgk^+KBp&xw|?~{SHz6IAOE@ zd=9DGVFVud*LXFeo&n+fIqPtK_TiM##*|jz{dU((2a9H`3vAT$4z5a#+%|>2yUuJ; zbbd!i8#KTAQ=1p_A#X`P$z~3T8V^ZRQ4vXqb=47NpU>U%Pc?gsx_X`w8Gl+%a@%Pu z6^Y8HCw-Wvgh^!Fk7z;nn~u@xdo+IhX;{%8prLuP4;XSpf{v$ zp2Y@YY+od&7iFutm2k*XVm?`!=x^9HqmtA}a55&Qvwi}1^4-am$B0h#Cv>OGT>-@HA?I#v+dQ8CXi9dPXkjUqSdNpq zvIK_w%K|?ErIasqSlBrQZCL)I+cWr}dkRg-h59=S|Iwf6_obmcK}aa&m21}L>1Tj< zyG*dGck5^T)d}lk=X7q3mWQZ9{ObdB{P-K9=BVA{MO%xueOGL~$OGt}o6iUo?St;w zBrI$FM~F_(GDm9tkMOy-nKm&OW?Q`kyl|)^SRi-|zZa_&&h}|KbfMN7M&b5ch{*bH zY#=e;8&uGDh!hl5X62udBS0mYF627J8%uo$=)gg}CI7d21+4S?tU%1-sLc?V9>QLL0 z8~YNjKA@DyXIWf+OVm9|l8}R#PbN-ZR<}1#0s0R#@0X-vp%?HNQCr6vj5g0w*%T=G z%C-s@-2Qrx_%yKMQJKY7e}0XJ`~8!KMhqG$vkb=*Lg>!!l{UqK7?!3UQ^Ah$xT3Q5 zZ&Yq^D&vp!}Ljn+iY*|$|P7Q#%9&GP_}-lLVjiM!A%OY?+&(p99Tw1n$+fE zBIu0(@N)d*ewRGFdU9gb^TO|nY?_+_I{}MVH_&;~b1!6iZ_D*ZZU?HRlr^c@7?BjG zwl;{5+u+v{vUR@vsA^9XC!A9t^EKD?Gh=d*1RVAC;A+u_3cj(lNXbv{TLf|iq;x$ICx`lJr zT@N>$zcwN1jgaYiML+lEOAy;x&UYEx3SPTKzbt%qiq-qX>ui`%cz8 zkv$8?CQF?EQRFBVHW&_$n#W#`;MxJh1W)nEISb3L;*V{1FaU<8ewSJYLXckEI)G@+ zbckDv{Zr1M-IUK2nJ{+vo6zg?ZGR{VT*^N)?;aTRhWLfepln6 zj&mvmS!8yYven}s!D7g+;)Bn4=<0sJ6RE|R!(v0v60z^yJ`2xTUDa=T($jSt-G<#q z>*FR3TpI*Dn1df(HEnA(9Qx{&?R=acJn&muvp&h@J&uK=LN696oZ z7vFgK!eSs3jT(Hmtc!ZH)V1t~erYhC49cuY`}-d0&$dW$ogP~DEt zmR1x+BW@}NpR)NiR7#Pu5TM(j$>+~1w2>|(koL=dO4FtIYwiBe2%I!wgX zw=pX$)v(pQ+>t@yb3kEgu%5&zVRDmSKd|oI^#PPHfV7OSauc9O6fN&5mmkKpxOBfD zmUazSVny(`E0sUbH7aFf43&l$qFpT@r*g&Lov_`>*m>54{o!iL!fC>8y8W&UDgNB& zdB@P3%?Fhl2e52Sp%R_!AR_2i*SS3tb1aPOw-?9_tty|z-Zd?{YTUY{xt zQTu|`Gg9;f!P|N9^Y%0-F#@}hHHd*+Kxe7mtOQEn!`nmK(Vtr47Skt-nA8~VP#-`K z8~gmEP@@hsC7tD>5^fc#FsU4weNk$0_3x6c^;))ry)zSzv(zg`706gjN68$kkGJX0 zS9lBU(-;J4?fsH=E-;6`QyXe5Z?W#j;0Av{_kBCCr6E0z)@r|m;D0L}*9Dmy4Is## z*%;{vob8kuren3fyL|JT=pE9Ezv^#C*0EZZy`@FFKdvv*4On?o?TV*$)nE~2yMn{~ z!~()L`3{}LzddZZt=3{x5YHQ!8X-oXwL$~xq4|=8HC&*e;QTpD3{(%>!2lf5MEYsx zKY5UO_a0!ZysHRi!$90(jsk;N-!(XZ7YaIQwC?8pv*mQ}AhD(l2;(n^f5DXaC|@cT z-Rdvd8AHovcKWg_ljd7D{zl3jsP|);Ol_pfDYK_zOj+oP03;4})O@pme6twqev*b~ zaC+}8<9dIzNC2zPQdMA8Uwsw+a!c{4T+3ovBT^gXqO6av%;NV>UIF7z-B~3M6XUf^ z$gA18s5}Uw{TJ%!G<;{f8pw$N>d2%(sCXQC;s!`Z2?@sPj6uG6HnP)8Qw=q<0o_c9 z{C)K+4xmTHqIV^n5Z?-Z9LP?vOLOXTyY};%2FD81oVZ9Jy_sWRFg#c-KtySAWXquw zy6KY$* zrwr8f|DgR6bHwRlpJdr{NYv9Wl>hO>RmNzQx+F3cfswdw5{KnZIiIt=;tyZJQzuiN zmc;cdz@JSH>eYwV6)mzc=z=jrAdT}pRe0BnE+V#9Qf57Gfw2ib0;cL;WG&|#SuDD6U?_^PE>9)A76+-~G>VWB2|I*H0Erj0RN?<2Z33DD zFt7rYEu2dBDi3O@TNr{^6`$*+iRs$$ii0Ddp%h?3(z&Hf@Db>pY2K77ln@u1onsjF zxVIgYb|q=vu9PHmmCHoDMZ^<&eEI6yIe2{E^F&d+J6n(LicE;qKMvm}%~Yp&7tZ#r z?8}zKUzQ_Z-0Up@KPrF{(_A@72ij^NBRkuAwYP`OP*!79ThsSi=}e43424dg`|11{ zX0){aQ!KB-3dRCu@3tGHZFXkB5aYF|Awgz1V#;w@zJc5!Whg1((SPgy*u0vGhALvNTDoqJqX~_(J3GtBiMRl2aEM>g^RLsU` zpI+kgbAJx#v@d8S2Y{w_{&c{kInzdcM+xMns(ze~dudfi#2F(J6%gIcKP1>>Q2b7` zR~zq|bzT_wx0L_Y`f{NQuUCt<8AGIkL^*?~@b>eg&(2N6>a@KCk_>?{c{0j;%OIPx zEr2HUL@_}XNk!*Q1)tyc0VbkE?=&9IP{6z6KqV7pEB$%+bN~j6T6=k50oncPQ8p8F zCxu1EW?&~~En$MwMCXY!t=0~b&9Rj;=|)Zp-Uw6Fcvp#$uj-43fNWdOT8SGqy(&SK z|B^51`f8k8ZhER8D@EYtOXvDsn9m#N-YsEQuBA(Ea>`#}c5y@3(`2!=MCek7vSG#b zKJxLD6rSc+-E6LVQLN8fuUUk#&L?m=E=`w00kqj+%AM0I0k|Q{{wd&3?{orVOiw*W zV60QnhKz^@X5aDJE%}sW5lma-NEjxajpz?3r!@8xK51Gk?W6wBG4@MMFXb( zC{?oz@4cKDFy3#QR0O(;ze5ut5>5w#BT|Fw!_vy`!8md;ws+$SAoog=lO(d(#Xrun zR7GalhJq3P&D8*Nh!9jc)L!RP`d%+CpEz^8&%EFfgHO?&P8Gp1K4&Z?^a#BQ zEGu~;WBXn6sIbHT=*(#p2mqb=aczHdxwe320@tX$?uX?1Vk1pAH9uzYdn!*46>bJ0 zCYgrSZ2xi}>pIV!uy~4I&v_!RuB1K;iSFZ#d>NG29X_evdx#HE15|RtQmm@Sv*3JF zxh%xU`FEV|{A!u(kdqo4uU+6)Oh%n%*BZ1h5%C@KsS=i05txx7DO|8tTs&W# z8dudbV|(jq@=q=nvF$uYQC5=xpuZ$k&)IZ%m8NZLEK@tB^@gvidBopZ^wN55)o!!gW!g|VvGNEcOSCwJ zlQT1T6hU-k3J%P1$>psY8>{}r#XB)h7>rskBzk?DUO>HD69(2mBhNDn_gNsWC&Pg* z+_)d^uflt?!mhDi4kV zmj6y%k$IsM0{L6<>T`hwqip}=yrz&~4ciV@4J84Ukhl=@t=QUZaT!jHcw#POMjd{< zM<8GPMo9(`WB!5_GypH;mDxHp@zHDd1b1kV+g{^c3m(ic9l`RTMFN3L*cs6jvURO# zm#-spnr{lTNOoul?c_{6M}Lv#{N3%1pL{7clB4z)yPIx*^v-MKy%zy4tP*d7aJS3A zy?dYFHImcG6#g;pLxmen8yUw);$BAQN^?RSTe9!x7C@|fZU|UsbUu_fB&l9ysP%)2 zGl}mttbz)EGumTab}Ipgb{^yTPhC<@&d@bXTN-`BU~y+z<`AKkZv~1 zmWcpWudauD8Z2gdN2!|WXjnXs#LoqJCUYRcD3ejr|EI7&IQWbjk&3= zcHS}N)A1CVfljaMR2FLWgKspTO2WW*&Mx7EB?+mhjKO#{)2LNNHz8!iG(af=>-zw;dC#S^xU~wbZmt}aR zoFapPQ_~SkDR+FH#GhAly=Bz=bOOF7iXO=2&U;_)MrlEC3v{fcP`6ViL@@1(UR?pY zE66CWoA+-2Q{)WCzfGDxJD6nb8?aoC+g;=EP{mazoRyDrdvGXWCia$VzLm%=Q&e}L z@HWs_sB`j3e0Ji9o=zC!Hjdb`*F$ajseiSDO8|8O5<%Q>MPoTJSIjHRW%z=2vqu) z9jjXw5sGml>!pfz#xZB(_p7R9S{dhQdo{jvUR1KvO5VXJs{pz&)UQIy0+vsS><3}uhiiFvF==-iM({d&pwdeYkDZJZSruz7vLqQ zr>MM$6XiDEo{C!Z*2S}{JF6C-0UcUf2&)W#dB}dhbOryD@J`mKXp@!Z%|}<$PrUiq zW%Jvb>(BCzjU1+Vt)@Z`46yF#xcRGX7m;aKd}Mq1MR=@po-`R2SRczU>ioE{QxSQE(>Y|J(y!;5Z?BjZ!frS?^(~j>}o; zgfB-VlfC>Qo_wms`Kwe}MB|dZ;2Q<3h_D?gOI)X6pFq1uh?{w{f1MBEF8@k~j2C=t z5@2VOmHLyfvXX^5TC_Lbtrb7=j?3AxqvaW>B5rX6m?SS80$mk2}|!6J}RC_%5DrlQ3EHgL8>lpf{x2%CEM{};*Qir9#7I82DQ?iMF7eD>|F7|V#&38IWR*L z`VA|bhwqpTWB9vR$LySlHF5%!zwb;on~dLRiX?w{usUA0?43{Qy(~RGUj)Gh7W(qa z{;Bds+WndA$FYFt2LLbij@H@WNJYgSI3qzleQxZqk6Nu?@VQCS3rLEIS>eFqzNjc)vI&v zcyA^Ge|MLSEsNl46i2pg)$h>U?RrlPno9Z?0~~@r01bFhUWpJ0zd`tSo*N{;#XoE; zQW8|5FvE=`sZULTL1+k|8!z+~$Y4PzG;lB|sJa-=e!Ks{$r4eRcS6iJl!}^=zMp10 z)Ua&KO5yq}0PUKh^`liCP6=RtSSns*aZBE6$wJHzt}XJXkX0iX<*>1@QZgz$SOtQ1c_(l^j;;^6HCEbw%QP^+Kf{SWol$>F-!6|X(t;r zNXk>Q)~Mltro+Iupp9Iu9;R@$JnnP*ZEvUK!6GGy$d zPrpefKH0AR_(&`&AOHG-P1d1Bw)NErpZ)bbm06Qso^3O<_fm9@is2qAZ>5p(4rYlo z?vT@#CDGA27%Kmnh0ll%V8fzMRJv>@UI%utSfS)W>BiqR#1}bPT*0~`;}0!u-zvD38>}p^QacHEDHX*-$K+hUy(l})%x z8i<41KRFNa_a0R|s#|hL1ByA8GdEAdQRdyvC)@M99}`Llwg#qV@I))_7CNPpu@cPW zwZD$k-Ljhz(p-fFp4oP;Bm@v-blxFf+V`pN=hlZ`-~OgpI5bd7rRXgfDI*rDxID11 z%{#i#(@l2A=GE{Sn;ox;VM`UsF8ZrMa=tShW#s=fbI72|-YHmuuUp8w`%V#gg%#lZ zE~RX?jhBp!cEw_jnvnU;)+OrS_tIdmTYEIRQmd!Z#4Pssyw4JGSqn<4uexzc3ZjG1 zQ3II@PIRrIk~C!P@jDLVuP5{&HdiR&H>MsOHG&4987D%U0SBP_rgN-WT9+|PzPG|i z;V~nX3BBu9X5!DygYpy{C%WczZTR*$@*n7c*cPSVN~GT@PRc`eNB-jWG-zr#!Da5f zUX&b?U-nf9tS#~^690#|?~%oBi#~S*;W7@|_>1|p?*1WL10O{JxW~7+ymV8q>uDFu zdEuln$wA($J(0~+TN4g>s@nVG1EsiWUW~i$n_8yM;>9C6%_CM55dO~zjIZ!N5>%>V ztL0yE3w=lU1h42g3JCj!JEp4{vKv^5953_V*2lN2n+zFR+mfVVr8z*GgpyIDQIXE- z^~Dj-QhsrE%}~i)sx5LBT)1rvs37&;6lNq4vsF}=s_WHCMejBA$0Xlg{;*5Ak^^c99`!%`L0@O($sjk&*>nL@r#lwQ~eI{+d<*;2)uMxL#k{q2*mne z-=e;7gv{_@lYXiKX?xVs`UOGHUZa14MhCzhh^E{ zM`JZ-a7pjL&%pT8+BEodY8`eO)xDmFjP&~`R!b4?wcY(KqmypVNv|kQK>)^ehEc%ehOEg;@>jCf3!@Mff@J zjj_ki`~a=ZqoztGzu0HdXQn>olnk$g-ebl8VH&{e@j+L#>KhfBrrIy8z5E;9aKN43=>T1)5V zq^Q<5me99Rc;@m6+2o5vd;lf><^*tfmhuR=8*1yj`jv$%$z$aCRnA`xr{Sw~%TY#- z_-wljzlT3@>)n$?t-mC&5;0z6@GiSh<1?(u?1qzAk1GP z;&AG=x=Kizo-MQ`79(i~va*2B_8mddUz;VJcgAt^ZMxdOr9=)ee-CUevVd#K!Z%=g z#HuWaB>gjOIV4WPX~6{v3AFb*sj%7OnTT7;$5}P9ltCQ zJP9MKP|%&c&BKf?)^#n_0#n#C8;&L?olKIZeSV`Xij|8$K)l{Y{Q&)-!Dl2oi}-2O zd_%a*(&q7UQll#p_1HC~mGeXW6`)rm-Pv_wcCj-)#NcqCxH)e!8QQK0A`NM8GT+VZ z8Yqt&E&V8ic};VCIMMhgze|McYn|X{)CEF24n`Ie`;s)?qIF5w|<=CxDfN;E&nO$23==^KdZhREnSHm zQ@)aH^TIzRUVyh5E$T07JUw0vp7?Q0t*Ngzr@cd{TVG~+$1@S-Mcgg_*=AM$s+8`G zIFnFtr1$B=?!8jzO1tJr=%-p8VO+xvu1}GcKjrp-J6mz`Jpd3Z8)wrzwB{9e%PwPW``ul?sofd8flgCiG-OpH*h{s#WUxn@EX%?59wC4T3z zB{p_+p!^E{MlNnB(2ftM2^&dKqfdc)6wL@9Q9?;be7A)Q1D|4gj+gnz3F?fr zM56(U^Jh2|siO8B*ih~Lns?AQ=P{E&HgezNLd9UW+T8j2C?9LP$Bwrdsq54~<0Q-*sp%G^luj?iFGc(@=1EphvDOxAj_)TTc~sk zZzx>M{T^X9;xIYBKvX|dH}4E1notO;A2wqM@W%@`#$_8IXv3rl15!?r%e#S4BCqMr z7|UrmN?sTINlIz}e9%>=dbC`ivN>|WBdtFXJG<0%+;)V-Cnp!cI@;LvTeN(XRM2`y@(U@Tq?01a!osFq#RZ58;BKojFl ze;DBT#mU{RoCmK&OJT7_B+1pP;2uLy9htTLF)GbhXX|@clbhp#eMMP>&w%X$;omPx~_-ZO;>eZdBWUZ-{61TtN-WJAnzwN>(Z9w^8y2=r$GRa zhlvXlaoFkrPD4+N`q?I=bE`-afWM35eQvM70q(GarS#52B*=-_D#*Ka6$~zKqRVH? z8TqQq+o3NZ;d8$@;h4iU(R$ePn2{Y4wtw$F0>ul>s<01v4{>m18J0CMG7N zL<|w69#!V;s>d1TaqngET}}?k{dvzGRvXYQqF2o#{xc!@{~c5e19S&@hN~~w%zMJV z0QF0Q&}e<7+w$VOI7p*`86G$<96C5&1PYA`M9Q~j)>GHf3nP^3Zvr{gc0fg$GS{H_ zLp}tG99V6&zB_0D@a@33{&95PQArwxg9Y8$L;jcA5yZ}l`2M8xQQx8Lt%{knD@Z?F zHq*}Cv2-^*oGTe57|rkxe9LkSrD; z8vdv)=t{WPIM3iq=p%a-6qs+JPZoKO1J_?V$1G}hHIK^_lq>s2hSL01fWp%S;jb(U zT;g{mk2EzIllSl83F1$Y9rrIexPOO7z+oPdW**@X{D6ggou?};Zf}*XmvC&}90By| z6(I4$u3WslJ=X^_KLFx8um~QS%jcDEV!(%5AuAAA>pgh&GdYFJp6vKfos6~Cr^wPS zVe0>h!vAx`L@tO#LD{WM2l9U9REpCm&^9ilf9aNDU9~$vlYs_!eF~90PJ)JN<+CoF|D`G^?GIwNF##ug zn^<-06ti#jdR9WE{fS{tCRc43W*Z(xWih+pamJ755yo*#B&+9c=IP@BYV3^C!Q>`r2Z&;Xh3ec?u5ml1rdToxTy+-L;y2WAU9It zUa|ZJEU*2cTqvLVNM*o>jy6mJ_Q@9p1(Zw(A`}Gm?-$$jV3$k<_J*3UTN?e9W@e1O z_TPs(vid(HNEYxgCisd5kbsGkp}?;l0JLHu!afQprP3JNBCUR zCh9e^bB2g`v4LH#2}=`=e!%-_=eIC0 z0FB3C0fD1TuoVbzd6+=0Ad)YgRKvmlYn+JH7)HDKo0K*0mwGF|U_^ZByGe$p{i)o1 zODAeqA7F>MVxAMWxrqEz*qPCj;WAwgwec@N?G`}d*YC&O7 zEqTa#U;B!_@)6rP0S6WwCWFOSN0k^D6hE*}La$HIuv?J(T{9|SLX4<`^W9wG{zmnDs%jslvD0+uOAY2{1AHR;pc&7vjG7kH8P~^$7!uSvSTrc|SXk zrEzR@1wi{=jIsQ<;aX+VZe-3YDCmYJ_9R&m?P?Z_z|uD`02LM%t}+@xIw0zYmxyo{ zo&Hm232KyU#N&QVGh3w86Kh(8^k2~noEG%&8`?+_x#t%mE=mFDBKZVg>G^c(LBe^O zg?@Vp(kH=XaY7qTWP-F5ly_P_Q{;O9uO;yG2F=0lfHe)D1cMsX(E1(I1a2hWHT}Sc zyUJFGiyzi02-u_RG=JMDFV=D_Ju)0lq^+`?XT)JK4BXBl7-{o*!czRu;eJC`8N7K_ zqFUNHG6FxHBGYW!{s5&IIPh(w8#2phvlsSMm+*>NmwS~-tqe!^GSKi5$V#9Lix&b} z`0-dwx(JqYWgDv1$ls>q!~Xx-=bw0{2L7U}J;!`aOj$4{`DY{rtcf79WHrT?`59>x z|GkNzh1w3$e=|$s>CO%OG789tTeo5=xgS+cZo1h>QQ0sUFklV_ttxlz>jLXXU@W$2 z6u_fw67>zdSl*Ct+XV-{>j~tY$zSHm<+W)%PISjWO@qg2gOL8wI(|4yzzYw^n>0F= zdL2ZEze}OTQd^3*24d&|FOaLNfX%*$p6Psdjhyn^nI`+zE`8<@0>v9&^ zNKd=XX8PPess#yviB-#b|j6t45>!z7-rvN0)y^vgrQA-sQrqqzlPXrKus zz^|0zgTniyOW`ZR(kwXe%l*dU>q>LoG`nuAD`FH0er`sye2M2G<YMB;UpwAjkO>F~w)>)-1st{| zxg54(Y|ntG)i*OU`&C~|`hVwK;GE11V8AQbd8LoPoo%%SR~#eyx9ND%y8SDVr61a(}@u_*BZR93#%*VR#!Z_qxJUi=UMkU zYO1ok-rI|8C|6JR=NZhnqjHPPeW8}K#_Kae4w=BU-}DOe7334J(ul;MRfyjvt&9bh z&+8GxV!mQ5Jp(9$5D0lxEZX%tyzNexx$ie4m|V5(Tm5XN#BjfTUu|`BjBTOoa5}=$ z`0@o%*_2OZv)w5Gw^NW-okiDoJ#W|`IL!DzXMk6hu~RhTijIy>zDGZw@D$NjqEWNs z9@4_X0#2=)Ma2K(m6Z(z{<^a_gS>%(o|F1;MJp4kF_3{uypA{d;t)R3&Xgl^t34#w zdTa2Mq^cl`kZ5`q7#v<-AYfXL#%-rp2BP}Tor7)xbb-F6%ackK_$ zHkJ3|IVy!j>#uVCR31*~2pK%E(%wqM1nD%r-<(WnnBGt(UA#VJ3PRJyWcwP8s41%S zjjSawq;K?{mMhLqL6)38X~M?8RdvN~`#@i&w_JFDKMFZWl4O@A*&-G-N*nN3u)CqR zogb|be$EyEi*Ufqx$G~e;*kb1s!&SE%*z7z$h?O`BNhn!K40M=Fxm{OJJ2uUE{o9W zjSF3=N7=cQXzZGv3|EXo_|KYkuvYuw7jguX~ba3WYI63kpPA zDNr-}Wl#Wxkoasie!*Lo+2u~p3iDNNWmRelK!upOX0RHKljH|Y5?TBLG z7%bwovrzx9=pzAbDhli&kFeho%u77CYh0=&w`~l~$J9`*gr!x;vXfC7?d5Y+uq~?c zM8xLqV=F%I`B=rMw|Wo$6H6}KSKx^Jbyp51ja>`RXQ&zR$8qH1wA21$9m>rNQB}z! zsET$m^Dqi$kV&0#rQiBoL-yeKj6_p}ZAPed?(RCjn{-y{%!#};DgPrRaiv^2Pb}7h zzpX9`y3oj5%@vlPYLf#Qy?Qk8SesZu!FlAoF2KkXG6Pc*I;74lbkbRBU5qynq-(x= z7!>$n2RGQRotFfKr-|ls2*xtMB2mC@HCNEk0md%AEWqn+gAhI|?nj9-#n?^{ke(d)m1bgD` z`AUJyI6v~qLtd|&w?`rcGZvHW(#o|)c!#GFs77VanV2{eYL*Dlj%GKx*j79@a{O?WwQ z$4@(v)wObZlJCY-qljW6%Z~Bsa!b+G{u086DNj657_N3z0((g_zXm>8bVxy9s3gVU z&e0$W@8cvvMPK_!+wX$n{yihjV!9OG77?vkc*$1B0OausP0Mo}7C1QU+QE&k-IY_| zrfr#s7MF*(BzrHpHkET((lJ0WT7Y^L1Qr%nvB5^Cs!sJ8^yd-D%*>3zVvR|>jFZkG z(BH_18&$}-(TV<_zVUzE{v`BZ?~m#VYV+k(XjIQfWOM8&7Gr-x=|{evo2j{_(jNx; zZx&}pql-@gHAr5jYTe12(Qm{W>g90Bx+Y!W)`?7q>zzxjGj-rDGnT_-*?)%i6sh`o zy)jW>q!dJcq(sm!s8oD_?crvJxLMh+Du}EWaNRrhC=P_a+h91F>2D}u&x)mlC*8fv z)nCe?byY~E+Sv-zP`5Fn4p5Fr2CkYzF`xsot5gWa7SFYzGKfSc=J)T-2|1^tge;?1 z1GC(Pjc-z$CC0WqavqqAeP#VP(%fh1-TmRU)KB#R4wxCkVwtcaSl5(gsDh$vL zVVst_lXbpfTj6u~p}pOqE~r#eg{{H9-jV1p2niThHbu~SH)bI#ygr5eP2(1sSqzHy z?`4JWDNymuXJRH%fSo0E0_CFt&^;_WH8n?<)Ck6Q+;76$$muqJGj|fB0s0is|EffM zyCAmpWR1ulUPcajb4Ws8w?6bf12h!L9TqPluGvysl$jLzH=#k7HH)$c`yV6Y8PI*d zo}-uyg^$o;w3Q`jh(b;l5ihLNu_=|!&OM9gn{MbrBb9Q;u1%JrX)g}V!^J@Asew2G z{u{g+C*?LNh9Op_nrex^V?&m>y=vt|8f*WfB5#*Vs&H+A=yJAMSB0v_IbL}yQV=y* zjJadikJs;i(uSry_G@?^H}ybd`J62lrO^nTa03s;14;y6;KWXjXVv744dBR~t%7WMP8~HX~4=I0m;T|&OCm2@W>^Leh5ezDra|AmMX=mpB4{&Yc~O%r~$L9qFsMR z$BDulpcZH_|S`?oXCOU6xCsOy1;qCy+OrO=^EOhqb)wU{Y z<`bJRPuPcm2cPF^#V+D0@7L?I@*g(_t63ljj{O{U}&hb zWx76HT{|1ojBb5}w&On&SEr=4P!-{A?1Tqu{kOc>#?xzFJNXfqzPwGX{!UF2|$ zyuRY+xdIL{?14t=^eU8P4%@qg#ka zq&o-bc1EY;4E${*lw@E;2)HEHpK1R#Rd&TSieqyx@K{IOr>9(${46d`;Ahz=#9x0Amz8>fP^RM8>Qs{jGU~!q+UNxQ+raYFLqvW*J^GV4S0p^4Ck`og z{VU~bmGP#%LH~yaWde8!Ty}d5;^2wHD1GHV^*vItw-;b-~F=JTCE9ou6TkSR6NdjSU{2B76X*wZfB`ep<(~RdH;95(Es)h9#q>azd7KQ z3lPiWHpJT95QmXAvoWz5z%6)vK5C0VCTp)98>s6F(KNM` zLGF*-HcTBe)AOBJK66uAMnGY;{n-2F5~k-kWqckhJEs49P&k4m`M@Q?CPAIgwU;ju zy_LMCF$iFZl88RT5ZqAh!$bP4O5;p>5XKeuy!nv3-X$UeP5l6o;D;4-o8CCh&i##80yLUBvjb(= z&)LD!CQT%6*Lf6qGLTMuEOTkoW?t))hKzdt-D0DxeOb3={x53*GHH;P zEsL@Sl&7^80r5{x#j(-UGz4oFzcuJ|PR?POYpdfb`lLR?EUB>Mgos>w4QRC5X1L#m zOt(EUms)*XbumEr#Q$Ilxh#2Z_s3mf>S z6B(n9WuqCpcym`Levr`KPB8GTv)4P>&MW7}i)DA5puBy`QKb9EM~tJW(H>eOiJn^L z$b-zV+o&zgjOkECXU)l4+EQh0kI8o(DswVF;yxHJ&TPIls+(Sf5pF=qN7r{!bM1ok zfG#q(@$Kscn7L?tN=!3(``++)3VG0?qB<4RUf7MVBlFD~|0Sy#9xo6sa6pMaBmLi< z&3}Rh1b`JodlEY`y!#C41POSx(Kr}dJv(npsYc0uLw?Q{OwhJk`e=c)nowx$-n{X2 zE7V(1_gNrZmvJo;qHvc10ZTl;zlICdKR+mhQ)RVT#`2)^j7sP^DZ;lpc!Wt4X@Bma zD+N_{(ko9z;rAuy>6#De*Grt@$dR0l^*>>nC2U6r_e%{Fph_?U`^}H;M!Vu^l&Yng zQ=upa7k`T9h3t-&6qcutis%-WW=p{P1S=qSWq-xA*bxEP*ZPThI4YsjD>7Ay!j8#1 zGL}T>k+j?n=-umGkSU(MK*O7pp|aiJyL`C9d%atc+#$}h1kwjA#j82&4k^qNKJA=5 zAw+Lkm2u=xJW6`qB0M)Y>|K>O@4GP5EBR+{A(K|MAQ8hej#{@%el_rH(P8sW)nQRT zZ71N=Re5?y`7<#wbF#Gl5G~iL(4}G3+sO=S8y~+|J7Gm>{bYiEp2d?n53kuC7{t#- zQ2=`XAmwop*#T}xn4Uxj83&D#O|5>b>D+b0C=24f(LhZ2rj|h-Q8V-ySo$I-Q696hl9IY2o86X z{`&siR~~p|j5@WemdrKhtg=q79d6I03g~of{NXzL-`qz?jmsvL`gPHjIMO>)ng|%H z*U9$}ID3fw2wO`J?wu~l^{`-z6;ojipgw={Y@H|o|NeFlB)Q)7y{}MkoNqAH16OWsUCD+NXPjFawq|9>@9jWSQMmrqN|F}|MWZW!`~%y9 zn-ii;5g$Asjm0&GaL5}uZa#s1a5^qQzxy$|%>J>LOug*kj5DX906@xGbVH^f20*?u zf{EoC!bWHzWoJfbxih_KYJ+Py(;D`#5ws<%q7i$vZ)V#77q2AzmG?$ z>(%T(Gg8J=In?)eE;iwG0Z(UN26(s->fSBNbFINAQ>jshH!rDz?eDZ%_!P45MYCD? z4tsIA;%Hwd`K}gaUph$f(K|onr^Xko;3@3;T2-i*ujcvcCxPZYfqnp?(SPVeL`~su zHT;tC%ubyqXHRSN1sm{VIP?OywX?Y-ACb`rz}90TP4fPr_Q@J4P*&S*$h+E>igUX}f6?tS{v>y~RVO`&VhlockuFI-Je@}eT#vEe_IkZ>n{GA>O!Sy5UjX75L* z;M+Wb6WyLCgrv8*350U$fbkaX1p85+44{QPpTlvl)PE>{IY+%n<=F4wr86Tqm)^;S z)-s3~<3Z77suUFcE*UIcD%BT0TeLB9Tj$yd@(?TZcVia>D&&%vv)JIvpVL4VlO+TI zO*rIMlK&eh_SOQQlAn#fpvSVYdxg^3@8_!EO1PyndW7$E=35 zrY0r{v6;C}mvz}bd;Vhu#UR=f+olJBo!z zLOU2ghf%n`Xom2NQTv^KPA#)_5N{X!So^!XiqLgbNE{3k2W$spULvxr1sS97>Ta{L zZ_rorF-oE!aF^4#H8KlEx=nWq-rv15F@*D7=1hqzT!~5?~#FmfN zp&_S|A1^kUkivTuyj#~YMRT4V)8D_FT*@& z!&ESsbHHpQaG#6qS_40W9SJZ3A`i{ezE1Yns*u^8C(u117i)G?qNo}?_Yup25>TcN zOfl#pUsZAG;X$@sudp4P+R9!(uBhe|#XQo^?^043Fm;Re0YSxjG+zFh<4H!_`<#fMkpRJ2LJfa*g@SanhA;B)d!Tk|#?y z<3f~)^b)UqkM>>Ll)1_BN;qm)U;KcB8%I6bEjE|7!RPzJ+_a)s`Lwn{3AckFU@WEZ zyh@C;`6Cx7n`5AX@KXmS)b#%=ePoeghPzS*@6(QwXMrimZlzJnaAN}OPA&Uf>B81l zOG#KYkq#~ktT4G)G9D`mF5u}dT<3*=#TGO~im_0g_ch`>;;U3>Ot9tb@u%*&Nt#-%D37jYO7wgCpR6b}oQ5rbd2X4>}Q>Pq24Zuq7J zhi!>!R@lg6D%O6-b0)~mH)rt-l%xsJ3_Tk2nXFCH>pn1Hs+h^6quV4ZJgx{~zg8q~ z6=immGuW$ky1}eN%hf+r9L*4|m%EDal^Xr-V0Dx_tmC!)w&hSpSq>YnIUk7t3_gA) ztuEV-Q8%eKT7e+i$td-y;g!kv*6^nlu0{zKl+_)XL5Fh^XxpMdx3%p46qh}=`mD0% z28KtIffVXuO|Np9y4oO$`vTpoLZ@U7PZzMurk?QVBxhO4AB}AMAxfgAM_3qyu+3xP zheoDpU0}W53h5e!O%>LeY_N2ubzwQ?zSel;0ISu7k>~vjGK&e*_ZicvNA;MqX`#4t zitho$;o5lfeo|x}$JZ4rTDdCVpbriSx8>4D1tFXRpV0^xKkA4Sok3(iUlZ##g%JlA zn^}=2ui5xqw2OE3Zjk(mujE%x-_h9arsgGHAH~k#^;qA5=>Y%;WAXb2*g@vVq5pr9 z5X=tS-vOF+;lpmd?Z-$Wl>tPJW~GDl9TFI$-VjZw!RGA|Lcb@5+#C(P`y-&vv_J`~ zMODyn%7kKyrTa5ym!)+*mmN1u?ZR|c=lL1v^ufVV2L*Z?sN_+VmH2$a#+1dKb}H)` zChb!R`$&3bat&NAbQdY~^pM@IT*Tb5z=WyGyKD7@tIIU_`X10UOfZU@)Y)R8#^qOm z!t#O@*=etyWI>N%B#=e>AXUD%Z_`>P@Jp-KnDYjU2qDqt9S}7V^nLTOw1#Mj$rBYNRP%?&mzY*@7n-%~lc@7wEv;82r&MV``f z;sQ}N+Bsg@Nr={1-EZs~7k=H`({It(S``*S%kf*PmcQ?TE==k{Di=jtNe(e@i6NIB&3y4Y*Cx6EfO0IS=43h@R&$SKtCP{h2)>0IvoehEQzMDPx~cjhG6l8;89pWF?Se{# zU4ZEGf0R+*QhiJ5qYNtC{^X4y-fu>jU0j_zcxsZ@FVDT;qEu=s*Fx>}j*vB^K>x87 zw;ibE4Oj6kNXD#sq$B_n=*k|`EWFiY7&xYCDHP5n-`e=<+WCC|-8(sDWZwP42NNFD zDJ6P=%ORqzc-#UK?kM!v)NHJoaRjvRb?)t}H7qXYkr)RLwJ#4YWT&8r6cm`h!(d2UYNR#g8W??nvv~km@Kpr zCUr2I%{l;n!7c8PAE+!hivGGIIJ&zz85eePG{|~+`qZx@*B)-$7wm+t6LSB|4z#l3 zXz!yxT`%u9<8i;}eHOw4O#_yuQ_6c<}CMCAX@b{(aD#910nn3jo7(L`@_^6Y_~Zpvn^S z#w#7|t`A5<6aiLJL`~-J?_S3%lp_l)HCMjyJwT10oDkfoLG`bjt)iW22S z@hcOxH%dXK9mR=NMKS+h2P+2Mubn8OOdV%*KQJ%kws%)|TO-k=XlO{Vdzerj*LvLX zGbgqtrz3>hi9x-P)2BPcgu4yMkvw`HLh!85Afzc5t4*uKyLRw|be7<3ll@@LgIaPG z@Gzez3X&%W@mlL-_+M8hTmOP1vrCSP`6j;}fXukNwt`M=Uo*eZ))u#W=_Dy%<$ZPB z#bdX_ZEtmwGNkxy#aoHUyH2M(I(sV+zhYteUbxI2K3U>&UWca{32Epk01* z7tDIIG>X&;NSMY{X6FP_a&w-zc?0_F%^_?A5KcQPcd!v zq83lJOvV7<9z_k34}t_-^3bj7Rn zgax405RFtW=X2;yi=+~a*vj4PNJZm;v)jqA)s}PJYHA&Ad%Fo}wmlAkWLYq~*BAJ& z@l32q?dMVgSGU;K_SII)7(kOI*sBy6i|EtIcea7!T3c5sr5Cxihv1dP*ZM*991Dpo zO36K05}x0gh}%dv$+IGyi0E5jGwTAw%N`;OE>{FwFpe7~wMiC_quA!-tw8@Ei(1l7 z-d+C)XT>Tt4pYtB>~0A%cN3ts0NL=8`znSdbo2qHk>taEY_L=xfHcPfZaG@%U{w!i z-M3MuqS`V$vGlKa_yjCc{|)J{5renDP_??P>&G03t{Z^n%aB`bD|f7Mjtx$h8NYXe zhcli@OcXFAFZ*qai2H}x)=;}>RVse%3#^*=D3`WX+C2pmum6Gv%2xJ=>(bcL!0joO_ zx#Zky(n&2&fU=p@kxaT9tfmziy9*KI6TIWZz|l^U9T&iy=^a%73Ailu#CIk3+tvT@ z8XF|vDm6jp;ysjuxw}0lOoK!-%haISl9EiVMFolZaZ_t*HVo1xE6H)P{5>qX`*&*m zGs}O*NH=(#TAA@$EY51-RTw4bqJMY@d>e|u?#c}89iaZ<@h&sO>H7HN3x^<;ZTc^# zo>(;=4R`lTQU>Mc>r9PY#o)<}UkzLvgYWCLF_LCVp9{M@M?m#1U}F+WJ?Wvhz+Oq> z5DBS)RJVAYA<(K6)eJB5k$p1XBY-DIWo}xZTmR$~@td*e{qYUsD9?|rWc(Ko2^1VU z!}lBtRM(Cz7GD3WG379#^Zk(Q?U#-pw+Zd2pdESZL-PTXgw^56R%yMYVer1LB(|y> z%~g*nthbI$$9u${R|FLB(QOZ*snGkGF)G-X{AdS4{Pv0D9K5#_k7~m>JADGp?)Va$ z4fpQsk>m0BGme5d7U#xG&KkE0?PM96g2yMPGwSxcd$4P3d(lH)UKa$e&AC<@G%79i zLv8O?S@c0Wps;Ea_1=<0)kb&6p5o082wXE%qGp(Es#2}i%u2Yyz94`gHzMuv7>x>$dG+6|9m zp={K6UMl(4>sY8d7}P4K@`;_dZl_4b&GSwli@06vVA$|Y!x|$Vw%wOG5 z{Y6}xn82xjxPHaqzu15wm+Tg7&p8&?Uc6s z#dg_=3u_eBf>901{}yBvG@NMzL$rlYPfPpT110en4@wa1tQM7yNW%M=q?TcXG(gP`H z9d>mRDh|>1N}s=kJK(;q8&Uj*2s_I{E$Xey{_|Zj`Ai<>of-Z4CKPlp(34SkIZLuy zf2b_?ad^rYmUmug7%7)q_MFQs<@IqgqL;BG=)E=%_D*KS*t`L-DZ((fNc!8~@0#@T z(aw?EFY!>+eTu3hS@4KOjNGG-e}10ChNN zq4+($(X=!@lX~Gi2jB*1)lhmIF7*zk8>)lmbIH*ez#)FSG5Q5xSi{^ce;u<&8Ijsg zofZQaIl!^`_Zb4r|J|gqRM=o4uVrn+AJ5@_(8n^QUd$BDXH3a#K?*UM`g2IKq8>uv6A`AzRa_J@HUl4 zCb{ri6~YSIrR%lGNI@$t#>m&WFiTu$t%rR$I`OJF*kt<~6JG|>vCw>7TGPmz< zaQ-&O40$NOH^3EhrRA1F>z6}d3$iV$Ql)b7u#6}8bCFskmx4UT5#^(D!U&nJH`>?+*-YO_yXx^03A_TF;S?ft&x1AqDr`%*qgNm)A#Z*$&14NGN;peh zAs6tS+xZ}fcD^5g2ReJLTad)SyF30L5K$p;itJ|HFa~i)(gDWH0QIm!Z!ZB4A>Me{ zif=*id)4IY8FOg-f8}%-S^g^L1Gb7vP$b9N?W(fH1v^<#~gya$vU5p zyEL{83h%WUmgv?}0UPpPBsO6ASgHJ-7=v;`YfU!Uv9X7X8J!E80(TgfZsJc1(QJvN zKm@#n8HRTFNJLaN6T_c{PS`5*-0Ufs-=|JjuId5ZF9(rY`e6#cyo7#1m}pDcK$^B=u)zru)AxKOFKK5Ix;Dsb30iAZiCb3YtLmbU7KxV_pTe6*xIM5OVvI0tfAf z@?^B%gT7lNTO+sI^7dzOe!$qJ6R4+f?#0a=GHIdg z?4zv>5B@U3-28oQ8!D}4Wvzp|hEWO3V*Ypd`5TKicmST>6OZ47!9-y|aNlay=lfzw zr&Gi;9i&MErku?;&}to~-Q5-+58<$inFb!oMhx&7ace|O^S@0nlej%3vU!^u+i;U% zfB85p^H$?;&Ccy`WL!j|%Zvu4z=w<{B0-QWZ|s^Hn09fgz@|ep+5S;Zh4{nEOWFRP@)V>lg#vEm zkgJ8k6{-k_bOub3zYHF@ZHra-6uiHVi-ku8<^B1ST3BgSVMv+r{S!cgB(OXR1JbuN z!8*+LkS^DjRe*vh=h~N9U*m8gon(po?4I&K<>ASO=BLrc~ z)10d$E!icIW@~b?j5b-P|Mcz{!5izlqy(BRSP?h;2b4fWMN-|oVmjV(F3UFPnOqn`}YxZK;;|~*R%D?32?i;&;U0TEE53f zp)-Ipx2y?PTIoA7%8<@q!U-Hi=s4e_HZ;N*$s33kG}E8|bxT^r-g13_jMm@mgg`*h zFTD>gnB#bxB@ZtiEzsTNgXDc$=T5w&c$s)MBmVLQnc0K1UyB`afUg{S7n4FjKV;cl zoodV5`m;FJ6wTEf-AD4~x5zeFr_x|gBFBwGUqbn|hBRN!a~zm}wK8aTwdtMz0*UQY z-XbYNM(bZTqG5b@MUqa>@ed(eJa#k*7X_Hjr5`Y%zWck2mi}9bWg8R)p3(%i4`={L zqFq5>X;!hr8uv&XEReS@RiO7q-absD{kzeFZxlgRQ+IcF%6aeK2eCg{w04jn%*@PW zi)9JvnV39mP~BgiI5tG!H5Jx9uO~c?$(pdGWn_XIEEanOF^UlO)qaS@g0SIkEPA07 z*>FO0f3_*b_HoTr zK=`o*FNR|`oHr#9LoEw}IEy6~B_Jhz_w@9%0dS>}(a@k478a(9<%mt!J9#``?)OD7 zN2aoP;GZ97ey=UbS~3P z{Sm<|=#5G43$@l6cpS;QPYoKBepiG+^M&@Z$>!_E0pU~Y)gLciIZ_|5MRFc=utgkzV3c5Y*-+uYXshAnt$SZ6b*U`CU4J9mZ zOy}e}@|_(i!KAT=={%lsA?!s(0mTCY9=O+<*{`gE8j&47OL~&~b?~-5tM20!SoykN z3t@`n$CY3yKt?8uG}YGrcjQiMX!aXy7;CRbv$y?A=KqIi zj2|G}0w-%X@s8ZmI;-vbsA$JJJ_`cMIcS6FDuovb_h>#D&~jg*gUshsbUY@s5S+8; zlg>5=<6=gKM8HifwIV`NX{Mz$BcGz|YnZ5+%$usN{1sISKW+ zle-m~fJzQPkwLz}Rg^#Fo-`l{(o_?9y&k&nulEy00x>|_gOQN%@bFna=W9IPUi*`u zOF)}_!CxdzDQ109EluXg2WTe&J7xdmWK3P3&CShr7PJsKglrZI49#}ekF74}v^W0N zBQrd1&a;o^m_s+e4;6~FG%m+DCZShn^1~l|eZhDw#|0TYfx8@&kwM*}HIzQQ4am53 z1>5>K%KR_Bmk+}CDim`3cWT6bOO2fnjKV2{~Y{nF+(! z;}T2$W7BdQcS;7xz0ClPc!SAD?gc6i$rv5bZy+<9)icM(IpGK_f2u36;2gmNf7Sb* z0$rUwCl+|4(cLN_?EMV1#31w4fb2(Vo%gKs7Gk?^Y@e8t?R%$*Ss!pTTI#9AArW2Ja)%g$9FWQ8MFd0v z2_i>FM{s}^`a7_vf*=39Pvh1@xJqR*=>?QtZmg{gucuAx-2(%{+TV`vH85tOE85T3 zyQTuq-y`9PLDV#cWqUtR=$0FOQ}sFgSrBIntk|i#scBJJtH|S_G2B61QWDZ3F|(Vz z_RZbzBBI5^{qBM=$HGwyWzdNZ;3;bw)ST{3Wz(r$*npZprZLMs?DUzO}$~It= zxg5E@rv60upJNT2@o(usK0DvMZ}+Y+Rorb0yq%7Jk*e+5U#|xKij2;2NS%Z0&gp(? zbAPYjpCaHmAp9ZPHEdrl-SLhd{_+L62UHwfr42`(q{8(BdA6?n8?=33_w{yHZ=F?o z!M?_6^0uz>Pga$|xOGk`z4Z#7)#?vhv>BTUbvCmfxkaNk_YdiGdQY7v?%e*}Zv4&% zfKa@Nl>RDKdd{?2Btg)<6Ld$%vMuBv9|kI&u)%kM{;{MI31ar9S=xY z%B(8H0__h2fC>RZW)&#U-hwa>erGAY^xH>buGzv;c^aeZN`TrU6b!O0vt?ppiX;{$ z#HwhLix>=eQ+v#)YTpb3s^ZPI^G=0{Nyo^fpQc8UXFtahsfK7uE6U4%*pvUvk9pdg zz{yvw2oGv#cuaei^VuFmWOutF$vJlF0b@hWDLy+p`|$Ge!Wp{MT=J&N1P!>m{R#IN z2t&_RERom8dcwlOf;rg3s~DLn&5-XQ%z3CBNZlSp1`!DSUlO-%)L}cljAyUZyMvD; zj5WWdB;Zt4%Apq4*1DaGaeVAK=C*)_HN?n=YKY-0<$Vtit+ejqzXppbMQp@VG(5Bz z+R#t}KjUS|_qO0zPi#yg^+_Jj2-eO&^grE@k*u|U0A@59VL;oRpwoguEz$NVQ-0$& z1+vejXVNJ^+k~cCKho7IVN^|^fL!4H1~OQv_;=U#3}|-rVnULP_7w>%AX>eZ)mr}2 zsx>TFJC*9JlO+tLe64i9hClT#D9etId;+GEIVl!q6xyyw*ZUib6`yU2faH2|y-nLd z!OK@zTSEe1uO6>Y(6Eay-xH7<#rKS;(Q4}b8RHATKkw^^Z7cII)MuG<4K`1naY;oG z-VB6)o012Oom~RMNJ}PpsOHE_1Zf&|iHZMLOw^nTrgO>Xb^mRO#UxTAC^KbT+#HI$ zRBwhlp2?LQT?okGtMv!qGDR>jFy5K=guz0u0NPuLo9VEJxe^82`zs@IwOSHpivPSEo?F(w04MjsljR!G$n^F5rOxWn#tmd(MR%WV%P_Z|Ng4R4teKqoU50v%nXqICE^nPEO<37-ccmr&Kh1cL0%Ad%1afY_pNyn%lU=VH_J8q2glcGQUD%L>PLf|ogw_| zyin>0wcq$AgnNs9njt7RyQ1^W16Ll)9GErMEDe6WQY9jhOV^44)e1CZ(Xkmy-1hUW zR~BB)qsO1@D{XXQO{4{Deirl;hE*+`O-ry+kYJ<p;v&&M)nOl`wGtz$iQ~Pkb>xw)Su!43PZblT4$|g7`2DFAEXDS@NSKMG zYT8?csdwp3-MxL^t@LMRj!7Q984PzBLpc6~i&VjqV?W-W_dHg)Z;+!IiI5ZVaJfVE zD$_y$688%LkTb;DEv71)8x{+Bx#mvq(=*GDIReAwbcBq~?MtjhtSFj;X`6P+D80GB z=5vTGlIb}PaILP=$hH!*4Ls?box3qOY1g3X+RCNiE}Vc4e$bJauu!L(v8+>E`jvRX zqxigox1Rj~XU0Gt&pEdp07O1rIXNJ_M+m${LHbfS7LuO_ z;8Q~3e@>R;+nxqD509fXE#qR^*pUzscNaDeL^QK_9}bA$>=8V#M#w-N?1OZ44rGi(l7s^^~E$1s_w-34hHaA0q>5M=8_R+7|FLZ%wDAcOeV2#$R zrH#!sTb*TA8H^4IU@Zz$a-g|S|Jl3ngOlkN)4z~%zzQr@_@!(IC&FMjIf54fFjI+= zMZwczXw^nfbq}^M3U!1))NMwfE&$@8s<~DUQ6>NFww(I|--yW;R|(&eem+FOuQ2_f zlY(GTH^VRz`2J~yUZ-5s%@+Tn0n5ISxV71f9eCh+ttIvl&)9WB8^+m*H~FlC-3=m( zI*nMXjEiEvgKo*|;S*E@ZuuE2CdtIfNp463qN`NK4>?0c4Yi^1WXnGOgWeX|@jg^b zbDs}i%;$E9p2Jtey7sB8LEy^cf?0)VL*?h+NvROzDXo?fld`ns<5!cERm; z2wp7`kvO*cVmfmBQ(q4<%-Y%J@22%($WH=a9gzWm5LHcgv6KgRL+;=yHJ-8-)ym>M z%`FwR4l%63gSYbTvmvL+wpYFJ7a{z6idmX*S#(i+z{8(HCfgV15wzhjWb&*#3})sa zdWmH5^*&HCvELDmQE;(hPoTC{+EdwT+H|B63De2SVoWkRIvD8eB`|(=J|fjjY1vsR z-E|akHTGSf;@orGa`td@6_bLVex3}ryXn|!7yK{=lW_|26dU%rSbalEO&-UdFi|#GxB0N>YLZdYQVBF}eJHjgA z7WI;(g*mVO>fXos*p$}b8cNnBw~^X zVzs~i03>gPT}}mMM7)L$&qk`Qoa3h`+EIr2DjobroAt_TazO!s9PJMGcJ4vqSD@cm z4w_$_ZgsL~cG!;^bY`_#L(uWMQ7U{qpv4t7{#Iu^;os@?c;#Tl_h#sDaP^s{K)BcS zkd>7+uFVY8Zg((ENb8*+$TBD(D%b9?Kj}-v8@7c>tGTh&Xe!vS3J&?MJC!L+>s9rg zRt_CtRdHK3vDVeHNLy*|3u18M?nt>jne24_AD z&Q$6@zG%Lxn2$B;F@^9vwmDWDLJ7lHxrHZ`Ti<-bgfo|6wVC5YnrV{P8PB_R&yVOD zsfjQuDBa*Sr&d)dCNDMR$%8?mcV{OFhLYHo9hUII9<6wxN99oBbB}}XW?$es)eyTa z_q5;#Nc;9*sqgK``)d*5sy<166F$u(pn2fn8^UM*1IXljSIHV8&K9(eNWxLwK-&Op zY`TjEDD9x4j4gr-0F{m;MwcAsWZ&$-^&R(aI{A*)@tBgf%DRK#W7ypxSU{D|NL!zY zg4y+lkuA)?mW$`djpYUWgdhX0XF>9#gC92zxeuwRh`P8JfG{CMvJ-DyRRb72i@Ci? z6EJd9a;Hqt**JbwvtI>x7rtSRnjwzsd zf3A)%;cPzGEd`6Zfiz1J3Xhk=X32CfuMaP{?*y3AS-?{>etpThF5 zmM6>*7L-&e|Il=EECz+lwD;?-}yx2Nij zkkK|llojCPn6R%t&2N&3%GQrUv+9?}%c(veW;_IUBU2+|h`jG%dlxAekY03lJT|Hq z_Q?kGreXu^yiDcP-trPK!Lj2ZFCA?EqNj=EN~(%R6HTR9+$|b}@yoQN!a|^F^LlS$ zd%#Ys-ew)|11>ul;HaQt4nZ?;xsJqV_(b@fcErmoQOi&dWRJi14t{o{=X+hm*Ql+= zkcNmYhE^>Zqpm02a_eueHFttjDd{aqG)(#< zXtO4h8L*!@9d$Qn!a|H|x$~Sj2fv7_?2}1n4A(wk>Uj1HJOb64#KIn6hy&e@VfOI* zaJs|8g;xbl&hDwS@>E!jbB_n2G(Fb#U9>8Kz*{5%V5R@5-mtQL342}TVH~!(_%{bt zB4D6-9~(0Xjy9~tbDaLgnAsBUPrh)?#fC(`o*unh?$nBLyk*T9DCN#QIAL+4RISEp ztAc>s;Hdi%$&-9}TQF45G45muxo5B5Wj6v1Ig?%K1^w*_1EunXxYW+V<<^EwFf@&& zfIE`xo9Zq8Bov48%MFiq8v^!+%5hGN)R91qm3LA-9$~#< zT8mTWSCBsBJnq~9lUe>!f(?RQOfwx&KzxW^E{q@UfHOezQIhivi1h=0Zs{xJ!wz0isGe=S`1E;}+Mql00y-huYq0Og~CIDqK$I_W=8_0j?})0af9rONJ_);j;dj zA2^#OyQAScU8V6Fj3P?qs(IH_Y5hG|_`$Vw-xXnam&zmcrPrHg}>r#wj zOu9BsHmue#i2?SnorI; z05w`#S+!6();D6nLhCvnTj}Zb7&yqJ7vA+jtd``5Xp3QRiPJ{h9xq12Pvw1f8iM&V zq)?%58O$a*6pbGY0Jj46_Kb?h5;PIhHIUQq~s!A>D zpqh3}z>7+MG9~z0Fx;`;cTt!Cv)2_66K?{BdEKP-q?eY)<0;_JkGK0Z6R+p5FEXXy zF<#i6V?W?=!vNUUtePw4&4Fp_8;-bYB1rsSo&m!?fco`p%%q5B&~>RYGnHDM>U;?a z!`g_S);y0u$!Kb7ymT4Yn$>1FegDjB(Pk8xX*aXh!Og2(sdi086G7IA_>qzx8IQ3{ zzdmlScQF=K6HB?Fex9{5A;ebPcfP5L?a&N)6pFlsJlHBH+$EX!ImdOE(zS#YHdg@j zJB9PT|U)g63mxEbg+As>hsST+Pq4_ ze96a0DvB>1wg$P8L$G!py!V>G)$;z4}ehK5%fHP;eX5P7b__kk9n6 zM?yL%)n1&UWR&!J!F_6N*uLB8rGuOG)>@HJoq+&_4xrJEB5-Thp3lB%Kqgc=vxGAY zONh97rkZZ^&@W8?IEs0EBn<5__46n)2+|8_|6ER29&ER&vertKFAmvksJQTqz{3GL zUWrtpuX717fAsPD-7nqJ-Qc9^}NgfFy8qH!ULHlUR1sDt z7x32bC2Hi>>sor(Dn1kd!SW~A4Dc`j1-5Bo?XxL*H@CLhhntTNIz+t3LqqG=%6~og zdEG9UZ=g!+VaVBtdLDtcM{5<0!i5D!5nGk3!fx}#>M1%#v{~HT+&`Mn@(^0Zh7jLN zOG^`lPr-5+;JVgN4oSVs7oh+NBI5IM$2+~?{28;Mci;$ch#yi&#{Ln{E#5slt6&D& zDG`Kyuk~Mf4;efk5OTH9*(j#dzt|2kyWZb&lr)zPq=LTCwwlu3&kRv7(ALQt!DI!iU~{>KTCW)QNO@OfG!=#CSDhH{s(`-m4D->$`IxOTnvbEG?l>&0 zYxj+(;d%SP8kRg;;Sw9)PhpBzR=#m2eci;T@8RaO#1Ngjii~ea3f!n@YDcZ-dQVLG z3Q#8{YTAsAm1X6l-vbh#py6k(L@0YSJwV~J?{80tQA$H5k9%#4$!x}aKKjofw!nHe zFR!_Q!P+;b3f%EM4d^7FU%_~b*>wT|N*1l3gn==p>?eU^2fe(`5jVyLGOow(?~GoL zR94#4w@mw>!q3AU2!<>ydPZsETOP*`Y6GkcXuT6jVI~wlm4sAD<`MTa`0%&h)m}|R zB8}r=O4=f>h_0I(1?2v06KlVR42Q(33p5VVWi-(a-318g9-(ULx+_IN@VQHn?XX+bT zA)k3q>bDtbQ+<=g0(SeLRKgLKeH@MQiJM4mB=1zCl|0JurNc?LfE9bwc{ev9dFQzz zb~^YC!sj9orFz6ym;w9n*V=I9uOmo&Xu@}L*)G`1vbWT`S@aq2KLq|1%IujhOr!h37y5C>XWGYwWLFn*eh=@X3I1{qmDUDwV5``s22au~8UnM{(KN_&EgO z`izCFR=>JSmBN}$|Ct>Ym}9lAjEzZ-0+1fvw>0KZo%~@9g*|0NVJ*NA&>JZbFnR@b-jQe-3Bg8&73b7&6cvm2&0TM%WGcJRFj#)(X|EAn%iucPgzYSqaAT zN1f(5xzriMCG(Wt*k+i@RUIASYW>Q;i?m*tfo?}08YqO;(~H8`I^g__%3DM#l~(Nh zb@4vN_o*X%mROG)pVu%Ad-gYuy`6xnHA4J&?HQY7pBl9Qw&) z!nyNo>RD;J%sYD3<6upixEh0gC)dOcP!Hm>1(ccUWarmB$lpZy8cf%JxOpB=JX?l; za(78))y=W6cO0pp4V8s*rR#akn#@+3NkVQqQLl%ts@W!FVMKXqt>0{tdt!00O<-jU z;dJds#9phz@CE#1xVa)fNx!L-w4rv^pm!?Qfvz5`CYe^E=GRQ`Vy?DVL2DWZ~i7SSvCdN5c6jQqf?sgv4&O~|;y&G$Q>52|P7--*T5b#f5lW?2*))$Zq|EvMa%hjQX09GOOl523N@-#Gvyj zv&4Lr_E&5bddmR&3*QdYt;Y=aFk6OE1BXI^zEX%(LV@ zdgq&wqvq8j@*l5ZQ4_kj`PueV-)mJPeJ%~L3-E71-cwpZ-&Wu;M;V^Uybt+EtQdYR z1>Vd77Vn8?ioVv`pg*)ZW%-_K&~PZAa^K}dwmDd^=Lzt~137W636?pa4b5b76+B7t zzpM?U{%m9O;j>Bm{GWG&|Lh~Z5SEIQO9X^U;5<%qx?x5r=;sF-4lBMgM8EM<4pOv( z_CYGv=xc;T{6o7M+cuu?zzLMWwaWIaXQ@hkh8I$n#88Cy8_P*I?YOUuUiaqB^Mz)l zW2RQy_NPDRH#!xE`rr3@=Tzg@n5d9q9{;0s+?*LTLiSSByI1?G^sj|L3)-#%ynM#Z ze}UfMJx{PVeN-rk{g}u)PgnI_-2?nW8kD`;ld7RdlM5T|LO#2W_Y5OLgXL$1rCU4~ z56W_s%m)OBrnPSf9?1}-5rF{~D&4IQ!LoYylw!>;m=HleG}hM!%jYWmBhh?GR{t0ilM@bJtla;z{;PCq3hoxPfz z+_*1nL87ko>;_uHi(meHX_9^u)&YJ-;uzbe9H%@kx%J?}5mGngnCmy2dB37)7e{39 z`Z{>E+-BspJo?7qO%kb#F5g*ah+o}q8`)lq20EqZVlnZ5qzF?R2%c2H3fCP5pn04N z4S|#X@He66u@=8)mXO8+UgV_2_vuKCDXB)$Fu=L&kk3XO_%u~(g>qlI9# zz$U+9rlNvZm71ErG%$smAX)kSW%k(XA!C5E@a|iw1VD_F2AYjU*!aAd>K_ACC?>zb zOtyq)SemOdFa(8<_s!=^djR9zFSpxU+WV84ZV0yZo*0J!*JHZTO2dxg^9)>v+x4C= z1h;xoct9R!*u@ozW+Yd&j%fg(ITsT3<6&k_&`8NIXb}U@J@AMg>d`W|ZNPak5bz9z zbZ0|01IEqMd4XHu(Dgz?mwM`T#)vL~QTwH*`fEImg1FE&^(mr~r@ggUhU78%ENo#H zM9)`abQif{7KCo(5QP2t1>B9HL_DNBT6sdS-n2fnre4w4{mn=AY-i*TY}TNZwu0m# z%YDS@XwR?woz}Jjzt1KxqZ3L0i#vXNMFuu!I-&SA9yO+j|ZfVb)GM5em~D=J7(@R z6liUMcnbd*#r_1}uhR)r>Gj?)j3SE2aOqD4vd119_2@Q{LB_(gktE@t=yz(0k5&Ps4_{Y}odb2%?IfS-kxZ4E}P z6H4FPsB&c8>LCWM4)v{_l3A@oTX=TG=W$*7M`d_Lw8e4kab~sAld}0Kom^Eddw{C@ zDsxD_#RWo%L1R`uw#{znW&TU2n`CC2hf^Tpu!2|B;lm_D4pphZ8w2N!OSWi0I81{n zo-qTdiAU}ZI5*Qyo8wTzZH8mgB?TC{Ex(z6!|kOMN@v26?~Oofx-CP)V_dNBUU74a z9$OJ2=VP61ZS_{ogyF`QKH8!M&Qvg~OXY{(C^n|IdEQ^OQ-=-vJP$aB)spDP{>3mJ zxUW~EMIy1kf;|$eb!I884CK9E#vdh*Fz9`$9v`v{ZVYjI0bZeBYP78>(KQ2yi)szWFZTkt;@j>=Z6Q7QLB5x`twCt@7_!p?Ec-ALsMSzxAq9Y3%vdvE z@;zy9iT0&W3UTt?N!otq3{w1?(W^Mm2W*7@N`1Vf01(p8Ea`L(e+HRA<2=BF#!|^v zIYuWJAlB|CSZf$R+RjyDHI3Fz=JmckdgN1YM&sSCDhn{@hl*0f5Kvkfw2;h}kab=Y zpr=!UL->TL{tkO?v8@LN9FES)d>(v1%PVET+|BwX*sa8}?kV3WoM7{a&lMKShKGd+ zf(VJceZXvY+`{k)IVn8lyLGA-r{idI$=2eYa69rPOIW@8zX^wsQt zw0;eeo@-#E3}q8S81|GJMqF0<7%F}6g+>Qy?@jE)C1dpL8L?x?QpdJ%E+)gdMb)L9n_ zjj>zzllTR(VwKT|cjFz#y*q$7(oJJY8t`RFp#D}Mtth>v+T2FK!&|1x z9(BLZ81PNbGnu5FW4OXrsWpLC4&*`KjE~tGSkU5ly&8&4DJN9!d_n*E^iBphpCrma zE~CyUkWyE!1x~fjXMjq1%X-*OA%svw5m)(69w#q+k)L39=OkvB3(HEiZx+Q? z<*UpuQ19ZyOgv~i2)V_nLd9sEuz9r*HXCta#;IbPYiBLz<>{5~ugg@iKBPacB*520 z<`limEIfJ#MO}2vg*aB~kyNUUQk@~jj(Hw9)-%{dIn^790ZtrD9ti*O6>}rVKYaq{ z%D&WYn56>U^PL~+P*0i0qENDgDBkhQ!^r=uA$ht-N*+4Ly1Hy>6xZPH z8wkN6kPzJ6T@oCEySuwP1cJM}yL)hVcX#Kmyxr$J-RJ(=fAWyM*P3%kRgF6LbuWw`RJO(Ql>v3^LIm+X?L^@Fj{#> zadfC>Lpi*K7I2A9G6Mw+TjZK6%S$$2oL*h8U^*Mh zl*GtCICHrI-ST`;1!GfZZ8J-&#TiL@C?Cx4(Wk+NBF}polfTJq%+~05_(^jczL^w7 zz3P{n(7!hi>(A{xdF@rwHyLo=msaW_{Yn^pc!M4h3vs#YaY!8F!sSWfRj(K~{X6Ih zY$99mT!d;ZklD{JupWpy%@J;$_ZLrQWoJ&aN-eGQ}dY*3GrS-PW@3EANYw^ z+~_y;nd5nxaw}KQ6Dlsvs%TZg zhC>6Rv26&CuXeN~^^O#n4vyeS#2%TsbSpWgB;8~kSM_Z=n`d2C`Y&c3>6#CA0@w+2 zhR&equ&GGyr>^%JC!!5`EX|uKL3mU+REYy3DEUWzetEu7u?n&&=v*g$=tIpEOkoZ& z(Oh^kID}B>gf%xLmYa_=USo9EzdT%87Nu9E&)i8CRrA}v)JRtEr`y@pTAH0r?OqS+ z?PB1H!K$}fQFW8!%b{K@eD+jw7!H6D+q1BDAN;{C6W&K5N5B;5Ig#qTXQ z=>7uS@L+@Iu=C~ewrFaW!k<@oZ3K3Fv?RbIe&gR&FpyHhwZN)YOvMdEQQ5@ie(TGU za}Ak=1+yK9qNO(#V_`N&iLSrg!6+#l~;}-Ou4J4We!Fdq>iV}ntAi}^0%;-aYj;J zJAPf!42>5gPt)Gd%}oY=t;z2rc#d7L@$?%OGg?ICCRyV@bzYm_mhK{P4j3gE;>q*P6C~S+`T0vSBTA}H9LtLS4KOqdX zVJ6p12>M*6y}B82fbE)kyFOBeyuw#cMBLL{$y45mlMY&_Kk=_(6M2xSeX^@jiI-rb z`G_$$s;kN{Z9y8?czrL^L%c+(%}>Luk6g@2FV{?lQ`5v36UMc7e|MS{4fz~yk64^O z+(h(ULjrC~g*)SDIziQ4gbRBe&9D?$gc`cRDKPTZyRTq8LBZK#KO+b>Bt6+sVJ&+@ z|Cp_*xIsc@TW^F~9${!ZTdoI1Dc^M@Zj9UY%8vq5g^&EqJf9g8FT*B~t;5)~%s_J; zZY<4DM=lKK+d2xp-TajNX_-S!($$fO|MMVI)H^I8F!+Z0GM{0~bExgv2gk-gF*u8K zOl{)IJFGOj*1f){H95fk#e{2BtwupB)P%s{Lw9duBoE0Kh;Tl05Nbt;4Vd%ZXtHsS zylObP)iq$dkzHnWHrRp&#*VoAZFsIso!V-xHO3P}HHSjXB?c@#r{J#e$mI;*3j}O` z@`yMcC*UuGSOyP2ZbdzQHJKXZS|6m1borfd_=Ks06h*jQ`7`LW32U=r-su*%mo5JC z;a=^(`=4$F@1u#43n62r5*e;Gc{3~`GgjM9aoz+ zER5}P{XP~va1oFzs*c_Y5@9l~6J#lr3RY7Ee{c57!*-NXW94(b1pEhPPYsby3aHWE z2cY&axCoGpXhQ$5*Yfx6G=_U)F{L|={v`NrIvWP^c`wn>S{qs_f`x|5s}aSNO-sVC zwhYmE&J3_Se0y6>tc%v>yrq55p>sG^4D|*Z;h1!lC)bHVd<;-N&Z&D|IHLPz6OmAr z-Pn-T-cf4~4_)!YuyEkE&RdW5cEn)lK4B`pN+D0IDEs#9Mt@-p)}v*@nsnlP6St|` z<6Sk8S;bA1Dns&@)xd#^#uj=G3N~b#8=}e@^Ej?rHkFgh`JgVxQdPu>=(rKdZe*H0 z5I`}kAFzQR(hCP672X1V><^Fe(^CJdZeJroCxv(MplBqwPj{~-gqpQyubQBD$fcTJ z3as9Lgj;Vku?@IJ>2So>_+q-^N3$FPSJ^aGp>cS`gXkKg!>(PB#K)7ZIC#nHuh59X z9X~jIL%15afFGtgQm{d9o}Ac;Efb`gF1m|J$c&!P_aK>=&OYgAqyhONI~)vS+mdgvw~;`H zqOv$jC_NeI`GyM8zgge|Kq-X9&;TAHuj%((P@f|18V+&Rla!5?B^W;K&uR9~F&lRu1G z7D0h%ZODNYJqrN7NjJGSpYQ9fnS^M_hdKhe@^bEO)leT=L%o$Eb?Fb`dZ5 z&#~1J0WtSJ99HE}IdA`nA^EXjQK5#hZK`;kN|fey)Jphge!AR`aPc~lKFZ|{etNJ$ zNL==}o^Kk;`6*P(&C5nOUpTq7#fTvX>y{n6OxIxzb)7X`NCZ$(m}ida|E(w@fv3uW zk4E?fnD60(e{md$Br%al~K@Y$?N2%9k_-ZM+*V7%tye&l)>=cPJ%VMi!j zpNK0+-q`DRR6Pd7PK7u&CEJvWUTb3&uvsJ2%ChS%CN4=KAP-74AJihU$2T zPGmmEH#XiOZinzv=~4P8;s0GLAEUpuSig#n9+zHaxpqgoPQnz>?c@L<2ty0@11_J% za(x8u=khM#8_1vm0gRfA{Lwcp$h94t`l-1StT%PC8R$P>7d1)zP4IthGVhXtV}Zih@XgLGh#`?(1N+4X7)qz zW9-6dKRzV<-*2Y{MJ5?8*yU<+DKMu`;A_jRXuy99 zYDRw!cqT)ZOo&KaTVFK?rBcMTFSw>(Fbr zr@G#sNweGSl6$~vJU>?+%V z(YB+>99Vv84`9S>KS8tA?Q%=_N0lBlV0{q+_|NR=(UxN?!hs$(hvF!efJY_~LnbVR z)bq*=0R!>UWX9J8`#)*_-`SrpoUF6gIlOx$?F$4vvQOnm(%}-yF_lNtReZBf7S#RA zOJ}%u11T75Xl}a+Rh8_pT3R#kfKvJ?R451in1HC!3dC(2*2H*teBki_GEqREMoyc? zZrAT(fO8JW=b{1UKT0zaPRHX)>5{L?}VLa6a@e<#*V<&9E+zhcnulaN0c;!M$6e!m|NQTWiY^Jy^+Qq%z1Ni!U*YdVuBPMI+xZ_i`-K&F$~0jZ9F+R)@+B5U#q4uym#cQQwG8h|nm0fggbqYJXx z?Ve$^#VLwGqmd8PuMGY@6bzE#k^~4U+wb_-7(m$m_lx}d;S2)-pN!k_+3B0+_s^0H zy=du|Ts>Qfh?^|=& z4kl0Ao6WDs3(QESG4fK3#}Ao!v?qT?W1A_*3P@+8A!%R8KBsa?q_aU5`i1I2Xz~os zjoc(VRAWflfnP_xbD`@BxL7}8G6)=wv`e&8NN}X>_iX4iSG}rAq|7BL><&p%L)xKJ z$eh$7t^Wiv{lMR+ic8Sm1H>FAzrXo%W4O1`t`cCtrTt)0BEQi(s5$Nr#SP%z0JC-l zCyO-%`;o|ixwQ}w67n#}SP{hPfO42qmI`3xKNYT(C>03+Q_6t!aHx!3XACgUin9Q` zGP!}U60d$rUhMw%;zFZZt|2tL^9oGBOnHMtcF#f=wY%M0nzWpspUaBJeX1+Dez?@f zO9iVY((k%kS4Z@PEk_8;8BPAu@&X6PBNk63&!(Yq212H}+P5V19uxfU*YHsc%3hC4 zxhhu4_^KAluP0f2`>;PH;mU>kJN5fTKT@;X0Vt0_E;`m|RBQ_o<(UP2J!j=$Pci*BlKEdx&qyiD-reY_ z)Z^~M*>y|R-`^w~JlFZ19A5-vNq92dF$xrqULH@E`upMc&|9yanp?bhxzW8u3mCq~ zLL3F_xTy|F`Iuc~c%fd5Ux);#{b?g0c<3F(g{XO7^ISb>KIq1ZCkxd}q7>k>xvt=a zMkAtn8a6EA>u`Eu3rOV=Hj!*M#;de(-zc!(Z?NcZEk$OYvE=h1;`n|?;`&BNbUful zyxMLu|J5V!2y>y1lR`SK-%*q6J*_9`VDG$R@>IKF(ht#y3MlR4i%eNs9II@6Uo+SO zWW$jiRJqJ1x?SR{42iC26~BoLgvO2a-G}V&|H*>gA5&NZ_tSVk362|bUC-qBr#=R} zGDgX%tEt$ZZBP7Oc&|^U8oJEW^-L_*N7Eo|5p&(+@Jf9hFqz zubQtk#)M*0>!osXGy({D0+qbLS~`~t^K7~1viz)C+uM{Rqd1E_Af`8dxY(@XaJ2sb z!wS|2k*QRnmDc`rRB~`IR~}Wa*)j$AvqYGI%BwQu#?raXG%|p3mf14(dA5NrgP4}1 zvWB%-1Um=8I#He*f-Mv^)cxX2?ZOSf@v?-$rI&UOu<{b)us?|IWs`g9GGYMsP>{R7 znXk8}t$EyQ;=$>a`+=e9;L(vKqY$!zAYpX&QKV3F!TUTOuXef9KeBqARVxO$33WvppPy!q_ zDYfxbE(lr9Z3d!q6w<%bL+R9>QVTI60Qg80r$0*RPlW0XBy^dUEi$eM-nzSFhfvh{ zY93_7abQUa4LI-m6&BS=uT68qJ&D7jGm`Oqa`iXt9Tz$*HA8JI_Hrw$HC)Rv7g5=4 zdopKGHiW}VG84If@q>413YQxL%{MQ3p+D#^9y>U^3pY*E+Fcd48N6GTN`Eb2%%kZUH5BwW6vcZ4sf)Bza{@ z3B)1ix@Ygts*T*RL4hwh{ej0{I2gH_9pcI@UXzK}TZQjYP75Y-f_C>Itgk%k2n|X# zCFAg8H->$MCUTqS5K3ed_x4n5zWp2~#)89Xez?cpJ zCX~)1Xb0^Kp;}S?Dfzy9;qU2f>`i*T795 z_x4o{hppy_qKKRJ_Yr0@8%E%>7Uw>SnNBD9QDQ(5iStyw=HA`RlI*I4;Pg4v{ye6mo{8M+CGCG@>c6>a0aa|U_o1qt`|ylcAmm3QE>=264|#*X zrO(+BR2co^nhc8@fDa&Wd#o5E8#HEAM#_AG7~pTs$lwXEe69Yz)<8DLIGQZ1ianNi z&+p6IivROwcbI=Ja+NyMQ&6>7q#4<~yyC4g-IujA3pR;??WABs)h^(w-Mi;G%5pvb zy2eoMqFLF|f$wvBEw`EnrO{`W^+xLWyG1957#Eqe zU-oq#W3oYV{hWaA>cL!Qsu8lW3eMDw~H6IepRl0)9B=WdMK)ius zsnp8M_jpX+4J|0F(OuQ7HI`?W-kI#zx~k8{h?gTAPhp{*Bi`(If6Mu6eSBH@22?(X ztapH09g>>^l##a@F9Thzcbjt88eh77^hFG{+)u%fh$bQ~=V)XS9x1oGlMpG@n?<9H z$siI>v4bz#?d~EZa6%Wiw=842X~=niuan=3R;_Ui8kP0+p0w$7e#FPUh`=o{37b|U zUm+fPs)5_9-6U-VKxcX*No-eo&M6fdViWZpKOOGB4k905`uDPHFHrqOxhZ{J4=!;jssC!2lOn@UBdSDv$`3TIj#NF&-*87K{&+N;<*3(N6N z8=!3sVz}phMe-oYTdpxkUOcI{1e)ceV0$e$GnJTaQdYakrm%ynBV~Jov2bfUFq2>C zj^{p2C&7a_?dr1P(|HZIIDdHg&9#29&RcS^K#9GDBdz6()|pPnJ>OHuh_wXjfQjxt zjjQ`tdnz^V3%njEv}psSY#IT(m<+hYHu|w=?7-!&=tQW2y~)$ZZ5srsG;tFl+~je3y?r{z(yUAs2$Fy+do11e;F~c3YXd=D>5Y;Ka`oEbX59{l3Wu3!$dWwJ?|AF38|Maq%w5+M@o7c(#oU2BH%CtM$iTI6F>Ny0V9H*K!fjiInkrWunR?NXOpVCb#$DuN1 zg2jyXsSJZb3w~KU!lzs0|CA!`@SPOKGnLaxW(-o39LFtBVw_w>U#HRdT%n;rbU%WC z^%Impugc+a17nu}0ko+p)?azT}@W+RT!I1;V{b6u0KzQ-y)?>o2aurP?749}D zaPjrOd($oMzx~4cd}ZXv2+#O zk~=={60j%68VrJ#HC8Vm(@0n~h+DF&d>+X}Tb0+0GgcmlIwsxXFUvy9(G<6= zZoVjf!W&lgpaC^j*S!W$y`FnL8MNr{bhh7|LimSdLc<*HutxBokG?YeB3SS&PlLd30pP6vY(zPkpW3{^UnphDbY@m!8tf*_Z+F z17bUoqE*mlJ6XOM`4dE>DeQ|CEv=Cx>4eq>Qq0IGqsRTd&V&pwD1YESg8r#@tGLr} zQ4kU1psc%mp-+RES&5k>l!K56ME*8IN&$jIk-l7;AUV~t>hH337Rz&Tw<2GErBCBK zL=j`%DF_fDCp-YdW~3HNHbgt@@y(SRJT_bYBgLA99@Dwvehhl80K2_B=x|m9mHP#C z^l?pp8d*zq83*;7(Qnpe^VOS2U!6c(dlt({5o-6wj zeu$R2CNgZd)kiT4cFZ)%seU%`)hc*$(@g|2Q?oE z+>@YZDX<}4;|b7@N*$ll$kbyv4S2u>_z(A10ua*GVA7%fJETMKfx6JQec_%fY+ahV zzyEN^H2=eM(K?Imb$wQ*tQ;%FLA^gFg!0wwBYmQW?Oqm{9X5xBYpD@ybBhrUKc1HP zCi8bzAbr|hK>qg2Q26Z^%{i9`8IaCRalC`i70Mj%wK~@T2f;hB#oaU41dta@derW^ zZ(PmH<3N0Kr9ypr^JTmB$ntN-+@yt@ixcEw#q2T$6QEV>>5s?vnnq-%%eIxwHRD`- zZ+c>RPx><0V9eBF*v08pFr9JBRIbZ?jZA`JF|3)h&BnvV?T88J=oSt1X#jM>fu60a zt2GMcWd_cZ>J#SBP#RTiSu-2ACmnRfyVhFhVAIA{H?+OWm}<40xaN=^qe2a>ErYTA94`UxJ?>1*gZZ3um5V&2sWg^ZBb@xz~4ng zATe&#We|D`(B^I4@IL`?fecLqe>padQt->`E4ew2Cf1GnVaLl=m=c|+>Uz~AifyxM zpw;gv5DW>i4%l#vwCca_{8(%`zL^!-P=nGL{4pse}iKm)0WQW)OEA!KX+B z=3d5GkMY!sx!oG)2rhl=uE+G`Iy*U0Jh8Rn{Rc$r{C?29g~8tNW!`yyJNV!sxWYiB zanCO`I>JqreY^=_0Fu1Yddqg#aA(@mh{RxpZQBkQe5pS^vXFJ>x;kZ|&j?*sS_#9H=5 zNcLKf`jJk-j`qn(zOmlvMy_QjmZj%U%Nbf6sKwr37cuzj@Ku-jb3>Ge(CoXXTLgUeb{(~VE+>-U*?4KrWg&J?U($> z{;qxfVsu7%Q_>mnWX=kEgi6Ut(A}x#<>IT-3GcdIACW`cM#Z~okp|lbbOo9uYm{-E zzfiTxKPAmC?qpn8CU^xYETbJXx}kNi^*hlC0KYoH%rEx%sg;o6P@+L~*_{aZy)8{IfbaNC7i?rs6Tg)2;3%mlxSf)>GC-T`0#m7!=)rb&kNX*3xwG~F zc3T9n&QN-DX%N07LcGJk0)gD(g|s_3cd*A6vv~#+#K;YZg|2s5HD`8mo?9kV03*Ym zTLtkc=1Uc=JG#2>45Ae)(xJzxm7YN?{I)JWZ$Xm$PG*sz0j+`vu_7ua%e zP>lSI`{H1Ohxki3iV@g}53sjmh$H6J=Vb*jW{&%I3M%*MP?qm~IIifBLB!#R>YZN( zCe(ysa5k1MHhU=2|1Q1qfhZ;(o9t-nECVk`q5^tbiW39X&@&jY7N;G_`&@v1r!0dR z|4V@VZ{Y*tAqQY$jL@_qOQ%$~LE|f0RUUtilGBwnIm2vv zIFt8Jf2i$FIndB|DmQtqbP@eFf+TpxqvdbJ)a)oFQpKWO1L*1ZiT*Ghv|!nr6rZ*r z%*5m#?3iGZiCtol+@sShgBF$cXsl*>H&fV;cj2)uu=!0mNqKd zUwsu!6NxX8?9Ij&eO+g-%!qWdV6-~+A(eX!g4Rsz)i2g)`dDN#E2DTl`#-w?g4TG< z_R}%t8rqdvwo_!nkLM2L(2lVei@}56Au!r8cdRm-g+$%#^W5CtWA>p7#`9;O5%KP` zuQz@zC^|VUu0Yo~y{oA`%-a^ZaSwPjBP0m(+;xd?QdLxxY6@l<$tWV|dSz7EVo8*T zgdx|N?JDs{fRVosC#<@zo_zhm7ZL zxz^wV^=5^`@UN95ZEJ&WhIH1x7>#{I9ha-nvmDF`Z=$tDyG^237cm%)pZq;pJ!FI6Mph6<>+J-xv#SYDKu3+2%;GbMw9vz&dXD)ec`^Z zYhsL^Tp$Nc#8F6ovLdH~>LR5YUrl1h)xRrj$9ip}n2$jSm=uMk zYjcQZj8iGr9UZBJxAJ&PZu;BUj_rZ}g{Z&(Zj~MSV)SjD41L{?@OXY1gdGz{2xSCx z&w&U;xkiCbrV1%~jBsXmTMTF~{Jtm6Ur${sIpS+bgHUj{MNKpC%7{q((>W!R{E^tq zLrB&?aVWig-BK2+bq-j@_x>qq6rn42!NtapJBVY}fN~AHEpG(77g&_jx9AbVN z0mH=lnfWxlkV(C3K2J)>U%pQ{&THf9kNupK$dI3jr}(oWz{pFI+HO}xaAG!s;NV5= zHx)RJ2LL*)yz)-1~cps0Uaz3-Z zuVsM&$`Juy?Y{z>{C`s7PoT?BaYYx06p%(sStv5A(mt$oh11yOT|M1?N=Nz{5=!ElG@5p#HX9|@=ErVg8F15h{ai1-*wEvsUqcx zHJWuaXusN#=ApY3lPg2vy=r5rUv$u(+94Cl;L*04sNPyXf5WtW`P>vcf}_&&d^{g- zY9$JVS{j(a5x4;0^DgDR3?g8Gy;c` z@8jjNvtpEXvn;JkySnpMLYEIu^%;jJ6X3{hLvwYk2587ID&-IZyvL$Wj+Qv}^AttV zat#@2JPG9$YCq?b*gGMMm+bUf2gufIwKj<5bY4CxxE$G3%;anL#LT+>4vs9dMddX0 z;|tc%%-DAkZL|B*o^2+HGx&*O?gcl?p)G~eS6Xhp)oWAXVq;19FRRXe z{)1lALhLybt%s;xcA z&uqUU@6Q+%2|*vT0fQq<$PHPgq@y@5=S>XSfW=KC724TwGKMA#<qY12iC}|(2XD?NRzAaJ35<70o@o~~hm>d@}1WTYMQo*6BwK`YToY9>ZJ*utE zFz9*c_#pW%7bA&DmSSC5_c#*#WU_6@@h*iOs}xg3Fy&hIh`APvSzeMu*QQ#O=Xrmz zE0R*Z_kn)ud(t6J7XDdBW)5spl>!71O3J&mb6?b6x_{6hpmjPD@o@TJvG4i3Rymz( z1-Z$hO%|ifz{0@2b$Y(tEn6W?k=%Q}zdHHSdrDyibhLbA@x_<}7Jga&07ml?RNfAS zFiVu-5fO8Ip%I7G;i$Tv*JpkCz*~*v$+iPGj@V*~?gvP`)iY{WE+Ed9H_Ez(Oh8c%>H$H_d4AP~)z)>@bxjYPEaTBE}F7H87lH zT?{eYv}9zREO*^4V;2^)BrQz20q%iTeGj*(Rj;@B(`(sZB7i6$MI`u9kxHrp4*JG{ zKbE)IW)>Iq=-fT0{d4I~l>M>L{r!3UA7w@KX&v3Bfv zns3L~9fjIm){ADq4l;X}qy;?8Wetysj(vzCAp~!p_O}0}Y$_NUN&XG27-ag9QX;h6 zL_E49VQJ&Bq2J~xY}hNk<<}v7+ca8BM%+>rzpiM;8i6 z=DEcRKi9d3yWw7EcXfGBVv$a_zo|5$?h0Uvqp|_`o3gC5WtQAmh=|oPl}otY40V>O zIR)<{l~OUFDoVQ7DJoOyYxKS=)K}K&`7q`B@^Got@pkRbJ&4q<(*?nK>qrnoj`vtD z&-YE=@{LRzNlb&PXfjA<&vympdzdfR_^=AmM?D)fO=E^oC73KY=JoILJG4rhAoyEf z9f-oIOAV?@e6PzsoLd?OqLRmhgqlz|{lebMQIM&!yjf7|kwg~~GY)Rb?7}Y+v56+T z{oy?tP`2@8w#bCf5snAlk6N+v7P8;E$H?7HhJR9uQ}`phf4mMS(8m4>+|s~OJvmff zEo@B(P<*{89#$C~_4f z=W|`1=tK{!rXoJ4yrGqhPBbf6c3g9dBE#G4SK;Y8Mm?p=2m0^W>WyDhhqWtmqLA)= zHt2aL)7I;UMut^1DDf4syySNZh{=?%;b5FW?M97k*94rtbsO{7+3~D+M_bPV(cqLp zJITyLD`O!U9#%zrC9p*g|I)vfSWZ3y8qQf^yWOVgrr`6gNc(ehD9IfnmYAso28$bv z$u9EC)tRnO4!bGja5)PNlGHX=nALbZjOC#^5wNNZaqlg4Cv#NUoaT| z-5$HIZt(tJ|4I;S6TK+`UAkXA2mc9m6y&TJ%zKeZ95h7$s0Cg$=4gJPgV49fL&TV zPlI;@kYZe@9aNy1KaX`bM7=Kzx@9^2y)4RnpZrk$5%7g$237nSuLOHci73cyRa9&* z1S$KoiUWz7$nGbhj?U-GGTtG8X_a>gNwXalQJ*|E%sZ9ckOw~`QyVBu@8~}KAK$}h z-8@R6=b)f{Pyn4oEZY|0PRsCkq#fq!)S6?!0kFJ1(T#64DsrAeGI0V(baXAk@9gq%YC#uCmoh50 zT>@!%vYz|YN=Y(ZRLDLJpDEnZ5~3ZRVoH}4<()6UZmHi5^5SR4(6nnRL8Y2qs!E_b&Ir? z%S&>&oADoeXCq2U9O7JtZgpUxhI1K|g70R_X-c|cn=31|g4*h6obFEZwpUMw-s$L< z73)z_N@$p_LRr>S2ku_;lhr=_TSz2^Mw&IBPWJ|dD=F}Zwtx-iY zwxaTVe5DjR4`bbola{6vF5|E-X<_ZY_)YOr^I8zflB?%9M2x9&Uy}d^0mZ}Xk@d|R zV%b6Nk444S^D1hUs&~Nm7%Oe2x71|6%b7R||8?$}nybI(s~737RMe-16?J=%9BGys zA(%JX0H@FE1tbMrQvi1T7Oa>@7L?))Y-q?;XF1MoLdGba%wlH65kBg2)M(%hOu`6$@S%`0@9UYD&p#A$73c&#_QiSUrzGesh$z)4G#HdS`MJSmxa5&A_3;cKC7 z|6(lND?^yOpH;Pp+3!UD$?S`H15vF3&3E7fJIEddY?32LC+UJ}p2El88Fa8<_(fvg ztqdL#;ZUK~)~q{Hb|!qM?8MCXS>$Y`iF`R>Qs$HZN~`l5SAOUZ$&$_wqWWYFt|90Y zgsX`@q;RM!GA~c}jlfLSI>Pb{v=LBh7 ze;_tdb2`4)+fs}9a7fciuhi-nPI_Zx{}aVS66zr1WV+8dXOL!F01DPMauX;V6~>}C zhOj}s$aThgs5Y*wF{JCacc3myi}!%3HZ7l*;rLmr0M0pay@aF(z8aChr?2l1MLX(K zOQfG4qSEZ2rq`-vS0f1}Jo7kIzun3qksMAe9k9CHNA(dl;N4xpAy7Ts5?&3Zldll2 zwt-Qcq&t~+K_{!%=A8Ud=Qmk!r9Kcs2lS~e_s13+m-h8RCQX#e%I zVyqpe^i@ibcjSF-nZ+IPE7f%i%P#keH`!fbWx>3~yN#x<-}Wy$8Zo}5_KF`?9~_Lv zE%nEy5ZotiCFrat5cfO}{6zYBSXvkk9LgdcVBy7!$5YMh3{iJ(H^(YB>SG#R)fa+s zQmzvCv5)UHxK)1AABhTm(t39Z8>HnKb{63lBYS8dvUkmtPW5dc#obCdqsvrUYmCg^ z=Nw2M*O_#CF*e{eGcR?LpFI0#S z4X@UqK$oeBB;_x+H~0|<_9IvoQ&SA88l+j>Uch&i^&d4o;{Uya#Q)sEIxMDk`$Gj^ zhpGZhH4#53)u!f{numf6Pv+n~Kz2>Q-os>sYC&W4O^k}FTQ>{o%CXZMykEbo-2MIS zwZBP$gaD`4hpeA}R8K>h@1od_Due%mM)(0(#lPb&k3;jbFfPG@9kW|5vBU+ai~ufj z_}fy9a`T%8rN2jl!jb?{3FaQKFCt#z7_erT1Qs&<>;O3eVkhyzdE_lQXbc?&2?KiC z=0`|>ieO1hs_TxYBU&`MXRhqK!5H$Z<|FL6OEnzS391^S@%oxt)m!iHfJ`)^^-`@t zs#`@OW}|SvK$hf@t~jE+F({Ai?sKpa_W;Ko+6sh{mQ5|R2xx6mi!$*%xKMs|jJOLA zkNKxukMI!|%>$Rq6|RLW;z+3wSyV!f?*n{lXAR1 z_>+_JW-B0-hTuOfWwS$Wq`SiD^5MsViUS!7HM|Y*2v+uuCf751$l;um7A|>scql7I zxftlJ=qLJ8cK;Vm8O?`UIed>d`_h??oK{{NNLCdLs*TN;w2~qi?hquY{~A12O4Opr z{4QnhI9N~}Ib494XMS;~O?@&-t=p8Itbj!=0;sHn!>$;mUfS*t3@hc1vA^vZ@JuAc z?ydCel5wv9ii+@05?xe`!5tlp^x6{qU-EJ9SI6iX+6CDF_8yWvjZopPQ)E9MsCx4o z(~eagvf_NhIdZ3J^h>16-nd;K$p_5=6E40oQA7rXqWq2q=dVL{h{isM zCoNXzZ%O40zsM7+jZ>X=pva?M(jcD?o#*eWWreSfk6!*gZI!!pSGgdFQUNp6EO(Fn z=xWGjtFmUl9n@a#c|Mo7!tFXT2YQo1BKa9z8%+7%omsAqPQ@}=YN z6PUlJH$FmwgE`%u)lj?Exg4%~|KeFGF8b)P`z5>qExI~VZRAy&0RMpidvlzl({2By zFsmQGfL=T13JINzkaAt{P=8x(U2<3%Vm>B{$cMC8hd%xX!Td@UpQ^_}1#7R-7@$Ru zkUXSO%0D^fl$fn*rCR&lAdJvAB0ybc8@k=hKHIfBTXL}VQ~gPLHrW(v$u<*-^d2Aw}|`T^fA71tBwwFkEZ>2 z@_=&Opd+sF%1LB#=V_(w-J;oZf+K!lw(Vc_UoR%aWjbz@%+`-0>D#{GvA0{#9NQN_ zj`D-1nIBG&v>azAHL$FKMoy80$6bvkXqE-F0u;ty?DtDiSe0};rCNbCZqV!Pu|U@^ zf^Zikk7X0K4G3)&jExJ^>R3+t`8Rz0m3z}Iy^wsdbMchMDv4Ne3Vn2uA|Q6z#8jfo zKrQ?;IVZ~vQBw#6B%;I4-wzj2L}{$rB5U-oaplwncaZ{k;twk8RiXVqU6lwfmYwuu z9l$1sxq)V4yq*DlB`8p-LXqMWD#3bP&7 zfm^HgM-lY<1xV1ed?o`dd_~-o8cL~CwNav7wcbZhjTXm0g9VW~NTqc-zI@0#rUP1C z#K3QE)KG2XNd?m(C`X9D7$hQ56h4)`i6T5}#_-EwQZ4%-42-9+T5h+2JHbFHABn%B9ipZd8?Se*Zk5&p**GCVjqEwrlp zyDxs|f`>yf!A~r)ksB-J>|C-9&YP3(&9~be+r)Q#OuEl*cJu23F6;`HA*mTrnc-Fo zm~~9mqP^>_auj}2kh)1F;{)+urSV&`M*U-D)`~+pbi>T#1_~HdQW+4ZR8?!9W=lnz zT9)Y|m6wCHtir$^G1@psO!w|MbbkRe^6@lImK>}eG|=xl&%{D8185Pt4%*cIf9^B4 zaI~c+;wC=3x^EY+KKYo_e$`JORYcM|aUL&+(GB(FtEL!F{@pD@SZ5aGw%3%79(wYd z*Q%Eu0`KYJ&4Yv2u#jtjtxvU_h3@8@h*LzAvo`+zLXhSj7R4^iodv%HlHc{rOl|~Z zpT&1Kr0s3_UfuVL)0g`y>Nl10P;(on*syz#h#c7^(e(ev*Hwl^*{y3p8VL#M5G16f zLmEVBkZwglLb|&_L_!IXmhSHE?ig}t>Fz!Yzu5cR=j`)`Yi6z)-uGSc#J%q4eiDhI zRKk?s-;P+Bo{r*lC;}QYybsISTI-iJFE&1d`T+Q)%aO6Q0=Msy%`BN{*J37mbDJfW zI!xvde=T`W*AlRtc{N8WZ9l1}z*=yc-+ieca9>DL^pU?F6~Vo-#Uhj~d})W??g;V` zaq1JILM1-7EjNxnf1f-f+|x;*dd1 z4bNN3H(?g>!GlNwEH$Rj5*Wq3}^3aKiZQD*hqu~#&^6F*NcQE)M zE8#K8ojKeYZ`)_r;1@ioLBIZn^tLS1MPf?MF>eTOw#J?3uw$>_G$XGtZ>T@XpeWVz za=qA_9Qp>K@rSG+FPtI2z8-k%yX-CWTa^MUqtUDSB015V+^;b_ez|G zRz6WXXE9|+jhf56)qcxuRVKN^@i_PlZ|sK732}0!b%N|%G^H>T-)W~D@-P$0*3%49 zP;QINI^W4#ligtFGLlVCP%560ckXfv^S-9zd6@=Ejs;JzYyKw1 znL{G9MQ*C!n3w-!@bkbwnWQ<=Bi&}Jf?m~46-4cgitMQ7mPy~HKaeyx`!cAli{A<2 zx?DQJbAGH$8Rv-}`^X~OMYnB@k9?k=l14QXzLgmt?*)puQ7EpY7* zOpmFS>+JJq7p%{gu{MzsE4cDZKCf`A?}V#t;t7QUc6UoqY)kBSWHn47Q8(G-mzwY9 zMk1M|9q-QP&aYAMdDv~Lp3a=apIOE7oLFN%pdIHH6jK6C#{?yUgX?u7N01%ES42Z_ zlRl%8G_fz8g_wQ*MHJTCRt1Yd4%l_V4}UWcn_O_7-ztbhz0<@oKsre!UzY0DYAgY7 z2h!iCvH1%yu@9GU;Nx}4KIv5mLq&!|;NUO~yx<{tgJdI#AyOuuD0HM z^;(q{h}of6MVkd$l?6``Q|jcR=%b#ZiwJUk7!ua>h`Xw$yyc<4*~X_l5}>nAA&^TF zte<1TT2ojSg+;f~i&!^8sMDe1mQU_Oe3A{$LEx5~r->bI_+TIU5IhyyXRGukB7tWu zdOo9170A)`KB{-_MZbOof3|kD4R$Jk@^NfRTH$n9CLbWXu&&js!WZ2Ye)A&q$u&>?y zojm@zuMZx<&Z!a(#$X+WEc2$U*Powo@YlZ8mV{l5D7StCF!0YWkh&d;E?fgf2r7oF zuTI(XvJI(skj5gPEbY}iUAlUh?l5K{>6C@THbCzy)5EQt<@JraG!Id0?ahNrH0tYT zwO14#w#U2j9;-bwI*upetI+YNpE>z8fwowt6zPMW)VRyUkRE#Pq=%2Aj|TC2a}s(B zMU}1gCKYR*`SkAX%}a+B=tWf=ff~#3(?tacEn1&M152Z5Yz~Aqh_&|C|M2pXWoCUq z$aA#b-4z^)wnZ|!Vn~6OluCGXbhfZ@&jp0Gh-)rGx)fJ#Hx3Nab@-7tMBn&rs)y_R zvN0NQswp-~x905`WD#c+$yFs<$=xJau|9pwgzlrM6S#VpeOv$V9kc7;ZRFw!_j=D| zxzBl_8Lx55Y;vkVt>WYcjQ{6q*rz66@WUBPhZ@>)*CX^(Bm%mRLmB-F!g-VkNiMablku+OS?xdAoC;;153c= zRW}<_c-Um?hAtEBr{%WpH|nAA?`}3LZC3=~i{SUJ6PRT#Th2qogyp6o3OR*7DDC6tjo8kDj%c?!i8C@^WTa(%M@& z{4s84Jwh;&z~6WCvmrMrCC8HC-L<%^+7J_JhW5rVjvveKeVPO#Ky3hu!spI{&h zYMtfHyQ_gWI^2y?YM-98_Qx#uSKrnKfV4nF`QX>v3lTsVY+C+(Fh+eq1CGZ!*>ZI8 zE}VqFBf`V`mHyMw5weT+ z`Prlg5(0vv(ObtOKojXwn`OtxI{cm_7fPAQ(dCiwYGOuY<6(O(Jq04b&f&;%Y>g!< zQ^Rt;)HstYz$@XvqI~E7g&=K{<(q&9k1Q+@a@s_~wXgW>?c2AJliAYH*qovqU&qY5*d=Up{+WhGK+{og zJ?=E{&n*iL^}01IcZv2prsh-*deZU2N0Nu&v87(b)IcIMAk9)c?Co zmP%`ZcJ$Nnghrs(zN)AgD7xe7d{Ak(1z|Ep?O;%@xjiAS5jSr=y{LJ`>!`LeaN3;^ zIMQ&8nvOV(*X)Shq5l}EY3bLX7G04o#7ashfq;WMN@{C0H@{om))12)5;f#+)K?kd zzf@Zo$Ze^_M(e$ZhEGNp5&SrX+%8N{`&prI5>vFlMR05wH*H&?7zzNL0b#l?B?q1i*>}>i`)l zZ_(hZPsx`Pwk5e{2dgTMNKNd|pOfjSMko0`+9!iw!h4QU&UDDRMa^gH)#><7yOXJb zr1g@R-d?>x40b1Iol}VA(Ai+``^Uxplk?dlESMCG6V4!)mFPj*+a^if({lwZuYF-U zoP{6ZSg1J5C~u=K2!9J`{LRpPfet$d1x3amW%0023n2)EZVuQzg0js6dg>6^45?~dXXWc zl8d4=S6$RQ1*B#Yc^jQ_zNSB9un%AH{wR37vT-zf&;KU77o#Ko{6QkbaSxi{a=gCy zl0|!b^pV%s8qn8uq@o6>GLHm6N7wp}fZhrfKs!4-RaTAvsid@T2j3^f+{c|VnJsDb zQ53!!`)OXJrNxx~6v^YZhC2pn!rc1h@~1_szSY)`=&#ugB!6=@+T!%`FI#>zpis*i zCoK(pVP3A=j5^t(`*8Ubm4r1C0O9tof?<2}srU4zz!<;UcQLyWC6kV>3Km$j$P_0n zyb*%JtD5p>FR4*KFwau^eQ$jeY~v8b_I&plX4}#J2l!){7p0of8!%hi`h;_RI}?2U8q+i>zsP`XC4vt+%@5 zJ)fAu_>a4#w^3~MsP`%|n67g!#TP=6Pk6L%0qV2Pc2Ab4fDGKfVIEE_a5X=q1rTyO z@UX9cYyJpdi!Ka61?=i1B`*}(quutDo_V2y*n*_fv2cH*Y{Q@Po zquy4)dE)mi@rY5#tn>>`mL=wWtvB}U(O%Xu9={-?!ZLyHyJ#PdPzovi;*$1uH2{2j zf#x1eha~_?9bT*H_reNtsV~2L1>B(|&#w9TdFdp-%zk7iA@D8NJEB9Jf7Yfr(ZU%? z#JHfU+CKYJy~o?huW7lntkQwgg~TSw&1Nl=vh-JbYT&Zu!BcoUVtXB?P+qWBUNf}Y zzJ*`nzQ1^JgKFD(ZefEI=$vewieIpqjSMhsKYHaXVbHWDT`65^7-)s;WxrWZv=G)G#Z;B<_?jPniAqJ$%3nLNdZ31h zG?CbKUbG7snSe}G*yj()8?a=#n+{uY0EC~SS#H`L3p$pDgRY2c{_@RljNq5>;eHLy z0fu;6A<|0b+kY!TxEJ?&feS0?u$i}hIE1il0(5l1)e+#2Uo0bJ45V@Re-=;Sw&+3j zlN7F0uzgN3ydwT!;-UYGAB5zc|EF=f23D~S4t7I!l43q%dFqSTjkD2sb zKI~D@9rAY}$5?`}JF@}#u75!93xvquqjWCwcpz2(_T*J19ze$vJ;kf$oz;yIUM|6U)7p{HmW_FE^}>KUtL@{H=8>LhX`LwHeFZuwmDtv*?NfnlV3h4 z;`LEpz?jL2=Jx^z7xAj3T-ZKC0snt1=dg|tc2DAd<4z373?)AU7lP?hF(CE+Mk_x8 z^op{9AVMUd9H^5gA-#wH8SHgo8}sQPi?V0upU#Q^_6*A^jYyKkJbRZcT08Eq$9xrp z%yX&ZGrojk&Ardg4rd+q`&qpIewN;x7A5zd$Y&$E^+4-em&IN{$Yc4N8e2KQRE{v_I7 zWSBoLUdQsU;+a2W=_VzG)m*$EHhSuZJx8JGM5jCd{rMjvsWQmxjbiJSllCtqeZ%gV z+FbVnTIgl>Yo>$t-8CR$aex}2*W&i;L(S;#-!*Omu*_t-%w!CdU%M=S;ePiXPAuSI z3aB3KZm5q4dGHd{KSv(jiwfKTcJ*_gZ~O_Mm3EMiukSO!W?|;!cRgjCtFrc0N_!>Z ze7N$2oIJ^DCme^&^$Z9O`00B+BxLInh-cQRv9iAqUBRkyyI?aMh>yjlmReCl0+LIS z_JDe_spM`P)t6KYJ=e86b#n{*YbO7+o%@LJeWonzyaPEbmg*9TRDVI&ShdLCJv|jt zkM__}Q9KNRKdAa$U!uT`!|{PADd+$YLKQ&uD>Ws*!*+60lQ8$tr@0)emm$eORPRT! z-!0(j=+JD>#v1NH>rH^Tg3UuqWvxPu(tsMfjdw3>WN?BhvP2p{Gsy2izQZge7ehFh z3UYCKb7cb9-eXnP2KK$XcqifbH*uB?DWH!y;h9pVoGj?S0{i4c>)@cgZYTRGp!4Xv zS~5!n$u3BLVb@s4A2Bj1wiMU_pc8@hoK=*uluFC z{aBC-ap}Q7HzashBqprp=1m|u9JPE+T}i6#_Vnoo>>HP)2>HRCq z{LdSJw8$mU8lk2HLRqPxYL9}MxdfdM>-H}nx-8B0xFlFiftoGO*aLU zcD{7Idp@_ArI`8w)U*-IxEJ7RoqK~Xyx_wjd z!M}{zeH_uo17|dj-!R$GxF$r?X+Yvk_V+H_7liL?WIg^(Q%;41ergyZLO zA-;V;R;XSa{-WG$JZBY=uUN|-oXv26k_leAu{6-{@bf9k!o}J46qU*VFo&V1w+1z> zz#a~RHi#b{;=Ga43SUAe;-HvJOnpeqB|~5P#XE_#FHu12E0hP}Vh%U~V@GqAOLzO! zx2*xnHFhSTPKcaIy+~Mh;QMo`8^B2!;nG=EKwA8AW(+J~dOn}>#@)?X(q@O#muC+{ zVBak)0PQoo&9P_MiAaw;K$qfbmVD*IN9cOR?(mqU(+wq!jJ*Huzb2v-hW{y`scq5bxqc1maAzYiZ6OyOB7{oAiI z!6a+(%hru@FaBP#6a|l1bK7Ha!?y4i4}c95zDNH=Tl^tl{90)UqkHHSqJ9k|XnnN; z4D_!MVJGh__-sN5!s*m~Ux?B3`MX=%om!DZ`Vy>_4G?{OZn zLo+b#&4?%xg8hcKLnOI{o){LM&WgnAax#YwLGW}KR8KOYD63%lZB$t=k3DPdxUD~f zQh9oMI-{pmK?{`{$%Q=P;o#s}co8WeJg>Cf3w`qZPiiW0u@4AHM5Jek zBN?*NufINx*h8P3O{F*y15Ae1=jH=pr2I5tk8mHP3!w&`gCb9<>lK892k=e+$K0NH z*mD5NUb5*A@wURs-&8LgJmgWk!iw7GeUqd7tkz*b4#b@S81n}I5z)LO_XcI#)7fqJ zT8AP>MpHVidFN>RlX}Et5r3J}ATxN2n&u`GMk^reu zuPezNRFS^E1sZQ-6y5P6a3xL~Bk2P<;u~b!$#}7ud~j3f5)7|4!B9(W*-1>~@~IY5 ztQ?cfsM?e0JP<^FC=C0oAoBRoC+1q%;$!+!=rjIvAiyO3*<2Xz^HE{LrBp!@;ZHy_ zB9K}J^)^z{mMTaU>k6@{UL1FTk-ro4X8TQEx-L*-mMlVqpha#e2;Tu&zvv05kxChK zV)%Jp_h6C`%aQ3?SA;KEX1}sb%XE=awDUDNdj-7}W7!Omo5}AM@MR+gi4B+9J}H+P z$;Rv)>bY!C`&uDc?`&-`ToLj+Fv`ZV0gYKCsF=~UxAjcL$1i-ybpW5qgB;wBqxsM- z>?bqadY&&L5e_9oZ0&&PCe{0MzP}vLpGT)y+<>vTud3$|hhp0o+I>)^K}GhrCT0*C zeBS`uci&5aC(OTE4Soj+`u-piQO)A1GNSpQfR5S+f*hU?i`6kAf;B&V0&K27SNU=@42%q*7BNhK@0VR7iIjr6Ul8+HCPb~73qKN8Ea@&Nhv)B#> zk{57(-Dk;^NyY>5uR%r`B}T$yMG(WyxvKU&-)1T;M|bCH4RsB%WQsx&Ve|6BNV&!=yqp3K@#wX%f{j$N zR8`0*@2mzB1-b_Z2iWLLP{7mg$1H+Ltf6nsm$!Mm$^a#ODcrQtH>>QIqITbz^BQ)ZQ z$ax5Ke7LMuYH4XnJK-Lim?VD`QT$8r5kYd$JFG;@#+wR71g>S^`JP}+gB#~AsI~QS z&$B6%kK>ZXt_+>t;@T|IQR~?fy1V`c1R9^ld0*?)yOb*n-+@SPBvx3XEEUd1i$U6g z{kg~eQ9{#OPQk7@urrAXq`9>uv*_Jo?I&m}77Nju7xm|^7n>Q~vc7Foz7KA}j zQugB=Qw)MQ`_7+yD13niC10+^Ec<;fV z9mPv5uWunLQg{zlfq?UKHX6r2l6>XgkD zM$8w3@J@vcdVeO1CL+>`_9%K4w!Bb9q#i95VfvQGL~Xjjs2J*G1*AY#=v8trvQAYC zLE-;Tuqw3XzCIO9gk9lb?3pPyGd8hD|N7YB#AGBbB6>)n>!;TX|0r8<9F5`}k#g-{ zqAq|F+2fCfUqQlOg73IJDFV3K4dxhV9~_m(12M^?FZxAxHSyF#LBF6MZ121DXAz&F zfCIQHz$2mYCP0YIdu5iD_((il(A^~!9Ya6;i}n^p$fLF)5S0>!guigM`IMd$!s{Kc zh7ddlxMb4UyU0dCGK4%<$z@fNTH%dd8=;&sG0X{1KRgZq~j zhqFxHR;z9~xu6=7*pbfr)DU*!qS{GM>d*g-5TpaUFEYnT&hI&d|BSuF$>CHtSyxB` z`DSI}a}{GL{+&&}P>;+*)pnqKeOG^0z%&^DC}{6@#T#lI3K55W6ai8S*Sj|4%v2E( z6l&@okPn#vo?*ZeL_;imt!L8}Oi&5wCUEfD*yt?Y>_}18OS1R%Zh*4K#$B8%Wm@JBM;1LnS94QQhlMU= zr^49by~BZfK;fE#jc5|=SrdE(g542xnBc`ARMsB?t`%>oFnsKRWa@|qF+8vNAi#Dk zAn1Kb`W%000UX9}ot`ONXg(^uxjgyim){eCQERu2R_}F;<&C9+f6QX32Y|Ew*DPYfslr!XvdwNL z5~++UuKfYS{ejUXh6#)N@g#cPg`Hi45Sk4Rh48m|cE2~z1z5{~tPs^!NQ4UiJhD(h zp_SPg)EFE-#%-oZ(C4&J752^Z$$uUhU-UHK-D4>|i2;$D8=z-5HT7g!aBNBy#IGJG z#!To@Y|2w~M%WWMnA)RJ<2*=jk;i$>lTwTd)C$R%rI*Oy1%nK+Och#l;jkY$hdg-j zU_2dJFQp@Z5+4Dc9rtip!;ZS3)I%hQvePY^Q6o)2@H9v_*&@(~z#ERjROIRAQ`T2@ zbg@yFL^sWvdbCX{o|6xna2=+Q5rDP;MsL(pbnfeaeWQI=$M zUAtg=qE_)cf2h4*rx6?3dj`fakqO;u8;RWqlTNLq!j*^+UxYqXCrRHW-eNTn3Nz@b z2uL!+G+|DPJloydE6fRW^{*E|w#iGPj8sXtn5$6)T-8>M@Z786i=0#ROS?eUjw6Ge zyq-2fMoGV3E_@4f4}g0sPZy)FxJl zqXRTojm6h5>>+QB?V8*Mn->h6z7MA@EkUcPMHsnIv@5AAkvFqbAz!I!lL$dR=AEzR+5Nt9E!~f zE20P}6||_myzB!)N5%Jl=4}0 zzY9x7_IV#pArelvxMO<|&B-|@Fef0u zK0Y_^Lbi@tIg;tpq2pmcxHHyWuTfz+Z{fpjNtckV_#MHKwO~*}4|^za?$l|sz#x1E z+M+q2xhF3smQbc#b?JwiS{_sF?k(cFzWIIGVb;i1;}YAq;hfd;*6pHK@AjRlnX{#P z=%t(8VZ(=%tunvL(*g(i=8hEy%fWo-9axLrXfQ~t88J3bSp?y0$@nYE1;g%rz4|wE z$VM-kX0b5sP4y7{!%r_Z2D9=Ji{5u*KLcWg;+3fa)4ugVDa{R`OuM%_D+0;4=F|9M zWp?$hJg}BpIurB6n$)cr`N{Q-wRRiWc_u^l@XI0^>YrfXkSV}g1An|&5RSynHD|%F^euEIIghy zQD!jyaZ$6rh9nDJU9aFn?L zY_hNJj75uiwie24CS0%>b0&D=wy9E}%{w!8F{XQ{rt6%paeC?j8Io(|zro4TF0)O> zVkfFF+i*-MTk=vR+n3X%yh)GIWy=M4ITN2n33^8<1N#j?xA=954!4|kCzLSPZwsnA z?I(@8$=*V5kB6SebA?Zt%( zShx;#+AyA-A6yqmH>K3Hf%ptJm$+ef$wzOj(&w5RQV

0Qlqf3@gXD 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 OKgCO`7t_xhd;Je_Un33x literal 240829 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 z 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

L4^-Nh)#wPE${iUtS0*pS@b5c( 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 Date: Wed, 6 Nov 2024 20:06:24 -0800 Subject: [PATCH 153/205] feat(repo): don't run workflows on release-please branches (#18459) --- .github/workflows/bridge-ui.yml | 3 ++- .github/workflows/docs-site--preview.yml | 4 +++- .github/workflows/eventindexer.yml | 2 ++ .github/workflows/fork-diff--preview.yml | 4 +++- .github/workflows/guardian-prover-health-check-ui.yml | 2 ++ .github/workflows/guardian-prover-health-check.yml | 2 ++ .github/workflows/nfts.yml | 4 +++- .github/workflows/protocol-monitors.yml | 4 +++- .github/workflows/protocol.yml | 6 ++++-- .github/workflows/relayer.yml | 2 ++ .github/workflows/repo--auto-approve-pr.yml | 2 ++ .github/workflows/supplementary-contracts.yml | 4 +++- .github/workflows/taiko-client--hive_test.yml | 2 ++ .github/workflows/taiko-client--test.yml | 6 ++++-- 14 files changed, 37 insertions(+), 10 deletions(-) diff --git a/.github/workflows/bridge-ui.yml b/.github/workflows/bridge-ui.yml index 584afad9af1..863ad8beb52 100644 --- a/.github/workflows/bridge-ui.yml +++ b/.github/workflows/bridge-ui.yml @@ -6,6 +6,7 @@ on: - "packages/bridge-ui/**" branches-ignore: - dependabot/** + - release-please--branches--** tags: - "bridge-ui-v*" @@ -16,7 +17,7 @@ on: jobs: build-and-test: - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false }} uses: ./.github/workflows/bridge-ui--ci.yml # Deployment name follow the pattern: deploy___ diff --git a/.github/workflows/docs-site--preview.yml b/.github/workflows/docs-site--preview.yml index b04a3548a5d..d5b8a5df14a 100644 --- a/.github/workflows/docs-site--preview.yml +++ b/.github/workflows/docs-site--preview.yml @@ -9,10 +9,12 @@ on: types: [opened, synchronize, reopened, ready_for_review] paths: - "packages/docs-site/**" + branches-ignore: + - release-please--branches--** jobs: deploy-docs-site-preview: - if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' + if: ${{ github.event.pull_request.draft == false }} runs-on: [arc-runner-set] steps: - name: Install Git diff --git a/.github/workflows/eventindexer.yml b/.github/workflows/eventindexer.yml index 9b5f47bc2bb..e69ed716b8d 100644 --- a/.github/workflows/eventindexer.yml +++ b/.github/workflows/eventindexer.yml @@ -13,6 +13,8 @@ on: - "packages/eventindexer/**" - "go.mod" - "go.sum" + branches-ignore: + - release-please--branches--** jobs: lint-eventindexer: diff --git a/.github/workflows/fork-diff--preview.yml b/.github/workflows/fork-diff--preview.yml index 9ecdbc4477b..a3c75218541 100644 --- a/.github/workflows/fork-diff--preview.yml +++ b/.github/workflows/fork-diff--preview.yml @@ -9,10 +9,12 @@ on: types: [opened, synchronize, reopened, ready_for_review] paths: - "packages/fork-diff/**" + branches-ignore: + - release-please--branches--** jobs: deploy-fork-diff-preview: - if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' + if: ${{ github.event.pull_request.draft == false }} runs-on: [arc-runner-set] steps: - name: Install Git diff --git a/.github/workflows/guardian-prover-health-check-ui.yml b/.github/workflows/guardian-prover-health-check-ui.yml index b1eb7738658..7bf6a6eef0d 100644 --- a/.github/workflows/guardian-prover-health-check-ui.yml +++ b/.github/workflows/guardian-prover-health-check-ui.yml @@ -7,6 +7,8 @@ on: pull_request: paths: - "packages/guardian-prover-health-check-ui/**" + branches-ignore: + - release-please--branches--** jobs: build-and-test: diff --git a/.github/workflows/guardian-prover-health-check.yml b/.github/workflows/guardian-prover-health-check.yml index 98d0267ed26..01c814a72d3 100644 --- a/.github/workflows/guardian-prover-health-check.yml +++ b/.github/workflows/guardian-prover-health-check.yml @@ -12,6 +12,8 @@ on: - "packages/guardian-prover-health-check/**" - "go.mod" - "go.sum" + branches-ignore: + - release-please--branches--** jobs: lint-guardian-prover-health-check: diff --git a/.github/workflows/nfts.yml b/.github/workflows/nfts.yml index a7a8b5664d4..5ac04faffb5 100644 --- a/.github/workflows/nfts.yml +++ b/.github/workflows/nfts.yml @@ -6,10 +6,12 @@ on: paths: - "packages/nfts/**" - "!packages/nfts/contract_layout_*" + branches-ignore: + - release-please--branches--** jobs: build-nfts-contracts: - if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' + if: ${{ github.event.pull_request.draft == false }} runs-on: [arc-runner-set] steps: - name: Cancel previous runs diff --git a/.github/workflows/protocol-monitors.yml b/.github/workflows/protocol-monitors.yml index 796dcc73123..e59220bee69 100644 --- a/.github/workflows/protocol-monitors.yml +++ b/.github/workflows/protocol-monitors.yml @@ -5,10 +5,12 @@ on: types: [opened, synchronize, reopened, ready_for_review] paths: - "packages/monitors/**" + branches-ignore: + - release-please--branches--** jobs: deploy-protocol-monitors: - if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' + if: ${{ github.event.pull_request.draft == false }} runs-on: [taiko-runner] permissions: # Give the necessary permissions for stefanzweifel/git-auto-commit-action. diff --git a/.github/workflows/protocol.yml b/.github/workflows/protocol.yml index 6acfd7ce020..913e10d9108 100644 --- a/.github/workflows/protocol.yml +++ b/.github/workflows/protocol.yml @@ -10,10 +10,12 @@ on: - "!packages/protocol/docs/**" - "!packages/protocol/simulation/**" - "!packages/protocol/deployments/**" + branches-ignore: + - release-please--branches--** jobs: build-protocol: - if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' + if: ${{ github.event.pull_request.draft == false }} runs-on: [arc-runner-set] permissions: # Give the necessary permissions for stefanzweifel/git-auto-commit-action. @@ -67,7 +69,7 @@ jobs: pnpm test:deploy:l1 genesis-docker: - if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' + if: ${{ github.event.pull_request.draft == false }} runs-on: [taiko-runner] permissions: # Give the necessary permissions for stefanzweifel/git-auto-commit-action. diff --git a/.github/workflows/relayer.yml b/.github/workflows/relayer.yml index 7f4af982d0a..69096c96642 100644 --- a/.github/workflows/relayer.yml +++ b/.github/workflows/relayer.yml @@ -13,6 +13,8 @@ on: - "packages/relayer/**" - "go.mod" - "go.sum" + branches-ignore: + - release-please--branches--** jobs: lint-relayer: diff --git a/.github/workflows/repo--auto-approve-pr.yml b/.github/workflows/repo--auto-approve-pr.yml index d7de7b43a1b..7fc2d401c33 100644 --- a/.github/workflows/repo--auto-approve-pr.yml +++ b/.github/workflows/repo--auto-approve-pr.yml @@ -3,6 +3,8 @@ name: Auto Approve PR on: pull_request: types: [opened, synchronize, reopened, ready_for_review] + branches-ignore: + - release-please--branches--** jobs: auto-approve: diff --git a/.github/workflows/supplementary-contracts.yml b/.github/workflows/supplementary-contracts.yml index f942e62677b..396d268181b 100644 --- a/.github/workflows/supplementary-contracts.yml +++ b/.github/workflows/supplementary-contracts.yml @@ -5,10 +5,12 @@ on: types: [opened, synchronize, reopened, ready_for_review] paths: - "packages/supplementary-contracts/**" + branches-ignore: + - release-please--branches--** jobs: build-supplementary-contracts: - if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' + if: ${{ github.event.pull_request.draft == false }} runs-on: [arc-runner-set] steps: - name: Cancel previous runs diff --git a/.github/workflows/taiko-client--hive_test.yml b/.github/workflows/taiko-client--hive_test.yml index c9d7e971fee..bf8a3312d14 100644 --- a/.github/workflows/taiko-client--hive_test.yml +++ b/.github/workflows/taiko-client--hive_test.yml @@ -7,6 +7,8 @@ on: - "packages/taiko-client/**" - "go.mod" - "go.sum" + branches-ignore: + - release-please--branches--** jobs: hive_tests: diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index df3a17e0262..54f4caadb76 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -7,10 +7,12 @@ on: - "packages/taiko-client/**" - "go.mod" - "go.sum" + branches-ignore: + - release-please--branches--** jobs: lint: - if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' + if: ${{ github.event.pull_request.draft == false }} name: Lint runs-on: [ubuntu-latest] steps: @@ -30,7 +32,7 @@ jobs: run: golangci-lint run --path-prefix=./ --config=.golangci.yml integration_tests: - if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*' + if: ${{ github.event.pull_request.draft == false }} name: Integration tests runs-on: [ubuntu-latest] timeout-minutes: 15 From 912e76f8c73a859cf9400f1d8c991cfec8eedb5e Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Wed, 6 Nov 2024 20:14:39 -0800 Subject: [PATCH 154/205] fix(repo): revert release-please (#18461) --- .github/workflows/repo--release-please.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/repo--release-please.yml b/.github/workflows/repo--release-please.yml index b3934ccc1d7..99559795b17 100644 --- a/.github/workflows/repo--release-please.yml +++ b/.github/workflows/repo--release-please.yml @@ -4,11 +4,6 @@ on: push: branches: - main - tags: - - '*' - delete: - tags: - - '*' permissions: contents: write From 5b4b0cd271534aa72d865afa5fc55e0ee4b16b73 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Thu, 7 Nov 2024 12:18:38 +0800 Subject: [PATCH 155/205] refactor(protocol): extra a new function in LibProposing (#18456) --- .../contracts/layer1/based/LibProposing.sol | 129 ++++++++++-------- 1 file changed, 72 insertions(+), 57 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index 9e78516baa4..4f6788a480b 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -149,63 +149,7 @@ library LibProposing { local.params = abi.decode(_params, (TaikoData.BlockParamsV2)); } - if (local.params.proposer == address(0)) { - local.params.proposer = msg.sender; - } else { - require( - local.params.proposer == msg.sender || local.allowCustomProposer, - L1_INVALID_CUSTOM_PROPOSER() - ); - } - - if (local.params.coinbase == address(0)) { - local.params.coinbase = local.params.proposer; - } - - if (local.params.anchorBlockId == 0) { - unchecked { - local.params.anchorBlockId = uint64(block.number - 1); - } - } - - if (local.params.timestamp == 0) { - local.params.timestamp = uint64(block.timestamp); - } - - // Verify params against the parent block. - TaikoData.BlockV2 storage parentBlk; - unchecked { - parentBlk = _state.blocks[(local.b.numBlocks - 1) % _config.blockRingBufferSize]; - } - - // Verify the passed in L1 state block number to anchor. - require( - local.params.anchorBlockId + _config.maxAnchorHeightOffset >= block.number, - L1_INVALID_ANCHOR_BLOCK() - ); - require(local.params.anchorBlockId < block.number, L1_INVALID_ANCHOR_BLOCK()); - - // parentBlk.proposedIn is actually parent's params.anchorBlockId - require(local.params.anchorBlockId >= parentBlk.proposedIn, L1_INVALID_ANCHOR_BLOCK()); - - // Verify the provided timestamp to anchor. Note that local.params.anchorBlockId and - // local.params.timestamp may not correspond to the same L1 block. - require( - local.params.timestamp + _config.maxAnchorHeightOffset * SECONDS_PER_BLOCK - >= block.timestamp, - L1_INVALID_TIMESTAMP() - ); - require(local.params.timestamp <= block.timestamp, L1_INVALID_TIMESTAMP()); - - // parentBlk.proposedAt is actually parent's params.timestamp - require(local.params.timestamp >= parentBlk.proposedAt, L1_INVALID_TIMESTAMP()); - - // Check if parent block has the right meta hash. This is to allow the proposer to make sure - // the block builds on the expected latest chain state. - require( - local.params.parentMetaHash == 0 || local.params.parentMetaHash == parentBlk.metaHash, - L1_UNEXPECTED_PARENT() - ); + _validateParams(_state, _config, local); // Initialize metadata to compute a metaHash, which forms a part of the block data to be // stored on-chain for future integrity checks. If we choose to persist all data fields in @@ -284,6 +228,77 @@ library LibProposing { emit BlockProposedV2(meta_.id, meta_); } + /// @dev Validates the parameters for proposing a block. + /// @param _state Pointer to the protocol's storage. + /// @param _config The configuration parameters for the Taiko protocol. + /// @param _local The local struct. + function _validateParams( + TaikoData.State storage _state, + TaikoData.Config memory _config, + Local memory _local + ) + private + view + { + unchecked { + if (_local.params.proposer == address(0)) { + _local.params.proposer = msg.sender; + } else { + require( + _local.params.proposer == msg.sender || _local.allowCustomProposer, + L1_INVALID_CUSTOM_PROPOSER() + ); + } + + if (_local.params.coinbase == address(0)) { + _local.params.coinbase = _local.params.proposer; + } + + if (_local.params.anchorBlockId == 0) { + _local.params.anchorBlockId = uint64(block.number - 1); + } + + if (_local.params.timestamp == 0) { + _local.params.timestamp = uint64(block.timestamp); + } + } + + // Verify params against the parent block. + TaikoData.BlockV2 storage parentBlk; + unchecked { + parentBlk = _state.blocks[(_local.b.numBlocks - 1) % _config.blockRingBufferSize]; + } + + // Verify the passed in L1 state block number to anchor. + require( + _local.params.anchorBlockId + _config.maxAnchorHeightOffset >= block.number, + L1_INVALID_ANCHOR_BLOCK() + ); + require(_local.params.anchorBlockId < block.number, L1_INVALID_ANCHOR_BLOCK()); + + // parentBlk.proposedIn is actually parent's params.anchorBlockId + require(_local.params.anchorBlockId >= parentBlk.proposedIn, L1_INVALID_ANCHOR_BLOCK()); + + // Verify the provided timestamp to anchor. Note that local.params.anchorBlockId and + // local.params.timestamp may not correspond to the same L1 block. + require( + _local.params.timestamp + _config.maxAnchorHeightOffset * SECONDS_PER_BLOCK + >= block.timestamp, + L1_INVALID_TIMESTAMP() + ); + require(_local.params.timestamp <= block.timestamp, L1_INVALID_TIMESTAMP()); + + // parentBlk.proposedAt is actually parent's params.timestamp + require(_local.params.timestamp >= parentBlk.proposedAt, L1_INVALID_TIMESTAMP()); + + // Check if parent block has the right meta hash. This is to allow the proposer to make sure + // the block builds on the expected latest chain state. + require( + _local.params.parentMetaHash == 0 || _local.params.parentMetaHash == parentBlk.metaHash, + L1_UNEXPECTED_PARENT() + ); + } + /// @dev Encodes the base fee configuration into a bytes32. /// @param _baseFeeConfig The base fee configuration. /// @return The encoded base fee configuration. From bc0ee9952234cc6722d3a0e9d9ebd92bca706999 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 7 Nov 2024 15:34:40 +0800 Subject: [PATCH 156/205] feat(taiko-client): update Go contract bindings (#18462) --- packages/taiko-client/bindings/.githead | 2 +- .../taiko-client/bindings/gen_lib_proving.go | 2 +- .../taiko-client/bindings/gen_taiko_l1.go | 2 +- .../bindings/gen_tier_provider.go | 33 +------------------ 4 files changed, 4 insertions(+), 35 deletions(-) diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead index e5421357157..f875d71bc72 100644 --- a/packages/taiko-client/bindings/.githead +++ b/packages/taiko-client/bindings/.githead @@ -1 +1 @@ -71cfc5ce1ef06dcf099a4ce9b22bea6100406148 +5b4b0cd271534aa72d865afa5fc55e0ee4b16b73 diff --git a/packages/taiko-client/bindings/gen_lib_proving.go b/packages/taiko-client/bindings/gen_lib_proving.go index a9fb2d453b6..07079d73e3e 100644 --- a/packages/taiko-client/bindings/gen_lib_proving.go +++ b/packages/taiko-client/bindings/gen_lib_proving.go @@ -31,7 +31,7 @@ var ( // LibProvingMetaData contains all meta data concerning the LibProving contract. var LibProvingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_DIFF_VERIFIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_MSG_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", + ABI: "[{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_DIFF_VERIFIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ETH_NOT_PAID_AS_BOND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_MSG_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", } // LibProvingABI is the input ABI used to generate the binding from. diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go index 1bf4df704ef..1301db5dbff 100644 --- a/packages/taiko-client/bindings/gen_taiko_l1.go +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -167,7 +167,7 @@ type TaikoDataTransitionState struct { // TaikoL1ClientMetaData contains all meta data concerning the TaikoL1Client contract. var TaikoL1ClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastProposedIn\",\"type\":\"uint56\",\"internalType\":\"uint56\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init3\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastProposedIn\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint56\",\"internalType\":\"uint56\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastProposedIn\",\"type\":\"uint56\",\"internalType\":\"uint56\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondWithdrawn\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastProposedIn\",\"type\":\"uint56\",\"internalType\":\"uint56\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_ANCHOR_BLOCK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CUSTOM_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_MSG_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIMESTAMP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockV2\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockV2\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"livenessBondReturned\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint24\",\"internalType\":\"uint24\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"ontakeForkHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"verifiedAt_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastProposedIn\",\"type\":\"uint56\",\"internalType\":\"uint56\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransitions\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_parentHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TransitionState[]\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVerifiedBlockProver\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"prover_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_rollupAddressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init3\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastProposedIn\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint56\",\"internalType\":\"uint56\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlockV2\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proposeBlocksV2\",\"inputs\":[{\"name\":\"_paramsArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_txListArr\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"metaArr_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.BlockMetadataV2[]\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveBlocks\",\"inputs\":[{\"name\":\"_blockIds\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"},{\"name\":\"_inputs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"_batchProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastProposedIn\",\"type\":\"uint56\",\"internalType\":\"uint56\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadataV2\",\"components\":[{\"name\":\"anchorBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"anchorBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blobTxListOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobTxListLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"baseFeeConfig\",\"type\":\"tuple\",\"internalType\":\"structLibSharedData.BaseFeeConfig\",\"components\":[{\"name\":\"adjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"sharingPctg\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"minGasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerifiedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDeposited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondWithdrawn\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastProposedIn\",\"type\":\"uint56\",\"internalType\":\"uint56\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContestedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProvedV2\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ETH_NOT_PAID_AS_BOND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_FORK_HEIGHT_ERROR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_ANCHOR_BLOCK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CUSTOM_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_MSG_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROPOSER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIMESTAMP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]", } // TaikoL1ClientABI is the input ABI used to generate the binding from. diff --git a/packages/taiko-client/bindings/gen_tier_provider.go b/packages/taiko-client/bindings/gen_tier_provider.go index 70209eb847e..bbff66971f6 100644 --- a/packages/taiko-client/bindings/gen_tier_provider.go +++ b/packages/taiko-client/bindings/gen_tier_provider.go @@ -41,7 +41,7 @@ type ITierProviderTier struct { // TierProviderMetaData contains all meta data concerning the TierProvider contract. var TierProviderMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_daoFallbackProposer\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BOND_UNIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DAO_FALLBACK_PROPOSER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GRACE_PERIOD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinTier\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getProvider\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTier\",\"inputs\":[{\"name\":\"_tierId\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structITierProvider.Tier\",\"components\":[{\"name\":\"verifierName\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"cooldownWindow\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"provingWindow\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maxBlocksToVerifyPerProof\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getTierIds\",\"inputs\":[],\"outputs\":[{\"name\":\"tiers_\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]}]", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_daoFallbackProposer\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BOND_UNIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DAO_FALLBACK_PROPOSER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinTier\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getProvider\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTier\",\"inputs\":[{\"name\":\"_tierId\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structITierProvider.Tier\",\"components\":[{\"name\":\"verifierName\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"cooldownWindow\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"provingWindow\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maxBlocksToVerifyPerProof\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getTierIds\",\"inputs\":[],\"outputs\":[{\"name\":\"tiers_\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]}]", } // TierProviderABI is the input ABI used to generate the binding from. @@ -252,37 +252,6 @@ func (_TierProvider *TierProviderCallerSession) DAOFALLBACKPROPOSER() (common.Ad return _TierProvider.Contract.DAOFALLBACKPROPOSER(&_TierProvider.CallOpts) } -// GRACEPERIOD is a free data retrieval call binding the contract method 0xc1a287e2. -// -// Solidity: function GRACE_PERIOD() view returns(uint16) -func (_TierProvider *TierProviderCaller) GRACEPERIOD(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _TierProvider.contract.Call(opts, &out, "GRACE_PERIOD") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - -} - -// GRACEPERIOD is a free data retrieval call binding the contract method 0xc1a287e2. -// -// Solidity: function GRACE_PERIOD() view returns(uint16) -func (_TierProvider *TierProviderSession) GRACEPERIOD() (uint16, error) { - return _TierProvider.Contract.GRACEPERIOD(&_TierProvider.CallOpts) -} - -// GRACEPERIOD is a free data retrieval call binding the contract method 0xc1a287e2. -// -// Solidity: function GRACE_PERIOD() view returns(uint16) -func (_TierProvider *TierProviderCallerSession) GRACEPERIOD() (uint16, error) { - return _TierProvider.Contract.GRACEPERIOD(&_TierProvider.CallOpts) -} - // GetMinTier is a free data retrieval call binding the contract method 0x52c5c56b. // // Solidity: function getMinTier(address , uint256 ) pure returns(uint16) From 591ee8e44348108253beaccb7abcc871829b482a Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Thu, 7 Nov 2024 10:19:55 -0800 Subject: [PATCH 157/205] chore(main): release docs-site 1.16.0 (#18458) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 7 +++++++ packages/docs-site/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a5630301506..64a926cf7d5 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.15.0", + "packages/docs-site": "1.16.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index fcb67c43af7..90673b442ff 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.16.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.15.0...docs-site-v1.16.0) (2024-11-07) + + +### Features + +* **docs-site:** update graphic for hekla network config ([#18457](https://github.com/taikoxyz/taiko-mono/issues/18457)) ([1d9b753](https://github.com/taikoxyz/taiko-mono/commit/1d9b753d7163104e5593d3c46d019d9cdae7d549)) + ## [1.15.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.14.0...docs-site-v1.15.0) (2024-11-05) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index a46fc88c3d8..0f94541139d 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.15.0", + "version": "1.16.0", "scripts": { "dev": "astro dev", "start": "astro dev", From 0b1110159201f94ff5a4df528eab60b306d4fb25 Mon Sep 17 00:00:00 2001 From: smtmfft <99081233+smtmfft@users.noreply.github.com> Date: Fri, 8 Nov 2024 13:54:59 +0800 Subject: [PATCH 158/205] feat(protocol): update sp1 to 3.0.0 prod version (#18465) --- packages/protocol/package.json | 2 +- .../script/layer1/DeployProtocolOnL1.s.sol | 2 +- .../script/layer1/DeploySP1Verifier.s.sol | 2 +- .../script/layer1/UpdateSP1Verifier.s.sol | 2 +- .../layer1/verifiers/SP1PlonkVerifier.t.sol | 14 +-- pnpm-lock.yaml | 92 ++++++++----------- 6 files changed, 49 insertions(+), 65 deletions(-) diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 06ef101d309..f8a526c81c2 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -52,6 +52,6 @@ "p256-verifier": "github:taikoxyz/p256-verifier#v0.1.0", "risc0-ethereum": "github:risc0/risc0-ethereum#v1.1.2", "solady": "github:Vectorized/solady#v0.0.231", - "sp1-contracts": "github:succinctlabs/sp1-contracts#v3.0.0-rc3" + "sp1-contracts": "github:succinctlabs/sp1-contracts#v3.0.0" } } diff --git a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol index de02f6254c7..3ed3290160e 100644 --- a/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol +++ b/packages/protocol/script/layer1/DeployProtocolOnL1.s.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/utils/Strings.sol"; import "@risc0/contracts/groth16/RiscZeroGroth16Verifier.sol"; -import { SP1Verifier as SuccinctVerifier } from "@sp1-contracts/src/v3.0.0-rc3/SP1VerifierPlonk.sol"; +import { SP1Verifier as SuccinctVerifier } from "@sp1-contracts/src/v3.0.0/SP1VerifierPlonk.sol"; // Actually this one is deployed already on mainnet, but we are now deploying our own (non via-ir) // version. For mainnet, it is easier to go with one of: diff --git a/packages/protocol/script/layer1/DeploySP1Verifier.s.sol b/packages/protocol/script/layer1/DeploySP1Verifier.s.sol index a77280321ce..9f6f5f898ae 100644 --- a/packages/protocol/script/layer1/DeploySP1Verifier.s.sol +++ b/packages/protocol/script/layer1/DeploySP1Verifier.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { SP1Verifier as SuccinctVerifier } from "@sp1-contracts/src/v3.0.0-rc3/SP1VerifierPlonk.sol"; +import { SP1Verifier as SuccinctVerifier } from "@sp1-contracts/src/v3.0.0/SP1VerifierPlonk.sol"; import "test/shared/DeployCapability.sol"; import "src/layer1/verifiers/SP1Verifier.sol"; diff --git a/packages/protocol/script/layer1/UpdateSP1Verifier.s.sol b/packages/protocol/script/layer1/UpdateSP1Verifier.s.sol index 3e5fd060e0f..a9d74e0004c 100644 --- a/packages/protocol/script/layer1/UpdateSP1Verifier.s.sol +++ b/packages/protocol/script/layer1/UpdateSP1Verifier.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import "@sp1-contracts/src/v3.0.0-rc3/SP1VerifierPlonk.sol"; +import "@sp1-contracts/src/v3.0.0/SP1VerifierPlonk.sol"; import "test/shared/DeployCapability.sol"; contract UpdateSP1Verifier is DeployCapability { diff --git a/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol b/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol index 0ac7dd6c365..9291354fb43 100644 --- a/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol +++ b/packages/protocol/test/layer1/verifiers/SP1PlonkVerifier.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; -import { SP1Verifier as SuccinctVerifier } from "@sp1-contracts/src/v3.0.0-rc3/SP1VerifierPlonk.sol"; +import { SP1Verifier as SuccinctVerifier } from "@sp1-contracts/src/v3.0.0/SP1VerifierPlonk.sol"; import "../based/TaikoL1TestBase.sol"; contract SuccinctVerifierTest is TaikoL1TestBase { @@ -29,7 +29,7 @@ contract SuccinctVerifierTest is TaikoL1TestBase { ); sp1.setProgramTrusted( - bytes32(0x00b6e596137c781eb0d53073d86d8a7ab56cffc5b5f04b5297ef2e62ac0c56bf), true + bytes32(0x004e167a367ef584f118c2fac6ffdda82e5349913a165703fb1895f0da412bff), true ); } @@ -42,8 +42,8 @@ contract SuccinctVerifierTest is TaikoL1TestBase { vm.startPrank(Emma); bytes memory sp1Proof = - hex"8fd4de722cab7cfc38b19720f0152ca6311a0a907219bf8dd0c449fe0b3e919f786053d124bd3e9bf8cfa21c98cbea4a43cf70c9c96af9a867a57277a763f5d19331cb772086bb134e1a27d16405dde7b59a654d2146a7d822fa9782e461b3cb4eb272000dc4d93a25a6be5cf1006217fb4be228102117d0a317052b4dd0434482ded2021ab08599ceadcf1cc15c9348dd32ec50d2b6c4b646e0c12472b266832b269d0926a6e6b95b473aa3fdce76052ca64818631c2bcdbe603ad8f87ed0bdd01ab9a00c2e00635547b918704c8ea4b5c7d3e1e8ddf7720f1f58178d10b254ce1090e20fcbdc1f89ccfc9ff88cc25ff96ebc683eed7f9792584446f923a7b30e0d248b133655fcdba58c2c6b8f4b79f4276211df7a78ef5ce97063fed0ebcbb005d47804fd8a75f57cc5f0524ce41601dcbbbc21f73eeac25cc28ec8b66f1e03e8a7202a878463c8ac8038639e4fd211be2b095055e8f06392e0c82c1bae65f791f0c92a6e77bec5e2b62812a9060949dbcca69f714c8b0cca0272d718c9c9b5d410cd2ebbdbb9a143dea6eeb17f39115475409169245f3b61b1c46a9ea6a3296797820c8892a15001619923a972ddbbd8c7dc16df8a698b63ff84f5b34236d464ab252495aebe4902046fb4879e5ca9be9a51b26d672718491adb533ab900b40ef3e70138310b399d6c544e35d4750d3ef44cfa8b721dcff6f5c55a5587da65c1216a26550a3e35dfa4bf583b90e99b3ac051901b689b17ac0390f6e49a334c62d6f1082cda2cafad0d059e00b61173d7ce925fbea86e03c8fe76d47d98ac2090e6051f4d0528029ff31747260bdd9692dc105bd598fb4816a45ef9e13705714fcdda1c19e82a87e5dbf0caff752ce3396a4ebe6d9399c4d422285bcfff0cdf81bddf19ffeb7b405da2dceb60e661c597226eaba2e753e81a92ad19cec6510bd82de50beeff70200e2241cf7fe9d8270c9a4779480c49995d5c99cd9ae7d5c1f9acdf1b4635b78b4a2d8975ce0f587eccce699f590594d837426c5bd59fc078f811ba2717e3816f83cb191077a3ccbb5cd09adf92ff69bcbc9fcaf0fd22bc0c573750251553c7f2cec501e12761e48a9c7377e307c5202ec5707ff6b9e41b3a3085380fc07b0fed0e3abf32aaa6922d7d9649f8a13a1083fe58ccfa9501757be0e85a2ecfd9c2bbeffce6922a421a2ccdca93c7632974a8c6618558e5a33eb4d8ed1d"; - bytes32 vKey = bytes32(0x00b6e596137c781eb0d53073d86d8a7ab56cffc5b5f04b5297ef2e62ac0c56bf); + hex"54bdcae329f3f04a73d0e51b60e37a3dc2eb812b6c818895fbda375c24ce943d40a1a3541655911e01acabfb1ed0a04027e641f5e492e883d2ca77a03266b485a61563fe1c751fa9821101c5e755f8963df8493e967224867963a4b459457ca1ae23b7c62e7b320dcb495d119ca771ce2030f6aeeb44c328bc03f8a892c69da84aa43ca1201baeb122781539d987fc6fd706123398a8d50f837817873890c18269c3d3dd0e782114074808a1ff3548b49f0b499424c689e4bf5d74cb876237240d6473dc1ab63fc429bee770b10527113efff5ee6f2705031d6c7370d0a60154f19e8dd20ba14bd5fd5683ac1094f7981b122d908442fa6cd1ca460ffbf49e7e162fbc0d25280c78297ab4f7026a04448422da8e376ebb2b359d6c7be1ec1a660d07dfa82ac8c2d89f04fa02cb3a86a2066188f92895f2f42dc2f6f7e5713067a14a925a02fdffdcb99f7ad1df29281d3120d1196595b53b22a386a3eae6043435445f140976aafc537cbad06c46ca5ad2b16a7da0c4bd45ac880aef87078e7347cb464f0db47c51e064400751c2f032fd0fb92d8e4cf42c5bdda442d7a3c28e3dce3bdd10d8e014089f3a9ddc8c56dd154fe487beaf0ac01e73da68271378808786e69b1b709cfdd5666f53d46c569c965ea013a17e733efa740beddb8e56183138db1723e68dc91a3c893c7d05439388d387ed0fbeb19c7e996083b39858b07762a87c21ae07df5ea0fe21cb4974dc52d4e21553864af5e7d7042bfd0703aed1cf80171006aec8456ef123dc1ae4ec805c9d301f0dfe4788a0c5c599ff7a3ed17390bb1f260665e92e3647d7b89fab2681bc7237943c4b45243f68705d53c2ce8e4c5303b8ae78d556d0c4a1efaa48aedbb7feef62a27332a462fbd4e7dff75f3df8d92ea73b5afcc5a42c1a564bcdd99f2dcfe8e0c9873fa0470753900a20f7e01bcd1b3e6c62b2f8cdbd7de3068b7f5dcbfd6c0e9a511baccef6c7adfc41dee3f2dd2bb2409707d3d21594e3f425f6f6873b5245ec7dd2473b9b14b7f80576e776f3068e65e12da6663c8fff51ab2cdf1960225945dea081c5a38231f62439ad08032e4131a32f5b70566b1b86b7fb0138d4e2497621d71b31580ec36043f2c57330190c8b7d5a408a9ca109ae6dc5b90c6f86b4c15d54d2da991591369cb03c3d9c0c5030e89f7de4a5b6e7975fad4d321b1e01863dc0dbe8d49517006c7587a38b"; + bytes32 vKey = bytes32(0x004e167a367ef584f118c2fac6ffdda82e5349913a165703fb1895f0da412bff); console2.logBytes(abi.encodePacked(vKey, sp1Proof)); // TierProof TaikoData.TierProof memory proof = @@ -104,11 +104,11 @@ contract SuccinctVerifierTest is TaikoL1TestBase { // proof generation elf vk digest which is not a bn254 hash // but a sha256 hash from the same Sp1Verifykey. sp1.setProgramTrusted( - bytes32(0x5b72cb095f1e07ac1aa60e7b06d8a7ab2b67fe2d57c12d4a2fde5cc52c0c56bf), true + bytes32(0x270b3d1b1fbd613c23185f586ffdda82729a4c8968595c0f76312be15a412bff), true ); // proof aggregation elf sp1.setProgramTrusted( - bytes32(0x0041b4e466ae95d8e71c376eac1f45b8999d5eb1509b39edc12bf97521097880), true + bytes32(0x00d5ff4ed163b73e75aa1f60c399b3c778df24abe584fc6eee1ce5c444b74bcd), true ); vm.startPrank(address(L1)); @@ -148,7 +148,7 @@ contract SuccinctVerifierTest is TaikoL1TestBase { // TierProof bytes memory data = - hex"0041b4e466ae95d8e71c376eac1f45b8999d5eb1509b39edc12bf975210978805b72cb095f1e07ac1aa60e7b06d8a7ab2b67fe2d57c12d4a2fde5cc52c0c56bf8fd4de721f01f0d571dab506ab0a8c4b99f357f11b4fc8b47ab97c2efa686437fc053872083c9e70147649c2fbaa5e68e77b014a024b20206b865bd3a1c28ced4d21cba41de4ac423e9fd71b6a0193f33ebb9e06805e13d95032fe8862548800823b85b3132160d62dddcc882a51c62aab4ba196f6fcf09fd0943ef8153ac99f9982f01a30052e27bb82d88f5506537c18880f36219fe17751b562ecf6e08685cdafcafe2bec9ca35246370a51e4570ee437eca2d9fd373fc26f74dc3c5658ed6fc9a5c60a2245b77dd711b1a96992551bd101a9ce764dff8704c87f95f8d4669b8bf65c25c086d160405532b0eff81477135ae6b3ef791c7539ded4f525ab0c4d0bc179029836461907f0cf3c04d681395a10c8240ced3da9d30dfabd9ef5e4adb75dda11027bad2cc8e8b4ab2648137fa9bb44e6c21ec3cff40c1e356dd9e2d0db572f2f030b9e591c91cc5210beb693fc66ce5d51ecbb23b3f24af0e0e280ea1e62a3036d2da06fdcde9a0c8db3a3773e03e1476588ff54e47543e86f7cdaf37bbaa8124b1d2544e423be363a8a07aed33b1fd242631902f91bcdcf8405e59886d9ae073a20596079eb474c33bb9d14bc8d84d9cc6033b211ddbb97039734bedaccef163c7ac8df54a7760434563ad4e90a5526e9ac1e3535707cb1cb1867aa83e6ca0ecc4fd402eda1c35213f546e3d171c9660965c08e3d5f3e4de6d0163e0a18d922d56ba61565738167c49d8b1262c48ae47d749ab7ddbd7caf8a235115649ef32817e387937415e50aecb1e4614b183d4e8813e5809100e8b36843c9e29291d21b6e3309c6f534b3e6a40443d0efee93b2fceae0e2a39e59c95dbd672dbefb1827d46c1e9794a4bea891fa3fcd8403916185369c0c94fd4e93a45f53d2fe3b3e15e8d2114f9afcb7a3863d92a3259fb315d5c0bc9ad09e887e119de3e74a49b60bb47a4d3901835087c7fd1d9686fd83f81fc1eb7d0498b1c5f9a4d299af7ded192d8fe5e012fded12f7f7238926fa8b5207220d524756c49076abaf6e8327120e7bb56699fcd13d94cb50bc01e306552db7e8af06efbb954bff76efc844da0e14952b5b8480b0522296e67a8ebc2581bf8a8c6bcb36228949b483d8ce592cd2186c2c8ea51515ae38ceaac637dc170bb9a1755cdb3d94ffdeee7d0c5f78ecb60fb12b04f1951c38a5520feffe350aeb4046a1909d478f0605933fb5edfe50d9"; + hex"00d5ff4ed163b73e75aa1f60c399b3c778df24abe584fc6eee1ce5c444b74bcd270b3d1b1fbd613c23185f586ffdda82729a4c8968595c0f76312be15a412bff54bdcae3236b956a67d15b4682d972d50fbb3632ac950bd712dad2d4cc9c302856c11e6c2ed6722fc3e4904ed204eb05a9f32bae3f8e7d4fbdd854c3d269a33e601c39c90d02026cdcdd55268090e316df3ffc0eee6de2765eb0d767f1455cd35af89da20ade1e61dc074884d5317f0206abb720acf8c023d2740b41fe37f2cb00fe561725269f4321543b30d528ee3e8884ea493fc6b1629e9a7537e65353fb0afd7e8021d502cb556e7a2b600e859f3fc524ad681df470d8d0ccc463775434ca56de661b34a3b620726aed8affc8a90d7b798a92d6500dacd9fb7d43a37c301d70e59d2d192fa85b2f6689bd9a6d47df9ea45163a228c8291e8d6d0ed5d7d7be8bd6391d6496989df139eaff5fca0f9d47eccad8ff6fb7aa0b8bb3da8e73fa4ff825d208b0ce5a639f30501f200c12f8fa1bf5c4ac42c4a58ceb34bbb3b012121f6ff31ed772d57c421a75813f987888e7e3b984bff8465bbfbdd30d45fae9904816a21c99ca4a903ed19af479d4ce0a1b4e78e2a9b3bdb8dde8986e8f028da0dd37e3129a184b4d36427d130075802421e5c693297f4705a030454b105b91f3ce8be111967dd8016ec9aed42e42ed3ab53e1dc42a0b796557e05b658203ae972378db1a109898a02ac97adfe3d5b24e1ab0d49f7702b69d137e23264e5b2c5b6e72fc2b2a4562b793a2c00ead94de8890700aa3c2fe5baf59ab8b7f524d38ba3b71712151edd00307dc3c9f24ea9d1bbac6687c8f30dbe845663f7aaddaec9df8d1fd15ced22fa58272184fe02aad68fd5a90ee249fced2ef955c0af40e02be0621e7162413e629b4428cb929d0a2bd87375dcec17664fec3a5a6cd2f7039723d41f10b77f5f3b7b052db1043c302795d3d739eecd2d2f686c2c474dcc67d9e844ca50bdabc7ac085aeb02aff0b3cbf17aaa0114ba85eff4a938d87db17680a5995a90347b2a5eccaeeb1be204a6dd83da39fe9485822667a43d4a5451f494063075007f152eeb46e0bad0675cf6219b53b36b1ca474f13f6dae87d1efad3c71f89cd05a04a6c76f6703858650a5fd6e2b45be3bf299386595d8eca6c8c55d537e8b3263828c7be68c92bdae0be0ed101f89c0c4c16154867228dc47ff0a4fccb4bb72b7cf8aa2c4a9bd4fd01254e51a7fbf680f408b5ae9c189466625b0f41636d94060e805eb6da30eab1202b65d8226918c4b99a73a6874089dbc5eac08cfab3d7"; TaikoData.TierProof memory proof = TaikoData.TierProof({ tier: 0, data: data }); // `verifyProof()` diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc2a41d20d1..f454ab0343e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -449,8 +449,8 @@ importers: specifier: github:Vectorized/solady#v0.0.231 version: https://codeload.github.com/Vectorized/solady/tar.gz/a12a2575c899a328c1bafdada632dabbff27cf6b sp1-contracts: - specifier: github:succinctlabs/sp1-contracts#v3.0.0-rc3 - version: sp1-contracts#v3.0.0-rc3@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/a6f13bf51f02ee8ef99234ce0d77c153ed98e4be + specifier: github:succinctlabs/sp1-contracts#v3.0.0 + version: sp1-contracts#v3.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/1c4acaeab86789995ae5c6baced66f81e4a57f4d devDependencies: '@types/node': specifier: ^20.11.30 @@ -3403,10 +3403,6 @@ packages: resolution: {integrity: sha512-znVCvux30+3SaUwcUGaSf+pUckzT5ukPRpcBmy+muBLC0yaWnBcvDqGfcsw6CBIenUdFrVoAFa8B6jsuCY/a+g==} engines: {node: ^18.18 || >=20} - '@metamask/rpc-errors@6.1.0': - resolution: {integrity: sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==} - engines: {node: '>=16.0.0'} - '@metamask/rpc-errors@6.2.1': resolution: {integrity: sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw==} engines: {node: '>=16.0.0'} @@ -3414,10 +3410,6 @@ packages: '@metamask/safe-event-emitter@2.0.0': resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} - '@metamask/safe-event-emitter@3.0.0': - resolution: {integrity: sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ==} - engines: {node: '>=12.0.0'} - '@metamask/safe-event-emitter@3.1.1': resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} engines: {node: '>=12.0.0'} @@ -7657,6 +7649,7 @@ packages: ethereumjs-abi@0.6.8: resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + deprecated: This library has been deprecated and usage is discouraged. ethereumjs-util@6.2.1: resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} @@ -11451,8 +11444,8 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - sp1-contracts#v3.0.0-rc3@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/a6f13bf51f02ee8ef99234ce0d77c153ed98e4be: - resolution: {tarball: https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/a6f13bf51f02ee8ef99234ce0d77c153ed98e4be} + sp1-contracts#v3.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/1c4acaeab86789995ae5c6baced66f81e4a57f4d: + resolution: {tarball: https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/1c4acaeab86789995ae5c6baced66f81e4a57f4d} version: 0.0.0 space-separated-tokens@2.0.2: @@ -15504,7 +15497,7 @@ snapshots: '@eslint/eslintrc@1.4.1': dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -15894,7 +15887,7 @@ snapshots: '@humanwhocodes/config-array@0.9.5': dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -16235,8 +16228,8 @@ snapshots: '@metamask/json-rpc-engine@7.3.2': dependencies: - '@metamask/rpc-errors': 6.1.0 - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/rpc-errors': 6.2.1 + '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.3.0 transitivePeerDependencies: - supports-color @@ -16252,7 +16245,7 @@ snapshots: '@metamask/json-rpc-middleware-stream@6.0.2': dependencies: '@metamask/json-rpc-engine': 7.3.2 - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.3.0 readable-stream: 3.6.2 transitivePeerDependencies: @@ -16310,7 +16303,7 @@ snapshots: '@metamask/json-rpc-middleware-stream': 6.0.2 '@metamask/object-multiplex': 2.0.0 '@metamask/rpc-errors': 6.2.1 - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.3.0 detect-browser: 5.3.0 extension-port-stream: 3.0.0 @@ -16338,13 +16331,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@metamask/rpc-errors@6.1.0': - dependencies: - '@metamask/utils': 8.3.0 - fast-safe-stringify: 2.1.1 - transitivePeerDependencies: - - supports-color - '@metamask/rpc-errors@6.2.1': dependencies: '@metamask/utils': 8.3.0 @@ -16354,8 +16340,6 @@ snapshots: '@metamask/safe-event-emitter@2.0.0': {} - '@metamask/safe-event-emitter@3.0.0': {} - '@metamask/safe-event-emitter@3.1.1': {} '@metamask/sdk-communication-layer@0.14.3(encoding@0.1.13)': @@ -16377,7 +16361,7 @@ snapshots: bufferutil: 4.0.8 cross-fetch: 4.0.0(encoding@0.1.13) date-fns: 2.30.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) eciesjs: 0.3.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 @@ -16392,7 +16376,7 @@ snapshots: bufferutil: 4.0.8 cross-fetch: 4.0.0(encoding@0.1.13) date-fns: 2.30.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) eciesjs: 0.3.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 @@ -16558,12 +16542,12 @@ snapshots: '@metamask/utils@8.3.0': dependencies: '@ethereumjs/tx': 4.2.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.8 '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) pony-cause: 2.1.10 - semver: 7.6.0 + semver: 7.6.3 superstruct: 1.0.3 transitivePeerDependencies: - supports-color @@ -19184,10 +19168,10 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.2 + semver: 7.6.3 tsutils: 3.21.0(typescript@5.4.3) optionalDependencies: typescript: 5.4.3 @@ -19198,10 +19182,10 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.2 + semver: 7.6.3 tsutils: 3.21.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -19212,11 +19196,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.4.0 '@typescript-eslint/visitor-keys': 7.4.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.2 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.4.3) optionalDependencies: typescript: 5.4.3 @@ -21070,7 +21054,7 @@ snapshots: agent-base@7.1.0: dependencies: - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -22587,7 +22571,7 @@ snapshots: engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) engine.io-parser: 5.2.2 ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) xmlhttprequest-ssl: 2.0.0 @@ -22599,7 +22583,7 @@ snapshots: engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3): dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) engine.io-parser: 5.2.2 ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) xmlhttprequest-ssl: 2.0.0 @@ -22743,7 +22727,7 @@ snapshots: esbuild-register@3.6.0(esbuild@0.21.3): dependencies: - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) esbuild: 0.21.3 transitivePeerDependencies: - supports-color @@ -23275,7 +23259,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) doctrine: 3.0.0 enquirer: 2.4.1 escape-string-regexp: 4.0.0 @@ -23303,7 +23287,7 @@ snapshots: optionator: 0.9.3 progress: 2.0.3 regexpp: 3.2.0 - semver: 7.6.2 + semver: 7.6.3 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 @@ -24779,7 +24763,7 @@ snapshots: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -25365,7 +25349,7 @@ snapshots: json-rpc-middleware-stream@4.2.3: dependencies: - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/safe-event-emitter': 3.1.1 json-rpc-engine: 6.1.0 readable-stream: 2.3.8 @@ -25733,7 +25717,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.0 + semver: 7.6.3 make-error@1.3.6: {} @@ -26408,7 +26392,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -28439,7 +28423,7 @@ snapshots: socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -28450,7 +28434,7 @@ snapshots: socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3): dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3) socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -28461,7 +28445,7 @@ snapshots: socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -28604,7 +28588,7 @@ snapshots: source-map@0.7.4: {} - sp1-contracts#v3.0.0-rc3@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/a6f13bf51f02ee8ef99234ce0d77c153ed98e4be: {} + sp1-contracts#v3.0.0@https://codeload.github.com/succinctlabs/sp1-contracts/tar.gz/1c4acaeab86789995ae5c6baced66f81e4a57f4d: {} space-separated-tokens@2.0.2: {} @@ -29486,7 +29470,7 @@ snapshots: typescript-auto-import-cache@0.3.3: dependencies: - semver: 7.6.2 + semver: 7.6.3 typescript@5.4.3: {} From 1fab427005708036c981f2b8fb47d9aa408e0d94 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Fri, 8 Nov 2024 14:20:10 +0800 Subject: [PATCH 159/205] feat(protocol): request zk proofs(risc0 & sp1) in mainnet (#18467) --- .../mainnet/rollup/MainnetTierRouter.sol | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol index fae1617ed0d..a2e0784e1fd 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol @@ -24,22 +24,21 @@ contract MainnetTierRouter is ITierRouter, TierProviderBase { /// @inheritdoc ITierProvider function getTierIds() external pure returns (uint16[] memory tiers_) { - tiers_ = new uint16[](3); + tiers_ = new uint16[](5); tiers_[0] = LibTiers.TIER_SGX; - tiers_[1] = LibTiers.TIER_GUARDIAN_MINORITY; - tiers_[2] = LibTiers.TIER_GUARDIAN; + tiers_[1] = LibTiers.TIER_ZKVM_RISC0; + tiers_[2] = LibTiers.TIER_ZKVM_SP1; + tiers_[3] = LibTiers.TIER_GUARDIAN_MINORITY; + tiers_[4] = LibTiers.TIER_GUARDIAN; } /// @inheritdoc ITierProvider - function getMinTier( - address, /*_proposer*/ - uint256 /*_rand*/ - ) - public - pure - override - returns (uint16) - { + function getMinTier(address _proposer, uint256 _rand) public view override returns (uint16) { + if (_proposer == DAO_FALLBACK_PROPOSER) { + if (_rand % 1000 == 0) return LibTiers.TIER_ZKVM_RISC0; + else if (_rand % 1000 == 1) return LibTiers.TIER_ZKVM_SP1; + else return LibTiers.TIER_SGX; + } return LibTiers.TIER_SGX; } } From f9f5d156f9fef622d921f6e007ecb43ded0130ad Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 8 Nov 2024 14:51:41 +0800 Subject: [PATCH 160/205] feat(protocol): tolerate invalid BaseFeeConfig on L2 (#18338) Co-authored-by: dantaik Co-authored-by: gavin Co-authored-by: David Co-authored-by: Bernat Canal Garceran Co-authored-by: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> Co-authored-by: maskpp Co-authored-by: smtmfft <99081233+smtmfft@users.noreply.github.com> Co-authored-by: Ivan Lagunovsky Co-authored-by: jeff <113397187+cyberhorsey@users.noreply.github.com> Co-authored-by: Karim Co-authored-by: Karim <162329697+kimo-ice@users.noreply.github.com> Co-authored-by: YoGhurt111 --- .../contracts/layer2/based/LibEIP1559.sol | 79 +++-- .../contracts/layer2/based/TaikoL2.sol | 322 +++++++----------- .../layer2/based/TaikoL2Deprecated.sol | 60 ++++ .../contracts/shared/common/LibMath.sol | 4 + .../protocol/test/layer2/LibEIP1559.t.sol | 88 +++-- packages/protocol/test/layer2/TaikoL2.t.sol | 67 ++++ 6 files changed, 379 insertions(+), 241 deletions(-) create mode 100644 packages/protocol/contracts/layer2/based/TaikoL2Deprecated.sol diff --git a/packages/protocol/contracts/layer2/based/LibEIP1559.sol b/packages/protocol/contracts/layer2/based/LibEIP1559.sol index 14dca051fb0..b1c57926ff3 100644 --- a/packages/protocol/contracts/layer2/based/LibEIP1559.sol +++ b/packages/protocol/contracts/layer2/based/LibEIP1559.sol @@ -15,10 +15,16 @@ library LibEIP1559 { /// @notice The maximum allowable input value for the exp() function. uint128 public constant MAX_EXP_INPUT = 135_305_999_368_893_231_588; - error EIP1559_INVALID_PARAMS(); - + /// @notice Calculates the base fee and gas excess for EIP-1559 + /// @param _gasTarget The target gas usage + /// @param _gasExcess The current gas excess + /// @param _gasIssuance The gas issuance + /// @param _parentGasUsed The gas used by the parent block + /// @param _minGasExcess The minimum gas excess + /// @return basefee_ The calculated base fee + /// @return gasExcess_ The calculated gas excess function calc1559BaseFee( - uint256 _gasTarget, + uint64 _gasTarget, uint64 _gasExcess, uint64 _gasIssuance, uint32 _parentGasUsed, @@ -38,35 +44,50 @@ library LibEIP1559 { // bonding curve, regardless the actual amount of gas used by this // block, however, this block's gas used will affect the next // block's base fee. - basefee_ = basefee(gasExcess_, _gasTarget); + basefee_ = basefee(_gasTarget, gasExcess_); } - /// @dev Returns the new gas excess that will keep the basefee the same. - /// `_newGasTarget * ln(_newGasTarget / _gasTarget) + _gasExcess * _newGasTarget / _gasTarget` + /// @dev Adjusts the gas excess to maintain the same base fee when the gas target changes. + /// The formula used for adjustment is: + /// `_newGasTarget*ln(_newGasTarget/_gasTarget)+_gasExcess*_newGasTarget/_gasTarget` + /// @param _oldGasTarget The current gas target. + /// @param _newGasTarget The new gas target. + /// @param _oldGasExcess The current gas excess. + /// @return newGasTarget_ The new gas target value. + /// @return newGasExcess_ The new gas excess value. function adjustExcess( - uint64 _gasExcess, - uint64 _gasTarget, - uint64 _newGasTarget + uint64 _oldGasTarget, + uint64 _newGasTarget, + uint64 _oldGasExcess ) internal pure - returns (uint64) + returns (uint64 newGasTarget_, uint64 newGasExcess_) { - if (_gasTarget == 0) { - return _newGasTarget; + uint256 f = FixedPointMathLib.WAD; + + if (_oldGasTarget == 0) { + return (_newGasTarget, _oldGasExcess); } - uint256 f = FixedPointMathLib.WAD; - uint256 ratio = f * _newGasTarget / _gasTarget; - if (ratio == 0 || ratio > uint256(type(int256).max)) revert EIP1559_INVALID_PARAMS(); + if ( + _newGasTarget == 0 || _oldGasTarget == _newGasTarget + || _newGasTarget >= type(uint256).max / f + ) { + return (_oldGasTarget, _oldGasExcess); + } - int256 lnRatio = FixedPointMathLib.lnWad(int256(ratio)); // may be negative + uint256 ratio = f * _newGasTarget / _oldGasTarget; + if (ratio == 0 || ratio > uint256(type(int256).max)) { + return (_newGasTarget, _oldGasExcess); + } + int256 lnRatio = FixedPointMathLib.lnWad(int256(ratio)); // may be negative uint256 newGasExcess; assembly { // compute x = (_newGasTarget * lnRatio + _gasExcess * ratio) - let x := add(mul(_newGasTarget, lnRatio), mul(_gasExcess, ratio)) + let x := add(mul(_newGasTarget, lnRatio), mul(_oldGasExcess, ratio)) // If x < 0, set newGasExcess to 0, otherwise calculate newGasExcess = x / f switch slt(x, 0) @@ -74,19 +95,25 @@ library LibEIP1559 { default { newGasExcess := div(x, f) } } - return uint64(newGasExcess.min(type(uint64).max)); + return (_newGasTarget, newGasExcess.capToUint64()); } - /// @dev exp(_gasExcess / _gasTarget) / _gasTarget - function basefee(uint256 _gasExcess, uint256 _gasTarget) internal pure returns (uint256) { - uint256 fee = ethQty(_gasExcess, _gasTarget) / _gasTarget; - return fee == 0 ? 1 : fee; - } + /// @dev Calculates the base fee using the formula: exp(_gasExcess/_gasTarget)/_gasTarget + /// @param _gasTarget The current gas target. + /// @param _gasExcess The current gas excess. + /// @return The calculated base fee. + function basefee(uint64 _gasTarget, uint64 _gasExcess) internal pure returns (uint256) { + if (_gasTarget == 0) return 1; - /// @dev exp(_gasExcess / _gasTarget) - function ethQty(uint256 _gasExcess, uint256 _gasTarget) internal pure returns (uint256) { - if (_gasTarget == 0) revert EIP1559_INVALID_PARAMS(); + return (ethQty(_gasTarget, _gasExcess) / _gasTarget).max(1); + } + /// @dev Calculates the exponential of the ratio of gas excess to gas target. + /// @param _gasTarget The current gas target. + /// @param _gasExcess The current gas excess. + /// @return The calculated exponential value. + function ethQty(uint64 _gasTarget, uint64 _gasExcess) internal pure returns (uint256) { + assert(_gasTarget != 0); uint256 input = FixedPointMathLib.WAD * _gasExcess / _gasTarget; if (input > MAX_EXP_INPUT) { input = MAX_EXP_INPUT; diff --git a/packages/protocol/contracts/layer2/based/TaikoL2.sol b/packages/protocol/contracts/layer2/based/TaikoL2.sol index d2befc46d41..5af1e610325 100644 --- a/packages/protocol/contracts/layer2/based/TaikoL2.sol +++ b/packages/protocol/contracts/layer2/based/TaikoL2.sol @@ -4,14 +4,15 @@ pragma solidity ^0.8.24; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "src/shared/data/LibSharedData.sol"; import "src/shared/common/EssentialContract.sol"; import "src/shared/common/LibStrings.sol"; import "src/shared/common/LibAddress.sol"; +import "src/shared/common/LibMath.sol"; import "src/shared/signal/ISignalService.sol"; import "./LibEIP1559.sol"; import "./LibL2Config.sol"; import "./IBlockHash.sol"; +import "./TaikoL2Deprecated.sol"; /// @title TaikoL2 /// @notice Taiko L2 is a smart contract that handles cross-layer message @@ -20,8 +21,9 @@ import "./IBlockHash.sol"; /// communication, manage EIP-1559 parameters for gas pricing, and store /// verified L1 block information. /// @custom:security-contact security@taiko.xyz -contract TaikoL2 is EssentialContract, IBlockHash { +contract TaikoL2 is EssentialContract, IBlockHash, TaikoL2Deprecated { using LibAddress for address; + using LibMath for uint256; using SafeERC20 for IERC20; /// @notice Golden touch address is the only address that can do the anchor transaction. @@ -58,6 +60,20 @@ contract TaikoL2 is EssentialContract, IBlockHash { /// @param parentGasExcess The gas excess value used to calculate the base fee. event Anchored(bytes32 parentHash, uint64 parentGasExcess); + /// @notice Emitted when the gas target has been updated. + /// @param oldGasTarget The previous gas target. + /// @param newGasTarget The new gas target. + /// @param oldGasExcess The previous gas excess. + /// @param newGasExcess The new gas excess. + /// @param basefee The base fee in this block. + event EIP1559Update( + uint64 oldGasTarget, + uint64 newGasTarget, + uint64 oldGasExcess, + uint64 newGasExcess, + uint256 basefee + ); + error L2_BASEFEE_MISMATCH(); error L2_FORK_ERROR(); error L2_INVALID_L1_CHAIN_ID(); @@ -68,7 +84,7 @@ contract TaikoL2 is EssentialContract, IBlockHash { error L2_TOO_LATE(); modifier onlyGoldenTouch() { - if (msg.sender != GOLDEN_TOUCH_ADDRESS) revert L2_INVALID_SENDER(); + require(msg.sender == GOLDEN_TOUCH_ADDRESS, L2_INVALID_SENDER()); _; } @@ -88,12 +104,10 @@ contract TaikoL2 is EssentialContract, IBlockHash { { __Essential_init(_owner, _rollupAddressManager); - if (_l1ChainId == 0 || _l1ChainId == block.chainid) { - revert L2_INVALID_L1_CHAIN_ID(); - } - if (block.chainid <= 1 || block.chainid > type(uint64).max) { - revert L2_INVALID_L2_CHAIN_ID(); - } + require(_l1ChainId != 0, L2_INVALID_L1_CHAIN_ID()); + require(_l1ChainId != block.chainid, L2_INVALID_L1_CHAIN_ID()); + require(block.chainid > 1, L2_INVALID_L2_CHAIN_ID()); + require(block.chainid <= type(uint64).max, L2_INVALID_L2_CHAIN_ID()); if (block.number == 0) { // This is the case in real L2 genesis @@ -110,61 +124,6 @@ contract TaikoL2 is EssentialContract, IBlockHash { (publicInputHash,) = _calcPublicInputHash(block.number); } - /// @dev DEPRECATED but used by node/client for syncing old blocks - /// @notice Anchors the latest L1 block details to L2 for cross-layer - /// message verification. - /// @dev This function can be called freely as the golden touch private key is publicly known, - /// but the Taiko node guarantees the first transaction of each block is always this anchor - /// transaction, and any subsequent calls will revert with L2_PUBLIC_INPUT_HASH_MISMATCH. - /// @param _l1StateRoot The state root for the L1 block with id equals `_anchorBlockId` - /// @param _l1BlockId The `anchorBlockId` value in this block's metadata. - /// @param _parentGasUsed The gas used in the parent block. - function anchor( - bytes32, /*_l1BlockHash*/ - bytes32 _l1StateRoot, - uint64 _l1BlockId, - uint32 _parentGasUsed - ) - external - nonZeroValue(uint256(_l1StateRoot)) - nonZeroValue(uint256(_l1BlockId)) - onlyGoldenTouch - nonReentrant - { - if (block.number >= ontakeForkHeight()) revert L2_FORK_ERROR(); - - // Verify ancestor hashes - uint256 parentId = block.number - 1; - (bytes32 currentPublicInputHash, bytes32 newPublicInputHash) = - _calcPublicInputHash(parentId); - if (publicInputHash != currentPublicInputHash) revert L2_PUBLIC_INPUT_HASH_MISMATCH(); - - // Verify the base fee per gas is correct - (uint256 basefee, uint64 newGasExcess) = getBasefee(_l1BlockId, _parentGasUsed); - - if (!skipFeeCheck() && block.basefee != basefee) revert L2_BASEFEE_MISMATCH(); - - if (_l1BlockId > lastSyncedBlock) { - // Store the L1's state root as a signal to the local signal service to - // allow for multi-hop bridging. - ISignalService(resolve(LibStrings.B_SIGNAL_SERVICE, false)).syncChainData( - l1ChainId, LibStrings.H_STATE_ROOT, _l1BlockId, _l1StateRoot - ); - - lastSyncedBlock = _l1BlockId; - } - - // Update state variables - bytes32 parentHash = blockhash(parentId); - _blockhashes[parentId] = parentHash; - - publicInputHash = newPublicInputHash; - parentGasExcess = newGasExcess; - parentTimestamp = uint64(block.timestamp); - - emit Anchored(parentHash, newGasExcess); - } - /// @notice Anchors the latest L1 block details to L2 for cross-layer /// message verification. /// @dev This function can be called freely as the golden touch private key is publicly known, @@ -181,67 +140,20 @@ contract TaikoL2 is EssentialContract, IBlockHash { LibSharedData.BaseFeeConfig calldata _baseFeeConfig ) external - nonZeroValue(uint256(_anchorStateRoot)) - nonZeroValue(uint256(_anchorBlockId)) - nonZeroValue(uint256(_baseFeeConfig.gasIssuancePerSecond)) - nonZeroValue(uint256(_baseFeeConfig.adjustmentQuotient)) + nonZeroBytes32(_anchorStateRoot) + nonZeroValue(_anchorBlockId) + nonZeroValue(_baseFeeConfig.gasIssuancePerSecond) + nonZeroValue(_baseFeeConfig.adjustmentQuotient) onlyGoldenTouch nonReentrant { - if (block.number < ontakeForkHeight()) revert L2_FORK_ERROR(); + require(block.number >= ontakeForkHeight(), L2_FORK_ERROR()); uint256 parentId = block.number - 1; - - // Verify ancestor hashes - { - (bytes32 currentPublicInputHash, bytes32 newPublicInputHash) = - _calcPublicInputHash(parentId); - if (publicInputHash != currentPublicInputHash) revert L2_PUBLIC_INPUT_HASH_MISMATCH(); - publicInputHash = newPublicInputHash; - } - - // Check if the gas settings has changed - { - uint64 newGasTarget = - uint64(_baseFeeConfig.gasIssuancePerSecond) * _baseFeeConfig.adjustmentQuotient; - - if (parentGasTarget != newGasTarget) { - if (parentGasTarget != 0) { - parentGasExcess = adjustExcess(parentGasExcess, parentGasTarget, newGasTarget); - } - parentGasTarget = newGasTarget; - } - } - - // Verify the base fee per gas is correct - { - (uint256 basefee, uint64 newGasExcess) = calculateBaseFee( - _baseFeeConfig, - uint64(block.timestamp - parentTimestamp), - parentGasExcess, - _parentGasUsed - ); - - if (!skipFeeCheck() && block.basefee != basefee) revert L2_BASEFEE_MISMATCH(); - parentGasExcess = newGasExcess; - } - - if (_anchorBlockId > lastSyncedBlock) { - // Store the L1's state root as a signal to the local signal service to - // allow for multi-hop bridging. - ISignalService(resolve(LibStrings.B_SIGNAL_SERVICE, false)).syncChainData( - l1ChainId, LibStrings.H_STATE_ROOT, _anchorBlockId, _anchorStateRoot - ); - - lastSyncedBlock = _anchorBlockId; - } - - // Update state variables - bytes32 parentHash = blockhash(parentId); - _blockhashes[parentId] = parentHash; - parentTimestamp = uint64(block.timestamp); - - emit Anchored(parentHash, parentGasExcess); + _verifyAndUpdatePublicInputHash(parentId); + _verifyBaseFeeAndUpdateGasExcess(_parentGasUsed, _baseFeeConfig); + _syncChainData(_anchorBlockId, _anchorStateRoot); + _updateParentHashAndTimestamp(parentId); } /// @notice Withdraw token or Ether from this address. @@ -266,29 +178,40 @@ contract TaikoL2 is EssentialContract, IBlockHash { } } - /// @dev DEPRECATED but used by node/client for syncing old blocks - /// @notice Gets the basefee and gas excess using EIP-1559 configuration for - /// the given parameters. - /// @param _anchorBlockId The synced L1 height in the next Taiko block + /// @notice Calculates the base fee and gas excess using EIP-1559 configuration for the given + /// parameters. /// @param _parentGasUsed Gas used in the parent block. + /// @param _baseFeeConfig Configuration parameters for base fee calculation. /// @return basefee_ The calculated EIP-1559 base fee per gas. - /// @return parentGasExcess_ The new parentGasExcess value. - function getBasefee( - uint64 _anchorBlockId, - uint32 _parentGasUsed + /// @return newGasTarget_ The new gas target value. + /// @return newGasExcess_ The new gas excess value. + function getBasefeeV2( + uint32 _parentGasUsed, + LibSharedData.BaseFeeConfig calldata _baseFeeConfig ) public view - returns (uint256 basefee_, uint64 parentGasExcess_) + returns (uint256 basefee_, uint64 newGasTarget_, uint64 newGasExcess_) { - LibL2Config.Config memory config = LibL2Config.get(); - - (basefee_, parentGasExcess_) = LibEIP1559.calc1559BaseFee( - uint256(config.gasTargetPerL1Block) * config.basefeeAdjustmentQuotient, - parentGasExcess, - uint64(_anchorBlockId - lastSyncedBlock) * config.gasTargetPerL1Block, - _parentGasUsed, - 0 + // uint32 * uint8 will never overflow + uint64 newGasTarget = + uint64(_baseFeeConfig.gasIssuancePerSecond) * _baseFeeConfig.adjustmentQuotient; + + (newGasTarget_, newGasExcess_) = + LibEIP1559.adjustExcess(parentGasTarget, newGasTarget, parentGasExcess); + + uint64 gasIssuance = + uint64(block.timestamp - parentTimestamp) * _baseFeeConfig.gasIssuancePerSecond; + + if ( + _baseFeeConfig.maxGasIssuancePerBlock != 0 + && gasIssuance > _baseFeeConfig.maxGasIssuancePerBlock + ) { + gasIssuance = _baseFeeConfig.maxGasIssuancePerBlock; + } + + (basefee_, newGasExcess_) = LibEIP1559.calc1559BaseFee( + newGasTarget_, newGasExcess_, gasIssuance, _parentGasUsed, _baseFeeConfig.minGasExcess ); } @@ -299,86 +222,97 @@ contract TaikoL2 is EssentialContract, IBlockHash { return _blockhashes[_blockId]; } - /// @notice Returns the new gas excess that will keep the basefee the same. - /// @param _currGasExcess The current gas excess value. - /// @param _currGasTarget The current gas target. - /// @param _newGasTarget The new gas target. - /// @return newGasExcess_ The new gas excess value. - function adjustExcess( - uint64 _currGasExcess, - uint64 _currGasTarget, - uint64 _newGasTarget - ) - public - pure - returns (uint64 newGasExcess_) - { - return LibEIP1559.adjustExcess(_currGasExcess, _currGasTarget, _newGasTarget); - } - /// @notice Tells if we need to validate basefee (for simulation). /// @return Returns true to skip checking basefee mismatch. function skipFeeCheck() public pure virtual returns (bool) { return false; } - /// @notice Returns the parent timestamp. - /// @return The timestamp of the parent block. - function getParentTimestamp() public view returns (uint64) { - return parentTimestamp; - } - /// @notice Returns the Ontake fork height. /// @return The Ontake fork height. function ontakeForkHeight() public pure virtual returns (uint64) { return 0; } - /// @notice Calculates the basefee and the new gas excess value based on parent gas used and gas - /// excess. - /// @param _baseFeeConfig The base fee config object. - /// @param _blocktime The time between this block and the parent block. - /// @param _parentGasExcess The current gas excess value. - /// @param _parentGasUsed Total gas used by the parent block. - /// @return basefee_ Next block's base fee. - /// @return parentGasExcess_ The new gas excess value. - function calculateBaseFee( - LibSharedData.BaseFeeConfig calldata _baseFeeConfig, - uint64 _blocktime, - uint64 _parentGasExcess, - uint32 _parentGasUsed + /// @dev Synchronizes chain data with the given anchor block ID and state root. + /// @param _anchorBlockId The ID of the anchor block. + /// @param _anchorStateRoot The state root of the anchor block. + function _syncChainData(uint64 _anchorBlockId, bytes32 _anchorStateRoot) private { + /// @dev If the anchor block ID is less than or equal to the last synced block, return + /// early. + if (_anchorBlockId <= lastSyncedBlock) return; + + /// @dev Store the L1's state root as a signal to the local signal service to + /// allow for multi-hop bridging. + ISignalService(resolve(LibStrings.B_SIGNAL_SERVICE, false)).syncChainData( + l1ChainId, LibStrings.H_STATE_ROOT, _anchorBlockId, _anchorStateRoot + ); + + /// @dev Update the last synced block to the current anchor block ID. + lastSyncedBlock = _anchorBlockId; + } + + /// @dev Updates the parent block hash and timestamp. + /// @param _parentId The ID of the parent block. + function _updateParentHashAndTimestamp(uint256 _parentId) private { + // Get the block hash of the parent block. + bytes32 parentHash = blockhash(_parentId); + + // Store the parent block hash in the _blockhashes mapping. + _blockhashes[_parentId] = parentHash; + + // Update the parent timestamp to the current block timestamp. + parentTimestamp = uint64(block.timestamp); + + // Emit an event to signal that the parent hash and gas excess have been anchored. + emit Anchored(parentHash, parentGasExcess); + } + + /// @dev Verifies the current ancestor block hash and updates it with a new aggregated hash. + /// @param _parentId The ID of the parent block. + function _verifyAndUpdatePublicInputHash(uint256 _parentId) private { + // Calculate the current and new ancestor hashes based on the parent block ID. + (bytes32 currPublicInputHash_, bytes32 newPublicInputHash_) = + _calcPublicInputHash(_parentId); + + // Ensure the current ancestor block hash matches the expected value. + require(publicInputHash == currPublicInputHash_, L2_PUBLIC_INPUT_HASH_MISMATCH()); + + // Update the ancestor block hash to the new calculated value. + publicInputHash = newPublicInputHash_; + } + + /// @dev Verifies that the base fee per gas is correct and updates the gas excess. + /// @param _parentGasUsed The gas used by the parent block. + /// @param _baseFeeConfig The configuration parameters for calculating the base fee. + function _verifyBaseFeeAndUpdateGasExcess( + uint32 _parentGasUsed, + LibSharedData.BaseFeeConfig calldata _baseFeeConfig ) - public - pure - returns (uint256 basefee_, uint64 parentGasExcess_) + private { - uint64 gasIssuance = _blocktime * _baseFeeConfig.gasIssuancePerSecond; - if ( - _baseFeeConfig.maxGasIssuancePerBlock != 0 - && gasIssuance > _baseFeeConfig.maxGasIssuancePerBlock - ) { - gasIssuance = _baseFeeConfig.maxGasIssuancePerBlock; - } + (uint256 basefee, uint64 newGasTarget, uint64 newGasExcess) = + getBasefeeV2(_parentGasUsed, _baseFeeConfig); - uint256 gasTarget = - uint256(_baseFeeConfig.gasIssuancePerSecond) * _baseFeeConfig.adjustmentQuotient; + require(block.basefee == basefee || skipFeeCheck(), L2_BASEFEE_MISMATCH()); - return LibEIP1559.calc1559BaseFee( - gasTarget, _parentGasExcess, gasIssuance, _parentGasUsed, _baseFeeConfig.minGasExcess - ); + emit EIP1559Update(parentGasTarget, newGasTarget, parentGasExcess, newGasExcess, basefee); + + parentGasTarget = newGasTarget; + parentGasExcess = newGasExcess; } - /// @notice Calculates the public input hash for the given block ID. + /// @dev Calculates the aggregated ancestor block hash for the given block ID. /// @dev This function computes two public input hashes: one for the previous state and one for /// the new state. /// It uses a ring buffer to store the previous 255 block hashes and the current chain ID. /// @param _blockId The ID of the block for which the public input hash is calculated. - /// @return publicInputHashOld The public input hash for the previous state. - /// @return publicInputHashNew The public input hash for the new state. + /// @return currPublicInputHash_ The public input hash for the previous state. + /// @return newPublicInputHash_ The public input hash for the new state. function _calcPublicInputHash(uint256 _blockId) private view - returns (bytes32 publicInputHashOld, bytes32 publicInputHashNew) + returns (bytes32 currPublicInputHash_, bytes32 newPublicInputHash_) { bytes32[256] memory inputs; @@ -395,12 +329,12 @@ contract TaikoL2 is EssentialContract, IBlockHash { inputs[255] = bytes32(block.chainid); assembly { - publicInputHashOld := keccak256(inputs, 8192 /*mul(256, 32)*/ ) + currPublicInputHash_ := keccak256(inputs, 8192 /*mul(256, 32)*/ ) } inputs[_blockId % 255] = blockhash(_blockId); assembly { - publicInputHashNew := keccak256(inputs, 8192 /*mul(256, 32)*/ ) + newPublicInputHash_ := keccak256(inputs, 8192 /*mul(256, 32)*/ ) } } } diff --git a/packages/protocol/contracts/layer2/based/TaikoL2Deprecated.sol b/packages/protocol/contracts/layer2/based/TaikoL2Deprecated.sol new file mode 100644 index 00000000000..8351843c458 --- /dev/null +++ b/packages/protocol/contracts/layer2/based/TaikoL2Deprecated.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import "src/shared/data/LibSharedData.sol"; + +/// @title TaikoL2Deprecated +/// @notice This contract includes deprecated functions whose ABI are still used by client for old +/// blocks. +/// @custom:security-contact security@taiko.xyz +abstract contract TaikoL2Deprecated { + error L2_DEPRECATED_METHOD(); + + modifier deprecated() { + revert L2_DEPRECATED_METHOD(); + _; + } + + function anchor( + bytes32, /*_l1BlockHash*/ + bytes32, /*_l1StateRoot*/ + uint64, /*_l1BlockId*/ + uint32 /*_parentGasUsed */ + ) + external + deprecated + { } + + function getBasefee( + uint64, /*_anchorBlockId*/ + uint32 /*_parentGasUsed*/ + ) + public + pure + deprecated + returns (uint256, /*basefee_*/ uint64 /*parentGasExcess_*/ ) + { } + + function adjustExcess( + uint64, /*_currGasExcess*/ + uint64, /*_currGasTarget*/ + uint64 /*_newGasTarget*/ + ) + public + pure + deprecated + returns (uint64 /*newGasExcess_*/ ) + { } + + function calculateBaseFee( + LibSharedData.BaseFeeConfig calldata, /*_baseFeeConfig*/ + uint64, /*_blocktime*/ + uint64, /*_parentGasExcess*/ + uint32 /*_parentGasUsed*/ + ) + public + pure + deprecated + returns (uint256, /*basefee_*/ uint64 /*parentGasExcess_*/ ) + { } +} diff --git a/packages/protocol/contracts/shared/common/LibMath.sol b/packages/protocol/contracts/shared/common/LibMath.sol index 7fc0cf3d28f..14ae1a5e14d 100644 --- a/packages/protocol/contracts/shared/common/LibMath.sol +++ b/packages/protocol/contracts/shared/common/LibMath.sol @@ -20,4 +20,8 @@ library LibMath { function max(uint256 _a, uint256 _b) internal pure returns (uint256) { return _a > _b ? _a : _b; } + + function capToUint64(uint256 _value) internal pure returns (uint64) { + return uint64(min(_value, type(uint64).max)); + } } diff --git a/packages/protocol/test/layer2/LibEIP1559.t.sol b/packages/protocol/test/layer2/LibEIP1559.t.sol index 14751940dda..7b140951f9c 100644 --- a/packages/protocol/test/layer2/LibEIP1559.t.sol +++ b/packages/protocol/test/layer2/LibEIP1559.t.sol @@ -7,22 +7,22 @@ contract TestLibEIP1559 is TaikoL2Test { using LibMath for uint256; function test_ethQty() external { - assertEq(LibEIP1559.ethQty(0, 60_000_000 * 8), 1); - assertEq(LibEIP1559.ethQty(60_000_000, 60_000_000 * 8), 1); - assertEq(LibEIP1559.ethQty(60_000_000 * 100, 60_000_000 * 8), 268_337); - assertEq(LibEIP1559.ethQty(60_000_000 * 200, 60_000_000 * 8), 72_004_899_337); + assertEq(LibEIP1559.ethQty(60_000_000 * 8, 0), 1); + assertEq(LibEIP1559.ethQty(60_000_000 * 8, 60_000_000), 1); + assertEq(LibEIP1559.ethQty(60_000_000 * 8, 60_000_000 * 100), 268_337); + assertEq(LibEIP1559.ethQty(60_000_000 * 8, 60_000_000 * 200), 72_004_899_337); } function test_basefee() external pure { uint256 basefee; console2.log("excess, basefee"); // 1_0000_000 is 0.01 gwei - for (uint256 i; basefee <= 10_000_000;) { + for (uint64 i; basefee <= 10_000_000;) { // uint 0.01 gwei - uint256 excess = i * 5_000_000; - uint256 target = 5_000_000 * 8; + uint64 excess = i * 5_000_000; + uint64 target = 5_000_000 * 8; - basefee = LibEIP1559.basefee(excess, target); + basefee = LibEIP1559.basefee(target, excess); if (basefee != 0) { console2.log( string.concat(Strings.toString(excess), ", ", Strings.toString(basefee)) @@ -33,7 +33,7 @@ contract TestLibEIP1559 is TaikoL2Test { } function test_mainnet_min_basefee() external pure { - console2.log("Mainnet minimal basefee: ", LibEIP1559.basefee(1_340_000_000, 5_000_000 * 8)); + console2.log("Mainnet minimal basefee: ", LibEIP1559.basefee(5_000_000 * 8, 1_340_000_000)); } function test_change_of_quotient_and_gasIssuancePerSecond() public { @@ -42,10 +42,10 @@ contract TestLibEIP1559 is TaikoL2Test { uint256 unit = 10_000_000; // 0.01 gwei // uint 0.01 gwei - uint256 baselineBasefee = LibEIP1559.basefee(excess, target) / unit; + uint256 baselineBasefee = LibEIP1559.basefee(target, excess) / unit; console2.log("baseline basefee: ", baselineBasefee); - uint256 basefee = LibEIP1559.basefee(excess, target * 2) / unit; + uint256 basefee = LibEIP1559.basefee(target * 2, excess) / unit; console2.log("basefee will decrease if target increases:", basefee); basefee = LibEIP1559.basefee(excess, target / 2) / unit; @@ -54,10 +54,12 @@ contract TestLibEIP1559 is TaikoL2Test { console2.log("maintain basefee when target increases"); { uint64 newTarget = 5 * 2_000_000; - uint64 newExcess = LibEIP1559.adjustExcess(excess, target, newTarget); - basefee = LibEIP1559.basefee(newExcess, newTarget) / unit; + (uint64 newTarget_, uint64 newExcess_) = + LibEIP1559.adjustExcess(target, newTarget, excess); + assertEq(newTarget_, newTarget, "adjustExcess failed"); + basefee = LibEIP1559.basefee(newTarget_, newExcess_) / unit; console2.log("old gas excess: ", excess); - console2.log("new gas excess: ", newExcess); + console2.log("new gas excess: ", newExcess_); console2.log("basefee: ", basefee); assertEq(baselineBasefee, basefee); } @@ -65,10 +67,12 @@ contract TestLibEIP1559 is TaikoL2Test { console2.log("maintain basefee when target decreases"); { uint64 newTarget = 3 * 2_000_000; - uint64 newExcess = LibEIP1559.adjustExcess(excess, target, newTarget); - basefee = LibEIP1559.basefee(newExcess, newTarget) / unit; + (uint64 newTarget_, uint64 newExcess_) = + LibEIP1559.adjustExcess(target, newTarget, excess); + assertEq(newTarget_, newTarget, "adjustExcess failed"); + basefee = LibEIP1559.basefee(newTarget_, newExcess_) / unit; console2.log("old gas excess: ", excess); - console2.log("new gas excess: ", newExcess); + console2.log("new gas excess: ", newExcess_); console2.log("basefee: ", basefee); assertEq(baselineBasefee, basefee); } @@ -80,16 +84,58 @@ contract TestLibEIP1559 is TaikoL2Test { uint256 unit = 10_000_000; // 0.01 gwei // uint 0.01 gwei - uint256 baselineBasefee = LibEIP1559.basefee(excess, target) / unit; + uint256 baselineBasefee = LibEIP1559.basefee(target, excess) / unit; console2.log("baseline basefee: ", baselineBasefee); console2.log("maintain basefee when target changes"); uint64 newTarget = 5_000_000 * 8; - uint64 newExcess = LibEIP1559.adjustExcess(excess, target, newTarget); - uint256 basefee = LibEIP1559.basefee(newExcess, newTarget) / unit; + (uint64 newTarget_, uint64 newExcess_) = LibEIP1559.adjustExcess(target, newTarget, excess); + assertEq(newTarget_, newTarget, "adjustExcess failed"); + uint256 basefee = LibEIP1559.basefee(newTarget_, newExcess_) / unit; console2.log("old gas excess: ", excess); - console2.log("new gas excess: ", newExcess); + console2.log("new gas excess: ", newExcess_); console2.log("basefee: ", basefee); assertEq(baselineBasefee, basefee); } + + /// forge-config: layer2.fuzz.runs = 1000 + /// forge-config: layer2.fuzz.show-logs = true + function test_fuzz_ethQty(uint64 _gasTarget, uint64 _gasExcess) external pure { + if (_gasTarget == 0) _gasTarget = 1; + + LibEIP1559.ethQty(_gasTarget, _gasExcess); + } + + /// forge-config: layer2.fuzz.runs = 2000 + /// forge-config: layer2.fuzz.show-logs = true + function test_fuzz_adjustExcess( + uint64 _gasTarget, + uint64 _newGasTarget, + uint64 _gasExcess + ) + external + pure + { + if (_gasTarget == 0) _gasTarget = 1; + if (_newGasTarget == 0) _newGasTarget = 1; + LibEIP1559.adjustExcess(_gasTarget, _newGasTarget, _gasExcess); + } + + /// forge-config: layer2.fuzz.runs = 2000 + /// forge-config: layer2.fuzz.show-logs = true + function test_fuzz_calc1559BaseFee( + uint64 _gasTarget, + uint64 _gasExcess, + uint64 _gasIssuance, + uint32 _parentGasUsed, + uint64 _minGasExcess + ) + external + pure + { + if (_gasTarget == 0) _gasTarget = 1; + LibEIP1559.calc1559BaseFee( + _gasTarget, _gasExcess, _gasIssuance, _parentGasUsed, _minGasExcess + ); + } } diff --git a/packages/protocol/test/layer2/TaikoL2.t.sol b/packages/protocol/test/layer2/TaikoL2.t.sol index 3088700fc6d..e312af8ecf7 100644 --- a/packages/protocol/test/layer2/TaikoL2.t.sol +++ b/packages/protocol/test/layer2/TaikoL2.t.sol @@ -103,6 +103,73 @@ contract TaikoL2Tests is TaikoL2Test { assertEq(L2.getBlockHash(uint64(1000)), 0); } + /// forge-config: layer2.fuzz.runs = 2000 + /// forge-config: layer2.fuzz.show-logs = true + function test_fuzz_getBasefeeV2( + uint32 _parentGasUsed, + uint32 _gasIssuancePerSecond, + uint64 _minGasExcess, + uint32 _maxGasIssuancePerBlock, + uint8 _adjustmentQuotient, + uint8 _sharingPctg + ) + external + { + LibSharedData.BaseFeeConfig memory baseFeeConfig = LibSharedData.BaseFeeConfig({ + adjustmentQuotient: _adjustmentQuotient, + sharingPctg: uint8(_sharingPctg % 100), + gasIssuancePerSecond: _gasIssuancePerSecond, + minGasExcess: _minGasExcess, + maxGasIssuancePerBlock: _maxGasIssuancePerBlock + }); + + (uint256 basefee_,,) = L2.getBasefeeV2(_parentGasUsed, baseFeeConfig); + assertTrue(basefee_ != 0, "basefee is 0"); + } + + /// forge-config: layer2.fuzz.runs = 2000 + /// forge-config: layer2.fuzz.show-logs = true + function test_fuzz_anchorV2( + uint32 _parentGasUsed, + uint32 _gasIssuancePerSecond, + uint64 _minGasExcess, + uint32 _maxGasIssuancePerBlock, + uint8 _adjustmentQuotient, + uint8 _sharingPctg + ) + external + { + if (_parentGasUsed == 0) _parentGasUsed = 1; + if (_gasIssuancePerSecond == 0) _gasIssuancePerSecond = 1; + if (_gasIssuancePerSecond == type(uint32).max) _gasIssuancePerSecond -= 1; + if (_adjustmentQuotient == 0) _adjustmentQuotient = 1; + + LibSharedData.BaseFeeConfig memory baseFeeConfig = LibSharedData.BaseFeeConfig({ + adjustmentQuotient: _adjustmentQuotient, + sharingPctg: uint8(_sharingPctg % 100), + gasIssuancePerSecond: _gasIssuancePerSecond, + minGasExcess: _minGasExcess, + maxGasIssuancePerBlock: _maxGasIssuancePerBlock + }); + + bytes32 anchorStateRoot = bytes32(uint256(1)); + vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); + L2.anchorV2(++anchorBlockId, anchorStateRoot, _parentGasUsed, baseFeeConfig); + + (uint256 basefee, uint64 newGasTarget,) = L2.getBasefeeV2(_parentGasUsed, baseFeeConfig); + + assertTrue(basefee != 0, "basefee is 0"); + assertEq(newGasTarget, L2.parentGasTarget()); + + // change the gas issuance to change the gas target + baseFeeConfig.gasIssuancePerSecond += 1; + + (basefee, newGasTarget,) = L2.getBasefeeV2(_parentGasUsed, baseFeeConfig); + + assertTrue(basefee != 0, "basefee is 0"); + assertTrue(newGasTarget != L2.parentGasTarget()); + } + function _anchorV2(uint32 parentGasUsed) private { bytes32 anchorStateRoot = randBytes32(); LibSharedData.BaseFeeConfig memory baseFeeConfig = LibSharedData.BaseFeeConfig({ From 051b619c6ce93a09c7e14dd8fafc99681c9261ad Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Fri, 8 Nov 2024 16:03:34 +0800 Subject: [PATCH 161/205] docs(protocol): upgrade sp1 remote verifier in Hekla (#18469) --- packages/protocol/deployments/hekla-contract-logs.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/protocol/deployments/hekla-contract-logs.md b/packages/protocol/deployments/hekla-contract-logs.md index 04193442245..54379e036fa 100644 --- a/packages/protocol/deployments/hekla-contract-logs.md +++ b/packages/protocol/deployments/hekla-contract-logs.md @@ -237,11 +237,12 @@ ### sp1_plonk_verifier -- addr : 0xa5287276f63b669E09cF6Dc6F44e941d77D7139e +- addr : 0xfb2d02219D065eBF3Aa8d2D1a1C52b1868EE7384 - logs: - deployed on September 02, 2024 at commit `16ac02e` - upgraded on September 15, 2024 at commit `6f26434` - upgraded on October 22, 2024 at commit `684a909` + - upgraded on Nov 8, 2024 at commit `0b11101` ### tier_zkvm_sp1 From 1fee7bbd918dadc4eee68a0cf190f4de27dd6dd0 Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Fri, 8 Nov 2024 00:21:55 -0800 Subject: [PATCH 162/205] feat(relayer): confirmations before indexing for relayer should be configurable (#18466) --- packages/relayer/.l1indexer.example.env | 3 ++- packages/relayer/cmd/flags/indexer.go | 8 ++++++++ packages/relayer/indexer/config.go | 2 ++ .../relayer/indexer/handle_chain_data_synced_event.go | 2 +- .../relayer/indexer/handle_message_processed_event.go | 2 +- packages/relayer/indexer/handle_message_sent_event.go | 6 +----- packages/relayer/indexer/indexer.go | 4 ++++ 7 files changed, 19 insertions(+), 8 deletions(-) diff --git a/packages/relayer/.l1indexer.example.env b/packages/relayer/.l1indexer.example.env index 8a11abd4a6e..04fda9e1aa0 100644 --- a/packages/relayer/.l1indexer.example.env +++ b/packages/relayer/.l1indexer.example.env @@ -20,4 +20,5 @@ SRC_RPC_URL=wss://l1ws.internal.taiko.xyz DEST_RPC_URL=wss://ws.internal.taiko.xyz CORS_ORIGINS=* NUM_GOROUTINES=50 -BLOCK_BATCH_SIZE=100 \ No newline at end of file +BLOCK_BATCH_SIZE=100 +CONFIRMATIONS_BEFORE_INDEXING=1 \ No newline at end of file diff --git a/packages/relayer/cmd/flags/indexer.go b/packages/relayer/cmd/flags/indexer.go index 72b7aae3cb5..4ca08198afe 100644 --- a/packages/relayer/cmd/flags/indexer.go +++ b/packages/relayer/cmd/flags/indexer.go @@ -116,6 +116,13 @@ var ( Category: indexerCategory, EnvVars: []string{"WAIT_FOR_CONFIRMATION_TIMEOUT"}, } + IndexingConfirmations = &cli.Uint64Flag{ + Name: "confirmations", + Usage: "Confirmations to wait for on source chain before indexing an event", + Value: 1, + Category: indexerCategory, + EnvVars: []string{"CONFIRMATIONS_BEFORE_INDEXING"}, + } ) var IndexerFlags = MergeFlags(CommonFlags, QueueFlags, []cli.Flag{ @@ -134,4 +141,5 @@ var IndexerFlags = MergeFlags(CommonFlags, QueueFlags, []cli.Flag{ MinFeeToIndex, TargetBlockNumber, WaitForConfirmationTimeout, + IndexingConfirmations, }) diff --git a/packages/relayer/indexer/config.go b/packages/relayer/indexer/config.go index fdc52cdb0fa..9e313af5641 100644 --- a/packages/relayer/indexer/config.go +++ b/packages/relayer/indexer/config.go @@ -54,6 +54,7 @@ type Config struct { OpenQueueFunc func() (queue.Queue, error) OpenDBFunc func() (db.DB, error) ConfirmationTimeout time.Duration + Confirmations uint64 } // NewConfigFromCliContext creates a new config instance from command line flags. @@ -89,6 +90,7 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { BackOffRetryInterval: c.Duration(flags.BackOffRetryInterval.Name), MinFeeToIndex: c.Uint64(flags.MinFeeToIndex.Name), ConfirmationTimeout: c.Duration(flags.WaitForConfirmationTimeout.Name), + Confirmations: c.Uint64(flags.IndexingConfirmations.Name), TargetBlockNumber: func() *uint64 { if c.IsSet(flags.TargetBlockNumber.Name) { value := c.Uint64(flags.TargetBlockNumber.Name) diff --git a/packages/relayer/indexer/handle_chain_data_synced_event.go b/packages/relayer/indexer/handle_chain_data_synced_event.go index c00a3cf2971..23b1b6d7c11 100644 --- a/packages/relayer/indexer/handle_chain_data_synced_event.go +++ b/packages/relayer/indexer/handle_chain_data_synced_event.go @@ -40,7 +40,7 @@ func (i *Indexer) handleChainDataSyncedEvent( if err := relayer.WaitConfirmations( confCtx, i.srcEthClient, - uint64(defaultConfirmations), + i.confirmations, event.Raw.TxHash, ); err != nil { return err diff --git a/packages/relayer/indexer/handle_message_processed_event.go b/packages/relayer/indexer/handle_message_processed_event.go index 38c04da166a..aab50ac4ebd 100644 --- a/packages/relayer/indexer/handle_message_processed_event.go +++ b/packages/relayer/indexer/handle_message_processed_event.go @@ -52,7 +52,7 @@ func (i *Indexer) handleMessageProcessedEvent( if err := relayer.WaitConfirmations( confCtx, i.srcEthClient, - uint64(defaultConfirmations), + i.confirmations, event.Raw.TxHash, ); err != nil { return err diff --git a/packages/relayer/indexer/handle_message_sent_event.go b/packages/relayer/indexer/handle_message_sent_event.go index c1e3b79e7c9..e176e144b70 100644 --- a/packages/relayer/indexer/handle_message_sent_event.go +++ b/packages/relayer/indexer/handle_message_sent_event.go @@ -15,10 +15,6 @@ import ( "github.com/taikoxyz/taiko-mono/packages/relayer/pkg/queue" ) -var ( - defaultConfirmations = 5 -) - // handleMessageSentEvent handles an individual MessageSent event func (i *Indexer) handleMessageSentEvent( ctx context.Context, @@ -61,7 +57,7 @@ func (i *Indexer) handleMessageSentEvent( if err := relayer.WaitConfirmations( confCtx, i.srcEthClient, - uint64(defaultConfirmations), + i.confirmations, event.Raw.TxHash, ); err != nil { return err diff --git a/packages/relayer/indexer/indexer.go b/packages/relayer/indexer/indexer.go index 3cd92ea5e69..fd5cc8b2557 100644 --- a/packages/relayer/indexer/indexer.go +++ b/packages/relayer/indexer/indexer.go @@ -121,6 +121,8 @@ type Indexer struct { minFeeToIndex uint64 cfg *Config + + confirmations uint64 } // InitFromCli inits a new Indexer from command line or environment variables. @@ -234,6 +236,8 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) (err error) { i.cfg = cfg + i.confirmations = cfg.Confirmations + i.ctx = ctx i.minFeeToIndex = i.cfg.MinFeeToIndex From cda3956f23f5ae913d1432e90417351db52572fb Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Fri, 8 Nov 2024 17:29:53 -0800 Subject: [PATCH 163/205] feat(docs-site): update testnet address (#18472) --- .../src/content/docs/network-reference/testnet-addresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs-site/src/content/docs/network-reference/testnet-addresses.md b/packages/docs-site/src/content/docs/network-reference/testnet-addresses.md index 46639ed2b8b..6eaad487371 100644 --- a/packages/docs-site/src/content/docs/network-reference/testnet-addresses.md +++ b/packages/docs-site/src/content/docs/network-reference/testnet-addresses.md @@ -31,7 +31,7 @@ description: Network reference page describing various important addresses on Ta | Groth16Verifier | `0x5fd84014c62D5ea28D4533D5B1B48Ca44e571057` | | Risc0Verifier | `0x4fEd801C5a876D4289e869cbEfA1E1A448b10714` | | SP1Verifier | `0xFbE49f777E0078b3Fa0bae6de4794c88d6EA6DDD` | -| PlonkVerifier | `0xa5287276f63b669E09cF6Dc6F44e941d77D7139e` | +| PlonkVerifier | `0xfb2d02219D065eBF3Aa8d2D1a1C52b1868EE7384` | | AutomataDcapAttestation | `0xC6cD3878Fc56F2b2BaB0769C580fc230A95e1398` | | PemCertChainLib | `0x08d7865e7F534d743Aba5874A9AD04bcB223a92E` | | ProverSet | `0xD3f681bD6B49887A48cC9C9953720903967E9DC0` | From f4cc61862d0498aa194c5c3d92263fb158c6dc8c Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Fri, 8 Nov 2024 17:30:34 -0800 Subject: [PATCH 164/205] feat(repo): fix workflows, restore merge-gatekeeper (#18471) --- .github/workflows/bridge-ui.yml | 6 +++--- .github/workflows/docs-site--preview.yml | 2 +- .github/workflows/eventindexer.yml | 6 +++--- .github/workflows/fork-diff--preview.yml | 2 +- .../guardian-prover-health-check-ui--ci.yml | 1 + .../guardian-prover-health-check-ui.yml | 6 +++--- .../guardian-prover-health-check.yml | 6 +++--- .github/workflows/nfts.yml | 2 +- .github/workflows/protocol-monitors.yml | 2 +- .github/workflows/protocol.yml | 4 ++-- .github/workflows/relayer.yml | 6 +++--- .github/workflows/repo--merge-gatekeeper.yml | 21 +++++++++++++++++++ .github/workflows/supplementary-contracts.yml | 2 +- .github/workflows/taiko-client--hive_test.yml | 2 +- .github/workflows/taiko-client--test.yml | 4 ++-- 15 files changed, 47 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/repo--merge-gatekeeper.yml diff --git a/.github/workflows/bridge-ui.yml b/.github/workflows/bridge-ui.yml index 863ad8beb52..68815001452 100644 --- a/.github/workflows/bridge-ui.yml +++ b/.github/workflows/bridge-ui.yml @@ -17,7 +17,7 @@ on: jobs: build-and-test: - if: ${{ github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} uses: ./.github/workflows/bridge-ui--ci.yml # Deployment name follow the pattern: deploy___ @@ -37,7 +37,7 @@ jobs: # Hekla testnet deploy_bridge-ui_hekla_preview: - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: @@ -62,7 +62,7 @@ jobs: # Mainnet deploy_bridge-ui_mainnet_preview: - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: diff --git a/.github/workflows/docs-site--preview.yml b/.github/workflows/docs-site--preview.yml index d5b8a5df14a..406087e9508 100644 --- a/.github/workflows/docs-site--preview.yml +++ b/.github/workflows/docs-site--preview.yml @@ -14,7 +14,7 @@ on: jobs: deploy-docs-site-preview: - if: ${{ github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} runs-on: [arc-runner-set] steps: - name: Install Git diff --git a/.github/workflows/eventindexer.yml b/.github/workflows/eventindexer.yml index e69ed716b8d..ac9e655c252 100644 --- a/.github/workflows/eventindexer.yml +++ b/.github/workflows/eventindexer.yml @@ -19,7 +19,7 @@ on: jobs: lint-eventindexer: name: lint-eventindexer - if: github.event_name == 'pull_request' + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please' && !startsWith(github.head_ref, 'refs/heads/dependabot/')) }} runs-on: [arc-runner-set] steps: - uses: actions/setup-go@v5 @@ -38,7 +38,7 @@ jobs: test-eventindexer: runs-on: [arc-runner-set] - if: ${{ github.event_name == 'pull_request' && github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please' && !startsWith(github.head_ref, 'refs/heads/dependabot/')) }} needs: lint-eventindexer steps: - name: Cancel Previous Runs @@ -66,7 +66,7 @@ jobs: push-eventindexer-docker-image: # Skip dependabot PRs - if: ${{ github.event_name == 'pull_request' && ! startsWith(github.ref, 'refs/heads/dependabot/') }} + if: ${{ github.event_name == 'pull_request' && ! startsWith(github.head_ref, 'refs/heads/dependabot/') && !startsWith(github.head_ref, 'release-please') }} name: Build and push docker image runs-on: [arc-runner-set] diff --git a/.github/workflows/fork-diff--preview.yml b/.github/workflows/fork-diff--preview.yml index a3c75218541..cc1af86c65d 100644 --- a/.github/workflows/fork-diff--preview.yml +++ b/.github/workflows/fork-diff--preview.yml @@ -14,7 +14,7 @@ on: jobs: deploy-fork-diff-preview: - if: ${{ github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} runs-on: [arc-runner-set] steps: - name: Install Git diff --git a/.github/workflows/guardian-prover-health-check-ui--ci.yml b/.github/workflows/guardian-prover-health-check-ui--ci.yml index c2935406a18..abdf477b41b 100644 --- a/.github/workflows/guardian-prover-health-check-ui--ci.yml +++ b/.github/workflows/guardian-prover-health-check-ui--ci.yml @@ -4,6 +4,7 @@ on: workflow_call jobs: check-guardian-prover-health-check-ui: + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') && !startsWith(github.head_ref, 'refs/heads/dependabot/') }} runs-on: [taiko-runner] steps: - name: Cancel previous runs diff --git a/.github/workflows/guardian-prover-health-check-ui.yml b/.github/workflows/guardian-prover-health-check-ui.yml index 7bf6a6eef0d..ad0d4aa069c 100644 --- a/.github/workflows/guardian-prover-health-check-ui.yml +++ b/.github/workflows/guardian-prover-health-check-ui.yml @@ -17,7 +17,7 @@ jobs: # Deployment name follow the pattern: deploy___ # deploy_guardians-ui_devnet_preview: - # if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + # if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} # needs: build-and-test # uses: ./.github/workflows/repo--vercel-deploy.yml # with: @@ -31,7 +31,7 @@ jobs: deploy_guardians-ui_hekla_preview: - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: @@ -43,7 +43,7 @@ jobs: vercel_token: ${{ secrets.VERCEL_TOKEN }} deploy_guardians-ui_mainnet_preview: - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: diff --git a/.github/workflows/guardian-prover-health-check.yml b/.github/workflows/guardian-prover-health-check.yml index 01c814a72d3..d27542c8d34 100644 --- a/.github/workflows/guardian-prover-health-check.yml +++ b/.github/workflows/guardian-prover-health-check.yml @@ -17,7 +17,7 @@ on: jobs: lint-guardian-prover-health-check: - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} name: lint-guardian-prover-health-check runs-on: [taiko-runner] steps: @@ -36,7 +36,7 @@ jobs: args: --config=.golangci.yml --timeout=4m test-guardian-prover-health-check: - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} runs-on: [taiko-runner] needs: lint-guardian-prover-health-check steps: @@ -62,7 +62,7 @@ jobs: push-guardian-prover-health-check-docker-image: # Skip dependabot PRs - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please' && !startsWith(github.head_ref, 'refs/heads/dependabot/')) }} name: Build and push docker image runs-on: [taiko-runner] diff --git a/.github/workflows/nfts.yml b/.github/workflows/nfts.yml index 5ac04faffb5..269caac6802 100644 --- a/.github/workflows/nfts.yml +++ b/.github/workflows/nfts.yml @@ -11,7 +11,7 @@ on: jobs: build-nfts-contracts: - if: ${{ github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} runs-on: [arc-runner-set] steps: - name: Cancel previous runs diff --git a/.github/workflows/protocol-monitors.yml b/.github/workflows/protocol-monitors.yml index e59220bee69..ad640962afe 100644 --- a/.github/workflows/protocol-monitors.yml +++ b/.github/workflows/protocol-monitors.yml @@ -10,7 +10,7 @@ on: jobs: deploy-protocol-monitors: - if: ${{ github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} runs-on: [taiko-runner] permissions: # Give the necessary permissions for stefanzweifel/git-auto-commit-action. diff --git a/.github/workflows/protocol.yml b/.github/workflows/protocol.yml index 913e10d9108..174b02a4df0 100644 --- a/.github/workflows/protocol.yml +++ b/.github/workflows/protocol.yml @@ -15,7 +15,7 @@ on: jobs: build-protocol: - if: ${{ github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} runs-on: [arc-runner-set] permissions: # Give the necessary permissions for stefanzweifel/git-auto-commit-action. @@ -69,7 +69,7 @@ jobs: pnpm test:deploy:l1 genesis-docker: - if: ${{ github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} runs-on: [taiko-runner] permissions: # Give the necessary permissions for stefanzweifel/git-auto-commit-action. diff --git a/.github/workflows/relayer.yml b/.github/workflows/relayer.yml index 69096c96642..c82b9a18fe9 100644 --- a/.github/workflows/relayer.yml +++ b/.github/workflows/relayer.yml @@ -19,7 +19,7 @@ on: jobs: lint-relayer: name: lint-relayer - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') && !startsWith(github.head_ref, 'refs/heads/dependabot/')}} runs-on: [arc-runner-set] steps: - uses: actions/setup-go@v5 @@ -37,7 +37,7 @@ jobs: args: --config=.golangci.yml --timeout=4m test-relayer: - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') && !startsWith(github.head_ref, 'refs/heads/dependabot/') }} runs-on: [arc-runner-set] needs: lint-relayer steps: @@ -66,7 +66,7 @@ jobs: push-relayer-docker-image: # Skip dependabot PRs - if: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'option.workflow_on') || github.event.pull_request.draft == false && github.head_ref != 'release-please-*') }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') && !startsWith(github.head_ref, 'refs/heads/dependabot/') }} name: Build and push docker image runs-on: [arc-runner-set] diff --git a/.github/workflows/repo--merge-gatekeeper.yml b/.github/workflows/repo--merge-gatekeeper.yml new file mode 100644 index 00000000000..08db85e59a6 --- /dev/null +++ b/.github/workflows/repo--merge-gatekeeper.yml @@ -0,0 +1,21 @@ +name: Merge Gatekeeper + +on: + pull_request: + branches: + - main + merge_group: # Trigger in merge queue to pass the required status check + +jobs: + merge-gatekeeper: + if: github.event_name == 'pull_request' + runs-on: [arc-runner-set] + permissions: + checks: read + statuses: read + steps: + - name: Run Merge Gatekeeper + uses: upsidr/merge-gatekeeper@v1 + with: + timeout: 1200 + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/supplementary-contracts.yml b/.github/workflows/supplementary-contracts.yml index 396d268181b..1fb4203d178 100644 --- a/.github/workflows/supplementary-contracts.yml +++ b/.github/workflows/supplementary-contracts.yml @@ -10,7 +10,7 @@ on: jobs: build-supplementary-contracts: - if: ${{ github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} runs-on: [arc-runner-set] steps: - name: Cancel previous runs diff --git a/.github/workflows/taiko-client--hive_test.yml b/.github/workflows/taiko-client--hive_test.yml index bf8a3312d14..33ecbac03c0 100644 --- a/.github/workflows/taiko-client--hive_test.yml +++ b/.github/workflows/taiko-client--hive_test.yml @@ -12,7 +12,7 @@ on: jobs: hive_tests: - if: contains(github.event.pull_request.labels.*.name, 'option.workflow_on') && github.event.pull_request.draft == false && github.head_ref != 'release-please-*' + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} name: hive tests runs-on: [arc-runner-set] timeout-minutes: 40 diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index 54f4caadb76..0df43a2b887 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -12,7 +12,7 @@ on: jobs: lint: - if: ${{ github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} name: Lint runs-on: [ubuntu-latest] steps: @@ -32,7 +32,7 @@ jobs: run: golangci-lint run --path-prefix=./ --config=.golangci.yml integration_tests: - if: ${{ github.event.pull_request.draft == false }} + if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} name: Integration tests runs-on: [ubuntu-latest] timeout-minutes: 15 From 3481b68e8d377c1ae6fc5a1a0e08d8411f94c613 Mon Sep 17 00:00:00 2001 From: David Date: Sat, 9 Nov 2024 09:30:59 +0800 Subject: [PATCH 165/205] docs(protocol): add mainnet zkVM verifiers deployment (#18454) --- .../mainnet/addrcache/RollupAddressCache.sol | 2 +- .../deployments/mainnet-contract-logs-L1.md | 39 +++++++++++++++++-- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol index cf5877f94d1..d299485add7 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol @@ -37,7 +37,7 @@ contract RollupAddressCache is AddressCache { return (true, 0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a); } if (_name == LibStrings.B_TIER_ROUTER) { - return (true, 0x8f1C1D58C858e9a9eeCc587d7D51AECfd16b5542); + return (true, 0x1c02D13312B274648639630022C79d9F050f34e3); } if (_name == LibStrings.B_TIER_SGX) { return (true, 0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81); diff --git a/packages/protocol/deployments/mainnet-contract-logs-L1.md b/packages/protocol/deployments/mainnet-contract-logs-L1.md index 183a5364c0c..e8e680ab9ef 100644 --- a/packages/protocol/deployments/mainnet-contract-logs-L1.md +++ b/packages/protocol/deployments/mainnet-contract-logs-L1.md @@ -175,14 +175,19 @@ - ens: `ram.based.taiko.eth` - proxy: `0x579f40D0BE111b823962043702cabe6Aaa290780` -- impl: `0x190D5d50D98D2202a618f75B2fD9986e60E096be` +- impl: `0x6D8e6e1a061791AD17A55De5e15a111c58f6Fb3D` - names: + - bond_token: `0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800` - taiko_token: `0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800` - signal_service: `0x9e0a24964e5397B566c1ed39258e21aB5E35C77C` - bridge: `0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC` - taiko: `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a` - - tier_router: `0x6e997f1f22c40ba37f633b08f3b07e10ed43155a` + - tier_router: `0x1c02D13312B274648639630022C79d9F050f34e3` - tier_sgx: `0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81` + - risc0_groth16_verifier: `0xcF706D99C265fC2349AE43c5f6BFD7931FE5308D` + - tier_zkvm_risc0: `0x55902b2D3DF2A65370A89C86Ae9dd71Ecd508edc` + - sp1_remote_verifier: `0x2D33d748644dAb8B3FB0E07642d9dE96b816d067` + - tier_zkvm_sp1: `0x5c44f2239925b0d86d2BFEe539f19CD0A08Af452` - tier_guardian_minority: `0x579A8d63a2Db646284CBFE31FE5082c9989E985c` - tier_guardian: `0xE3D777143Ea25A6E031d1e921F396750885f43aC` - automata_dcap_attestation: `0x8d7C954960a36a7596d7eA4945dDf891967ca8A3` @@ -210,6 +215,7 @@ - register `prover_set` to `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748` - upgraded from `0x4f6D5D3109C07E77035B410602996e445b18E8E9` to `0x3202Fc255aE09F91DbbD5b000b87dA4A2E04eE37` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` - upgraded from `0x3202Fc255aE09F91DbbD5b000b87dA4A2E04eE37` to `0x190D5d50D98D2202a618f75B2fD9986e60E096be` @commit`4fd7b59` @tx`0xf26d0526aa4b8225c603720ce0dc016803188b959c50677d5446087d1f2c4e60` + - upgraded from `0x190D5d50D98D2202a618f75B2fD9986e60E096be` to `0x6D8e6e1a061791AD17A55De5e15a111c58f6Fb3D` @commit`2625c60` @tx`0x5d46840df79d8df508880675e7ea549e9b46137f597ca520c3e0c979439441d1` #### taikoL1 @@ -238,11 +244,12 @@ #### tier_router -- impl: `0x8f1C1D58C858e9a9eeCc587d7D51AECfd16b5542` +- impl: `0x6Cc40878Fef0918b1dCBF4cfbC6F7E46e9Db269E` - logs: - deployed on Oct 24, 2024 @commit`7334b1d` - deployed on Nov 1, 2024 @commit`f4f4796` - deployed on Nov 2, 2024 @commit`9182fba` + - deployed on Nov 8, 2024 @commit`1fee7bb` without changes in [PR #18371](https://github.com/taikoxyz/taiko-mono/pull/18371) #### tier_sgx @@ -257,6 +264,20 @@ - Upgraded from `0xEE5F6648307319263FFBaE91f68ac700b188fF24` to `0x7EE4CEF8a945639e09DDf3032e9d95c8d90f07f3` @commit`dd09223` @tx`0x2e246e4b4637c4bf13dccea873a30e35e704bafa7f02e30c877ecec7d786e662` - Upgraded from `0x7EE4CEF8a945639e09DDf3032e9d95c8d90f07f3` to `0x81DFEA931500cdcf0460e9EC45FA283A6B7f0838` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` +#### tier_risk0 + +- proxy: `0x55902b2D3DF2A65370A89C86Ae9dd71Ecd508edc` +- impl: `0xefe30A0D56a5804F695f971010597262CAd9A2c3` +- logs: + - deployed on Nov 6, 2024 @commit`bfb0386` + +#### tier_sp1 + +- proxy: `0x5c44f2239925b0d86d2BFEe539f19CD0A08Af452` +- impl: `0x5f5b83Ca87E2fBc513B800FeD6cCD626536d7219` +- logs: + - deployed on Nov 8, 2024 @commit`0b11101` + #### guardian_prover_minority - ens: `guardians1.based.taiko.eth` @@ -326,6 +347,18 @@ - logs: - deployed on May 1, 2024 @commit`56dddf2b6` +#### risc0_groth16_verifier + +- impl: `0xcF706D99C265fC2349AE43c5f6BFD7931FE5308D` +- logs: + - deployed on Nov 6, 2024 @commit`bfb0386` + +#### sp1_remote_verifier + +- impl: `0x2D33d748644dAb8B3FB0E07642d9dE96b816d067` +- logs: + - deployed on Nov 8, 2024 @commit`0b11101` + #### automata_dcap_attestation - proxy: `0x8d7C954960a36a7596d7eA4945dDf891967ca8A3` From e84e472e4a0479301d5ce1d4268d964705dcbbd0 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Sat, 9 Nov 2024 10:47:36 +0800 Subject: [PATCH 166/205] feat(protocol): measure gas per block using a debug event (#18470) --- .../contracts/layer1/based/TaikoL1.sol | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index 0a1175e5fce..1ce30755442 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -25,6 +25,13 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { uint256[50] private __gap; + /// @dev Emitted to assist with future gas optimizations. + /// @param isProposeBlock True if measuring gas for proposing a block, false if measuring gas + /// for proving a block. + /// @param gasUsed The average gas used per block, including verifications. + /// @param batchSize The number of blocks proposed or proved. + event DebugGasPerBlock(bool isProposeBlock, uint256 gasUsed, uint256 batchSize); + error L1_FORK_HEIGHT_ERROR(); modifier whenProvingNotPaused() { @@ -37,6 +44,16 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { emit StateVariablesUpdated(state.slotB); } + modifier measureGasUsed(bool _isProposeBlock, uint256 _batchSize) { + uint256 gas = gasleft(); + _; + unchecked { + if (_batchSize > 0) { + emit DebugGasPerBlock(_isProposeBlock, gas - gasleft() / _batchSize, _batchSize); + } + } + } + /// @notice Initializes the contract. /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. /// @param _rollupAddressManager The address of the {AddressManager} contract. @@ -73,6 +90,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { bytes calldata _txList ) external + measureGasUsed(true, 1) whenNotPaused nonReentrant emitEventForClient @@ -88,6 +106,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { bytes[] calldata _txListArr ) external + measureGasUsed(true, _paramsArr.length) whenNotPaused nonReentrant emitEventForClient @@ -103,6 +122,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { bytes calldata _input ) external + measureGasUsed(false, 1) whenNotPaused whenProvingNotPaused nonReentrant @@ -118,6 +138,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { bytes calldata _batchProof ) external + measureGasUsed(false, _blockIds.length) whenNotPaused whenProvingNotPaused nonReentrant From f24a908e60c062ad789a34765de5a1037bdb1ff0 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Sun, 10 Nov 2024 09:53:52 +0800 Subject: [PATCH 167/205] feat(protocol): increase zk(risc0 & sp1) rate in mainnet (#18481) --- .../contracts/layer1/mainnet/rollup/MainnetTierRouter.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol index a2e0784e1fd..0499226f1ce 100644 --- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol +++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol @@ -35,8 +35,8 @@ contract MainnetTierRouter is ITierRouter, TierProviderBase { /// @inheritdoc ITierProvider function getMinTier(address _proposer, uint256 _rand) public view override returns (uint16) { if (_proposer == DAO_FALLBACK_PROPOSER) { - if (_rand % 1000 == 0) return LibTiers.TIER_ZKVM_RISC0; - else if (_rand % 1000 == 1) return LibTiers.TIER_ZKVM_SP1; + if (_rand % 200 == 0) return LibTiers.TIER_ZKVM_RISC0; + else if (_rand % 40 == 1) return LibTiers.TIER_ZKVM_SP1; else return LibTiers.TIER_SGX; } return LibTiers.TIER_SGX; From 06e190c01bc4c4aae25664e8c2c154d8cf46efa5 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 11 Nov 2024 10:25:47 +0800 Subject: [PATCH 168/205] test(protocol): check LibEIP1559 function results in fuzz tests (#18475) --- .../protocol/test/layer2/LibEIP1559.t.sol | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/packages/protocol/test/layer2/LibEIP1559.t.sol b/packages/protocol/test/layer2/LibEIP1559.t.sol index 7b140951f9c..31368b2e494 100644 --- a/packages/protocol/test/layer2/LibEIP1559.t.sol +++ b/packages/protocol/test/layer2/LibEIP1559.t.sol @@ -100,25 +100,37 @@ contract TestLibEIP1559 is TaikoL2Test { /// forge-config: layer2.fuzz.runs = 1000 /// forge-config: layer2.fuzz.show-logs = true - function test_fuzz_ethQty(uint64 _gasTarget, uint64 _gasExcess) external pure { + function test_fuzz_ethQty(uint64 _gasTarget, uint64 _gasExcess) external { if (_gasTarget == 0) _gasTarget = 1; + uint256 result = LibEIP1559.ethQty(_gasTarget, _gasExcess); + assertTrue(result > 0); + } - LibEIP1559.ethQty(_gasTarget, _gasExcess); + /// forge-config: layer2.fuzz.runs = 2000 + /// forge-config: layer2.fuzz.show-logs = true + function test_fuzz_basefee(uint64 _gasTarget, uint64 _gasExcess) external { + uint256 result = LibEIP1559.basefee(_gasTarget, _gasExcess); + assertTrue(result >= 1); } /// forge-config: layer2.fuzz.runs = 2000 /// forge-config: layer2.fuzz.show-logs = true function test_fuzz_adjustExcess( - uint64 _gasTarget, + uint64 _oldGasTarget, uint64 _newGasTarget, - uint64 _gasExcess + uint64 _oldGasExcess ) external - pure { - if (_gasTarget == 0) _gasTarget = 1; - if (_newGasTarget == 0) _newGasTarget = 1; - LibEIP1559.adjustExcess(_gasTarget, _newGasTarget, _gasExcess); + (uint64 newGasTarget_, uint64 newGasExcess_) = + LibEIP1559.adjustExcess(_oldGasTarget, _newGasTarget, _oldGasExcess); + + if (_oldGasTarget == 0 && _newGasTarget == 0) { + assertEq(newGasTarget_, 0); + assertEq(newGasExcess_, _oldGasExcess); + } else { + assertTrue(newGasTarget_ != 0); + } } /// forge-config: layer2.fuzz.runs = 2000 From 3dff5248ae06be93c69c99b3d891133d8cbe2057 Mon Sep 17 00:00:00 2001 From: Dmitry <98899785+mdqst@users.noreply.github.com> Date: Tue, 12 Nov 2024 00:56:34 +0300 Subject: [PATCH 169/205] chore(docs-site): update block-states.mdx (#18480) --- .../docs-site/src/content/docs/core-concepts/block-states.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs-site/src/content/docs/core-concepts/block-states.mdx b/packages/docs-site/src/content/docs/core-concepts/block-states.mdx index 734d9a38919..8ba4d50cefc 100644 --- a/packages/docs-site/src/content/docs/core-concepts/block-states.mdx +++ b/packages/docs-site/src/content/docs/core-concepts/block-states.mdx @@ -34,4 +34,4 @@ A Taiko block is `Finalized`/`Verified` when every state transition from genesis The above Taiko block with blockID `0x19a3c` would thus be considered `Safe` if the L1 block with the blockHash `0x419f..` reaches a `Safe` state. -The Taiko block with blockID `019a3c` would be `Finalized`/`Verified` if every state transition from genesis to the current block has a valid proof. +The Taiko block with blockID `0x19a3c` would be `Finalized`/`Verified` if every state transition from genesis to the current block has a valid proof. From 7d3a18db8c181ac5c1b4c7545c6809d20e20dc81 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Mon, 11 Nov 2024 19:51:42 -0800 Subject: [PATCH 170/205] fix(repo): ignore draft PRs merge-gatekeeper (#18488) --- .github/workflows/repo--merge-gatekeeper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/repo--merge-gatekeeper.yml b/.github/workflows/repo--merge-gatekeeper.yml index 08db85e59a6..795a81aa7cf 100644 --- a/.github/workflows/repo--merge-gatekeeper.yml +++ b/.github/workflows/repo--merge-gatekeeper.yml @@ -8,7 +8,7 @@ on: jobs: merge-gatekeeper: - if: github.event_name == 'pull_request' + if: ${{ github.event_name == 'pull_request' && github.event.pull_request.draft == false }} runs-on: [arc-runner-set] permissions: checks: read From af081af99512e07763f1b95f2f747d43633320da Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Mon, 11 Nov 2024 19:59:33 -0800 Subject: [PATCH 171/205] feat(docs-site): update tier config and graphic (#18487) --- .../proof-tier-config-mn.webp | Bin 174450 -> 281210 bytes .../network-configuration.mdx | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-mn.webp b/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-mn.webp index 1200168191e33d2f58e2511b2619c090bcbbb429..42b50901739ff6845c8757310e67e00136334c48 100644 GIT binary patch literal 281210 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�aWP~6J_Q5%d;I20C4=Y_9CTyc?IT& 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 Z{0{kL?k^`S`WL_-DRFtRd=Ufh{{sM2webJ| literal 174450 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%0AHBwtYhM4?4NW?J<+Q@^6ilI>F z2oM;&(@IC(SofiY6)ocJ(RjSKvzA1zX;W7Wu48Q9*J#`ma8ftMN`c<-lR2jOCXb8t zZ@R|hQlLz%%x}cb88Kdw1EFEQ6{M7VE9cbQ?JsRF|0Y)8Ih52|mX1WV)(C-${DO{< zn|-5A15`;s#eP7$^GT6N{K*-zm_K&T*63pq`o9eIw}TN7OIPG9cc8A(cNDNe>^(6) z@KRolcA0;cl|JIm=OJavLelYpu^TANyL&PfPZ;UZ%=HnogM90;>JhZS>VuP0-ITyx zkGJFI056kgl6*bi8Dwk!n;IYZTQKl9ZL=@-CksLZBu{)egKlm>`uyeJl@5QhW<52K zn@RyUwf>YC{u?*_^FGD@z2yJZwnXLB?ygT&u3$EXQ1@BxG>^>#X++yv*3wF1ah7?E z3Y`@o)=g&~?kt0r0e)vol6ylGup6sA#x@W%Jq_wg91=|PYW0(r^G~n%!(l$D`sU$b z-nmn|n1zvFlvJd>)NfD1(1E~$`<215n=G}Y=7$iDi&oebFyPL_7^x^RsAT+ScnuGwaNIWxkBCw-(Kw$b$3W7l!&IeeSA)LfUAJy21SFW#$# zi4k_a`v*r+AzQ(HODmkD5ql(43azZdvehzlSCyqkcpoN;}1Ah}&=KL#; zAFD3@Y48VpZ3F@k8L<6{=s7HUN%0&$gVlm@Q+H)rWybE;km5^68Z)2(@88eZJ>Q^5 zxw#+QqT!Znf?H;m^51N+ zEP;|0Ule`(lf0m0#DwM_C`C`4xW{*z&Fm65>6zZ$RjKg7s0ah-b~>nW^sxi>6 zHFxd{-QRM8g6CPB90cOByVox>o_rZ+a1l94m0`wRLa_E23VN=-B}Yb4(EueZ zu1T0-K%Ogx^c%H!pn0JEXY;VA#Bl5>x6ZXy%Obt|2i?SuW46${Xl*LP@BWA1zB%v? z-=BG7eZAx#c<|Phj=}KS>h{dAy>-$P6WqZbT#Rp4}6X)`OZK3 z7BjL}HjY3QN!H+rsadD@2QlpMFgZ85cdY-ylbgfOpbYd9Uo9@D*Inz^o9{cPw2#$K zQG>{%5;;+5_IwbB*AzB1p-M|`OuQ3M1FkmyhDfas6a+kGJ)fjmH2!Y+KLWT2WBBpv zbvk|2e5dKp@j8(WVJm4LaZmim2|~P3CN>44W$DAct?adcEeGtyhskg-wqc>Ht6@+1 zp}{FnA2Vsy!uVIZU;Mg)WI4i*N3RQbbPi32d|A3=A_34s(T5Nc4n+E;U7&gD`VR=y z)p+>=34;Ph2ke^=z#upDk>_|2VDuf>8^<3wbS?Li@G*WFx;QPK(*9f3G8it|6bW8W zVJ%QYyx$)4KJL1dS2h_0Y1{xJe?>gm)7Q+~d*=E|B}=C!G+<9)&FoHhjbE*Kgp=i2 zZcbOWm(MT%FgXK9GL+{14JaG$v;u&@aoewT zU4Yu6;BG9?M>e$V9XmbPYHxo{R44ageAk)lo5uD70t0n z6F?_i2i zv)=ML*yRC@W{}+xhpJ7#$y3NilQ=oDgL{ZycUUN>V)cGe-bC~&lexyk*8=b>5+~cB zDYTXLk!eTr-ORxwa-5ZU9$yM=mn)tt<~ruK2wXZB2IZy8V=2kt+my({KPVX%7JUaf z<>lG&Xo+{nq%OavgJcfujj_(J5|;;yIItBQqm^>*ZO zO%qHNe;7#rS&p7adX)npTm})C@%a7Q>yKl?XTd%XQpE;9gz)POgBwu>KKbx2C-UY) zC*DY?^cg`PyYSCz7qC& zzC=ULx9yU^pV;W+a|pqKB)M)t5!zLtS1;XU(BF;M%noeK8Gd|+UCMOqabP1kl(|%E z2m3>Yhkj+`w>ZPsE?<(**)cop)8H1F2c(ul1TcXt8h@6*EevzS=DI2-Cg+Bv-m%a(t-Kj}eB z@NeCp$k!u3#^t7cK2mDLCFuB48Gs_XK(jc&(FCn}NLOCHgIG%gn#J6ajq?t9wU9~@ z!jj1;JOMDL*wcF9&T=@!w2(JJSatFCpm}M(HNbHqv8I~B_6R$hq@d9b$a*1JY3ihl?G&_Q1=_D++YOX!xp>o?q^YvSSccB^ zP^wgpKYlr`qs8M%ST-AYjaq-P2*~ka87YC7V!?nn#M(QE3nC zy-An_(d&A2R#Kl1AQ8F%)-eOT+>_R4_|1SmvSjJqEcXfj~(dFA$ z8>$kZ-7UcePN2lwXyHssmyJ_dCkBX?X~jvG+93HObH8%zkOKjh#(-uySc|%`p4$T& z5k)UBe50^tnB?aRkX=oQv&7Ii)N2Q6LPj+HF%D*hqidGJ31CW8rCPV|LufkW;9U_c zim<9Z5-FNDQ2g#GwH_mHS~g)Jj)DZx(AJl3NKK#PY)UXtxjPx0aV<)X5z_WPCQ;j2 z8>^Z5&RxKKynmI$_RBfuXZDkAwKMVee8gF?(2pC$UYp@Gulhr)C5!*KrM9NbWS(#B zgjV=lW92JE@(JnQtMJ0{si5p0Wv9Jkc5aCo*AELDO_zz6rT{Z*36%xQcWK4MWgJN@ zjXD|uXc-K3qcw@dzmsW~dTdwnNFks!8z+ZI_@{VQNliV)S{;CpV#2q|4xzR+O51G# z^5LEF?lNBA2!cyFWW*02)xu10fK=o>HlEyaCU{81AI}2#|EE#kRfBfg-pvAVlPw~?Q}9u0=_1%JqQ(2k zYQ>ZBHAE_OgE%;l@(_FQWZM*2q}?YS_ZURGkZZe4JRSHmGo-DksYAQK0M@HqXl=yD zIDXKbbQIzGfb#e|bJ9mnj|uz%;VM1yI%5mxXXyFVur7Mw3n+kN8QRyjfpkWe@#nU< z?Eamiq(ip2<5K+$LaY%sg~aUnVr1*Cl_~|4%XuS?8DGKHTaq~j(*yo&NdL4Sl_tYj z_K%;ngxV91M{Z*1@A6$hWvjFvL6Qe$0(BoMd-q0~q~56cmzT#_B*!c2&Qd?CA5&rN zLssLhLg-Bpqw}z>6tta$bsJt{3%1RD++V8^Tk_q9=X>VD^#_jdl;y<^Q4SzZz|}dh zW~Rc#s#|ZPUrZFEXX79SY>o(CNn5vJ7_AkBliKh_&jz3#sw?LzyXEc}Vmf2jlX%U( zSOqL78?8gf-3FP~pT>Tr(K=qPLEfZqlcwMYDV^Gk9a_)cJZN?SrYpvDHhMpI-u~c-p;i5BI5v@}<=wMPR1qRX*^H*rfem7i8G8Umu>oZJs{WBU**0VRlF+`taIUS-wR?WXWj+Jz@n6ROyjkhb9SXmTf$BQT7m zV|C}B3J9`x8vq7o0JgM7Uk4rn7?u+KS0i8#Tl(D>XO&rF84HBRea>XjWtVIM5Bh#@ zNZsgt+TaBFehP&Zb_)91^GTOzJPD?P*T!^!?XOlVp>3yZ_Xf!?9omAZ+(PQy*zpA- za=HM7q?MIDSqT1$Jdp1@xQK|P2V3n(eN76zHVuP@ASxZ&+EaApN$~#Q-te<`vY!*n zpwOn#Al<}>9ZFnN_I0fhFE+KwO5-jX2)~QQ-ZyM|T%14WyWxFf#@a=`$H#s9BS`AW zoVqLDug{PE8q2xQQ__`PHb;1k3A&j!-m0Bx0h?CdrvyB+HD&i>r_0~s&MODB>oWwq|Jk~d~2HemJ?a(fmEzTxKh<65Dp^2c_9bveX(%;2NGTvD?@t`bED$O<{v_Z|fl68O~ zcB5To`sRrAnvo*|RNLP>5}Q9{{PZGff#eq$&DWp&#_>}=ZKc}5j$W-kP70B0fJht) zGJZ`LNwP5$JwI^y!w6Ixzf6Mr>7vaetSQ_D!G@tqcDG{5SI*OKq@pPDE9lyx4NEF0 zp%Cpixbz-2nI72DGYH!$aqO2Q8+p}xi)nTZk$~iUj?Zz!$|wnr?ax2vVZU9Z={1Si z86El{XbLv!wq~`H(yhw@2C1Ec-iYL3lTAI4y14VLnWH@oMBJ7nZzSq8pFz6h4_Q^_ zrhJ1izc!x z_jZwACQ9;VD1F;VZ_uym64VicQOHJIdk&`z-2vr_^%K;m)KF=9Pt+5>Woy*^+!6w6KDGxjXaF34 zw6z98EtRksDLQ#X zf+0mLYBOF7Q8*c(rpiF6b#CtERj%Fy-D}4stQqfi0Ce|U3L8(vcDoOXU0sTT?T175 ziodoRfjG@I;e=;(n)z%E<|kAk=@b+USrZxkO%IW!)yjqW@DRX67;gs8y5ETkh<|e3 z&Fz78!$vaq7X-wx4O9aeNA@H+*k$Gj0|}CKdxjsX56BJ4fyyOF?=_RIFxXvvQ!Zq} zA+^sOer=X}1SGaBT4_+JHe(@x{N3!FwU1-Ea@uY6a?ac#4z_K?u#7vSrK^r4S^J za&ig@iaW4onvDth;IE<4?A|@w;^&OrLz36{mcFe5CJBPb0kAi5X+SszE{cW<&SJ1- zUYXPz2sOGWYIYlfJh_aG2*fn2@7Gd^Xl;t9g@JB@yv`c!3TE4M5Ilf@^-GTc-G|}+ zLIarxn|k^Lw!k^ON*$^^uK5pzIEM*7(a;!--Qo7%3)OobEQ9hxEM{c~#qoO193aKXm319?- zan}1XY=!rOh}qrBILfErlFdntQ`OJ3-ELtc+YhEjPq+l{Z(=TiT-y!G{GfntD5+=Z z=?K?{d7)A*%2uCF++^)E-vCo@)yc{eBx&7E*;rC$QQRq+IY^9XnCca6IfKMwo}z!I zq@k}iGcOpMUuxqHhcK74H+#hoIcYHRE5P2#9iujUydIL z&`mrgs2@gN%maPbjs|I4hgJ9ura5V7sNTRQ$SIse=s*y{3261#au=EpU6P%|j|r8Z1;+824KP4&~;*Gpo= zIDg;CTb`%MA#vg?>DO=2FqYVo9DlC^mADp^Q&5*T*#WGZ_=QW%d-c!Fq&KO-W(*2* zTb8pUg|wRqQACf1VOo-$6Z5q3Iw?&{)8F51R(1nLMt4fIJv_19b`tdGN?g&F=!Ojm znAH9`XUJT{1=|r-``dq12oq+pc)EML`vV5@ z`T-S<6bis7TfK*HB@2!pH>m5+OLasN(FM=x05#u02fSfr7h>^?bU%COxNsyGmzwN8W9 zj_Fi{c2y4CYT|lkb)>~49I_NalyC=vtLQRl6PS4XMYMtXDmX0G6Kbef+`eotbTbcK z$iREL*-rhznqZ51MqdsY69+G&0Z%_5(=!qM_}Z>vOv3wMioV;qdNW}%bHEt&V+1_K zp&QWniCZucP>$a8UtlL61%i_9%f|6{PNu$l$;>#-?uiuMQEnTq!*Sxy5F6JFY)s@*gI$q|F8@{0((xMd zM-QUz*SX0@qk{hKA?1%Y@9Ik>p>V}^??Q4?SUmX$T>`X5^=oQ=4)(I~=L323h;oq6 zl?hjy+rQ^aF;LX$pzWpR(cn=Dg4Egq{_`Rr+;3#S%e4qpnUq4Wx%ohpGJ9L#Xe^13 zBvFUjhKPf~7;xRUvw$a7%QYPUIFe$uv6w9Lk_ z9^ZMVOkmg!B^)|lUKT<0-~c$M(dNBqck&ka*5x|WAM(^Yuab9@UtEx`Ib5;Uh`%Ut zp{cOib3Yw|0JAqY?yV5Y()NXF!y9}A7jMpnuvcrK;W?M)IRN13{HRi11kkwn@HfX{ zd!HDN^>pN0d;YQiB;;!NF-POhEvT^A*Mc7Uk&~hC_ncM>Jh>n@r*9tAe0`HW^XnC$ zjZ<9?V^{}I1jy~*0qnWqP8i*5I2#E~V|b12Ayk)6MgSYKFQx54ojKs*%k=4xLC?!W z@TjL^(XJvI)ED`&AZ;zD`zqdLrYbg_lxTAlN3LTaU2>;HG4k5;KG2~gljf1Pw*;Kz z;qJcbZTPYcYBh{RE70k8}J#Z zOXl}d-Y$h-qkr|Fd>$?M>{~c_#@9mw?N&U&A(;NRL5T~3SL1LUf!)Q)HxHEhKq=o&|@8*$`7!Y^fPJ! z1Sjn?SB(_`w`MM`S!TzvivEppGlcupPoUsiBdt@!9!Fop>co>|@?pO~Jq(NcmJ~;C zRWTUegSNN0G%pRzqqsWMVZ$c7f=z$g| ziuShPkomgH_9cz*VEcrU8>kvuJv-1NsQAJ4ApNDGuc4~|mB{Vmp8;aeoN~4D2aoXR zi0&*GK!~XAh>QRH_LAxFGaQn6Bff-1rl^t zAlvbPybF4W(~pv>CR0-3LsWM+0P{ZE1Eec0huvd_RVULe#O#j2=rBYj4A|7ICj!C3 zTsB!zn0P5(#IaV`*flPq;+Nv75P-_7c~q~HV}oh_>>xEfQy+@R6o^!abd$79>Jq2ZeY^MsViE4z={{?Tp=dy*V&eg6}U1TBPrM%M&3F^eaY`)>I3ej|myV(G?% zYG3yAYSbTC+;M+h%%vcexC64at&R9qVhY4GEIcL2k*qZX!ow5EBz4+#gp?F05pmeT z?zq_3C)-K>p3!~(KhnNCp6b5;KgUrjjqOZT|599A&3zgZ(>oH;+@{_2c2=Nj2 z5B=w-dLX@>-wXpB1mltYb$`B9`lkAikAY+!R07urRqZ)LWy@A zq_|UNLCy0&kp{I}0W7BNzrJ$fJ% zi;yRK$UNw(G^_quv}G97rxO2d2IhQaoK z8Bt-TUM`NET)L`)EOT@COmVikBmX49jrqq7haMGpi~o^28FP-V`-T)@R3rIyoHd&W9f}+)(&ygXfA&U`Cg6)*?4K!8H@&ay&h{^#(8^5{ z)B!}VYVPraF1$1aI%;#fb^ZUWQjwJ!4?E{%bJlA^B!=iuPD-&K;GOx#vhU9xE&1Y) z{37RcaNn|A!Qp-$>iw>^@$5{*l=Nib8`n?gF&b=NO{4-!M`vly# zG;O`BT{Gl;oddHG4~9KdT2fbxS&_Adn+8dv?3rx2?L#zJ8d2B*3u=2m{83W>{cFL8 z`EnB0_T>vzS4tqVO3^s&IFB$ARFw~$Tj3&O&G;A4mh~BmKfh}U)WN%wGcUzR(S{70 zzfr>@zpIEk_oZMHW{5yaK9E}eAmEs}C(Z0_PvA%}zqnt25ebR)}yiGq;*_O9JuvWb5i z^HZ5HJhG3M1S)19Wj=xyNVV1iodrm}|K-t2|D^v*hFfH|vXdBt@;u*5*oy`sXtQBz z-ha+C4vWP#S0M3dAzz5fbhWF z!j6jt)1PbpbE(2Sq`;a=IjU0O{x5d1+xsIU**x%hW?_P7UV!7`X;@##AryTv5Tw=l z3=pW~f;a^YMl6LWLTp15?!_)vj)=`q*oWN#8dVH9QC;hC_IbeSOjhU^Az$Z6kSOnu z1$r3cBx3D(I%EZH_M-;gKGc2O5WVlaV?RmezjlxW%-gzI$;!?kwB=>{GQdU92N=YM zBDyLNH9wMYd1XFoR&Uerc3Ni*dj&W+L)X6(3GY@GnNzPl+F)ryeJ$${n}y(_f}r?K zg&RB-g`$YeQ*k2ZugIcB;uUm_`F&+ad-v>s-Y2FHYu3WWPJ*@q4sLchxc#O4BmTLy z)8U9-HyZ&0&PI?h8?S)v2z|q1p~&ZW1(2m)$O*f-{w={F2izioE8h;RSHsvm3L2dJ zKMMhAR_fRri$&4PnJ3?0&n=^qACIIxBa9ll)U9x=2)XrD2dU6*knN)=71F&3=IH^= zB2aj`^sRUPW9HN^G6O_n(j^Lnd460xk4|eMr|t04T=L&Mm#8=6YCQ-(rOG{D{Ft^T zu@B|GgLHUae>T|Ax z`j@Kwn<7D9GpkgvAbWvdEwQtakf^`_|yH|3n?g@4MUb=eDxG z9d28>PcMMPMF#A2s;v9izyF}Pon3I{O!muG-UN}`FP3A)^Qah)exh?7SxI7Y-u$w; zZ|{vVt!0kY9t0io>Xtj?3f9k*ou+G(wYob!P|LS;72Kn5|5^w`EUdiMTGv& zXMX6Q3nWzE(xNQ zdLXcIO4uo#0wIwh!s>6RTF^WzmC{_MbSvCBaYy!K;m8TpKur-l-GDZ16%+w7+-y=i z{`5Y$->o0g>pz})9`UnO{QZdm14|F^Gk z%}7)s&0QuYjZ<%m6m6fK;{gdsmF_p_erzor3+|tYqx}Xfa=}NJ?Vv!0Vek@=Ei)Kha>ilL^UI2#fMQ_{+CP-cE?SZ+vSNFZ=)W6>kNyFjqnmNePY$|lq>%sNnq z>&21p%X9C^iE>Z0z0jK%Uk4He1=@+>;R=t`=-|X_Jk*X}N)TU^X8$lw-nfy@%+Xlh zIj7zQEkN8l8iOiqwd9Zc#|QrF!{2-he3iQGTg+zQsgL!d z+ZFa6#-;+Rs*Tt$!2roAo%DsD)B%aJ9IhAkMTv-9U2%%D)%;C#D6*?An_Avj9La|x zkZ0=Cq;*UZmt%IVbIY|zXOTJNhApz+YvvdrLcesDjEtJ_LjO^H28D2Ts@}iN_y5iP zI2(!y`&@$Ar@{JV_?6J(#Bm5^c=9{~xM>CFg9YS3-X+7iuDhu7JoY|~T&|ll7y232s(hz(aD}I`$cuF+9+W#aM5WYPPzod|f5V#>n7`(@eeAmv#n2<; zL!q9SP>5}n2))O440me2%UUTQbgcGrDp)o;5AU)2t(g~H5uB?TyYNjt9SFD{o@a6w zKiG{+%9+lBr|B--p1R!o#m~G@HhoMrR3b>!Y?dzSCy(#*DZi0c81yKe%J=k&)80vi zOfkG^l~swuAI=63;*dN1V2AIendH!=tsY zF}+RT?auTLdrO8k!Qa!nmBZz&I!Lf~spe^^(7FR+xTC_wF4A6i#-<-8sosV|ZCG^? ziXiuR?LaaqT2$^p=0m@0fujWRWbMnO6I)<{DGGWWa)mV0bx-Z31Jk9$&U4EXO-0+% z)7@d5<9w7qg>5SdOk#FegH$oEofFpw>Vj8oc#p-L#6Qp*YTRP-#jlv~hdm>cus6Zm z(%kAd!kmID)`P`xeXjpAAZZvp!TWXH_fAFP{cK6sYXC~ODxY0+S@2OHM7((*l#zor z4_5RPBtB{q@x8usL>!D7l(uWY33YtX*q8ts}z=b#+kCl`lHVe9FlDVG4Dkaj?t;W+1{29 zgHnZ7B`NRA-DxIi8;ub&{l)5m{&}qoIc@G|akgFYjK`+Gv@8Dxt(o0a)%3Z85AKKk z_=cJ|z~Td83^hn3E{{#n%ra1OQ$AEb-x*zFB<&--vt|H%9SJ^))^7SZi5Fn`Jm zXS89vwtCt&C;=8OQPdt=G!SFMhb6FxmL+v&D_NZcOJk_oVK%u2o3B-nn-)c?_qlkT z?wH?9w-?vd@n8tT9ok-bHY~mUN`Ltm*Y_F&DfezBIpNEc^-u~IGn3o&%Tz&BQwq>I zji&o?2UiMLe!eN`GZm~)%;dgaK*K6__cp)b-gBS3oT&*PvRD&^e38R_=(MBpD9WYh zKkl;sJKG!?^xSdG1GkAneMkghK1d8gOxu)4t6u}) z${!OwP-Hu@9pC+BUOn3bBF%eiFJG*fuZdkhZWpg}2Q!69@f_m)B{F*JssT`fB@4q9 z9e!5q1>TZLYEZ_}N`ycfF>Ql#x{H3?CGD~gKKIT5)>X;;1-2!6AU@vcQHOVyM?(~a zX;JO3oo!n#ttTs*(#`wOD@H!YenI7-Skruks_+!{Ra3>q`$&q4($Z>B%{0h%t}6o~ zooLn+Kw?lOul^pZcMV&Hi6-Y?eaQ6gL@kicx;sXiTs}@eA^n8c14+djDvPP0>E(V% zLpUgQVozQ}o-ba4{(k*jlP*r?kxcWe-3JXrPiFr`uZorEV>kk*cI!IAPe-M0O&rCh zG&CBSU~K0HiV9izl`lHbIHMZpM6C7C?3>G)AW6oqixcSi^u0zZD<-w~GF})8$n(!l0#;r&}6+7O*V3KcL?xw#uT+#16T8XE* z7Odgf)0HV_o6lgS zXYT{;1fs|Y=pwJM9e0dW;ULw#(ml4K2j6|)DD8N|61BtLcUMrk%$612f>{c(UlrEK zt(tIK{z^%#pX{>TV7WqzMFbd zQ$c6G@j3O3q8%!Z?>KtSP+ZOb%gvtvpO$&PmxQw*N#-QBXI7Jgpjl{9_(-l?q`r~) zE|gWmm!>;?pXn|%0~J#5_dS7i2jgskkS`RLez)=SY;8gT) zbBceO7(3k9zX7oE1*_jx6tDMYj& zp4YL+OxdIhtzlU;Etll-(HOlrT3rs(l+L1%X4l`}BYw}|`H&b9#mN<&Q73BlQ;x=D z{yCEQ$OJ9J1kJL4dcFGuT~}A6Aq2fnB<0s&&>l+o_=&s z#F+glp#HhgA?i+4^ls&La{%r6Ms5&RUGw^hFq`ZoMKZJ$UJrw(|JeJiGDcvQh1IlT zunJ<-o;4q%TqBA!XT2j>_Z6ewxP^OOsiya zc_Gx&ts&WZ-{R=Fx}EeBeq0|2C=2%{IflcsrVx9`r%zng?mQ(Y`~_M!t&sIO*UOKS z`u#1utiHKwws0H23+bDx(D93ycS(}ISbPZU+{hr)8$(CV?L7aTn_vy!^hvMQ0J{TL zQ5w7P0wxn2(x{b*0Oi{DVScCXypyR_;k7Hcu$Q~9W# zT8Bt^@-bX_*=`9gH})ar)HNpTRO#KJeN;F1?D7?(%biVOX*U6?6?ZDNt^UT_7|Z-z zhDpZ8{Jb1TeK?U_pSP8bxQAB;64S9ACYS=a;mK z<+9GOVtEeEr{r&KPNvHhoqSj!a8E7b#phzH8wVtEoKzO_r6DhrO(~F|k{3ix*czQc z%hN5fUfFrdIK`HbB;Ke$&3=`616ob`lYKV>z->+kF7n)mhtXr|J+`{qbc?4P*WaA= z5zyy>@+>YL<#Bp|-9&S@VqYD_g7as^POvaa>^8-*L>Q4 zWcli)@S;#*r7K(hhRYV8-(qiSF2}YM7)&h7w1_@yvD3Iu`$^Smo$EErKv$}rpZ*c! zg&KSdmB(b@;;@1CURE z(qG<}KmIJsR;nA#Pk9z{rP3c7@D3h22}x0Bg%giyIb(0jUU=8$`%7!#OON(i(vLSq zWlbu_?65s)5>3Ul^Tt@;5W#fc(};)_XE=)OE4HsiFSV_I+8{LhDmT%)Tm8nUUv!`D zN^%*lx_Gh3x7-(LTg5sg3`{)V7-h2BK_PFO~Aa3CYi`H z^C;KD1kuudM#8Z|%c25S>mR3PdfwJs?HMesp*WtFmeSESe=>j3MyY%_A?h z42;gYmQKI?{VUXv`$j$&>4^5i>nI8uo3Z^|s-u1fIG&hbeKVFKBuWHYcN~wB?p<}| zy)F0wfxgN@zkA~xxr8db$A%}MF`gHF7sL=?7a=yu@fJ(0vDR$#V~navWl-gAh&v*r zJ=JJi(O)$Y9<-;>f%NoMx%6lZ-Clr_*lHEiYOGs^nHxLn^Q9&Qo17i^M>8=IeWC#i zL#E5O;tgiEzT4lpXUjmT4ah_ihGO7UM@;LkXSE)8ING0w$No(HFSrJKpPe^5WFR2- z;8BGDd!qqu=?RM{il>4x^;^`u@4%&(U+~^mPJ`g^Jmeb$M(Dxqv=D-mgh2Ku>Sry^ z_ZL`Hw&V&mS+dH%{oR=^wb8-Xcf76L%i5nO+fj! zWxC^xRX}HvAW?@8n`U_%PSZT@7cTc>JYwz>j!`OLIQ;4D)ed{99!3dwANbI2GwfeT zc(pf|WBxmo+!opjl|Da4t1g~t-G_dXN4O2`X#g(SnHW=%7>Z&kM6PXf`*OD%u3nkf z*Qe!u87_Ao%z{R7q;4*D&*6{$qcwQZ~Tv{P!(r{ z!TMI<(;wTqHHNesw?+D#xB1o3Um)h)_*n?eGPZcUSpi#WQE1u4TrAl3!~oOozhae~ zY1?P)&Ru$F$=Ye`8rs+SeVJ>Z)xnS8=y&_d$Jp*%9P#^?Wax&c?xBTxgTZINw1SDN zQzTnSd+$b00j(E$3|h|i>cOCf6EQ4TzoHDzIn;!nN$&8M0KV7z7_kz%#K5bt@8{65Ju5=^|yUTWzCduq4WB-mbfXcswzb<2-evUNk z-03rKS7<3Ze;DzG_49bt`b=mFT9@Sos2vG;u5dD|nKR4|mn32y<>5)nKOpBdL~K}T z*gG8S62R&Gdxa3^jvk0H@M-btE>vWBJ>ajsI8X_9FG~2F@)_9 z_~h#^DW)%RmD>B7!`&+wLdwerdUS=!tb1K3phkvqFxlQ-2j(URJZGA`eEx_Kr! z=g#-!sPqCbolMTD{ zIY+7>+#Hv@k2=P-DrjXgFnMXLwgbo_x34EKjdnHpHx9|QgEC=89_{fFQaeWIXWp6e zT+LQT2@_1|ZTm$(2%}Hou{Gze^9cBM7&{)YB3Pw5`^BxVG{-Z3#_c;ytSrc>ZV8Dc z72Fn-oeXb?+xr@O@xuPsA3pdr9iW}}!O}KuDR6lBlhRwRJouP!@Ha352TO0JU7weA z37AWHSDN*a$(wwgV!mI{>=Efz7VW!NU7Ge+)G<$tiQkaUf$K;bmkK(x8$I7c(+VJ; z6N~)Sv&ce!XpECdH%y$_6~Jh7LrsUKsXuT~JRX%s)}YJZry{OJhxOq7m6x;Z{1O0x zkX!tT+=mMd01-{jQ3)-uZ)Ncg%#^#hgz@5J4pW*SrAdoo$*U=4W3kO6=3?Oir5rAl zN56OuKhw{U@i>avLgho2zJ5oFC}&)B_D56G5i&!{lR_H)13wD z*u@v19WeG?AfV&va5iUkF?D}+ovpYyyKCd^LM;_xqB&+1@XsvJK_{9Cd0dc#R=52Y zwinUISsGaeM8WOW-bAOC6`ik`xCqHd6uy@0Xt@S#lTgDXhGh!ITYd%zEKy&MRk}j| z(WHEXaN~Py}UWnf8;h}CSW0K&th% z!URAqPtDL{FbkGq@CsL4BrT3k^WOPe1&WQ&oog&!N%V0RGF06u{ooVc*C^?L;@+aY z%OdXJS)I_I{wjwjFNkJRVk`zvqsdtVVUkiQ$FC3XBx*HKsLU%YH zR7p{o;DYD#tYP2h()=1q`8y|MstBKa7x5(?N3s2l#+4&dLxlPMD`t-QuO|D`CrOik z?$o>=O^1DgS6e;eOSyJIJOKuk*QpPqyVH#lE~XaaUGcLwAu7j)egMYlOACs|s!shf zBZ2$fTuL@VkR_6eh^jFHitgPUx-W-tn1`(^C#(S=LQANRjkZjZ1c?RMEcr*rD7lEd z7F3$`fQX0)tJ#~&PhFQ1DO9sC@tUA!T)NIfJx8^4f#*g4Q!`!h6zv2S{dflcg);S- zDq+%DVzC%$9MwusI^TWgSklA&jpAAk$;VkfYqDO7J(v>G$njwRiu2`#A*ZgF1to*g zl;j@Iw2sPoD3Xr6Qbr>V`wl151B1`7G~TF>0Ciq!UiY6rQ{=%-A=akSQfxmn_s4+F)3k3i|kqX=RHxnuLkm`okJ z@?5(;cyfi#4UMXo5)8P}Y=IepH{aS|6*Fzjxk#zi*yhwO``g zqo9%86Z>$5mPaUMF%n~FdhC2n@E%*I^4SD26cDzMET;6jsHR8L;5-vVRhYfx(j?6*9;be1Qokkn3Oxf-iHDV<66{m|rGh(fx= zLQNe;v|`{D$;Bm2B#^ZDR2S4Bgj7;)!QVQA4^;< zRP7QaV7lgIindb3>@QS5>mSKjMHiNV_gKG#L6VNfZA?-8Y_x!|2yiP;l6mD*M66Gb zPg}7XulJ=FU!?!e>${PLSuuf48; zE<~86{FjE&!KO<^sKNI>5u9xuksf?>aM!FafATp;g*3xS$tVxa0ahjc-L?!j**=^R z6V~ZR9P6rKiiodW;c!F86|4+};r7O2IiUn)t)1b;K1ey}o{UF4{0?s?bJD_{4pi zpRYlZc`D(klNh(ad{i&M)1ro7dv7AX(glc7l+MA8A)as;)2c&WR@LM;1#0qz z`rC{W`eTH`wWF9)SX4%gb~`qNM? za9I4>nioGmSezXY@g%K8L5Ph4Q|h>0v?O?)jioBy;o`x)cG^?cvFHg-iMTuIKx;YK z?uonPfFCBkyz8;#Gn`jOEAn-vG&;xe?f#DGbA3<{`jLLL*ff;)8f~hh=ii9VdN+ktW@7n2mNx^X zCbt=YY?30PJlwo2+ys z?Fq3RSZuHc+WhtPCTh8K%wT8C!KWCCo8!IE{VxSFleS~AtO6SMqtZ~NB15G0aL4SC zJblL64oA49+1TXB-am2v+9)H|jB}(yZ9>5>I@pS-0^&RcixI@C2z~E`(I@&?T9SP7Ig65s;i9*uSKg8l-mb5^ZukO2Ks_L~ zwCHaz{gF(W&+)+Af#rt=e`f(4-HZ#h-^7rk>X!8P415Fc=~E9@V&c{0XX&W;GB=fq zB<#BcR`JS74wvq6%|nAY_h67S5F&ys$6Z(mXT~xt*KY~hQWMf8@6;vwP{9Ro=RrOD z(rqV|-HR%GPUH_~&QgwaKZYTw-^Sn+yt9yzh5YoX}xH!nDaqdAUY>>SOerdhq#GZvFm)!Oq!7d^QX7fjiQMK zwPOMEw#iN^>i9x%DbPyD4*jqQy%Y)p7wZ-GF24#o95wHyJWbMtq@ctQj?-hB*na(K zmW5PNTemJo=K$Wl!XHANcd~pMshoPERoy7{h`g~_y42TtKyjDGJj9|Ub~qZoVOv`g zST9qWK`XI&3N`3yoX3o-W7ZpqaFyctHTm5zV`StBTvna8Qz!tNTuU9=0kHJ*N`7; z-PkT;lA~OJw`IT|B5S^Cv2tf>;QTeEs7Sl}>bNu!E0=0C_POS$_NeW3a;^vJcG@|D zez4p4++VTG8biAt@vD=|%%48%15M_`UFqEAqkw*Y$VxThVkVriDz-as?c2zC{-18R>Kw;7_MZXV#_oAf~xn2 zPKM^|UI)otXQL4&4AI|kQ=vh8b`++!yk`w^sSLg^je#}>xg5AhDAU+!C+{27b0hhQvn>odHBxwnf`VdlEKGVh^0HpceXIqx>UxMoIJMM1BWPdHO? z4)_|;$#k4X$0C!QCR*C%al{27+9#G531M|H+v1Y zqKraTa7r`%myxOx02EtQ8zA8?9~zqtRVn0qZr(r}-H1hb$QDN})VRTf{gAyFPEB|p zz_)y1*9p6Q0yc)9{HjPi4>5Sv4S9Ff<#PC_Z|m#ESQ`F_Uq1uc{=a`PJadZ<21V*( zcj(4~AV3`z-_w!41Lw)_ctHdvDuDlNPkR8%Ck}uTi+fxNNZdDCoi{e8a99 zt?)1RnW*V!%6f5RheP#y`bAitXDt1o)Va%{j*{D{#sQx3b|{G(_vM;__L}4$0+M; zc3oAUkh6)STiNg@6=LA|2C}aa&U=3Cf|3_MDF3~#+)(eZWx*TetHXlCEqHDuBJjhW zx(mDiJixFr>^>;l{-lI7+he_jR^qiy5I=>59Q<=%rT)m=-Wx@-8_M>C2RbOhBCT7U z?&&@hX=S|Y1lb`I)RF0)z=cx@-Oz(BXn{5kwr#f3<;uS&{iym4{!Di@rIKv;z#oEF z-DeKe7arZMsMZsMGw1c^uJV@DJp?Qqe}WbT=C|CsGW6k~nhHg2q%feA0vB!qmudju zIse5Eb%JcEUkWLQbu4=ei$!_KF0P-F{_t)GgSl>que=*dZVLPZ$h$&;g0Q}0#*;BtL^n;%&fa5ng7g}BNc!KjeIgS6!?9czf7 zN$q0YkG@M}m)`BVgJ%IM@d)W+)y>R7gNe~NT{*Zc3tnyUgKNg%Mc9wtRn6PS=Rmyh z8uXnW_o%$@BRYc6j|u63<6D41YOnQ+uxfs4@ayzEt6QJca($onr1b3jm{q@67)<)* z>6x+r6RiB_Kg0uECbM!q`0B#ZWoR`GtGvfNDFJJ(MdF5F-<(7NH_M=$y7tU_O!3N~ zS@88mAncxrc=y+XWP?>9X!$-riTBKtQ#`^BKCtNo>xA@1k7n(WNr~Z`rc%~HZZplG z)lg4YKlxohJDWaycAb;L;_WBUrn= zed5+`d+{uq%-+%K-IH4&y5i?67VZj9Z|p!@qXY=|)67@!T8|NP$blVs$3#r8;m<@Nq3Y`#AQU#_pN#hdo6#S)!Ba zI2H!(8SN3}#Szd^=phKAL`;Ll5iT8wm$X1KQ3K`&5cJ*z=4 z<1$?7m6-+Jj=&aV6LM?1deneSms69~t`qRIK1O-St71u)^~z950WRA#L;Ae)SE)O{?@#bA9EvVpGfHSHf)zbcmcTskEwZC;m;nK9;4R#q0*DYFfKM3Az zrn@rTZyad6K#ZZ2xo^5Q+ox-gEW}JGIF?jhWWrt=>{lTFL>{3C;`DJciG|nfcU_n_ z)%U=WNglZpv;te49|>b}xr@~2nz7Uh?Pabr@Pa`Z;my1ClR3)orIxHh*S_$8PT(nf zMrVeMAv7;u$j7cnR7x0J=h{;3*LE-;c(XkA=PJfc@D3Tl``ov{&tL_40MddEb)R-Cm)Bnlhc;_K zO*siR%RP>VS0k?CqOaFdx3Wh_rIStB8HnTudwkYws;yuN?==TmN^-_J&Q2&HiK=MpOW8x_Qkw_gXBD~@jy?vQd%rU^D8fH{)wm1KdT%@!j zCp?xbrz^Ray zxvsg`G#m&CtvQ!0IM0p3B;RrhJ_>iu+&z1!((5{dy>>k(9T4n8Sc?9=ysX#o*%qpI zwhaY^7y1iAOb0&k$j&==;pzEAzUMgX*<;o1GfU`&w%;>XKiPL%4TZ$IOl&dhau-+- zuy3W(P}ajRiGyVh2V~#C9oY`@fGeh>2LfwxE;Vs7|5OSJS0DdS z6Hr*s7%3Q8DEmYT9!h!U!v=st7kkzFKL=c;AknR_Y^Gw@Iw|j3m2%kq}<0c?ibgj(`UY$mzR>vCz(W+-@jrKZP zK8ROT+p@0{O)CGU{tozA1krlv2V9n57JtAkw{M2@2=qGwsR3tt+4osIFnO zWPVF~$?4U1s2iU4m#DTD9LOmJd0Gf|l`x#=Y>1O#eiz(r{%3uV?X;>~+ay=(H@q{m z>p9t`h1ya&_#$HE*Z!vDnYsQ#QQsNJFS&l9-r<@Fdq2hIp$1n0f(Fl#kHCML1_VIj z+-tCabAY~z9Yk$r@Ez_}+Tqik>3^=UM}_Vju|#TEcCWj(Bu~>I>cz2;k40w~?V#Gb zcSii0LejyfbZS3|5U6xW;(IJ@d#bqjW*V8;&6T%%?d($p&0b~jHJ`NLJywa)S)m(v zyh$Q&%rn5pQtu`eFPe{Pn@fR54fv`d@MDbD+7<6~gYFuLU8ijJxx{r$z>~z&@`hQ{Q3t~z z!}tAIlQZpL!>5z=&$M(zDbHg%>TWwer%bR&Mi}kt8y4FW-Uy+nd%X{UY~?t9SJD-V zf_+ZR1NSD5;uDEq#B82D@f;%Z#H}9_aYXD=KD9Jhx`AhaR$k(W8;XCa5fYUwE@IRb z6I67NrrEyg*~O2l^Dp|wt`>&)td0OPKMQt{`i%my$~0EF?_CJJ@i`n@GM}#uqtdmv z^|lByDtZ4Jm9wH6IdQwlL-n{bDZhMm-2By|B=z$0R|i9Mq=hYk3S|MmN6}^seg_{` zz$miGy=Q#uuF@3ny@T-3&gCT$&GD8V&JahjJ}x>QhK4*{#sH@B}O?pyAB>76%3x_#7+miSR&G)gLM>? zOPQ7TJ#%F}S^eB~X$>v)tbXvcwEDfauJX1QJe{YPH%1!x4P)a9C^8C19>!-(RLqug zPvlSh(sUx@hf8Di%N5mB7TFUqIu&$C*;1hk451pU;`0{0Ej>?F4 z3T4MPP;t-r;BL61wVWsmeZ~$6G(zJtO?%UgmisenTOud%STIQfvd(Xufw~MxUpF0K(T&{*e}PSREt$ zCh3|U{aJ6aHtF?GC&Z(=yS`#8JOdGhciM-oN8Q%Zx6;El~Ruq^;b zWOsFBFenc?LYwatOA2^6!^1mgVn6S-jKKr zfYri|o+MNsRZ9o@_p%HJRW?gC2>k>pO{sJ8WHbeKSTlx}smfffip_&%#rK$TMxIr? z;&1rAc8Gvl*a-1-rYwTLwK8dzZKwKv>U=PPOsZSL?!dk|vx|pBl3tRNQrBYE=}LzZ z;!%aH?y)Wg(ojo>H*O_`GUd<1nJIp7<9{^3rIMSt)aaau2sBi%mK-_MdyQ z1|@(^ibbx72;$&_mq3&GC8yhyJ1RyXj+uH(DP-*la}^QfuZbZTQIH{nO2~I-S(3}! zZ?NRdSNTNNpLiT4ZqOe$%hL4bt$Y+GuW}kT| z>Dvy7j?Y2^ROa4uSa^eg)(rggK)JO+u48>ZtQ2O?k8Pzz6k~xf)hv-dqIp zlsG689*oIN_daWWMt8MsJUCCS%8@gEJqwSX_mx{w9IEczY`_Qvd}tWHs<`(SyK{vB z>7^4-$ap=ON4A)CnHFbR73M4gihiwi9o0I8RiOKqxEzzd?*0v0{&{@sA>TMEPiWO~ zKJP2s5wP0i#;>Wv+OwPFAIl4`lk@#oTll9-RQt2Ro=3!+*GDJlk*fU-i9bUjl2w!1 z!fga_Q=3K1%sV5D!`%Qzkyj9IWcxZ*{GNpuNPr~Iz2Pp8ub|VQYGfd|J0)L>8G4Gp zLs_Vm4EAx!x3QFKR4XzAXtDzX0mShGa?havK(Pq%$mX)?T5$GNVMMqKG|Xd1obVCE zPet~%l@7+-meI#zc(FekDb4}Wy{L#e#Z7z~vzbV~cmJtc!4V|S8g==xP=gas9OW_f8H!p=@>3ag4s0rXyWexM3YSF^=CzLlz z@MnNJSIr42$a)v|g+E}W-rlt$_Nu`n3wLF^>zd26pi2$|BX#b{ukzkD z?3x&yhf@{0lno^?>e1Ncsmw6#1Bo<&Rt+%*eY^+>=b*K!;%`$|{s>;sdWuzO z&?yEo$DKw%NIX2%q@r70O^&11OwL?)B9iiaOp3nW*fzLQ@0i2qu>Gk2 zyu6slShq^Vuds%4EB;OuLfrGaMslB5n6O>j&Oky9Z1oP_b0*{A>`CysU47N*^DlTg zHl|PdY&Oz^uFzAltG|&M+Z(qapwBEoJW3^PG9`%AHhsCs?V`9-|NY&yNyq=e1XKQ5 z{B;qyd}r>|B(VM5*;=3Pm~2T9UD0N(iX>yX8KP-qWai(W#79^70`5-ANt4O^3h&_j z!Ire~#MAkZ$)OD_*`vUs74u>{>*G3OGEeL^I@HJavy3oV7?W99LBh~uSe&hS)jzL68H+#EgPuQ&4;E^ftg%?9pC9NlkQh~^ z7iS!ZCZ@#%JT~A8-^^W`A2eC4@#e8>YG+-IuPCs6Gj{;g>0En1b!83;T~$w#$!D-z zcFrLt23#(lBfW@K-1l0?OP+}Ix?_tOB}0f> zY0!9ZXV#5%HP`lZTqqQaO_O%~&Dt$H^ZC*srrKwQecR-rPN4El2ceP)X12>+Ch;D` zSXho)?VQ;2JUd-(Ob4=lKiEvUJwLb6wORXxJi@(`j^@Fv61~?b+On@towvI~Ri8T< zalOpWt1X${6;oR_s}2hC{wHAd7k-7m3+>%e&JQm|z%^U;NUDTUf{*9a7cotcx_RL8 zb8>(mcclT1_1MB(fYT0Iqk$<1^lI)MoJC7H<`vQW`DG_%T5PeSs(^Yj2)z*AVh6u; zQ={>E$wgy{3AjP21YgW9cGbP-N^F{BaVfT~Dt@>H(&cu_&kY&nb>n z@{n}K;j20}ch&4_^&5LsYu~U~)@p6PLf9rzUEl^kPR)5eO4B z5C@8EDheF#_SS)r+ofU7jf$$nm}IzdIz#DlF@Qy_hZ#nvPG(5I{*WXaO(%sUao+55 z>ZiFpOPr&XOV2q_|E^0&cJ!CIN|*?a?(mxX<+`9JmzqPNPyC?u{){5<0CV^F{~Svb z`@$7PjwjyQt$K|_`=h3n4)!&gmCVN~J7Z6R15JX7bS?%n=cXT%I!Pp$Q;C0vGMx}8 zN+XKBkWPg{0*v|j4elPNd%ukdT|u3xs*8$5dnjY=#)779ATsx%^)X4zReD<{mIr`) zRuu|VJq^SezGBjHiC3CC8lpa4zv&cEcnt3i@a^;Z+ZHB1p*Fdi6t$Ft(L-5V0q^(i zuu;ly?(;4^0-R6OCOsXF*=RhRtyqtSMdVy{`G7r-u-kZC=$;i1a(>cyZ1UstxFUiU zqGYdz8kJn8s@>_lJh(J)Ed{|J3D)I0UA*?Z%C z!aNxxDI#%=oZ_cf{YT2=<*7hZkf_uYH zUlUwEO~)OVf8e%%{cD>vG7;i51biy>;O(0GP~)at2EfBNo4xMr)xy)1IX-;XB0?Gs z{qWi$7e3TgUuToj0S8A3Ywh&dyR?gMOgl%dd{^|70gS(U0I z&y&^*H~5zX?B=49ZKDEs3A7-WywH*qt6i9mYPmW3GUBD{qLSYyz4CaMmk5Mp!3C7CDKZfUns0Pv6=YaA=ByZiUlHeq*DedBIm7hKfuGii7vS! z(kr-zh4NM|6pU^rkbL&5i_C{2*q;COg);)$1dZ7Xl)z1QaHe0Utow ze5OV1)N^b*ITZmvix^#NUJbYV^7*SR(6H5SkhNm~W9r?0yJwdisR;&c*YaK_h}Gy>mNXgrKKx;LB z^8!-hO~rBVQTg-l%kmX(xNO5}=zz>4H|uwe+JKQ%aJEi8cTp98qbARta_I?r;wMnT zzUI*~k}+Q5N0pCpKPb!_xIdf}NMrSOqGqvWM-9MN{OGYv?<|RveOH3zU0UOgZDKT& zn6C#C6I(NAbj|5zl;aCd;ABkCzAs7rBWp=S)_Y-Us%WduuIN}Xy7TgJ2Nvv@!$Ce- zerKXircuKuD8DPw^*-Ct7F;4?>)>1$!QH$X;Z0R)KPI9B4;WD4Zsy-UFY%OQ zxCM_T7%dtg=S0QFD(YK&=2343itUwZZMaigp6sDN6@RpC-aBQHcJihIw3Pgtvzn43hbLs& zOAW~Rv5J*mBLnnG2LpUB)=&|0V}f>+JqC-D5o;vRInD9tH|{oh1%bdbw>z08xI9v_ z#BcgE6wwe!4x?4xRARSE-PV&BPtgsu){yo)S-liDKl6yjmNF8MhH|L2tSsWU16TeZ zdv6(5<+g?kE1;ApNQyK9(k0y>prD|1cSudT8xfEckS;;GyIbjwNvCvo*BR60{=U8T zV*Nb-&L6MKC2KI=@r?2GbKk#OB5RcDbaUAPDWadMR5*$d7b1Pq&%_On)92y;;uleH zCM1z*(pHDw*-|-!nD`{!*@DT3=NM#^l?&Em+gLGlI1|kbyyWS5AAO~f@8n&qa;<2H zS|>;9LyLqb^W=mzT_YM@S7tQgXJEHNZuepZ$+hY~?iDw#FO%W@Y6XL%R!Sd@qwrqj zsC{3LAQ_1O^L&h*p}t7>_x8ZlsXf8R7HqXdVP0-9en`+(2#+kneCY~r`77~aQ8o3zM>;;#rCDwuMM_y%EvGB9bdIxe4C3?tfZS_zXGQ5~ zTqFk?&|XgkCZ^WKN?;V$dLV5VoDP^DLTBonc{&dXyOW=cViIG_>B3pp_d`IMm+P0) z`c)S1M6-Iq<0yHqDRvQu!B2*^54;}p<1tN3EL1-6Jpv8lxPI5Gk`!!^vVwApI+T-= zbX2pSkWXU)jsruW){_b{4^E+#U`B8P!-O>yc_h1%_z(dD-DIpM8$&0ldiIbVeGm9m zkL%iH9o4=Y#r)~$u^C>t1np$>9D|{D-}vE>GNyqCXM%iUppLW)3!|`~PP#CBW8nAp zxG>MJ|ZL>|)!rR0DAOTG6z>OwA zgb905?W@uE;gIvt!^{CZjGXOTbn&?`W$EaTR!g00qLE|B1F~rk3AvGSqcJ18xnx#6 zmzZC2slV`PA^9m&`HmfPiu1=lUStEPF54@8(@_^PeY7a`L?NLt*3LR6cSM+E9yR~n zG(Xn61s)LN(kEkID2*2K=E_IQ3&gB$cn&6cw%fj z24rj+IV8Cj>m|@f&p|=(?lG(xPK4ck3ixZy>kHJkKEUGOKjNaK`cmnsYaxyjKRoeop2l^qi94;lr%Ui8|1d3_FFh0uY5a-(-@ zP%0@znJLm0Z?yfyjlK;Wc~dsgDcPS_FEB^=d+%XffJ|qp8cKm$6-(QM!WPM6vR?W@ z@GPy7N>}@~c(eJ+3oCt=$|S5;dduh}!32OBJi;+RJ8QA!MfWA8!=+alUhlLy3k*S= zGf-^6?Z#`XJO(3jW5W6Pvb7cH-{*xV&7_L>_x75>^cn$N5xKM16Wk1j9Ar4^(&MPrTgT^nvvDq?KY&2#(I% zU2YFU`)?s4I$Hwox2Ov#{pl`_SYX`)fhjpXjsog~gAEGclub6LLd*FlU7M2Aix zRK1(lHf!3-+qSa@bpi!~cN`q)$>*|d+Cr!%LJ=gU8~{T`n~*5D|6vZlD_@hB^=!Q> zi$OOY)V7`8dlWPZjNmBB!@JCVYtwNBaDsHGcD4k28bz)05~WJ{y&v-?5wXtq1kXU5 zf~rCutieI9g>?yirHJw{HDKS#vC^?38rr$993r`ib0ePse{uwDD%NgQ=KB2iyGr$l zC2!Hm{UuDL-R3Y%uL`60fe+E+FpKcu z(_q~Wuq30Puk}}79x5(;vG*PqD9yzkTuO>ch<>9gMLI16P?A7GODlWXMMl9qWI3k3=`0)uTjC7H(x4kM_3WUC_Mc!xwR5> z+7Lk8iWHcl3}U&g)3pez(_X1LFOZ`swfX$jqVL-1OVi?yZO!AV@)h()1Q`7yS%B55 zh%oGf20GsTJ&`#g ztC!-{o02>|5G3DKBBN16HacNI-h#Nm)DF{vc#maX0vD&EPz!DOA!ZQ=DeorqaWchk@$9LSm#;@1V(?i7(i9*^W46xBxt`iArHXds6m@P zM~&s?0#Tz{6PsP-8muk+M;?qDK5W8_^w*SyEMQJ@$h zQ?@bI%spYI0spx;xOL(o|BOe?5tt1ga}sO%#GdO1>c^%n@}j2lE=(U+5Jw6iZ*y$J z6_inOjo8!)Oygm8<>L#OQVJSE(dD?k`1K6~4-_&QRojqDAmtZqn=S)HZph)jvz}Z5_Q1(O0TRz^2-{Rt03^UOjjch3@Z+5By4dB ziaQATcG?v8awslY^DeYR9Y9ap+S?)aN2DbHAplnOzrZI^nY+TL`yui5xpov{=eH0o zOJP!c7@BZ71;a1a`z8A=j&l#?DiA*E(|Ti5_$o^%S@TS&}!MY^Dc zCb&@UqZXWfyWe-@(bQ8#*szyEz{icI5?*ZY1*@l-AOeO0-;PCPVZ7T*s)kuGK6Y)7I;bdf4 zjpKJXC`Z9Qk0lf|N56@e*O2|)+2P#{%J9pNF5h+e{u?X@3oKbv@BTSZGkru%Z4y+s zyDBXg7Qt&pa)_~Ln9NmXF( zz;0cc5*Pk$32V*C@i!RMI4)%GGwn7W_G97IfYJ zIt3{>2psKAJ_(f_qZsvW`CriR}OszRutU2%}!Ky}2!? zFsJ{QSoZc!ElvMi3v^I38|e>JBLA=R0N>(>nyC2lwl%(}{I$mGEtlQR|Exg^q*e4- z@51JHSG5W3eH?&9H-k}d%x%x3u?v>l0G&Te9hVASwH6jj)Ncx$!@K4T%D{KDrd`$7`=(LEp%qdupRLNWgkqj>{toIr?|6O;<@v z(I4pxegJETu<8VLlf$xP8GpWInchJI+B5n(VIw%FpI z#f)l;xomD-O!_gCX7m1409D54kAJR`XCZR5`y_RtPf#%S&|k{{XJtXYJNed;n^d&B z2NZPoMoMG2AAbFF_-cQxP_3h*?ekkg?@)4|lova4-Kt&^pJ~;5r!}s382$S8$NeWU zgOv>0SkCAFd313eXBD7xb!=6MIp}x29;8HHXtWS; z-zwS(ba0XY!6GheLGaHNYXo5nSRsd&62|}!rlXM48e_F-F$w=AiIlA9P$ z`OyE*K{iurU7LaI5<9oT8(nbMuEGH*V~`@Vuhgy2jUAyost_EM!8+%=KVM-%0agG2 zE#DsCzi2OGKz&Uj`&*Yi14>$Xu=aKs+X75Z;5TfN%4n6nXZp`(jU)wcCZ)h3XN1Cs zc)*J1bSSwPx%mGwSL%s}vJ>Ocl0)1Xw+2et;2RdrRHn`IjyLQ}W-Ni8U+f+xY8_!Fn}e zmo$d+M=fPI>_9@z>(9ivZC2;zL_DFMA9-%Qtk2MK;m#$MfWbqRvHK7H8Z|{@!xnW* zUwFpvleIy~rB-s~rMUH`DLe)=9l7y#8ZTh~y!gyw(Qi}bG<=aO-w%uHNG=qBDvW5q zRzaVeJuZ!=e8>_EyZ+kX6c(~|6#r#Q-gh*c?|c3bf&KFrQH1MwX7y{lgH+p=HcjYj zDFO>u9CcR%b())U!x5K#V_{f-m?6ONJJiueyH&3|_CxdpZFQXhnKmzfm5h_<<@j%i zzf>yEqds1W$(dN=N7sQN4aEoDsklInYiybXW}C2$J^>qbWiCRzeOV;f=oJ9G_-n|D z-}6W}Db#F8vx2d71~Exu+vRN2)nE|zGlwy>!7un>3vz)4`@D1*|K-d5!4JRl{^fkx z-f+`dUuNQZqac}od2jI)l|e85$0?bCIrtynKOSR(GlB5g(Q*tN*s4y0IFRCUdJG8Xt~-n_Eyl8F$9q?Y#A(he-nS z9_B#IMb^;3uUuYx>`yS>Fv@S#61VfUI7(gn&$w0=nU+f7NbF%c7M&*P{ExGvVAZ7^ z;_H=cA}XF_d-tsVG}Y$5xDF~X_|;L;WnvApNz!0?XmVfc$!!WcF(htiP80h9vdE7`wc#DV{bwQeG{ckU5*!SoqaxKfM}S ze3f8yY-I8#`q`%(xuO%y2xaDPNt+k?S>G>;)tz3q%(xQhPa(s8$*yvdfx++6wm5h& zMc*8;ZxzQ3Y?i6X+UB(I(rSZb{Nezv?Q<~Cf@#)^x%<`4Ht*(v+yyxi>|8E_a_cT| zYK+H;T+?(;5|7OXk&m!4dfnA#Kq@M0xk^}g@!fOimES#_r0 zAM|jv(J>(6iwdJuWG#inv+Y#sZO5yj?|PGy<`dsD&zkk9Z3a6)|9TcxBNsP2;#y~O zV1$b0+?LF-|417HUFVef$rQD7{aG_a-EhMBbr}&~t$hLA#=z@`X0yg2cVko-r9-_U zXn4Q|qdl?;a#brBEcA&;Js-dZFa$!E;qSDV*Y5eeFdbtONso;Zy3Ljf!p)F;1CYoV znm=0&HSDe`P1x>0|APe}s4#2y{dm|vN9_u zK8bnFcei(-i0hRijtP;Qpq<-(vMVW-0F$spqJ4cGv6(>{qsF0tfU6-#!O4txSj{_9 zXMra%dDbiKK47FPgJz&KO|I%f15ByHVKN`^_dsu|# zWX*7gHQWg<{=2UAmwdW6q^0L$xT#<;>i2;&ay+#7Da5Cn-xtefzx~`fpm;o#ym)hc z+e+&SUmUS))iGa3c9cukm|5xusn^=4BBZG-3g=||MuC-R7|GpSH<50fE z#);WY)GR*R^hJSd2WNqaZvSgnz1f1Utz|=(%ZLPN1A{h2&CZF7ZHxF~(ywUxPEE$Z5*`M%jQU{* zXcYIv1G_X(8`+C_>F7RHaUg|MiHs%i*k>Qs*l z)X5P?@6`smgF7|=Df%l2NXFqa%5}bLQGWdG zKr`GMd7!aW`{GvHE{(x-Zv-TfIsgq4FI%e(e)qM&&6g$h2`(SCovRQE`zEj8;=qZ$ zmN!#3Z9B#0TPkN)Rm@fvL+5^s1@D3;WUMz&{U(cqq7gX7+XU0N0z_);JATnJmK9`Z zLGfiwE>Vx&=$@zp=CQiSVFC`)$ZZ{y4a~5p}4U( zTT25#oz)4^4E!llW7pXvz|Mv6<%6%n;pRc=M4|Y1vtGOVKu0i>#I)+nR+km0*yCQn z1-$t13@XkG*=Y+?o+$gclQ{Fi)^h5JVOLg2NMKq`^d#iWqTJNwkW^d%+Ez~@3dS(L zTDHAzysVM(gm(Bk$G}=-+%>>t)-v3R{H=)!hY*i5G92<$o~G3mBS0$FzN|+YgIe? zQ=#Jm4gIS4nFfOhg7Fg7{YWk$|HPqJG)J5CVN@Y?4_HE5wnYQOd4REjMQLzUAg+)z6)_Kgn!0iR-K}ESHNvB>2)|#u!C@aWdgb=q@kLW!Z=Z-Vzt` zY9jUNfSeRRUB?@k^*)gBWMjqUEcj2X^f!Ci=#212(F>3C-U#diyBIr{6@#mwy!jgN zTt^)lDLehT^okEwsV>}<@%J*(`}Qi&4LdAtHzY!1%ToJ4Q+;0S#I_XpY;2)-<2GIc zNm%TSQ{0cDCU*?LmK@G{JX5f;yt=E+Rp}Z>z-99aCGnlqGy82nyhe)cV@Ccc^(1#n z_Zy4uiJ81`e|Yn#V#U((M~=at_=;Cq3)|Ii8u{!H(|GKnI$aBjPINoys&ixL4O*W~ zoljj5O_WJKys8u5kKz-uTInM`Dr66QN~<~>Z(32I(<>FXhCaCUv0Dkj#xueaTJ^m6 z6U-XC0hS<=qHp8bZ7t-l*zQ)GFqJxdc2l^H=YM;R=iHq~>D>a}tzZ2Q68amB@;Aq3 zN>si#{^pvY&@h)VH6 zB57_t0WJAH6K#_Vfcc>?Ca7r59c}0(q}_5rx`AM!_(k1 z4iJj^NOLmw!BP|<%`QmaqBW%^HoX6R&KrngHJ*7gMWlA=qjK?HkuPD;M*WrNA}Ghc z$1z5P8_M5lD9Oe?Qg&UYSC|_3iDhM3`0E=_>gG}&!BKaDi1Ts#PC@-Mo|z;g)$ADC z!bjSrFH0m-O>;*0JqvTym-;v|I*AwJajGm%R8!|2W%^gv?E%J4XFay$=J_Y%k)HO1zX1PpsVEYou@9+%lx!#-#RD2_SzhFxR$5hyciQqlPf__I@-=B#%-?;dg@a2 z)*U?iV@aafqh;FnGW(GT|Aqrz71@+KUP^+^??B*4+C<Q7&tv;!~V2YxSd-G$^QhH15p=En|0sfq+%Q6{3_nar~WWsK&`KM$j$ZhqGqPW>h6FJVKxny3lCGIjD&NtsSd6l=vICjxZKn~gnFIC+F(X3;B zV=B1;lXfh;0=?a&1qcGlBK>O@LsJozx|bZ{;;xpIxaAhr5ucp9Cm5xQMN=)DG!EK7 z0vG7fW_Fool6DKrRE=HUrIjsi%~Us5zPhw=AkoHivAClU{>Sp0a!?F}p!JZDZtd4O z!8u#A4VPpM4>^}p$}AGjWfroS*DX3L(jA`kdT1r9+P69b!+2NR_ONVkPg@&RGPw1c zkhXWpj9*A4K(cx*4Oj0V2XkvZVuye%EspKvbMS?}V-nHbdpv<9$6ue2=A~i6q>@0j zL42q@AQmlE?;id2vH>+$A$b`wGC*IoBJ?t?>!kzE$vU$3{6)0()mVo9q^j(+wDH$w zmCMwoN2mO9nPvo*v(Saql>7X5o-bKfxHKB>1y*MG+HW1U@L#F!(se4Pc=sLIKcRkC z6o$orrg!r2D(%8mp}fo4rgTHD_DqV}c^vz=UX@bDQvS%&CGMv4GsgqD8q$gyT>3D1 zjz<>5Ji5Ir7<{sXL97mKm(Eh=SWkGzYhS>K9NY-7ln6Jx{w3x0Oxw$6FZ$roVppne>#*5|47rPM%Dx4D(- zTxeMPw$u?n3glC^?q|x#8AD+?$)D6eA@1saE3#FsJ97a4oDkDynT=j}G8(lsXGA9> zVH?5kp5EkUO!3i$IXNxTfnpXVTav5LK4^O0Ci*bBKw+F_P*>4!*V2tE@9p6zh`o%6C8niKh}G9E>9m6Ijh;?2G78Pi3Rf%Kl#S0BUUA=(vP>=~-F zc|++hA&Q&b)@foDiEc`z2F(}yZ6(s@lac1L?`b$AyiuL`DB~I~e`*pzGY7Yrsq+?! zT4RcTJ!#qRXT<&5P?dlsu!J>UXP1zhz$r9R$I5MCYcQ5Rt;6V)DXUe-@ja1^$Z@J5 z@;H*X(l))FJHle(1vsE6x-V6Z82ou9(+t2p?OT5lKCU#lQn#vgTYHu; zRKGR3G%DGPW~y#~I3{?qW1JHGNI5VuKK~x;36es?N&XP_4y$JZn@#4y1YXBVU`=$Q(VB;${?)1dYtxk}el2?wdkmR+ z&T3vsgN`J>bK-?%?hw|{Q``if@NM_4`wT?R^)l<-NkdJ-t{rsp2JK#8wfS1)s6+%0 zceQWPkIwG})k4Qy*q@*BOYmee*tIrHp%2y*S@RF{eaK)fU)@wtjLEQ=Ok-?Np()!T zsoGyc%~idWOKMa~@XR(b>>hNK!mV6(h+FQ(A5&OA6r59z-e8@O%KU`s#;|(*#q^By z(v5NaQij^KNi?iM*s){9Mn6};T=JZc&?%j&_DX1qk;%_Gcx@#yabWU+X~8_CXXUX_0$iEWBnYneF=N!Hbuh+nybA4vMK^ckXW7B-#xVA6>G%N+Z6vjeQpZUGUC- z|52>knC~=jAlnjKl~L$^0*SF5vMpXIkoSbgGP8*#m|R(FELLJgC3aR~cRw=9g>LU( z%7;YIJhBU?2(dwp&sojtbxb_H;I+feT)vxgxJi))vMp*@A9iL-#3SpN1lixTn{&Y8O%*%5xALHBqGVz;FH6azza*j&R;H_Q5T)q8&qaORCw6_A z&HP<|=?m_qV?pw~d{9PWxG*%wIY77oe~w}GSSzz@nfu037DX9X9#TZp&!wjeWf;ZF0wR|e{XW-$L>GFq?GjzeW~yEJ z6sT~MQ4q%j%+gtGC7kHjf{od2Lnwn2jA*Df&UNz_)WxaJhBr3Qq$kf?p1wF->1oZj zpAC)pn8=3v`Ti2y1wSrlI%H0v+OD4JT~W?7SrXIv9PTSPM1N-10_zOHU5H{t+ZcTs z&g5NMXb$z!sqD1@vQkim$CWtW-5gI5%>S0)UjltqC@9C#ECU~-P5ioRQq(W1 z1OgQz6^l6!I=AxM)O77k8 zi0t2dPfxF~&!HWG6YAGksLe!C+f$Clwmh{pJ(ntF(5J z6?WIVa0*GnKQHya1t2S-5ybwF&INxJ^tzYggf%3)OKP^9eB*M(rp$Ml)_<2~$}#C{ zLyG=~sw%B?*}G3oa^=zTjnQ1j(G+cow+8K7TUJhMOxoYOH@9uO$Tb?#Ve=KI9_+8XXt0D zaKFb<39Z#%Z_4*Pz@jBB^9}JIpWgA;7FjCbxW;s3q+qO9%eLcIdW}E!T&z)LKa6&f zI1jSlrcr)!b`bQwmot+Q5vOL__0f}UM%9ZwJ>}~~-D{VgrXOjq@>H&CNBxeRdsLGW zN4d$xe5;=a*Cb(9_EnzN3XW;qeDBk(H~&RM>ziMiqu3#9wfb?nTn7cc5dQ^2?*033 z|5t0G3z9rV*zD7-l^yK)Mittmn0LK7B+2f^&0MPc>6kF>lC7zKaOy*==*sFTDixpjrhZRt5H* zGkBFaXeZxkp29!9G8d}|f{K>Z)hX!YC-A-=X%JAbD^SxeI9@4psu8Z493m{G{Mn4c zcT}IvH=yVbHJ{Ur8uvr7?KzsrKk9r=EteNtH+IG@>hM4TEo&niQ0KaJ z?T-Z+yGwfm$=Hn}6*W)rfI93R6Cb)PG&d%H{%_ypuV4W{UU1A6>N^QMs%K2B6Jjo6s8v+F`OnD&6Kr&P^nAm%`B&OdnNuAX=|tT2c0lBV?{T~C?DUYF3V zPYuk9JuUO8r>wbFAV(vE0)9Dl+G&;4=4$|%$d7}ob-4v@Gt;gHRJ8x&O9;UPLvgWzQsz} zpyjk-Qu|1fdn6(1a)+ln4~2V#Zt9$6S(=~hxUyOf&%!;g>-V}GHt`D)QvKCt=Z`|4 zV&^K02fG$0EmFTHv#P7ueMeu;sP^1?a(0oh*EI+qQIWPB*RD$Q__B{L<|Iz~W3Uaz?mZsPD2vfMM=T$cyJcEPmh5^glEMMhFWdvKe@V@Lj(t+NC_DdK#` zxxzHm@ni;Dxhj2HUBT&F+*kgCoowjahBr~7C$rd`$q?(y%$rt%Ai+gOuYaUy$X6Ik^_jz*3P!Vd>vbFlC+I(N6D4m4}^@)zSz$4YEc?BXIGz(#Ca?u zTD_YO6_W;v;58luh8QP8Ha5qL_XU2yC8t)*^at>zhPl zeKy>fKQo4WOzC;{lJ|Q|UOuwTXxsqv2Y6g8<`RSWgIcSV$j5J`!d=oN#ZC84Qs^6Q z7-)STMVPUse=7g1_;%gQB@^ep`a9fgRn1_>!kk4~MGZU7>B;M*sV<+8<{k5`!PCmS zAN9I&0r!=&!xS_OS8X}4&8cByPJPEGYql#4(#v9!?Jz4MQ(iU1SE0N7*0{v(a;zQF z8B)J2mNj*4XD)kYGALgBYfa<2woXHFOh7zMRf9@?8|gZK|IrtZR-b}~Fn#H3o?Ywo zogK{hS#0s8j&Kjw#Xym0Wt1C*l|aKzbv-rkn3-7Jslj7r{+Gx6*iXJCJL4&!!+ilJ zHv@X(0d>*z$KDMGXOgchI}B|6bL?ak=erVU~3ud@|lO&vdZp{=bXq=0+V#9{Qa?puT`>IIO>^C`iGW;-a4 zc~@uCJj4^`k!5pfMz+gV7CNh;ofv9ZJL*AmAm20<+GUGNH?3Pm%5(JVP!FoD+1(>Y zU9V&4Hf#%p`LpAG3HUUSnP|8}c>bcwUw1L;9oWylRG`W@t6_4@ z=wMbIhvr=JB+bA$;2w-r9n1KRlQHZu&kV`)Yx-^R8BrmB)X39Ff`7raWlbFRtg z?KMOAeGfrLfj?ri;1*H&HWF1kE6q^tR?q0!qZvk3_wyM|xrK2dnKv~$w$0$b@u4fN zn1AgR>sXHJWR{{(cgk+vERsLM0#}muUe4$jvxY0mxcbwdkG$%JMxPu-VrA|=GG~|6 z;OL7c4XCkwm@vs7b3gyyMm))IikH)HNm%}K8r=K0f{u2(*HQL_r z@I%Usv=%s7-^)+kGae4>Jh6);Ya=GMmfi}!7?t#zR%|0=9pjQAqf4nq4t5Of^%tgk z@ddv(3VR=mmT1g$d=6J{nrD8th}+GmihV1!`wX{oas#jaAc4{3r7b;R#{C(n;4$Jd zPeJ`I%Svm@E@RLRGC3E8zG)dc8t5*4jn~gns0r0@P16fc_tcL`7+~;;;+L&O^R;K6TrDmOi0Cex`1Kf`c%TXV14JX@m?p~BU*|BjETX?N^ zEnkDBK3t-z7nQDomkM=2-KiPkd+h}OfM+r5`~xwyxU{^fT{)dD8sq$b~o}K*3>GdC(5ET&~PSnzUTZK3Uw-%i> z9L3iW!6#y7>kN`VS^e=xS>2(!(+uVZSk#XXrq+}(*tXLvl6-tdEP=ccLWh?Ze=fXuU(+=R7X$Yy%pd$B8D{)~i-=9~<-EgkfdB zCwJ+7KsUf_i#s(*x=iGhs3M{f0f$Z7GDQhh7=z{j#-_JyaND?dHG#6sKrg!STM4m; z_oe*b#2XUHmlil1?D(=q?vdqUPk6l_h)tG4WfBFwU*@+v$|T-eErr3|WJYfX>{ag$ zf6F;;jJmwj$IUODmT z;+L7~uiAj6=nHPi{94Bav&ep1{MNj)4_=@(sa-Jo>rD7C!HYNk!}(k0`Re8QR}NvO z=j)PGjfogF=lRFTRyF~&sd6PH&lKxjuCLz*)d51mUT6;RTlnH;UMFp(_;Pdg<$BAx zS2tkgE3+QwBRhy89&bk|S4`opt}9DtE+i6xJkw!=ef&Giwtf8+?5`L0rcq&1ehIYh zcUMsFJ`!_7COv*DT0p&5uq=}|*_3ZCqDs-&%#$8mQd4^J-4jL6Ji+crE%}Jv$X&T< zPw9F;AbC3@AYqR&Yp;D_W`1h4PPL*_lem`Aq%F|@>>&3k&P78>>SYi|h9kt8U?g)p zD~fkWk=^A~V~%_3L~Zu25z*|_>xNf_Aj`T^&GCAE!MIB-LvjxKLz9JLZ*oH266#wm zst|VZG)?KpL&XkhnN76DEg#skdJI(K$6JJGfrqe4!?`iQ@%G|DatNI&ZdcKP|!xxbfKJ#Z*;ur-CE<;ht6E3>Mc+XOmYYFBovvRK&*q8 zN^LvUGruj`)7*!0|2QG-Y}%guXxqm zYDbkjRb*4NX<41$D_{8KAdz;*243y;K99P22KMU3X#V_me^i2&bM*yJYBzNB_1=B7 zE9gZ3$yoPBexM5_ccj%Pg*@__&ogyyb*9&A;^T*P2i@)oM5k6FAcfU6AeC0jr%-x7 zXDPo%$Un)Z*yKs&7p%mhhC8AsSJamVb0fb~FwEIe2y1h5m_} z(cH)-#)n~qC5HD~m3d3Q6D`*z^dI+eh~1+Zd|^ZDcI+rK@kG4%!*sQ{npR3vro!-+ z(%hx_Ho-WTyHqAk|JKY=aIo(a4xtR`epZ$1K`rHrkqu@>3EC9Y;Y{kP0G#kTlY}|T z>nXuXgB_*vqdb|t^th`QNXy>ELW2JSM)JzMxgOhLox;9XK-#5k9@!6m6YCSn`yIz_ zXwxF>3}d@Tip7fq`OJOM8N&lIg$DE;veki`ll5=y=v7E+BI$#xT$3@SBUSnyqUU{^ zF8YwXNUy9S@xqMeUPugDXXb>D7V(eR#dP4jIyuRqV==9Dh_CG*V* zEu&_9A=M&pVy$4}MekQ6)CCK!>MGk_0_CX^$*Dr#x;sneb&|kOS9ju&9^Xo7mao1q zHC_SF0YL`&9Fl*@=gcvo{6tkgvp8Ym$CC2=9Y-^XEFVTjVHy4N* ziz%}C#`9T|lry{O7yUi~sy75S*&pjk-dJqe!{SiT+g1AVfQW&6uv`dc1uN zn00vBpr`6mR&%*h(MnkXba*aY>7)ZoQtkh1sIND85Z*d z4nxY$l110kgnxW{6Y1Uoj8|m9XI#+6D8$FREw(3rNiyPFH?xFM?DV*n?04bm3zugm zgJ&K2-cBx66D=Gf_>M;^NdI=0UI>FI%11J1cTSOyafMdDG*Ro zkLC;Q*YHc%5nEhdZGPVMhh@9I_`|JT*~{Ma5b!zK&^)&6L(+pKP3Fk7*qA>2b!LC7 z*u5tCl4z_@hlZvCaOktbFFJ2X|2kL{xF^U8N3#<3U%sO3plmZ^z-}qozkJ#&GS9>N zc}|kvd9M$(s^nmqP|pX*AHH$xcVfkG+ZuN>cx=J1Hw3uc?NHDr@;rsD6+&1jgJM2+ z+l31gBq0~dvFAa^PedsAeM}vcUt$EIHR3Gj(q4)PEDYdiqW|rhJj2=Lw}2g~&yKKw z1^>~o?A4V`A_J!DL;T-sjX(c(ljs<(kiMP@&Ej@E*nV^WTKY!)JI~w$k0NR~*oWRn z`IirECxugi#)jrU9;!CG(&8S^=yrRaw0Y8VMDEd;jJoJO>*<^S3&SW5oh-)jcJ%-F?8U%CWRem_fVfHrksV*Mzp z55!7A^tVY7Y4OEf9-E_W#sR3vjHRRK?>9{H9?n3th$Fp{C@y~slcL)a-4BOEi%ktE z>f2H(ci>3xTGQ3`OW?q2y2w~_l0?42Mm{0FZl&ZqNZy&^GpzIeGUDJeIgI>^e*C-Y zK!T~#XaDa<|KADxzZ3Ysa{_ja**P$hSJT@(hrj2>Wt3qL_x%6PKK`+4JG&>0%Q=Qc zKlQ^v%DA1Bl=nYMF)^4x8BP5|8GTuT186JZ09C9Lpm3%EG>&~hV=UR^b+6>IHvaD# z2KI?8jKCI*@tsUr4+64Q-Oud+z8?Od`|o`zpC3nam?y>q7}e`}7-NJHfNvC#CbxzI zkQ!f$blW-sRhvG*=qolFq8zU;ZO87?pJ5gPo`$yHkMNo(A|wS+twIUzl$J_Lwk$ z*w(!j%heM!{*TWSfw>{z7yaFK3r3=T__PEg3rSjm!T*El{nG;@HW&m5VA;alGCqwp z$q$7Q83P)wp$U5N{831xIUuJRFE>-I-YKwI8)PvWd?q|%6Hr9@_f&!hte&|8{|~Q2 zuc{G{ty97!jhziP4S=}cSeZYwAAg=bO}?hoiVo0scnheKFwt@zW`R089Z!G~h zM7vucsv;Yb3{}tiBX&#r_-W}?%O99^!TtSW-9`AFc*FjO1fIRo>W*gKKb|!2%9hW8 zfusA{Ou=}S69JLa3EsrpU8*D(GQcqNIM3&ZGH=*)qBM&m?z?80R~eYb@N^!AL@wAq zxok#ddQ+LXW4mI7x@I*hDsf2nI4;vgA8vt-wyTBy~u$zAv0 z3ClC4;B^>}mpHMjP4__q;Evi~43|FNfH4pPG{%D!qrX34AQWjJl>UDTMHr#leun{& zqe+|;F#yOIj+bVDfe2hd@fS=z*+zh&I%OKUK&eO=+?QuCemcO};Y%Z|o1jT+4Fk@O zVb&G<)}=mOZ@JKF1$-_48ENorbP35wyH2(ysQ|2PSvLT81-G0ASKa3Q)Pk{nBOup0 zs2DIDu6K2IPrU#4Cv*pH50>L0{HFw83f3IB0*0m`+gw@Dqd()gl3-)z{QRj=MYV2Q za0Ga;?EuG5*q0kXx1|9P5!mhQ=QeKwejfm~V3;xOR;;7iDz0!kT4%24=*0%CUO0Iu z>=~mP&h#&WbE*>A|922 z!kzy=Ci zF{rQSm((DPcqq2LrdO*heEI?qgK-t!fb%6cD0^xK;j$TJasAneAp;-UHMPyDD#NeGXT+^Bwf;R` zCQ(J`_Lo58GVFx8;bOPj?aZhH4Y6c? z0(3*=-P{VnnzJjQ%xaanE;dW_Pj}}%X%yYlhE4&^pJ*HB72wI!1CMIEc4lQhy3}M5 zF!9k@tp9j&dY{4j$=`K}XDS9TUPRdchrPFqs&ehZMio&(MM4qj6hs81q(f;5LFrVH z7LaZcML=2+Nl}n)q#Hp6>F!16qPyYD$9G%re!uVhKjVzScDNN;Yu(R1>zdb`*T1T% zPvVtl)Yd&Tj3ZusKci+VJb$8R!P5a&hk?LlX65}nrU&z{d!k@1BRx0D=I)2xp@Kmt z8CYUEZk`VUImwD2J&Sx@Ko#Il@}2m~Pqdbku+23TRueHjHipIg??K^C&|UvuZawHN zm;<%gzs%tgeiqYB4w5W+kkHF0-!VDVumvBsa!_iA?b0UAu)S*V(YQUK?Zb^@j7mvC z(@zkWP}FDE3|_(KJmYA-DhP-tMmwcc$btH;K6vSay^%*oTdB&QG+q_ouRhURX!#Kl zdWLJl3X8*nrGx2@KhsO!=v)YdjoJ=8tdZ8Vzi%M&JGvNnr^_w>&W@NdK$7JhqCRj? zluJ4^P-MNksw4Wm4OGJ9Ks1U0{KUqEdJxk=nLCvox6@CtTkeMh#=_Q92a(?>Axs~X z&oOL%3tQ)$b7IE|B2d`7OrMIDVU1VeSQ3k7{#8*!h^To<6#=gG|DCjnI6>6LVf>e4 zd+7UAkR?f-4XyoDMb9K}29mddZbXwvb3(xFKw~>=4t}G zq84a(&NhB?0pWx6wYgr77F1S1SqfpnU{Ndk(17)1!z;*ihu#O0Z015O!0x(Z;}!|};W9|3a1>SqYfnHbvsqAYqz6J@ zR{drL$L(^e2P^BYMz`J?M6#sE7jV?_Qr1Bu6U)Xwjr1Le=(d&ETi6e1;OGp&ru*7c zs_7TX;aMH4(LeEDCwvsi6@nk@e8f=M&w9=hdxq{W5=oGPJJ_H!EJ@zigT2<;AV?)jRQ9I=SN+#NwakG=$c0d{Dylq>CCAiUv{CO5vE|v!eU(GPfE0DLlSkCQb-E~^N9M)A^)-JQa3C@q4G_;<()R>W-L~}oV#5M zMm^VTDw?X0cUsGuth@5Ww+2`rB38l(5_@?{sVa^04;&zyU$~%wzYClEi&6NbB@dnN zmh5&8dV!D-X}GZ4li@wcHEc_?GnA6=+$$3NIFjO-Mv{-_v_&g1>Xw(55wHG$$^Q5S zFDqgZqW0bAf8{?9Lo1QQ1;lz^CAOnw$TyWr@WFWQjbAT*+#D^q0%36LZ1RyK^t94q zH`GF3XE)m=cL1u}CjwGY3yAunxoQ=OT2mNXweVXV zJ&+9-tFh{|#v$WT;H(sQodA1z>tUfYD&w^;M27N&&7FgtSyt{iL~H_CR8UruP5yV1 zCgOwLBA&He`ER>Q$KV?@38WC*JJsL|iqEipamMrGOfsjxeYS>wF9gR*wT#IPF4HcX zR4!PANQR}=%-w)XR4FM91x&P&L&iYn@-CoiycbP$#bJG$fX%CqY zrr9M%_Da_{2|_B$QNq9buQZ7k!8L1=hAvi2Mwt3t8Vwk0hiz|_>;^wz@t?oAKRn;E ztb`~-5DPdwPO2YP+q8zXw+Mx$YuBs)YOLa0U*N zyZ^Ig-wSDjyuww8o_N|SX=-fAYT2<-4x=v-LAqpEc38z^Y<=|#x98uc7Q_yI_uEJM z|E}x){;vN-Vv!$Q!+%v9|NpoCfAa)_USRAL*t5&RJ{D=u`f(B*cj(4kwC0p^2WyVZ z`R~k|oe^AR5YW2$@Srz{ztHnNr8YxQb0qc`kBtYz_;~8h=hOq7_;Zw%#b@>?|Krjn-#jHM zHn{$HBIh+N+R}>c_s8|R0p}^g@R#Gk$7mMZjN<>6QdXBL--)Y*t!zd<`JbGN=hN}E zA^UeWWb1yinCZl=4>W%zyY5kRaP#ZD~^IpF(8^)%Wq%xuX?8oO9IZIe;q|9`~^sFoGW6j^6 z94CZEcN3@VjN99UUl`K5FHnFWW=OS(8`>L6cYeXCPWz?023Ji&=6UUCeIwJQ;1Q{ zLStD2TRo>Kn)Y`gNA?8FdX^Y3OM|N6pU$huEo{7ugpRREgB7C<+83vZZh^u&-R)=r>BnES9@w3VBm5Kq zDo7-NTf7VXQuO=h6vIxku`KEBKAW_<@{x?ekmp5Lm~mc)+sw z7`sOl$D#YPL)yb(|52rgQ^p#NOJH7#>Wo;i2YGR3f=UK@L!{bnOy#)a7 zJEAuU1(Z)w4bG?-rQHJq1MKB9vi1&fmx zRzPgK_QQ?ms~im@>yq?9>1UBev7ZSnT#u@kj`MiXpGaD9MRRUI%>3l}ms;&CZIGCgtN2~enFs1+hb4hvkDf#!F=SdM$M#s zy#G$aZwsPJMUHuV4wrbQ>Kn#`p8>>{ z{^2dZrvd88H$DjNZ;b_-6Qvpurkb~dmWq8Cf%C4?`}d$3j0j^>E2dI4U*Q2tWPPPk`LwyqK`;P}ZRX7Tns29M71yb~#~AGxq1@L<;x zbVpz=7tfm@>#%7le`FB{p*s9DDffrayU&ZJ_|rR$s~ufkq!5~G$PQG844#36r3_$n zON%?HjFgV!_!Xv|g`_#`D2(>R+o8}>@yLGeHCt$(0g z>SrMJCk^P}v3huL( zq4v*@M|Bd~P8ztKdmj{4m+yZ({^h3w9>+RblH!r!Zv90M2lWL$3)}Szu2;)qxgq-T_o| zz)+9%cIP%clVaWTS&O>NZu{%1hh?OxG6pz=Adhm~*}mWkN9SIi=0hB%d1+CloLg$l zhg)N~+#=*cE`=`p>)jhHmQ#y`V`sS^`j_A{S(l2WWjxzXyHq3W^dnLE(Ri(0h9K8P zOMfpq)oW3 z1?S7DaCzZ<8*np*Nq%QuzD(0DQF#kH4FUTJ0UYBNXgbj3*KNf@x7G8T5^_;dBAr4J zo;sj{_Zq;~qA?%Xzcn;Sr$5C-g-Es0F6vfDwd9$q+G}qvp!7SE6l3OD3WqTqXW~O| z);AvK{Ve=(aSTzUezH5y9eM+{E4glJ2h*X<(&@S?({4OJ5sUKgPEr&#>CSk!u-|)a z>a>_Gp)B`j-oqkmub;k6ME-|evHWFMJYZMk<+5+bC_r>vK;67-y{p9^W!tT71ur2D z%^}g*JGP%e0%{yEjJFVsV5TvVx)l_-nGtR9^Ne@s+Qmqy1h$5syYH{doK@Ab6u(Ez zk$oJ1QF>(gc>~TBrKDjM?F@~)Tk?YI9kuhhvzqf5n^I9WQ4iDO8iN^bC$O+8F6!-L ze1pSlv&A7vg1+^H`3EP!qou)F(y3->S#D|rs^YTVsk-2bE(#FZnTDZ&I%v6-bOUq} zFS{G(NN~OOf_qZNv*ZVj7o6n(li4BZU643D(+g?a?jJKoMI}#r|McooCPz!0LMm)u z?^t@W=#+$+0a#yP z4(-G_+_vBgLbH0%)$~Ogiz|z6hy3;L^BkFx1R>WP)u(md#B@F0E>!^fKrMXQk2iV^ z>!A-#Qna9O!9;a{FCfD%F%>lnhwyR5?Qql05;r-4g!5pt;xOdB+kv`DhSrRE=3*X1 zz(V2BoxwB!c?QO&>%__f*X_M}{KO5x-dyC5}E*j#z~aijSsz4^rEmE^=| z0-T;s2{YTP+6m)?S;7{r{4qrS|0Cl_K0fy}1owLI zj^zm!o#!Cq=w;1JUko!#jc`U+x0Qs0niUJS| ziygZUSUvaS=p^F#07Qu94v0J?bsl^IknH=?NHr=$rtI-I&Ey#0fU@Mz^}+|sxE7WX znSD5!cI~O3<(v|s`CSx}WKdA1@oF7BP6=U_lWcn2Bk-9fDx9Kn`@&@fswJIn z)-#AtJh*N*rZB)o)g7eD6aj9?pn%j^@F0rUdf?W>UDvp=g>R=M4V$7EO(LSHK-C~( z!I?ot**tczCb|=JfG0o<-ujsCeo@B|0|cdvT^*2;GNBrO0t(q;LrgR8)_OKV&%-|> zv?iM-=eP4HzS#9xxyE1rmd?>)Z23XMnvmbI-UCWN=5v4LDvGc~oX_ReRY^gO0v~e_ z`Erj$wj2aBDyMiRlB~^KOx92*%A~oIZtINW0SNTedztE+f^Hpggh2*RN%Q1X z!jNu?C&VQfD@3{k4lTqy{Sr`ce5jMq2lmKtGVs&=Hepr ztySe?qUl!t+~V8)sI#V_ZE$<+E66^K75BwdQ0O*u0r8}=+23w4d~CcoqSc~?7bcUmx9m}tWi z$)HKTg$LWErt1%!7Ul4-i*?fTLrO=Y4V+TipTC)|A^kVq^!eHUBjF4p*mJXrXhpCd3azk zs#1jx%Z6LR(-&_94Ysj`Sobg${)pfcFP!8w@Mq;ryV72P)~(?AQR6Hgm?Y#DSmdkglqC}_aZif%a^kmPr#sx}Mf zo)`xJ*y@m9ap+_={l0qp!W-K*mZy2>?lUhN_t!Mm1!FejK0oNN+llTpvB@M|5Ot-T zZ61PnJtZW%|E#M0wy>GbouqVa-^k8MzNVZLt26H;0x9NIq@DXsH*2%6Slg2BPDzBi zE`2`fZWvP^_WJhID_!Hx23l-C9n@2iTu6Z@V5s(Y5y>l2IY&_losd{c2abs|?vNDS zf~s^svNgjA8qTCiAKHD2`4 zsnAEhEPS|qo4b-(H6x1jqVPtK-k`a8K?R?VQK@m|)1wPvDTCKZQcS)ksH}?1F{z|I ze$Jd;87b^mPP*aP89lkt*SJ#ZxQfx4PojigkI=3)=}fh&eQ9_P_-#j^A;o;Yt{7^} zgX~fXje|)yS~SsPZrBEN2xxvOidGlWCiwyxV{PI^!`me+U7KmV^qJ+|Ylbq%6s+4e z{p~{2Z_LG%2TDR~{KVJ6Wv(9o?#6t(lRD`dTo%^c*C+%WvV`BORG(S4?ROZ%n=R`2 zN*bwB&~4td?ppU|4`U;=Y%O4`N_9n8b>SEKA|;Ms0?Cnw%W0`wORc{vk=H7fd;DHH ze6KgyBy0nc6lrC}SVw!KT?aMDw z?qqS9U+vv>00Kw6-N#4rBxxq=@3|*aJa6)qr`ge_b(T(Ur53*r&`cgvjR+=QnppwG z+Cu7x0y&jPBc4omoiyocvw0Hr_wJq}gKs)fn3BrI5qfTD=i5WiH{!Z?;ocVMp(2i! za#LiNxeB=9gd=aoIkd9$#39L^NkP%zLlpzlf+p^P$IlDu+{~cyJiV1+pj=qdW^7cM zq8A$xEOe5bXkB5j#z~-rW*u6i)-?~VH|yu)lJQW1c<(xqKIc+Lr8<*B8ROvA(8g+u zE8w>0NrF51FJyjaxTl)E!Y#cbD4GE<>_4THhzDQ;L}8Qy=qnH-erG-!ko1uWHOThW zTyz{EQHwzNIE}eUnD14*;OmNo)hM<&vu4iAUx|F}4pYYBfGWU+m*m)Q#FKj8_k-OT3EZ3~n31b+d@M;6jNc@Sx?ds;F$W?Vh>AxxnKzPl-U)p%j*6dCaMSF?LOy-3@6aQiRta*P;?{*+zrJ^CvR87qRo;f zuZlSxFalTe;~#pDr`pjD#LE!5bwgHJjib|Wr2BN&+?C?oK~=>uCzI|@ou_fyO(vDI za*0t^KBRjvo?fFlUSTr5S$Pb1Yt?{Ohbwx2vs|0mgrdgWG(J@&*r^?q8p$pebZTZ$ zE0);J)6~4}G|QEFknXTXkK@>A{=CsrBd1zSv?|H+@%qkMnPRF6^X8p-h5jd*4x7Q= zsyGSr3n55i#Kv@IT|k35EvA_0p{YaSW-JPY4#i|CUAlQ_W%EdL|Bk!h*HuL1PVYn@ ziI3^}C(l$qW836|Imh7W3aM8#<{vBqc2m2PZe*+QCK|F=oFBG*<#KsZZ!tk;{9qPCw1U4C-KUA2&b^XIuZXLDWQ!YE2`RNLyg{SXXY@3Av zb>LM+=K5;kT#3EHRAyGH%AYjX`q68;Fmy7G& zpr}(rG`>U#2wRi|%p`Zu$xUv(Q#Xs9%B}gbo*`N-BU5jS zKx?$Je1AgQ4yy2GU<}Z&XiSAM@r`!L=c6)8m;cE9kh2P(Hi4>HNk`f0mZvK8j7X=j!{u&ILWPe1R9zG1X ze3buQr*D1j;wUZJpzz{PH+97Q4Iv;t6lL2nFEeQFhmB(XqN$(# z1)~ilggUqnH9wb{ukM*3P?+^AP1|JUWORBvHbWE@sEIBWyd=`m&wHukf%=-u(r)RR z$JZXsiMQCD`M!il<(~0kaO-vw8&5lWhqsG&p?uf;2kWgbt#K-?Fqn zEd;XpAi5=0U7EDBGjHLZ-BI(w#1lgXp;a0<8H=ooGE}}qtadg2*O?~PWiDu}Ya}Ve zwB%(`Z6BXAf7XsZO1-@p#{Zi)Uu%ribmzE)Ia`%oju`&|d@$a75;Ws~JM0a2mAK?7 zqsK<}i7BKe_OT=mMyl^foM8A!7m&1xfcWGaNh&?P!KnFpXx9&9%QwzLF*jwmZybo5 z+;4>SF~$@!#(~wD>m(8p+OrWg?4lRbl{lVD<~+NTioYI_=c~ry(W+-G{yrektyqjJg{Van7PJ0P#Gsv-p&h0`>(n@&kHIiHP@QJR#+UM(OY z$1!BeZsTZ_NvD!DesBgZ{cDhJFK}XIlC!z0lX?2yq6X(c*D^cT@Fxb>=IO$s!MG7! zrI73bp^ur_#pCNY_x&gq^SX7;rC;1g0Cw1SvjWs)<4$Jw-nwAYBCT~BoBPKU4O`M2 z618eY*F{qWjS@SvRlEh~uDS9at>i^6oM&9M*DItxxNpQs2aCB~VBZzG-mDi`7TML) zxTDj>YV8p08EX(yc%qX?>#@5op=m%niE?(*VkS`fWO7eGw!O}zx=zMtZVK3BS^IKC zHD*JF%vu+gnsv{yNxNSd>3O7sL&5$RmVj+lzX|6d#ErZ!A@$#EGZ_O zT-Ir}v>P12OFLInc@h$|mBptL?!46D()rvfxn`nSr_%W~Wu`NvoJLd#qHlD>K%S)S z&1JFQ z$&%VmYt!L)d6KS(V7reg+SiCKD^%j#?re&jJEfRz!@0Rxm6~?F)n^zIR>#nZ@(9%R zlPWwMXwyNjDGQ6xUdNJp6G8d31*3NBv(98H<6*uN$Q6dC}3Yx7rH&k(tZ5{ zs>FV?hJO8d)lIO7Aq+?AX*-cRKc5@=SC=a8G2>X zOr~6yIWkqdVRMV!Y6_vXU6_%V$Y6G?&iqqG6H<%tXh~6394~OxXS?v~BO6TaliMpZ z+1R$tMsbN2TVm8MR=$oH=3!Cpg)Y9i#>A{1xSfx$Nv5 z!6!mBP-f+cvi6H%*?W1Un(0Ct^z-QL29D-61JO+AR$Oqs?HJr0l67Kod1Ey{(5aJE za=Nfw=c~2S<>*(N+4g7oOS{%^cTnDP#eARq!~Ikt2J1GKa=^`J zSwB^qyNQd5x}C_4;8h7C&pz$@TK4HvuJ05VLx19}K!FDePo5OO8^4=HGsov}*|61u z4_`kPM18q}w`$k@SQYh-tnDiu!=#^TV4EI1!sX)U5 zdZV$Qqllc0kD&c0QrtV33kC=_+wxMC$eR^2hoW=qH8_rJbj{}74rjmAfwD}?Rsv6} zI-jCi!X|Ip<~-Y9klFA5sVH6Laytm<0%qA80Dy{aBo@6#4Hny`BBaMB_RTv&omU>clQnd%NOHtcSwDSl zXDF#}BO%GWgkwc$BS7zDG>K8)7=v>^I#neT-R$T@k7}auRoiT5eUNL~-L(1A_G)?@ zH`A1!SGVX^uZt=)1Z8fP>O9ly4Ws-1d)Cpm@|?c;@2!(NGFo)uhESlyY;l$?MvcW}V% za9>fKiG~W}pRXX!A5>sswg(>b`O#*tuRFb150%^lLi&&ZMEXgny||G4PTef8vjOlm zQ=owg?pgp=#|^RJ8dG}ioxb3;1yp}2h^Dn30Ih!z>18SMYB@qOHlMQ!ltVM1S32jw z-$w#t7BvTbiUb(*VeACd-P(G!kvkGt&vjZ(Gw}(~Kx{oA<}e6@mqob%9kKPg%E3x# zMHoPs;pMKo5de-0>c7_=-UDbXcK&()lUi!8Flh8fQ~)n|GTM2;GO`iKs&X*$5Nnk{ zSct&g1_1hJcTNxSPDSZu>Q98I2BdR93$dTuP6(Lk1|R*ee_FqARqY;7$%y)=c$z}K zdz^*gfv+9un%z(_f7@VacLP?e0kj_VhZ}mx9mijVr%aUvI@&a_)r2wU_f(ys6dHJx z_4$Nj!3d>@@c#B!9=3%&`Y8R;!`aM=2!z5smsNc>0fPBLP;Na;KedwCb|~f#1qyD2 zLEA}DX%kL~3x+qiSRsKA-=4o>yD-qpK4Blc;4%?jvmkJFhG8G|xEiMs0^gpteiwAY zOrUdC@@7am{1(&oCC!piA0}A{8e?{(YStD`Yps&=Wy#tlc9T$;ae~mhz7nMb{I7qV z2BRFt!7h>D`!|ypXH&#PF#q}b@CG}L&YjEFVgIDd#x%8XNZ_qsm*hJwl{=TCp2}6h zgIV3f2pT8Zuxl}X3L4?A?*MtZ;hlarF~GR@Q#=fNs7u`FSv(!vbMCgleY{+}*Z8dX zf^g;RnNA6<)Y7Va5d^~NUbU5m8_ak$0KMK2>AK{=R8~%xhN(K68E{#0T^qY6R^i7G4N`6tu^u7Ja&yo=bN)P%z27y~>7_UM>}0Goq|Pc)t{I_zk^d_M^a+ zj)b9@uY~jLLO{2euMr(U1FnSht!YM40%7qOdbj_|1B#Lj$f*pv z)bw!LVKSqDah^cYX1LNldl$dzwOq37ppfWQ26nk1|uW#WXqfxlVdu+{(3{+BK}nH_%0e8 z9(}LvREv8g`SLH@=fNni^qInsQPrmjI_(aAoBh;DKBE>YYiL|gT7{v#MHC4tBOPHB zq09MV^F(@nU&`g(@Hg_z8o9NcMlBx(P+!~ka@*y7`(m_`)JVBvL&Wfw-rrtZxP&j7 zAn)_@OyIpZVA5qdT~iCGBsrp}`18(DEo1Hxg%PNo6OK}LI*R0MMY9oV|k0roC|{nJoJ}jY+^(`&#*z~D-g`Y3e3B{_Eq=Wzj#uvOS7ej>2n9i2yQV&$Hwt+Wn@PWd=aJB@W5E z(+4NCYNq{sNq7T>er^w@L`s?xi=S0_aMLx;EIs9cea1L;==35>2 zktcAO7vnS$3n%n%{4!w7M`yCnG!y(enTA}9sI9m)&1UYCIfBd9kasrN#OE1bc z|`&$OEfI9@r&!t|M`=KmST(6l<%Q8%SfEz*uq`&A35+ z;fG7PjDrD%=yg(yQp>upKLQr?;PoR<#ovY>J`qY(5JfQDe$oldGJ&(F`)x*ejO&LRv~@rSpe1y z+5p(8(xvCui=vS0eD1?pqW^fgAHOE4fOQ<(J2)+6Cw&j+Z-;ZR>W|s=1?TaL zY=Jo{w#f~eum+vVs_+o;;orN{;Zwb?q74*yP=a7@9OeUsbhf&#=~O=x6|s&!2n`=? z(|`Lo9Wefl0{GCE`}e{P zqm56Txu~F?c&FsjO%dw^u@iSfsWFsA;Ia^kbTR&E<5&FQwj4=6#Aus;U5S=5V*Ggq zL1N&0;Q`VGd|(4U5H}QxfqaKBaT_7Wjp9UJ5L&^82zJhO2zOr1qRU7WM|T@~mklr- zdJk*F1sbE_kr6nL2ckGH>U zOq%XLHa3byvf3(18Sc7?;zqkDW2b4F7sVr!i62*mVBEl9%%3};j>~o8wG0azxV8L? zDnO&+fYXl%_+r%5vBgMrgeHjN=;5}<^Yb)3hBhg`;v({-F_9)Au6}60aaTc2#Gd#ea;Kq&O+(pKxWb^aN5|BvmI3VbYrb3Jmv2vd1E~+L2_l_kl0-o%{)n z%5!g*vc120R|C>^Ej2w~Bg2bGzfANj@0Y#Zp~HMvJ%Nj%5swH34NchVA9V|v^>Kn3 z@n&Z~}21so!4!5i;U? zFhiu=_1-U>z;2{E@3yz>6%GtCb>sLDSxD1QnS4wj9~XZAc%DGbwC_yI`Y#9VE%FJ8 zG~ZZ3x~2f`>7A5o7bATQoF+rEn;^x8f2!_VEfD3kyfc0b5j#jI6LKWWyPO$~8 zsz()o%NPJrr)%{BKEW%37?;el4fc}xd`;pQb|ZRI{Lk}Hk8r`{YT7nBHSKF!~o_i^NK?7#aFYJp5RgVa|o+d#mI9;x<< zL}~;eu=by_>lGRg1AGC2Sw9Z3Z@;N_*2VJ173b-OHm;#)q4jOMO$;=9VBrv3;8vC~ zJnFNN3XaF!m$t<)QWIYMj2VbSe2v^12`1$9bZ(vqQabG`-OzPC7UF+^%!7}HatmAqfC-=t)6@)PF)_`Ps^T8TH|-IiWv z#WM+$bxfI8&(ZT|m=ENiq;ROLq?I37o2B*80q&iC>DPU}5k8E2;@;a>zJ#_FSi4~| z+t73865d;SP8e0>whtWMw?tJFvEsgIPrtvm6#Wnt7uU-EFri_Z zu8$?CqwM*V&#;NCx@-*CS!^zJ&$ft9MQ*R1Y&!5_00&<{@%ag)EnjDvyzNOx#4SkBS=~v7YI4$&v-$F!R3o29;E=m^6e_; zRH(C3yOL=9N*1I@+?S3gAh5%;Z$bQ)PV*o(2d5KGM5+$_!X``a`1Fd`r_+Ie3}ZORcn@)PcQ(BSTAi0leR$oAVT9WyBUTv`ZwktwybL zV?5IzMsjq%Ja$|132w{?S26fNHFpBVC1A4TkLZe8`YC*N-QB>!Wxab=uu=PXl?kO? z&;11WBb8j*O{T*k=|TCSEp30;3^Al+un#UGufn3>Sj<`K;7fXyi`edgm$q*}q>v<4 zA#!(sE1N%Jg`KVm&CqVK7gw=|e2D}d9bgv@8IzVu?aNY$LId4<6VLr26=qBMT;}7f zVzg)Hyf&>U@pvlQrje^#ZG`vCJHLYco@~A9gh#~GME65W^P83$CI-fz#6pT|4ymQ|LH@SidDi-oH!NAGMxYx%d~VGl6_JP5Ed8X>{U8WL!$q z5q_yEbLOQYJnVhaK1j?gp!U&27OXt~K+*>=oDRKM;yH!yzTQbefvqPoBOl}{T%(_w zwCguh_0vv&Eu$DB07C=BBFAUcgcYJ$E7p=A9K>!<@o_BxF$lF{hD2 zxG28p_cHY9ijkUg`e!w=ftH2sdHvl8+pKd|$-Hu&SlHyA3nszf^Oc!n4`zT9Wv-ED zqAz^L81}mChheg|DXXY|o%9i3`yvzO=0Ro-`#RPy+D>gl8ek54hbUAzPg1&MHM)|R zsb#OcKisSFNsX}=;sjzKd#8Imc1ch5$MZ)pbr6a5>mpZ-RI{k z{O{=C9#^5^LZ(XMUA`Az|0A3ajaVlaN!+fn3m_Fy^;lI8rJX%&T;z_EqVeFf~uLYjeR;U3-#z^g; zg7w{qx=#|?ucZstMg%h@Xpc$tNxW?2|Bu-F=|YCc-Ok3;=Q;M=kTHNWVV_*1(J4AD7( zL(G&?Y1!X^Batgs`?a6zjAerwIb;W2$N2h(@T*RrQz57B;$G-2?@q1AOh}Wtm(EC= zKKm<>mT&~NIbq2rps9erIfakVpL7=`GWpkZYY3B0i#FJ60GJ{nb-C~<$px&pu znT$=T%J*i+KAobk!0i^=h1+H}`<=KeJ;iE^|MAqslh!h4d*_NifDzNP&>PuebP`wX zJcs*WCyMG-BUqtzyS|!y&Y3Z>KE`Kw7sf9lVT7Tu`p#Rd%$Sqx&sJdm@q4UMU1jSQ(rr2_e zwRP|oi8v(-7WT6+V13QIdZDjp5IRPp@`KkTQ~BxJ2`oc)3oJZT==((ExBz6a9k)gO zs`6+QNRSF_>@q+hv421zP!a48;dxeJJF{bx9P+n?A-#jO*>2XpH@-Y203kCKJ*QnBc*V0SkeD(Dep$d7=xXZ9HyOdyn| zNwq`!;bsJP?(IU&n`EqjjGh{BkPJ0^()J3ThTiba41<+gmT3&8VJb{fOg%#^cb1c% z`c?2{tmt;Dm?=pFfMsPINl$idG@9e45|GTd^J`C1>AJ3ml)Z1Y7jvA%+DwLSZjtB} z{g+G5^~?ooF@#5XLW^vGUJ^+y>M6GG2)~nqF|AlDYNp6XpQL>*qJ^BWgwrg|s!1ki z{Pqe1SZ%Q``BBN}^xVX8zYsIj>y1zQ2H zvYOQR&aUq})xB{Ogc|obxTPTZZeriTZvVgzxFnOl0*gf-yO&wqR^zpA%wAjw5Ll_b zocKT-I}HY~*&L2m3rDhr!bT;l9F$#uNOD~vjm`*ut>n@28mFjG%j=obK2aQ4?to0b z+>te}Tk!}9AW8W^D9}-jiw!$vOcA==4Z|%94hMRBSXeee@k+W@{8~Kj!m(o-_qFg* z%T40L@`mFQ3G=cP@iPJGY4ZgryU3Ahd_zh|&5AsRmo^s`Sg{JA{(j0Ym%CPdQj+v} z2-2Q7m11tqQd3ww^A^zN+si#qMqUuLIkhC1eteTJbB{T`wIlC0xFynv^j|Jo|8FNx z_R`_VP8Gw5^s;BeLj(i(Y~4ZptPh%CcLg#WJ_m-9Qpoq7S-i30H)(RiTo|m$V1(h-rN3vyqS&!z@B7P&|Sjb^4G2>164#eaCTunDCQG!*KnqxRQ>ZKUZ2$ z6yq1x7^$MSE|`Y)IFAcq4bPoYG~QMG<7~oyj}n$|hlX;tv*o^DjB@`DH>o+MtI#|n zM(xbvV2dc(2m&+^_K6EUrZP;j2=~wu2zQMc5M~Lrts*?vRUFikUzGdag1pMKozk%A z$@D1Nt6t&a)G;if4H2z%>nio;Aq?@ZKt7b{erZxTmQ-*=bp<}&MrH`te zxMIi-v?n4s_FYr4Wo`U_8v+%^_aEsA>%Wg3(v#QRgg5GlsUM0`H_hvP_qF>XVTH+8 z0;TaI79rIG7!W%X?chyc6mc%WD%lOTkcA^nKNWF-F|8PUtKh6W2WBCtWEr24+Ezaf z9a+xsYjNLX<~{$8y0}euXi2OTsvonGB2VUTOkIwKlLQZXg>^69d4pGMIT*Qc@n-U9 z_8jRbx6bnkE&2WtVmQZEe$lTq+2!d7heQXR zg{^qxVXKEJf3W0rO0QvT9SYHoHQ}hsw>2jOyKuARG$(NI_h2eBaUf^Q|CM3)iypiE ziE@dgrAHDh+AEoS)#u&^;??OPi>{EOG?pHke9X^l)$Yn+n97kmY8U(tuy4*Hc%Ry> zdpJ*%egSbo4v>1^^}@>(y*bLaSp8^}>gFH}p2kYx@xnA=>*WD@$E)~Fdr|&M5@Dam zUgJe$Nx_&x0rj(wo+@d3P%yG1I{>-AW{k~De$lKlp@1SpAH6+#$x&fHD-0QU`|QlY zDR$!vovsHJD|NI!cu}8}8tk-~TJNobjXqP!nlI^OPqs#`yIk9iS|UiY-?R39nU>zHqvK&`i zX@?=_Z>O?HBr&6o-EVB%F0{_}SIEI3y`Edbq}Q}HCEkz*T;w(Wl}+Vtr&|9f4_B@* z=f1bRZ_4rF}C#m-{`CPO<13-;I&DYji<&>Bst!#o>P z88NdNC36ycNJhS2_FLI50I{;mg|}5H&BtwQPdKl{zpcT#z2J-rs(#Mi&+!&IsJs2fSdpzNLzMP0|Fx@-QVT@Pw z%SBik?z4Gr7l;=6WtiH6Z^Lgc?yT2hOJm9Uh3=Kk;WiSfL8Dj88m7>CuV8UF$ZbEM z9n|*tZc{{$t>`P_H~k{<;YFcy)E8bg6)4;j5Bn;^5xkATw63LwlC3Fpjj7R1(8GUK z%Q)Nr<>k5h@rUc1Q#m>m?jft!B!L3J`}`#7O|__d0o^Nrg;}UgQ}%e#*l-IzAYo9~746B};zstL@Su~&DuW=)TW>;FuOz6o{5eH>e z(3s`am%Gup%wfA86EJcfPwjPSGpjIb7}a1F zW$v6&|Hzs`0#|tNab3-+-o8PrdS+USNf*I|>imk`1^yfuyG(q93@6Ri2r-hHD%`*@ z#UXj5o$`lOTt=*-@_$%G{aI>?q;V%}&)U2uzS+W9Z32wV9=*UkYFSjk$3USz&#$)n z;M_F~u`UG)tVpE=g|ZBw|3RdOBfPbD9CywC0Ycvn>k4Ci!t+qoE1$QE*ad3XF`uqftBU;%-#SaC@xHbGCc4+2HM^r%qp%Z647~@n zp6lHp_mC2}$5h9To#x;}^MTrB#L?%mIUe(wR`4?e|fM6bGN3VXRGUaVLr-e%0<7C*ghJq@mlm8^|@@{ zz*9>?hD|Vq(bEJSsXg|1(`JEH*>HsxM#8r9SjTr^17T0LHcSw2!v(-8a-8iwFTYy9ksCU z&--n+Cn?gZHaLDSdyT8Jmvm(9ql@dV$2d9AO^3^lP$&lx{bEMI<~y4+)U}eGK%~&g84KW-(04nY`3=hOj-m7EH4_$e z9+0(OYM2kA7LDDpWWsv)#7MK$Kvi8ogk2e1Q?^iJC7v(yy0EMjy*tMN3y56ZU|O0%mS zX9~u=;w83bU|DK7TUrC}*yfAX%wlxPLBcI{Nrj2ck>)Zj`P{|wT@s;FB1ZyO@o@Tw zowl-$QnONy>3nhA68T(FG2SjwTs(3ywEG+f%5eonF{o?3-9p#Si`7o?yenKnI`^ z<|D`Kdd+4$)a{RKYiWDyT5VB(^SIzSFy03poqI0#2{Jn&dA%gi@pieXZruG=K(hi* zRdCk}zIAa_&$+Z72ZSgDXsl45ASgt57xjBPNG~XQXugF-k2xjsJR_KqIbEH;tMsB- z;^(bnS#9xM+b4Kz%_d6x&Z#Y*w{cV+>#Nq}UQ?PNS&CabuJX-kZ)@37?oICn&pca4 zgZ-j;%JW1zeN#SD%-haP)=e#xViVAXX?8kEBRd3Mhxc^d!TR_ogq_tFRCqsNTr0rV zHmu*}UJ#=$dvum}p$8soMk7PT z(=tFZdCBW6=9~Bz8>D*z>u34yS7Gid-eh6eMLHlJ#{{ZeX$N?9Cb>{_SzT+yA7+1H zy?E~9KRUEA|6M{ua{B~pS^leU9dYb=eUB^{&*?YIuZPxU4<1EN!8JdVC@+R}$MDs2&2SXL6FW8@v@ZBl*>I}kdMVX&r~Atk^o zY;j+_uocoTw!TF%l#yuGO?kzemq6mOgwif--eH7BiP!oj8gPI&G)pujY&uP2i}1=> z-A^}DIZAI}*W5Dtf0%pgsH)a3>{~Gal?DMpa1&C}N{7-YB_iD*Al++?vK?S6h zZlyb;O{maRKePL|x zks1ee4&}$?Kag%VQ{PhE_v7RFoh*aCCgk|TV8)~x!V4S|$f!NR6fI#4*m{psnfpR( z#MM3uyE%;)-K5>~*LR{o)Il;eki>$r8e8d052quH0{DG=4}O+hrX#_AXYOr1(WCzpi6-lMF{C{mS1Da5Q^KWQD)AdoS4h@<1)$EqI#>bRLV0S6=N33OeX&d zA-pdqy&d@}8prw+<3BoXYM9SDj=%U3_y$9oWVAeX3*%?Cb23aa$rI~-a|tTlu060_ z4Fe@@XEPg%iT7Bj8){)K2Fpo_(^~-PPP>o*pJ>GNbJbe6ioFGKLa1jnX~YyNm&DTt zVpL{uCT&UtoTY*3zCh3xC>QCzky;fzp(^E=mBmgKv(x!v*9ej~nu%3fX8kPI{_fwkT zrp5%zFIA%^t$`J@EPGGsTra#f$E-UD{i$*OfoE@L{*^WM~^ywK5yy0-kC z&({uOElNk5Jr=%gCZT8zy4-uk$&omQ8^~I(>8#GiseYza?K@MyZ#Yy6q|ljN>3_tz zW&iMr4-1Jh#u(3_)RsulIW08qhpWuoMJbPdAS1eqpLJ4-_Y}__*LbcwBy$|p$DfH2 zg&qjvZ)MfE?8W3(v9GZ)AN7qa%3GYf$H~C!_))pF1P>7N0d=Ik0|zrEt4!Q%JKJ_; zJ$o@Ag5m)eIm){ONW~G{790IHo1ckY_P^g1A#t|?CBR4YC~zvo(&wb;t1VpV-fUdq zu@dsJ5J1cY*B+&*;iceSbAS4Y3L$f-hvr^y#!IL*f1I$%ly4w>PLW&A!$d% zY6@tR>9OG76ksW!6NuCBI2$RiE)#UwWeb+n+)!!$;JmZ61ogmx0F*0WK5a`w?1GM6 z*MmH%PXC+TB%Ei{4xkO;n5Y<2cYam{Ro)*@=`b!Z-pjbJjOp9=UNR9f8#S#E(6igD z+7tp6YlN6Z1<_?$G5hV*V}vcrZYyc&EVL}!Gu5f3ik9+8xx%ugM)^W*OASvqiZ@r| zS-VYrIl!Vgjw|JU70ChP12rGOHqa4?bJs-sZw>+A0=D3f`l%&feIx5!)W{tw6)XO)#dUMEs!BcMAP<(u zBaiF9;osyUeDDnW+BJ-JxE>V=4|N&6NC>A+)H`VQz^bE~ylj1b2B+8uz;&{Z$!ZC( zSKQPt-MP2nN=8*b^JpzNDQ{VTU+Z?65B03?ZPBtCs#vzW1NOByU0|8l#S@-X1(T-N zbfA;F1k8B_y^5C}*%JH^@5H}WC>n&D@`>`Oo79IOPzU|!C@4* zi%GN0!6U($FX-R;+i~u8J6bd{W9Hqy=HWx$!jup`R9jKOVYehx1W?$csXxxROqf4%tG)Kp{s_yX3F0nT*2Tf;)BxF$9h zj>|?FoG+8J9=>BEIpL4B9BMOuMDJVsO*`f>$mSSvqJKXey_E$2jm-!^Id^_BD>Nw& z=?mLMX&j`sxCDVM_p{4{jl4cR=GqPz#qP(u(s;tpG|sIst;9t3{q!kY<_8H8HA|Nj z)iIht#mGO?XX9fx&=Z(@CO=&EQE2o6U7{35(va{E@E$+jr_0o{Qpx@|XARr@gM43S zcEp-GHJ|tkL}7GQkWAJ3s9^g(YP7Cj_j|1}a<_s5FO_i|Sx=j4nD3Y6vE4=&`zh3z ztzIMFuP|_!rp{`}eP{eNOizZB6pdNCm_&pbX3u2SZH>M3szci4+ZE!GRbAH?Bq>=7 z^4(lIB9FQ^uj?fpCC|yO1XnbX+m-5mL*vi4naa+`eo}3Ww>wvlnqv=DZQUFvea%|W z>OKOB+TXR&DVgqDj19Q-@R#Oe#hlc(5sZT*+S9Hi&mS$P<6J|^AK6H!RBojwWYTE6 za+orje+G65Jw!EA3-he}nW?Aw+)9PT2^KG?j$)-$u*esWXD)hTHrBZI?F1VAwt4-H zIc&gmD02VVn+L13KMN*5#B>b?(!oToph*EdL@}D~qYbCK40~i!sop;JXk$qQ5U(0E3xhJ_>>{-ogFIsckyXfY@&F+nccifbJ+; zJV^UKcEMIx?p&k#0h_^<<4ufky&2Xnk%d%PTfuO%W z_MrbIqxm#AxtQ0?e-AVZV5Up9f4leE4A_p2?cmGBctjRGNLG1}rni+LN(iPjD36um z)@_*vUymT85W~GdI7|H zpr07Kb>HpltA_|7zdOQ=X$J1|+7Ex|df>bu zN3C8-ts6pLOEqtV+1CeUq68PeONbA{R6eD~mJ5jRQ?}u@PuReUx#n@l(#7B0IOy&r zh_2}I$FCr%sERKNW>)7W!>GuK-U8*uadi67qoJI zB_A}YP>z0Mo?;tpU;kiKK$`xXQxk)2p;fH&+k5L|haqXq@%TJqO84Ceq9G)kXgQ`G z)3yl2nH5_Ag(9~_{xe&Lx1Q{TLr6nf$rWIpkVpTjjI2WBV8Tv*^(ZFKGk|y@PwWSl zub@xrgCSLFx{K(aZ(gM8PQsNYnRTnFMdmtC_!U1Jo%NbOJ_lsas6rPop#FSnjD2SY zW?oTUV$;%O;mvK}XX5|u(!~~>D`ZZZY2$Hq70wP-Z;%j1y`Aj2JeHfa4qwIBPQrQ8`l1t^adCMbppO>$gP?TK<405g@KN6r0@yRFTGx{HIC>Nk|* zeWBt2_dyaJDJ)>Cvtj-|C0_g9?X*CF^loIZ9n5Nyi&^|#6vmx^dESuWUGVdp)iB`M z;O+7|tQfXhJUN>b@sR)6$grVau7muH`9y?(ItE4MIKe)qyaoMKQo4EYZqvW{QwS*D zhCro}X2FFgx>$F9!_(=(21oEf^FekI;9N`79&|9F2?DT-i?GOBlGH}}?oY}@A?c5A zW$ym0Snzw4o`c}A^2UGr))n)Mms`!GwZ($TD;L>ykV-YbBjY*)t2W#CczQ!8*0Pl^OQ{+MKJ4&1D0K=phdOvnfch0y^(m-)9Z z28%gIMzAOK8!LE682VQ2|J<9v|JjI>#&QSC3)mxSYz~5KXY>}JO}X6283=xIVf2>Z zgKu2j2Kax!?ltJTgTb%=JV6IiifBE&g*ID+0?i~DAWHZ?Fl6-elV19;JD@-!A#(cn z)j-sC6!;NdX&%1yo4kfc{!fMxkQAon1ET^Mf79Zjaa0+7V3{DdO;3^_^*%uyVR0!2phQ4hzps>ErXo4IP(`L4k5d6x!X=F zb=ZiYR;4{VD1W^9^ilSYFKChii^(1ubWHP$9-|7!0q?;@=Kt)$+#ys2BNqNpMy!6n zGGLAdrR~7Skqwm7?*o?%zh%&%>bjbq1C<}VE<@6rci$9M{wAlvtEmrNej)hvzZUxf zUKSS`)V2ow*vyv`=0s*iXd;xRb*1+K3fjZ!!>`$`8;Xkh&+@m>v1!4v9 z%ec6Z1x*43?UFl9*gUr%niK4T3fy3N(f2HGfIM@7;Owe2^jN?P!f+v39k9`h2mDVw zz~W+_#APG{#b5$JD!N?o%Yce8w|cvMi*8sMPYMHyKBV*x&wh_A%+ONY`nMnG%4G;} zf=c@0#t`fQd1ye4B7kx@a0HMK?Uw`cBq^K?mGWOQ*&(`rQnL_gO2h-{!y4)!be44* z^uI^lKtFp4I5Rzdv=a-2lmh1`J1^?*fnyhH2^1+gKyQ*g;0q9deO~YDhPuEvSu{;} z5P%^|{!XFYEw zraZ*~`twe1I-*JasNYL2wL zPl7D^eaZH17a-Pz&KQy*)ez4Nj0RO+V3Ws>x<^tTC|Yc1y}q?f0Mn=QBXd2%?=RV;)rul_34P_ z<}{^GW5VDAd!5{}J8)d?1go3;B`^Cr=mdP>oeQ8&?}xC-tMcPA5^-9#alkf@E5{@h zUIqTLu_Z_|;N3d~&Mq1rkYo{13vtUzFAtjBAL6>mW(x9*JgP(9Q>GZYAVYgIp15qn z_RSHnQ~C*60%9~}&m7KwusJPU*&MzG^y}H>1%zi&C z=n0-68|?58>vsmDw!tVj!=1Ue<1yqFaGFRm;#phZ9LZJ2{A54xOFJXiG_yfpwX+?W z;GG*PXW;x4S9i8oP>MyuApx2TmJ&%59p#yarI3>Jn-Gf=%aIc#Rf=++rz9(r!?5!R z1B&HZmFU$P^)bb1+96r)_zp)OSnIC_Ie%laNJi7t6 z5z>Nrx2|aLc@cdJMt%dZwvJMAQYIw&RSMM@h5CcAkW-(PyM|6eezBW?)=d}v(Gp0P zLK3~B_NcY#8D5ya@n1R)&Ce37cz3~6nHPdl!oaH58~q39{wT2#_^h)VG=FfL;BZ`1 z6@{A{k8a@1ws36l#Q40Hj5@H`nrqrOxLW=E`e#57jT}W6S5M-rUMID1J*$fB)L|41s#0ACjrd2bIVe`yfuxr5L z7VDw_o1hUmLO-prny!UJ2EpxT?VuHEdiapPdrriBUi=BlhN3$kOH8NP9Tcw_M5@Mn z-eOz;_P?2FmWub}bO&43rAY<%e&6&ifbHJf8Ehi|gwUYdzzJpyHtIZM(7vE2ep>CZ zPzO$CnYRl73Ek=P5|0I{Z0^(Y9f85_rofL>-^RzT-x>LqHPX{(pQe*8O=T63p-Zm7 z!~4R+3()A89c&7qERVLWsYU2JTnmi0wYhSC#dWu`A#f#9PQccI(LlOYTjZcwE$Qnm zx(UdnM{Oq)noE5ZuX7Z*=7i5x{3tb6r<%hChP~PNK@NSP?N@aH(IDL*6?`;CJqAu^_NKi`&+{{7!;o>6+;M0}FK_}4=Otjz&{mZQ zXs*xtW>e@!JQu=RfTxvkc7)u+K*oVrMBAYp618|7hrOaWd)&{D`Rc-eu}m~xp30;R*X#*RB&*^ki<5|!yYK2iqI`m8kOlu%*Gj{@%+0n@k0R1E3| zqrmVWmg7jSjUYHy^SQcamj3xk?bl<#tB+SVdDJQjq~Mi*A*~RIzXZq7AKf-@E|Dx( z7q;TqA&PJW(yzdr6bG^+gVQivq~;6D<8<92iL<(T;4|C_sFW9iv!es$HU>--+@=Hc z!*{cbDfER561%v@%{hy}?{T0*H-f{8vHpf_J(p^G(9ctJ%YLIb&70pB>sjz{P9nc0 z`Z)4?FqvmFNMtD(Qa+QnxD&Ffio~=yS67y*;cJtyuCgK4vYx(Itkym?2zsftsU7t4 z{s8gs355t0)U%dh!vB1GeOUb$zp1;6Cdl4vAK=uko)7fJDE@Yp3>-Sg;y@+InD2w) zenjS5g*eb6$=I{DcYeZ4nxYNC;5O-4c6ngz*p-7zUKh7~UH}1Gr?Q5{a|Yh4keh|~ zyC1>UT?=}7Z4v>dI$1tVzRc$oIZ&6a=;uCG*KfS(nBW*aI zwJ?-~z5bfICFPM)+xRWIlPW&TBS2OClwJ^7nCLd<*h^q52)KbnSRUndvF^G+FG$+g zM?{eUG-2jHj(#wLSqh`L*s)=30JEoaO$L%Y&mh$wD__Je-2G5~uJ@{LI$lF^btQ6AydSM4-stOPtj~iq=>DiZ{E_QsT?WDSQWo$i_~(i2 zBTeDl9;ZR`4M^^(wpj@Vi>hu}fLw`56|Mn5@lT*a8Xas$V#?7kjfal37I_Ghp-+1Z za+5_Ff5QpLTVphK1LNm$4uc4z7^7tLMo%uVeEq&8(s{Fa1cy42!O3WXx5|E5|FC6` zYQkqudV-zk^E!0e0Bu_90m5|hIoTJg&%4XEcReFzxumyRMejg<#T{^Yzq$MROj8lj zFTgt;HY<9?SWdU;O#A7u=C!F#;p+1u_rh7v z#(IBxC}F6m^c@!DRZ50wL(5khfZ(6YrWA_1T}X3(*EA<@3Hynf?fIessb_vn3qPq1 zQJBg!Bp8CABUECLCG@&jN)5n%e_aHi6Y;D6dR?M|zCP}*_(|^2+(5s=4q)4ep(2I} z;uvSW&{uwk+fBqeVyqR;q;)_}kpOk?OTFP50bNPF{g51L=so5poxoei2^-1r0gykN zV8kcBfgRo;=V6P@CS9HRwht2KvEKBwSR!=%?dT-;h1)l<9$_h;bPOiVh@V1;8#&OC`gPBeKNwnwKIT+>ipI=<9o2 z?>FHSRAabzqd^}96*F9qx;m8vqzBsZMtC(ybw>%IS&@RKl8Bei!0lkHVr`}T2ta=Y zq+*Q5CniQ{sXV8 zumBK`>xV6tg-X(-)YZZ&2f@I~880#y`e$J$C2(ah+h*)ck70Ed9n+2Q8+n0=!42F> zJa#|TIg+Lmq7M3B!AI^gzba zs}f@h~71aj*Dt|uVc)(C*Qi&!e#j8 zxx1|B<+2tInp!S(cJwBOU_SpxAF0R)>}zzXFDznpd;^u|Eiik#K-jM;TojX zCu(QeRqYtU<~_iLxy}3Xr<;(p_Z1M7bzip=8^7&10vkI8$-;=j2g^$oFX23=U`K*9 zPCrRukizw-Scdv|r|OK5ozw|c$^Zaq0w^v+?&g2fwE zZxX4{C)Ib0NZs$S<`8UZx(iT&-DWi?qjJfJ9!#i6vaa>HNISqd-~51$PUJI7s2_FW!HO>R{rEsgJ zn?W%+<`a@+M6g1RI^2w8;1qRs>Q-Z!T4hykJMnhb| z>YS`UdJ3z#LXUHCg#kvi)X0FnM6G~r#J0#W=rxDt?T2}uGz7`7-4OMmI{e8zCv5_( zhQd{VZ0qfOlMCPVhNz6|Z3!E2PksX#xYPmu^!hxl0NQ2Ny)BO$4I0PV^0U`nhp!${ z;Vm=P3mhpFj&>embk( zfXrKyyiDWy9yRG#L64ajBzad~pXY#ginJogT`#P<$%nezsMBHTB^XWmIj&q4Xp!?hX3KJQG~_nxCv^UVwzVe41sFVB)%5Eok*S+ffWd!@jnog zX|n5A<4X%a)sxbzCc+DZr%?o%)jnJSg5rq6Gz{7J;KJ|#(PeW`)#GB#91kK<>Ml*Z6A#t;pdd~ShZ zx1fHn5%&Ye@HGsDeASo;SY5v%vK|~)+1lqKw~RX$ zSN(6F0@Z`L>S(VWQCi$|1Tdc?@cF!Vr9lRb>9nbzcvI>i(NN!@7MZE%f@W-g5@aucljn`wUv*3XUP8QJi;&d~4l+tHU zbz4L*&DLGs%xQhF2B44t(e_;tIhG*2xbYSK3|8?tfC|kFO*2blA^P-TtPxQmIg*O)qv;KikJ41d=mpVK#+y3W@e89-n zBhl8KPxFo=HiqlrZ`=%HtY*;)P+9St!>^wK^`2Y4x*=v^77O2LWLRP9$*`pvtR;T~ zd(;H}#ekDo_->z$u(4hSvJ-w0lzN9A7>MFiPb?bvTwYpqPjXoP-V{U)PllXI87Q3c z&wv$!44{Lx`dGHsXwdcO6{{X2X=oUSSL~cnoXikL;T^ts<54GZ$K-yy_HlZ!CrfoI z4*wb(6aB1LP^*}yJ1p`TL%x%sd4gDe#J}7H)clM)#~%we=L5^S2qfB*=1Xbe=akaM z0akE+f00yzADGEipmP6_oPw^r>Kgo2i}S!FXcrj)blh$*+oG+7pw^hSt^mkb2`4Cp z{qKd$3|4_;baCy7)X$n_U}r+>0>v?$o`2pT5SXIW6P0v|e5LFO!iXk2OKIp&1vAOG z$nR@USKOj3MV2*^9)tW?PR%Qwprrkp%tovo!`4B zfTRX*3e9P3IAlh1NjmZGo;$wiSI<)EpszvP6!kHjjgRWJZt6qbp9Nb7zr#Q$9TvYC zNhw9+0JVVfWgo~2Y&5)VW6?1#kzMYqy@kIB$y^F$?eL&MU>Qt143zM-9;bA%DShyi zDRmI3-<}ih#vltqr-1=9+E@&C;f1ip{g>Zq^5Z$iao3^j+5`m%Ld|BfH_32SfbxC- zGso^`>pW#j`x?|LL9b2h!X<$7nqjAvn>d?`&=5?;3V+)(AbeL7N0h4$Wc@>L#&L#M zDG6NEj;E3_20L{`uuv3*@!Q_@aTEDAG0ag6c0SIjVZDS-Dds>lAhOLyy-jTDfnl?R z1Wf6U>B^rzL!qG+K(T8fw`3xk!sHR4fxXy(Cv0e)(luDVGJDdx`}7GH45DB@O+TKb9#~`Ek}_dPDwak5#n&|L}$^R8t=$bJl0R zUHyW4{mM`|Tf_1gR*epjt4QwvRW6-)p=}F(C_X#z^i;M>?1b!5YOYUSt)Bdj>7y5* zOBW8tE#QXH?;CsTWMxBXn~QnU8p7wWdYAqLJAZ3txShDe(_2 z@MB`#zSc^mp*agQJg!t8ArJ3;QY_v!1x9CTDY&vc^{n^?!< z5z!wYd=GasIe9dPyGrHPC-djuWd-Himl&QK=1ZONkTYj~-0)i*eT>-TH%A9^=6e+? z;rtV2ZbFTRfNNiK7Y=3&XYMKUtkqYI{i=TB{X3!GYj#oopw3C+a`r^Z@riDT*M~nl z+Fh{VpSTC?3@acO$ld4?Lb?3>ad@ z;?KpNrl~N(Z2Fxs6sL*JaC1N%gNQ4WWYz@&ORKtirip_pAW3NjIBuI`i&wKZkSE>$ zy0wrn334I}*P{~zKwdv&#c%A^5T2Bzg;Y>`W8fi8_N>L7fcXTsIE+D|iI#24l zuf2~P3BUXTQWGNtxwj5HQrI;tN}k8#egnnNdv;uqt!O8(>Av~g?uZ)CwIRIGMqdb> zDrHW5{l?Q{(2^@jX|Ws!%u~B2afM17s*T*X`NZH1l~O4u=IEe`Uw<=gLJc(C){<-& zgS6jzj}oWZEs_m~v3b&p2&Dv6+`8uk0KBLb8@FeShV)3Xy-jA8PCGx*Vx~JYLe18R zcpCkSLXHmKnHx~gDqSp5faQ=K&ezgnU*86hen1Vv2sPd)dH>|o?;G&(&qdD+!$JVXZ_b%t9!`-%g!ZC>&)m*Et5s*H#m(zT&8ieoanGo z5hg^3<89WlwbpWL%u1;q4DrhX2#~1cNa0ATV z*aTh@;S|BvRXZzN+I-7w1X)C2-D!AQY!WnWPzFmvgGzNbb@v_jYm5 zpgt;maLL6|2>(uJX_1@Yg`*$yz~IBtfBYoxY($dZR&$oZ4wO|SN{S{~(}UClF_5m* z_ezVleLAu1#HzUZnYVbB$|^wfIWq^}0?~lK;x`1@HsFi`<0JFS7pikHHM#_YT&vG* zy!d14*e67RMczCYtqMv0jmL`V={puPx5pu*2@J4D?^G6L2=M&d{${+;5e-1fgmMC)Euf zN+BPI3c8&#j^r|T)w+>(;9}?g3$tc9BD<&4DihN7CUh!^}K zSw-av^_Gc7#SWG7j4;Lor`ZCCkvb&VFoqP*XgFrNc03q z%X%9g3_Icp;3XvE9rqJEh~g-z^e{s%!8JMz1SzE7dJYU7_r5b@GOhayV~bmhxi-2Q z7l#mkDgqth#t%E#P7c?!sLDCH-4X>|OLaQU1PN7nc__cd;4q)ywg(K^Xa`m}UMqz+ z@pbIlyv}+5g7M-8o{y7L^C>~7F9{{54@Da^IF%;lt>+;qI~F>BYS=$w^Fi@yuP+B5 zwM-MAA4KL`mM5c7;Cy!DAeAQZ+^yb$W|@?>ZDP>rukru{LHL7Qk_qv*JD=_i`oS0G~fZ1xX|ExP4RJ_QvLlLGJk`Qt+3V?=Z z*s~w`+|!x2S-~_!2BP!2hXGn+wrRI91%op+lV)q$Nfz~IRRKa4%jKWrX4@=1rX$Mmv%;}6Y7DiIRsZ2y!XV0_`U>+WHF z>`AH3ygh*0#ZubRh`C;Kr&X~pIaelCKlN|_{2IY}WaG{h_O%`TvX7EPc@t77Nx<25 zEDZf*=gS$?Y``%CB2eosI7_20!as7!>E<;z-(ro(P|PdJw%2!_O2L+TTtlY;7Sj$d z#*ZOmf3QKZRNrpQ$33;P&`KfX2G20<6Y|J(!w}(FMb;8Lf86`{@PPKDD(2mjr~iP_ zOz%KhwRgV%2?_n!-vC^=D%x3*EWVC5)$5r--(eH_i5Fy1pt&=B?bUz=5I1499D|+< zNqrLE(BODe)}v1u;3b0Ly*xMX>yD-IN8 z)}tnQCu^aEAufz=!hwyoRbGukR6#sy-Xpw=Oi%#lfUwd0yw(TdkVbjY2aRLL0QCK5 zUq0`CIP;~0rKnCvrD>7FanUViqjo(MXm!H7>ekvV+YTe&@D%rw2~KRrdV)R~st+3> zmix18A@_V^3uE7h5#dci#kF9|dN9tiq|s9j6Sx|D3`X`bayl0K#(6n0tf~S`Mixx2Y#+$W!h-X? z!0(%I=5YQ@^#c#>W>{l+lB=dX$Zx1GwwFk=)PZzx_?ms~Fu~k|*SM^Ec*&;<#oheG zLJKf*c6~9qPH>a(KjS>&NQN=a_mLqkHnT5WUrYdIKkN3gO6`u9u^X45%KJXAFdEGc z17T^A!-Z~5O6^(_G-)7&kb#=Sx7B++ns01c)tv(VE)jCe>P+J0#5XCwD}=A>VaQn> zawLcs%1?;9HS%J^qPS0DG=bsZ44Cc>`?dQSvrxRQNWnF-srzK!VmApoH6_kqgUa)t zhlr0NbaTz|&N4{G>2c%r57`uXwT;W=J=^RZ;N!-^BD}y8-&U9>sp-0;rl1AoQds%3-^>wnUEzJ z<*K#~T#Q+>oNbN>Jy0PR9?K_6;|842Z}9TjwUJ7tZn<S-9tWII^;nXvQ&JUGN zn<>&ICiF_ehCM6Qh4pXUA8|DG&4&J=oKwz@*{EqW4a4RCszHX*SlPr$|)tNOTy zo|ezB^4@Rp_+r?r%gQ)@8iS&>)Mq-|)e?+> zq`*0F1^(Nmdu2nMtDoaxIP3pN&ELny29lOuTcuBP2g|3H7>R_mxx7515+2=PBtrt2 zpGTVFgefdzsqmN3LFtN@D30I&ggW+p+6~4}>-~cu|3d=t5DhfLLP%-OX=$qdt7;A| zZFif4y&)s?&w|H8X`onE|K5=E=2xHE>n&uzXcX{o1rT7Y9;f$A@~`Xu0D7v-%d>+` zf1f#k(Kw`o=4|}8<07zu>@58B{?Cx3@Et5k%r0_e?pG@HZUKC22&w+RT?N3cjYbBZ z{&}0}UxIh#i3{Ap=2sL`*oGGR#^-bVw}AdKxbyP2EC9HTa{=K6r};|OpQ%CAeXu*x z3RYM0{8~ABXXp*|8~K+q1Y{{r%H;s)X7E@6|M3Kn`n{#l)=K&-+jxZ$1u5~_Mc3+l z41v8biPUfV9tqg@AfNCXiGSz)w6Y-TO5+r;$o*BK1>XuKlyR_q9g!~@ASBcLb{4pC z@%&20e}2OZa7E?>lz2e?(;j-fYyZtE#XZ{o-`_QA1f1{#m&^YCai|n3p>^39S@~&_ z{_`Tm-ra?Ymz?eY|6SRmMcV(@&jwhNf94{!U->*v;QbYLh(_%}Umpce<~H~= zTlU|dR=hj~pU3L2a@zcnu<-5HzrXF#-v52_2k!s>-{1E0Lih6tnxeHb9oc@t{rgPA z+0mYt_(U#0_W8O^`=s*(Q$CK*tiU3{eEOqU{$pUdPNkp)E?Jq_Ia%e`qb&B03W`i= zKmPq~IPtS+JD5&nsM#+=f3WWEqlRdV+%bDtBL2{9B+IgcY8B zHi=NX?+~PR+$B&1D1y%Hy;VBDaxvL5*GBZ2Du7wtiHqB)6!LuOjbi0oj36P}~zJN+H3@kZ#k%~#6IR7f+k zzHreNDwCQf|1Ow%hY#I%ua$qf@3PU?a=}ytR;wzYOF*9D<<#x284Rs^nkupE6HR-U zSSC6e&5ySby2cI)<4HZyZ38NHf%+USlkifxjN7&7X8oeroU2I_!q4_h#}CFQcrzS} zmfGVrEvOZ$>CT*2ly;V1(v4uBeMF=&olzt!S0{%o$DeZtPMRgd6V!?h(%2tFewIcv z<7k$y`Q`h05ibDRh5X+9+iiVLTgamGrP0k}*4e19j!rU3*{tr9no}=thW6@EU#Y&% zk;RlI=Q>ip=&3I~JP=q_?-dHlj^yRo?EG|IjMFPy?H)Le!zvH4 ztSBN6akKlHOg@TWbPAkn7X2uRO)o8lZ+KE(6eoM*_F|*PpsUQlQg(T<*(r?ML8J8X zXiU^=V1OMQb^Q0h1mH%43rV8z)t>&#E;X9LczNi`W{sJU@T#XCapIc8tC#LWGePrv zh}7oXV#TJC*tCyLsqRKXyjxNlmvAQbxhG@NN*#$FzY5Q{lbAH}IJYf*$-RBE=y8pU zFW2+?EnS``Pj@C8aN>*vUE`O~ceD0AWQ7-Lc2;-8EQHllY)W6&_INlSEGJ4*a_v}> zTZWl=jId`cer`cbO1z*bbX!*3`If>jnK^QpkCL5KUKLwZ)PTkQsCSyyo(-w~{Ia;K z^rNG5w5{MX>`jZ9P86Rhe;^uDa;osG4X1JAgFc6WX&2X`*+F0ssHl8``^{zZZPe3e z!hdE&KX*!U5Pm{^%67qKtA=w-L7w+_hlwWiE8r51C4x!xP=eMo5ABYZqe+JBd=Gio zKg@SprMm0)_zxSSG$i7qfnq635pVQaiyJ#BzUEW+wT;w4G&X$*9TUUIj(Ai!*NAc@JG@(rSLGbw9(?A@)PhR)dv^Jao1HJY-UwiSd~xS2i^{hbb8`w zX801)?!QL@DaeiB1}TW=|2zq0E9z@&LEC(8s%_w<*e2i6A4YP6ZhM@s6uef~yEUp@B2ua2+lj%jZRho!lVJ)P{ljNDJM zYw)ZoSSfvJ%vF0@$BWNN`Fz4vcqB7X?QC3sylp5J=Yg!U8?Hj~(q*0F!oEDGghB2J zw#|)BQrFmcPsI9udC76A<WIog5#+-(i$moMp$!bh66w?-G4_=TDMRqnBKboIonc>DXE zS_Q6t(3?=*dCWS>ZB{v{U)MP*7Uv|J&2LfESdXkakn z!+~obhH>4tQ2XuEPE)4*&&dvJ33KggYm$Go2NHZa_O<+SUdCJdyvNc$XCcocl$^WU z&g6)L7l|r>?I|Y26Myerel1wn9l0l18K)s`S@(p|VTD{NdRqy@9Od@b{5Ho|^GE&z zdHj2>5o@E1b%L%7KSFO)NxV`hYX5?0V|IQVEf;CNsANBV(Cdp;P~2fKCdm9Tahm%0 z((CscWl|?z-kJGyDspxKtHl&TJZCeHj!>aw>t~vW^XD=;Rd)iJ68*3vv0g6dubO#;E&Vccky&_nzSEH{++PV zry+#w{9XiIAvV8QsmJzbb28pW@u$Yy_eW8lJ1-1UwH=)|u0@BWtxJmeB4)8xUpSAW z)@zBYb|^l9rZeT0QD3}jkyj61TVZR7{x$C$S4!#Cg&Z6_aI*=6{=ENpOs^zeRIUjq zz7=nPIOtzUt*rqQ%V{5XIL`~q$Hd#ksUo}*o+??)xV|mZr#1d;g4{{vc1_&TROc_Y z44I{r&Yz>rO;-}+yTsMBX~Dcm=`Qem-KMbaYmAM7Au0=JEtxmyW-Ng}w(kw^Y@%zL ziaObK&Zazis8<*oyrh(@o>TTAIV#5q80|tbZ3<)g%><*?*vUBs5qyz#(hC^plZjKF z@{Y2{jT35%Ar}=7zjvH487VAxznpFrK0S^z7Ot9QmS{e@PC5{YOxhpGPySMAmPb7xidv%5Nm=ifg%E)_W(Em>Dd^s0Y( zQ4~bA-`vb0 z?@V7SD^W#``!6HLH=-VY&g2k|wAD&Dtz4+B5=ArR+qD{{OS#tRGuTAf9&A4To@}UX_IbxdvYcU#NYC(xkq5(f z6`2;R4p_DC<)jMj&A%Gxw5hUb)eS_sRgXp#V_(Z$FfDTvP%ic484xIj@1Q=qRqZpp zyh|0@cl2ObXqtDSmwReR?sx3xRsjGf*?$#64_9y+@6zg0<^uEEs}S>P9+{`KykT*fFo z&f*bX(5S*JRL2*f`t$WK#)MzW1sd3JFl)m1lp{uHLLxL@$D&kY+pAP@Kg~bVEp+d6 z`mNx!$IId2ucl3iN`J$=F(PuNTZUR^)@H-R^F!gep{5M#A&Kmh6nq>@pNv23CU+?g zV52AFTX)aKlM~$j!fDkt_O{AgjlsoTwC!1jxh=N*Q?1)BcAJ!S9T9u0!H7LRUXPhq z3mn}VOW*uybq2GI5?dTM!imBJ7uwV1+S}|&7Tgen(E`!Is~mncEcrV{8G0ELDLQ9# ztFAz@8Iy2B7qMF0T*zK3s+i9!xMJ?+6y7L%)+z9OxrI+k=8bFre6gOe|BnA{<@uKn zdWr`e&ZBA!RiUwc#_e;rzEklE?bw?FYc-N+cNjjo2;b@woOH9hG+4~mjmA9mL5bI8FADkz1drMxjMTFim zE{p#jeS2Cay349gk3xH6l=wrVY*~52Sk=tAn78?rRqb$--p$4c>h0+%Puj9>*sYDG zxc9rgV@PG=u(`Ji9#sy`B;NQ z?qkOu-ZDh~vT%FGu+DZK;@*Is^L6dMhudJ@4WU3;=>mg_knE-GZoAdv(1Og?rHjqh zna#HQA!X8wh!pPONL1Z}f?67s(U}Q_^6I?w+e~|zblD%(MJVFamlOUL=@)YaqO+yE zZasLrcPzI{lgY$`LL9irKISJqO_<`+t2V#QH8MDu?sPvgh_Aqisyvcvy-!#N_c0BWUZYbf!JH?zYl+1>*uHi5 z+`X(C>D2QnF;Tzv7r<1N-eyPjpnj(;IWG^+h z*X$gYt6>nM0oW-8$I7nXmI* zV(VIo%`taouz!AuA%pb&E!dKZFgEB=UCX?7%ehH zAX0sInLk{7|CRS-Pl(#Od?}tzH2Wo6E3cJN8;bJn7Yj&c*QG;?-q7$OtDSf0N7;>hoGa&?%76;lXP=kBUG21*{l?+)Z279pnX)Y*Be`2# zA0k=UgLPcu1{Ud(@}~1A$uVDdl4ppW9L3GD4^pR0uTh91y7xN$-7*F_t_dMJy9s87 zJ6Sj(#BH9o$`MqG#~ZFRD*q32Zy6Tl7Pbx3A_}OeNC}8VE8U5rv@7eacU2LpiV1xij4*1=TW}5T5%x z4&14m5-O%s4}x1-+F#cf$d;EB%X-VQ$J|iWGJ|XhED$1a*%Mwuo@lFz`&&|LH0TU{ z5{XUm<9XTL8*;M&QbHNXdoapkcc_5-rK(dowB&8dyn5B9)VFbKM`L=_J&rX8&x5l2 zvo*v?VfP8Fwm5 zt3{SC(0!ORU-M3Gk_+5;TJxJ->gL{i(e%B~P7PBBU%3v-(!575N!+Xc6vP{k((Ya; z*vZ|gJbRX#wvwHCI6fTR(@2ttoH;B~OeG-BFfUNOBzRLCO?vH~7y${jDcTz=SH6kp zr?`QfAd>Kc-gecqZg#r-NqCdF^v0W?hOzJN^pRV{)nqG&qg`K1m#@b0SF|35dyr4MJHm(1qYnnsxy{Qp(JymI=VN^Qn*5q?{HMGn< zIT%|g;#9;bwY0}Ge9K~|-*cvXxU#Kdb$wSQ9GAjH?zlQeDk_PcDmKDoC6ixtX$(fw zWzWfst|NVfdz1OPb0f>XsJvq%yN?#n@5Weeeu%U>N-5a`gtAgqJ1y%DDo(xF zl=oOI;OAUb>fIhF8!d^Gj!=~C8~R?7U+40fta((D96~$7ekaIsAfY87UOmi2*Cp0H zq>fl%L7jxiC%y>*D{9?<$!hso4CO#Z6Zvf0lyw}(dh{v6#}25OJbG}$E6ln5r)pG# zPiiCq1<*Z?d}!QoY}P~k&Ci!cp$iV%w-|H>a)Vs!Jl9!jM7#4AQqU|l#YJh@&05AC z(oYOW=G_oE6yi%mQEpMpg1K$}?73w_RDO3DRK|RRwhnu!G_IcR27A(zpE)WJJ|iMbPEgTzfS;}+9S8{Qp2+`g z9_d1F;~-Oa`@aOr(Xf3(3EJ3iHw=yRTuO-FnqEc}fB(j_bN_*Qio+|fD~WU!Ktve$8+MAvD*~o^;X`z4l(D zP+=w^L~-Gx)>v^YMwlOD8}LpT5lrlylu0?b@AxyDrs|HVdVIBll5{b|^K=xSL2;4} zi?#8iNTQ+?%Ag3x^2DcCvk2yn>%U6WxF{~5OG)_5Cx)X!D#|#AOKW?Tho$#O6yjr{ z`x6uQQW{p{g_{K)vF&<9^OqJy%~_)Esc^lodf20y(Kff8(9*6k#bx(qHEy@aS72l0 zLVf3PP6_-KZB~SiD?{Ne)B*gJ=rKwzGw-6M*5(*9J+?xkxM0QobSDx+!mkX>s%_p= zp4{WZ3vz4UbgzjMkZ%bm^A6}vS(pbM-!!^r?tU`1wJzvzuX@qSvAwC`>g!sSggbrc ztT=|xZQ-tQW7x;x5-J{}ezf)~C7z-0trvo+*T(MX*CSulduq^ZBiUDkyT@qFLb|ih zmD-qntGd|_i#yBJ#Zi^lmE~QaVFr#&t%{YrS}$LAyaF$NL`Tg)2vZ8 z$_oNnQ&_I!HEGS;$My%r4ljekXl3hVqE^?^VNRUM%Wiv#dynfmndLYozdE9d;|JL{ z&S`1%BvmLoK6f_siX}Eywk640ilZ9ZEq0$FR@Fp&qH-&9aKiQ5e|%D9_&H0!)&8-i zB>&bhYRC+(XAniMYuoi|Ie~qEVvx9lW1B`1LHMqvD~|DG%d?q8?%nXcc_sd0vxq#W zyt2tNT`46v-5O2~?=|Nd533yX6mZ$O{mz%H2&&e`+H*_1J=b0j9YVugeMjg=2U?Fb z&=R!6&;iOXDhm$=4_4vVOUH(>p2zypo=aHi%UMA0_O#6uZ$^Z`wJBHg_lsRej2aB# z9L;VmoUKRpaAnP{V92FSF{kk_saYI#_6muNq9dEf);vj5f=@&n>~-rm*`sY097=tw zG|HXflEsEwFSNPI$H$mn2(8C%2Iism60{YIRB0K(~ z77QP_$#)%O*%RL(p^biA!ClOgv16j7g`(IACRF?8aU0x`NtDH#xK{lmy+2K5STLfg z1=5+PcOU*hsJuUrzkmd$BZTqNv zs2zmf;GLq6s!rNZL-Ic=)NWGin>OEe6unns5mRnue1_Fv?6b@g#Bp3X@j(Yblgdi6 zYrO|j-gf4bwRV>4`>yRUox-F-oA{M=3>3`fwX;c_n=0nh#jS$kT20DUPfB8W>c8d8 zvZ!k?p`H5HYX~l%)V9-9O0fj?3MyoiRIrQ|kBV!#)D*-P&e3{)gr{qt^l$F0|Mfb` z9#S}Tji>cI;pmy$gP1_cFou3W0)rT@@-DM2c>w1(C z2ZsZR^ux1!ANMFr0=QF@wuS_6hTMN^8SL|F)+?;2)@t^GMaAACb*9R>t30*+ENChX zm1Na8?ER^3D+tZeR5tDXYtUCiFe}U1&^n1iWQS=f6Th#6in`48y3q|4s=e+Su>h{x z2evV+CL|ZB(UTS5QKY(>HC>X4y8NC&anb+<2^_X-J49r8(tTN;T_PrCSx*vH;vsb! zD646+l2AF6HheN8>ggyvTo!&sZi0V}YA;Kd_MmcET;#ml6N^G?>CT!pwCw_PM9`#o zePE{9eqDc|xc119Ui`7(lw_iPh3DQYONxmpmi`6#ME19?Mzx=BmO9}E?E7BtYO_DS zD;82QFGx(0v|keo6A?UEp?0Tdg$)CFKvRMo$Bd?6vzN_$qIWE^dg}PHfj$a8eWf1S zK26oQ1jg(9ghoEz5c5L#g^?cojz6E{%X%P{i|SidK{qbIvG2o zqd+@DoLDhS45v5&9jD0kHHZn(mxt%{6^u$}A42iqG5gSIX2^H(+EigcpfDL>G0(_nnQIIbJ8?S@m!adWb5Iej0|PgeayOxF!cPr0sO+8YdyF5vEe-q7 zNy@DW>7RLQxGJ`V3)Ul1Mt&Ey93Z4;@CCQ&ObE)Y1#yqMy$X-tr4AK7Yb_jeE{&^O z)h&Lc;^+oPmaF(6ZQxZ}qTI-XpqB005|Sv2~sTqpNQx{yl)RJyb0W|(c)7Va-R zZu2ZApUFa!9%#IpF?UP(Wd|?4AW$p&YPPor8K3PjUa7IEar1foeu8gS+yCHDsRkBR zXGp%Af35k0HN}ZP^MFEbl;`m+M&u$qv{|J!vBaN9SU198Sj&QZ4P?i8YyC|VLsfTj zDPz@!ikC;b9a^>XUy|KYkfVUc@SYo_8tK=YmSJd|NeC?7pPo^io`B|ODjhD;ye_jA z>*d(MOG~>1(Ozv#ch=_A(zP2Yn&fhx-~b2va_4)KYvLe9oWbA zDUsupv!D>=*&u)gAC^c*msJh-^~Wj;&rgJikhDV_2-L{V>G1o?jTHj|QYWP8MsfG2 zg6@Qo5wv5;_?o38jm~cRGsw}4FLEuM76ABUzA{E38r+t2B&W|b^f2jM1y`7icG9*@ zAK_K@>NN>L&8lf*)wpJQLC%_iP3}6Iz8hctZmg}ePM;fPC|r|vjh`?KK9>au2v4<#L|s~#cR`F&s4Xmi! z><@-8!xv0kzoH&eYNL1z*}fFkc_!8SbhUMEgB1&O>bPpyOeDhX!@r=* zqisorSBbD_#*4J0Cl->t?|sP5Zgh zJz)_}yytU;p$l#0eY9gxP7US3RNG_^?@d1e+!@NqSB{6yU%HnstrnSc0 zz9im7O$#_)yW#ov+|gCRw{+Vx#9x}G(RuP#wZl*}5WeFnPh)$u$r}1xO`73j zUr$8PF`uVU;d=27v>;xTv@NAeHc^IZe}Pq|%cQq2J@FSPdeUrD`cz3JT9=lKp81WV>-D% zvk}_p(R)~ftny|*{N`!mGcDl?**La?6huv~(ai6xzUGz9zREhco9cTBedJhd631XM zSoxtpM92)jH2zdY2syM}ea}}v@h!Y|pqa$gFG{6Zrl8guBD8#%E5P*~hRT$lNLLUa zFDk|%j(^3Q;2b=-cSzO#a%c2*K3anvr2Q+Bm!-dvO467Rq?Kn;Agj`eqg&x~^?uf7iHgTDzWU_*_#++jq+vn_71yt<2W1fB51I>d9Z=KFk-p-u z@Ac>D$3mFc(L7VQU(u)-dEYY>!yH}a-3g?Xufr}TlWriU_h*#OC2>L^pd)V$;)w7uiU7BiYH(9a+su3zMR;JKxo%O=056%l=pK zyPC2ey!P2H;F?d&V{{IhdAJ$Lv?jQa%S)GeXAsM7J!e6Rhk$u;AZ1_8EFFl<)nNEMf_+ce^x0Rc)fER40Gl+}=SvGb zyT)wh<)ZBOc}?VYh8br~Nl*Oz%1r=R8W?3-A5OauzgUu9YUm!&{1(gRa5eM#*P|wx zpo?Eu(Hic$T1Q)C{*+5ADZ9d~Yx=MWP!>2I>9-Mm z<#)1N5#71JU;k{btUkQJT$yvlb83}hr+yg~9EwwBK05Bf?COyS%Ek$CsL`>4p7Gtu znmqZkqiR;A4HFT6maN58S!cXqAe^}=nuimfXg+X zHPn9Xv8lLB-g>gN@->ING*w-5ZcJpE64I|cOt=nnUc16+YC(cF#S1*dadm+w@i$z1 zP`dzc?xJ^0M(M)@8{Q1-H98C6tu5t=<)^3@Teu1>5K+E6BXAru2A7dkf+;sRTWeo= z3-ZKS!2;NQmKA4-!Y^8!7p#aom#C|UT@xHNeJ^B;m2&%umG97~mCFs;EtwLS*KUq! z*uy2iim-4ND~05#>st#f6x$DN?noZMI{g{^5)g0cg|nn!1}*Sn;gfjQ6g#ApL+%%I0&)_5v$=4W8(0v4gT&&=Ygf{I?n_YVL!n ziYL}XBkD$wo5vN<_*}T)qs`-6vPSlwKWo|7Qgu&fmf7^!G<58*ug?_NCv&6ncT9{| zm86M^msc{z;*V~rwkxV^&VOBA2!b!{WpO0;SUUwiUqALyhfx&D#wEA+4t?#R;QB<^ zebtsG`8rkig0aB@^I%G9toBj@Cm)c#u_^5VPrI%NN;~2)bU(VnAqX$UzApB_168vB z-j7>5ndIyvjfMUL)eHsQ%`=pp$>t`cXbS>4!3gj;uL}Ft?wrhL#OdMp<$DxC*9Vqxu?Vf8>HP zC!v}ns?BaoYnDqyBVIVZ4|2w35C|~7ulPVO+G3EO(7C0Bi&1) z*K`MmEBrW#b1aREG@4(T3lqz*-miaC;p2vMR_hXw*ja;_O?5O3H1PV_c3GVtSfTc) zu*@>am|c_ic@m#vOWbO8;#9igc9z>|XPZ}g?z*so@_n2s%E&;@c}Ah#;fDv5`Cqq> zFIN|PM^@%mCGHuom0ahhV)N*+W^`LJRtZDBkCM-$D5orKOX4(-@@E-&WxE$33oePrJXmNuE4vpYYk@MdtIBa>dm+3wPf^S5I9!i)3y~1@>-dHC~eI zcVFs0DRuBCn9Hr}WACHOg%r^8yj~9ybrK8EvNcOXcZoc}VV2~vip)3syi1U>b+1c< zb#nOu6l+yyGpb*s{VscEu^L*#{@O@;EyGj6Wb(5vU z6xA>q#eA^PZOdbE`0hO{(qluP(XFoqW@{m?yI_%oTBht)@y)JQ6TQ&8kl!7&%$rby z2;RPCViak!I?y?0C%pW0bndO(6N|eR3r`YhovbRl=T{o}6JSy5%UyD$=1PTxoF-~R#& zXVBGYSFZhw#^@zNe&#hKDA5=`^{%(rL(g-Rb2~7UDK4LUV4vRgostQD!`mJVjtgg4 zOBY)klXy{7sjlreKUwo4b(Qn=72(2ZRn?s&5mN3z`_F@n#n6enf+bzf*Bk7K@sw!~ zy=OV++qN`=EytNU*Bb8FK_HE~mNbY0>m-VC0=s2|g$)WR( zt9QB5TB5#UZ>7nM##WNW1z8&CEIVCQkjN~f(rvyK;ptBl-{MFXWzt%Z`XwtKoD8GG z@r%;bSGM*XW|KW{x~@;OZr;7!H(crb;hP8*uWR&Sg-OWe>Wv!*_H~;zHbK)THyO>~ zf?9d{44=U$VFY|YxWuHhXiYQ7auY{l-d>u~2+wIVk~L=9d;gHH*gpP#x(l(YFparD z$V=AI&3Vj3O1=W#^lx}Xppf`_Y6^`sZtz>8p17qs!TxG_NIvD&+o?IUaNte=mPP9n zmCJ94I0r_;tUYKC_j*ydkN++tKFaWNd^c@Jo76)%za$imDR6#ljaiAc8r3)Y%i1F= z*;#$R#gW_aLzkWQTlOi^lM-nX3hxYtmEm^%uMLJ0bgVXrWyN*>J4#%VX4TtMiw8sg z$rR1K$L0i~Cwb>R)UZrl^UOx?;)A^(({2ro~}2G*b9 z?)m7Vf6O#mShm{p_|2nh`~P?fx(j8P_9yGasWYBnr=I@SEX-G;HUND${Q+NA;&aT; zUO1r}O;yqneYcg#$nW{O)+JSxR9_N(cvDr5KYK%q6ly(|vL82h6#x$RlWQbE4er(7HMq9tINeye zIwN5Cayo|Va+#9zi-FzxXJb;NNs@-Ignj+)82l6bO}$Y&H0ipF-NL7DwoWbK7jWwC z;IlP6B+_=M3VZC5G|Q+smL;UL%NMRQDtS1y%zpXp{o8eUjuBmKtmby zRq3wd z<1+Nl+23)YSeeFn`G;36oUBoqGqi26Z-(&JfQhl^O!n)PNw3Xr?cqoiZnp)meVP!J2MvAiex|5PJaumM&yel=GL)Yr^m;;pIcZoX3 z=eNcX$ZcN%?J3waat~pHF!0MpMsJEF-VA5eT&A2e#kpany4f3LB>a9`@iq=}^-}$o+#aj;k%6OYeY>L7xOD7+W=8G(;73^A z=gFtJ6K5*CNFEh=O`(}w_}#kSe2JGC{#CHh0&1X5oyBu_Ob>$kUsc_<%Q(pMWFqLB zC*`dt2L*?qn(eNaUz9AJ#9_Q<1zPUus_~rUC5MmFD#C6}qZ0!V;v$CsmeU%HoC+?Y zL$Hr8PX97OMwH$GSD43!KR#{Zc^s}x-SZRpl&#mA}Oa3#X3_tapLr((lL(N0}FTlT_E|Hp+qBH7}o9z2u|N z-6>~ssh|g_TLswW3|?Z7&Thm7e;9vYlJ>}J+B|aNZnghUkdlz@!d1*BzeTcND%m0Ju7 zGH`cRrJ)Ow^kB_|V9jsF#qOj%YD5WMHW{Y4(wyBS@C(HHsar?KFaLdpkvMqj5uTc) z`RWXsBGhdB-E24J#zb%Ne_v4WV4(KK!nw%MXdz%=jZfqM0=ogFkf43La(PgX=2u;T z^R%uI?{Ojqr2Drsl)-M$Ki>7>QbL-u5uJYB`|{aElULrjXF6(~H*rE1O2p}i1%Jit z9H8f2B{^Q|Usg*ItgmEnZQkIAJW3UNIi{a$zw&wl#)pJNG)J#99Y2WRu^Qb#n| z#<^l99NjobRTd8U+tV+5;kmPI^l$JtF@NOwZF4ST6jSx+xUca-({Fm2NxpHQl}_Fj zlNEbB1oi$QS?_T6)#-|6yjYn;X#XY6Mh>S6ID!g%^e^p>zDP((63VVv0$1`n_ZXwE zZ4YtU&*o^bxY-!|YAXZ%wpUKy!ua2BLB0_$(e$uSESIgQs7U2v$WQscV2s0fHt)M( z?%kSpJMv%0!Ge*XYyYyLgb7!r?)K&=@1{j%{cLdSqfeRgTnrzi_exY%Zt!s5wDG8O z0j)8448KJPw@#M>`F%N9I3(VmeDX999p(sjy}j=U@6Sv>_L1UdXq;CL!Wbtv8t?Bl zf@i6#V|qC!@BH4&NjJ?98Yz~$dCv#-B=oJrIpysf6!&6a8Q=(%yvEK84bzl=~@4k=A=<~(nOXP3OR?4TRne-z9 ze-zsYSXJi0BBG<1RXehhJ(vIkeNZv;o7#0YwL-D2qi++?o~V_A29fUqQX#_Q_FSgg~=@87M}KLlBqzA@FH((_nyp1h~{5S64q9E;|eOFG9c{ zNLWu2a#qA#E~gN%`!Jf#q@2?RIFhLOY0~citI~&~Qm8DLEq?j6V9D(?_N49~uW+FW zM}VaZXx<+%QLLV%g>|p%!!DtPU~x^n|g8NM@Jr7ZLI_z%NLK`c(Z)x5yd}BhlL|e4&L7I@!xNs0!GB7 ziH~V?0`@ZcmVhfIJY?<@_3kxpTYZwn&YKXkk-}8Wpv^u*4#QV~Lrw~e+}Dl)F-}Vp z0eEUCJ&uZ(0INb$SkuglGu6#&kzqVD^;gHvT`k0U*2K->prAppbqHgr6Cym^TT=RE zJAjae-Nx)k@UQ&<^SxQLDtp(g-N%WExCo?OhRy~+| zI6K|s3+ueyxco)$SFQCQpZxPGMBu53oB@gnx=-jj@M^L90d<=+c#;ud9-Q~oEVsOv zsL2J$Gv+-3GamN>O-GV&4Yjb#bHLu65XzhcsLP)h=m@6^abErO`Ey{m;R-cmwE787 z-oJG1*8!h?Qh$a~J?)>W_v~hh_W+PjogtWZe4dWuQvYKCyG1%mtwFdv>YKo)jZ(9L z^yk@%?dH6c%&rUC_By!OD*tk)|9!kX=J7N?AAj*~iucpR_f`wtiSwQU>1)7$8v)8J z`sT6Q83$nUP&l&AHC}lbbnk+}hGg!dFW3rdzXyQ7*{UA7G-PjT)P+T&L0Cx8{xtX> ztNzOroqqbadAy*H<3~yx4af`I;jx@blbpoYhH{i;!5|#AxsE7kS=MG{Fa@W?F`z1G zPZX>WI#?}%IOOFj-X7mQLQg&R?HZcMy~6bTo}Y3#TLf0_ttN)wMDt&-DyDMk9)^F| zRI$I#Ef$DVLD3O_>@WZlWu9s6 zf9Y1bTr9`DTM=gZJ7BF~kl#-mZHgn-DmId4e4665WR&>k|JNFhaPk08U--y~TJji3 zNW>%v-_nZeB)P6v-At}_KiKK7wzu&2_m}>DKRf$F^A!wNVKIg$`#=e|dV3iW0a!$y z5|Ohd=xw?j0%OMZ^5skKZ7#J#KsM3NS}}1+?GCkIDJi+OUD)JhY?XMQD}M*X{}E{{ zZt0I5Z=XRcgEH1P8Mz00)%w;?p0e1vsHmPkZX;Wdg57*6M!wcA5c3y@-6o-BP;a;8e$7L zKgVlwRSVb#vJ@&R)F1qJHNV^d^Qo$h|5P;`d@y~7-5D6N47a`S5Uh>wo$N6n_=ppB z2V)}PbeV{?vt+m5jlLgp&=9g7E0vDpwP6FZjpP+Kb=|(b(sKLO0;?9_Dj<-vH=Ukk ziHjAq9J$92=x-vRYT?Uly7gMt)l0W)V303QVmVrnkYCrI{<}i&yqlQ)vi`YWcgc2F zOM21)fsaE07_DhowVacS>3v+R%_=eJiMA-HQ?ZjmrpzUK9)|%gJi&I*Att%tjp07f zmOlo>0^b2wNp%O;*KI)baBty37qAzxv4Vh(P#sXs<|bLYfp=B}q(GtH2QM!=$MIO1 z^QMmGfxRsGzu3MGJg(kdK)^Fz=dszvJBJywS`krP?69U$wO+jf&r#KS`O0m7DXZSk zYP9$<_+PNl=^O%MLC1BLGK=A8FvPQSvG2X{Vs9#phf9fDx8BWR6wE}rDSEUO0Sc0s z>BHcKk;Y&Y=67&1r}kA_00jmxAkA(342=OfT7R*zY)v+mP3`?A`p~t2ykFg>|NRtt z_A~-`{v!ea;Spu}pk79q-O7-BlGB&77M#){NO%|6>}K9T1pD0_?;gOiBvo!Xx(cNc zaZ`iUewP`ZD2(&h$X2{n@I`g#($MnsB?uxNg@iPZ`fc4a?7EG1~Uj1K&?O$s% zx^)`w#QziT0Nebigg<`{T>B0K@y^(oT>n=P9;5@$AX#0mkibU|=$J0k$c)(Z z@oO@x!dN7Osb3O*wLn-+R2H2FL*d6F!9*^Ju?ia-n+nsuhx0gfW$fP(dr z4$!Z+%One@LGiB=m_Xu66k5&GsZu!Jn`y=R|5lS4WDz16rez@vuvJh$=(O+%ztvLHOz5!-TLRaY>+}#Xr$|!PKEWPhK~ETvg^1;tdMiD-SS}j#8x+}%i-?JY{iTK zWo5g?DSxs%W8=swRp8(m<9ThaCaQ9$KK46Cz!3uW%au78UW)I4DS5;gtO#&Ie!vV1 zb7&B7SiK8qLd*ZJG<68LRxoide{uy(3Y7<{Dhw9ZNAGNJs-tZuHHDG;F=G)OAk&w~ z$xULGv~s`@+AB62%AATPsFP!bt(QOx)0z~!((Ks)Luw2dJ1m_9=5)8muqQ)fsxVw! z6nrmIw68N_4*_nic0gujh3<@Rw?O@N>GS`vdMtEeUfk2SRrA#P$|N}_z@0&DV@q(k zW|nAmszDdbqZ6v}1%WiTA5QtXw^4?lgHMB^m7#pdOOTHkfqtNFCfm<6j%{g=16MhS zTg_{zcr5RQlsTAA+l>_J4`uFMqouVO8rU=)$|2At)8KMd#w{7b_=`?JTA9~%-W5=) z@@hj{L@@q8l&@Lflm9Pd<5%wa<5Qa$&;jgSJT+XsyApH(c(nyz!ANgum{!#)^Wu0# z0dp>bopTeg5=H=q45SETe`_f%_5+ARBS1UJWr8_{q!;e2ZC*#H%k2JdnT-Te0;|8}r#G9bOg zUFX3b!nzi4@y!iy;NCmHyv3;W>%gcFq*3G{jR9R^KTKP&#;Gfg+acQgy+qKX5`+B5 zepttVt~^6ALq_FU@%1`r;&PL~ojgb}WVSy~ol_lf(N4YsRB4aF&kb!#K(_He*eWrV zOLUEtFDlL!5;Q)2D|Y!Ti+b@RYcL7)k*iyeFuD!+&Us3a5dkSqWngzMH7}`lz!;jiqrCF-|LL=kc=!I=NtnHWq zW#^;$pOyi#1^|a~Pm6$K@=Co1vM8y$fn_pLOlh&X^6@YET`)k1&Eu16g)Zm%gO*_2Y)Y?fO*^M4N^bLa*zG}7ym6yB z9^0jI2Y^IO6pC(-xN{4bvIokX>4(6vhXY4{o}c&5|6;xs0fay>aTaLRJs`pvIDk<* zd3B;n$&PU9#ThnIS`kY~;*&To#ufp}-6IgzJodwf{Le~(<=uvPn-@0Vq2TPXaJ+E@ z?AAl+#V^4Xx39ak--?j}ITd^r!C~CtIA6Y8n_F!fZ4MHb*?w8}C}vpYL$1m=cHMfsalKY91e|ZTxj5ATdJC*%2L^pXu`D~E2jpen1fHITU=2<{_1ho5dqL*)) zM2g4J{t|K+I1wT3?%1JWiD@BiYlb`jlOo(u@xrob%%=y$@nlUcXYu*S&avFS+9*gP{RqX1i3n{_4keg2}@l}-K!sg-c23Khp%BRefY?Edo^BJ?$9_|_E!TA#U zi5Z{*XZR#-#|w+OBV4sASF*~2w$Y9If(BMuvjU|B%M!0GWVZMS{v-_EZvo6j`GR!4 z4y`lX8?|q|2pkZuxyj_0SpwyJ_C`VbWuy1T^Ls0KGhu6i@^dog^}Pyn*4q6y21PfZtm+h_0oMPbaE!TTPUv=kn2+E@dFV4ld1h3rV{F}X$z(_Oy7KHz! znr(-t-v2(v`@bKt_?n;nK=~;AonDUWYb(s(_0D6uhv97PkGS;WR&Shg@+~diKW%?0 zxLQqIsf46UBOor>zt9vHHjwuCobG*}oO+haKZdegxRKJNf|F0ra`}%&^8z8cA;PCGo^HSQ?Ae>Qa-%GVW@8np{&*l;7r;KGtPBYNHz|< zGWfA^inl`5RG7Voo`18w_lKop;pm_GQ)w^dPpD2E4i(%a;Mh*>_yq#&hK4$o5pIvvAKuG=W50gpv7RSTWH-COl)AIL%!0-N{72_WYdpfXH zP~|MrWb85{yjh^ zQt7vK|E{=Z%)l@-4pUjeSFu%WUdurmkY3|YelF!Ab0|V2{?Tesis65()DL|=m0%@0 zW_N$-7u?g*V)t>DSYGUI=*I#E15EJ5V>vz!~?J4H4dT>$X?_&Aiml(7Ju;CN0 z7J}Sm|11a`;nY5EUq1QUZcIOzB4gLCe*S%-2UWvf^l^9B$r%vx8h?6o(E$N|PLzw|k_LoZk)|uqh3+VjQ{2|*QJ(>s@H{_At(ie+Xur-e>|Ey;`qWG8IiZtp zUhJNv-m{nDi+?nO(PS9Y)LHV-D{9)ju`BDEH`gUTkHboM9Jeec>;xgbQh3iLGBO5E z2wX~qAQ#dCrVlFt@>5!;B#;D3gCX*`Xg}!ZKG3`Y=!*araS=qNZ!x%8xUlQaizJ`& z3vG%x$c7oCB1ralPs6=Gs0s%Zdvl)-uI*u-(qOt=MHBrItJ>9Y}FVCe_J z=P2Ot_Q_9nL^}7^ySrlGr&&OH#xdn+S3d|~`8!StWl9S#X+Va09$eRE`tCkB^V$=n zHH@mT1k~}1t85@i0Nm*d)jI&XkO4W#M`y~hhjg81`9yO=TjJ)dMSoTZe-~I#Rq)0f z$VQ^BhK4eSk{2R=@8i?dA?^8#-Wz8@96JCXI|Ml1CHPGQrw+)kzK~#XiON62vAiY{*3I8rfU#mID0$cKz&|B<;8g2!EPZ;f2aq4cOMhe-yZvjLDw*7I{<2KYw)HL zH5`5qobWt3I;$K8WKr7EGH>xf6ToU@c`FlpAc>U$D25TpxNO(Th68rgX~{G_PL3R_ zR$w)5x$Xej>&wy9_cDqr@$mn2n{r&+HA00xX>p%uIV;6AbZjmrtHQK{azNm!Q|LW#UFsHJg?_WbzAPyS@M=)LQq zVl$v-4S)MQQ5I2Sid7*S!-pq z^H8_S)hIJZijPQOc|RxQ6D5eJHR=^6lD3#$wz;Ay|yW#P|!?lU35-tEkKlUC1 z<%n2l{PMlp?pwESONaoJ8!DnoY`478#BV$MLPh%9J}_L5Jws=-xtNvFplBoe4@7^IY2x*6DqiYCc$iZKta_Fr@M#s{1L5)s>aV7-2YY)kmF+ICI>v5KTPY- zxwO_KRjisX*v^2n#IONyrg!S`4@^qtr2tT!!7pk4RM@17;EBBsVrd{tFtBUJQFMQi zVYJL5hN7};UZf6`U(-!`k`w_Grs`3or5hl-{toBt`HOnLSDdsR6i%#@Oul_-+3~2W zFEaex0eHtPV~PM|Va70hNY!(%$;?nL_fKAoPz`J#>)9Sd6~aOZ*TxZO=g1?v8~Aok zllATg9TQbhvejgg+yj8^%PjS0kmd10;Mbf11GBb$4k&(LN)nfuo=f@oRL603iLNk7$#BTnlc*<-a~D1K&7};@2e^-c@+gR$^)GCYkjY)Oxc1Zx=igiQ zBe3(vj2gtg7kj^Pnfm&>Dpg!-Az)R)8i9K;0ygXWQdaV9CjtPXeEUor12XHs1_!FN zxjDN!o*;-Q`9L`;Cz4fjC~vCFLUj)q!-v7!%)O14;5@qwEkIEWTmrn0n+C?5qI0cd zmO>liSmS%Y&&B9=fLn3zo?h7jRjhaT3CY@R2E?3fUB3$Oze(UUh}f1JU%&(!(n~wu z^M4)Sw@c9>#a3B?eSagiPxJ}2aAWt*H2Vd@&aeu^N=(gjH@X6bpo3E@*Z-vP zph6^0v?4w666pX-eG3d3NgpEiF4n_1pjv z38n-$RgYd7Rsi)SYg7&JUPfzUWjhXl{RBSaw}xYA43cPDQ1_@V)=E5xsP+KWn@+$! z#rWWX3Ne-=3Mrh<-_?lW?i24|1aWpLx!$|!Qr`LVe-yG07=OCp%}bY!NaMe|1aC7Q zY4nN*ffmKhjbU9+>67CljJKv21{jW?(9Vb@2#KcY7d}e#S}5`(64t-7x&`H znMNTn!>EhmPmxt|<|#&!G>Vhg&8|gpoo_l*>8%(6Q3Bt~hjxV10L1P>oFi6a((DzZEmyD z0ek{gc#!}A_As%KItp01OH@?M5qA_EXcj8;jgk9n??GPK{{-Y@W25~Xe~i5Wj-(>{ zar0d)P9D<2e?B!>xWZo^@5Ym9KU$AaO!L5KvGE+HUj*=w@Qu0;V&xKOh8iOyW6q&xxCJ;P#mBlm$Ki~A~DvjfWJ_-h^6NjLXxKj?ZoT}Gmt6AkxjU~|M zzLpyZ$*2c(E3l*Yk|EKc-$fP_5Vhv2Qx7n-rlGb(zzVP7)r#hPvGEvFANbS4#fDA+ zI#k^Q>HMqtx{59Zw=@bErd6K31#NYhg4%pxjY?LM$G#aSGZ%nERG#^SfFgCx1emoA z6Tm$~5-EtP9XPKB!pwm(RGbAYtjYI`EbwO9bKS%=H!3mS&VEIuMs2|w!LOAV$a_x- z*yujEs&@VUGV{_%(fg9>El?dBE4Q+UHlyWwKU8I^w*%T9t`g4|V`6tgC*9BR<~Wh{ zgg@14=`2oBxG7{xx=P?sV>+}_?DZLv${B!N5_o_89CAQF#@#ytYV1|hKIhVb074`_ zK-`z9GtQ7uhk}5&4TPd|;QS+iy0ju9-o3j9y*`M8Pt*p~#*On~*^%{Rb?j)?Sbcdm zxRRNzloe-HL&?o^SS)L=HU<3gs4{4NdAWqFtJ%eOUqR&F0Zgg>3HC$k5cfp!9Y6#| z99yCcta}3M^ADkuY@nPMT8`803|bR1^SSf?WTTAaF(wKv3?w>HxAYQ7yD=|w+Z)mq z*Y1OV?&DxwTa2y;Be{-K>SPju-Z-XGmt{1!UW1B0K02r&2?`7(>#DbBV~`Av1X1A= zOubvZ%sdJTJSDtM9k?rq&^3{A;&^+SqB&M4rq{y)b-eF5sFcUg@87XP~d<3N>dL? zZ3I;FK<`UNpxt6`lO`NA0j2~0H^e2DA^peYQ3HofbFCWzr_>7?(hp8VzqZG_p)FSO zfZGrX7^&Mye3r{Fw8&}LJ-}ZQ=q#^K*37lvNsa`4Tm(Z!4yIzyedB@DMrl>qs<-UC zpXzNEn93nAJmP>HfQ*e*qqHyt4a)xc9!-O!qK8jGlKTH~_TKSW@9!V@Nn~$A_ErjI zk0>)jR905V-kWes-MDR$Y@$*bcgh}_8QCIR_K1uqBkOm)JD>9z=Xd%(9>3q?asJ?( zbKma!{d&Ew*L6L|buAWj!N)=y)WINSk^!Nak4*mG~z(SDE+xQ{Hlp} zH)d6LXJX`#QsAvs=c(Q;(amD`#Mglf7w)_HAP=GQnIzqCOJB8=LA(2sKzK7N>2Ke@ zZA?BOZ#z2NmUFM|D*6fRYWdPn$M37-h9TsvEZ|OjA2x6FhFu!D7YYg2%j6s$iTp=l z|DT)m-o4il@JvrWgl*tyf^Ts4n0Tr=?%VRZr1KWDkX{wjF2QL4grTquAq~3nZar6{ z?S0~M{Um7zjGxqn?L3!@JvNEx!qn9xf912kHrBeqN2-5(d?;AhgPV~TtZzfM7&V;P zwG1k^aaBNW>P|mtWT^eQl;_opT)|SI7Iulha@p3U>ijOHB1;fu_*zpg1JG*qOQ(EJ zd1e86VgIu>f#O#M=@c$3WUCX_EXbEW*!$`RZ&*}Ri9jf#4X*>{!QbJNCApaub&QbtOSkNg;d8`ks#PM^WMQe~Mj@%r$_nPqeO=A*nc* z;`T2zD5!%=$a~eOVy$Mck}S`yj92M_YDm%@tIy2g12mHxWSOBqm_$Gq z=X9)7K2zK|!vK`Hj*Tb(@#(!n!aUoRf6*MRk8s)(1ry85B`RP}FH-#4x<&C`%McmW z$lL0B)+Z8v=@HPGQ6Cvq%Kix%%a%vrNyiQ1LS>5+m`!5c5CXFD;eX+3u^(`E_A);> z@g+X^-`f1w?xD~|N)jg(D-w9^J&DOJgckah6%j(k)v|s(5BJGX@ISop-X$Ug6?-CC z3r|bY;@-#Pda9^{vai1X!exS<5yR^#ZfjIBivH7QrnnN0#4YXxx_I3L8xk$5+a;?k z{}R65VLrC7K#!Aeuu$Xv{GU>^FTWOQc(>`9PVj&0z7*fq0jhBZqJmJBKFD$z0e)o0_hLTd3dt-@;`*mAU+Vco^sjz^(WFeg5a`i zL%@A766~3@35$P;%XAY zgwN~WeIE&1YhHmjRl}{$JO)MKhp4Bi|FmPYf04~%zO_mHcD*N`d^b@j{vkIxplJC< zxNZaz5?_!!^vy{@-o#lp<`(gFwCvhy&7RYj;i4B5HX3w4)ji`NbJWkdmMI`U?h#)N zm+SR%mnn76fT@}!_)x9iW?Hxd5BH~>Qnn~SWxp*9yPK;|`%h5)Z^?3yBB*jsQ2f6? zj4J?ZcR;vgHL+H?EYQpTvd@Cyyg8abX|Eoi6+@=iL3L&wSgzJ*s`0Z>kKKtj!tVwE znHy53D&q~Lw!SL(?v8VjoAM>$fKW2#GY{~|#fU}ujC0hJg=zH_*qHHtJ*FH^*%$u= z0pt~t;umGjhiP;1Acr$O1z>qjTDiG03-4mV>!jdbZd5|iT8{^ zZSy$#sQYtrow4YOvp>5=oE!hc)^qZMG6`cB+9^0LT%*KhktE-6>r_boK+&Z0uw&CD zDp~bH2!=>IT&=Zs?dL>EK~dM|y|hiTcMECT2ASlbl^ZbeTU#5k-bQT|WlpTUr+(^K zurC(`x4e*o4~wMRGb9aJKg%NoMSfpx;1LGT?4$4Fmv^Yk0eUG>=LdWKg_uy z6lSeSdS>{F@X?g$qmf-+bq!TrPBo28+3}1$s3hzg^990)zoi#3y*8~yo#@r!j<199 znHHKCfAqhkI>y9q)TECuqG_WiHtuml*z2o)*{iuD0(7@wE+OSUEb5)}*%=d4lqyVS zj}5Gn^SyLn4i^Q%nkr$w&Sf2o|DIC+KR?$U!LY6r7hbd=&lg=g9BwlkSoc%LX0Or% zJ*F)S-+pUmOl3vw)SG;WYpeeWgCGsJ(_+@p)S9gnR0pO019E#`h27^8^imcw{JM}- zdH%@*vNr3o>@{H!+6dpSySFFErK;W=IAFwxC7!7{(bA!Cf?(o zHx?Y)9-SUg`WX|r&-uFW-K=&1Kt7$I6zzCy=wz#V%l0|ua(RPuRL`gYiO*0*ac4Pb zAC*iN;zg7lbFBp+Ytv5^sJK3O>X4Z;sN}jtNzs4C3;xg7y+?2dX1}Ba&Ag6UZ{j-l zoJULT_JO^u{ar^mz%iOr0R5Cs-?^!+!4HGdMGYNGbeb0vXuV-Z2o(P+7ASxK2cFaE zJX$0&GbUVHYI{H~Ya=#v`*@i_USiGODT=_Oy@`T4lRm9h@4IlNkEXq-=pt@efm@#` z{Q}u_+&)@8qu#?osEZkE63%n)u_-cRfdRd z9O+;rg=Uf!(;?a!PWX@Z0oAWZqcG>LQnZ-kuYr9qlijhYlgPuD(#V5Y%(H5fs05ibP8-3L;E9J7lEFf69n0@8t)2Io# z20ceXL}E&tDNokK*3VWBQ_wAYUvU%G5;)9WE(k}oriNw$O#B|ZKUXjqM#tiZv|8z- z1J2e55Q0P@=8)w@xa~nu5{B}kBbJQkDv?Js@2rxrkpCyGQ+ zsQR5dKs~KzSs|xz{?YO2fl5SH{l?Yfp&!k$8OYSd7@f+^JTz7Lv-t0Ve9r1cx|iCL z$%P*n{z8{vtyX~QTvJQD7`B;kPej+H&}3)$&NHOe_Gcz>1tm-j!rQNU7pzOwCe!Nb zvs(nplS7^=`ZSs}T6OUYOoF{rtdSuz92+_uOyV5{2v+7W41OQ8iaP773(;3^;L9#( zi4A!L7is~p7KQ?46Ts|+023%5Y8?r_J%4=b%*X;%o?_N%uFAzxjGxHmm__%U@q#jC zN(lPQ*cByv|7d9NUpG@_Us!79Yl-co(jWh7_un(l{&zd+AOn(dx+ToA`o~za=ymND zGKECB^`aW>f$oUz+PhCI(AsJYvgIn}XaOnq$W;KJwU5HFlaG{&zY&}BW%FhCiH$nM zQ{vF}5-k|qVwVvzyKl_S${$^PT~LA`T|t0V&-j(8bIpR>zhZd)s_2*7a|&o?uOarC z&vUr(xC7o30cC2kx7fD7!cMUtPmzs zkTnO}+XA7$A_M$>ELjS`cz9u$(aA{G=RE5J0_00}nmTSK9DEgS9p_t;`mV{118LRB zR{5~X4bYt&z(vGv+JHR0(<;^Ru~ZIY9#3LTtA@lN1pHc_YcFh~nHTQ!cwFdiN#T^7m5QRjKq99wu$F%KDcl3tLBf+D{KDIw+>i$fZ3;Cn?z|u+4b~JsB-9EE|$Z z_kTHA#rDB$^vB~c8 zv=e{_Ff7b&aSIA}2VWP2nYRHaJP-dC>i+#}lNxN&h7K4;`p46y`-EuUv(6QBC;5kj zDDG2EM+x?5#YAj?Apr#w6(C9P3&DkFzm0?8$w(X= zK8+vb3A3S#G?l!=s*9B!v<%+D^jA-04E!qphCy7SkOv+ai_8#P-OXaO)A{C#^#)=` zo9hFFX5qIfrD|9LzH9UEPp@;VaZHI3a)u|}eAts(v2oT-K-Az64jhSgMBy{EtM2)M z;9bxqT0gl$yqwbeCS2TwF-MYU23J?{;zo+px3n8=yfj`lFIYl41VpO67qJCPv7_ZS zjl1ohjuPIk>p$^UW%v-Ps z5;FJ#TRW6E4zVVSmWWWn@JfB>56B`@pmfsJ=i;07!3yqbLI&hsW{VdC)qvoL7ynxI zX0&H$obX$a0-xAsi!Kj8dDK+N$VoCB_TXeFW453?e+xI-Dy?p+xz#(Y@G?e6{@!%X zxq*g@Q&s&t1VJ&BHzOsNUOw%Jzb2a;G!40on030Ru5$Y5rF;{+SI?=Kd$6WTkJ0_y z*IrQ{QLG-s9G}M3b&FUnpNa0Bq9EVZy62uBet%|E4!_w6R`Rm~@Yn70_l}ccezr(T zJ#EI(^Rb$5dsSV3f^o>GLnf0#jxhZy`7ciQ9}-A0}mfbY4}71W8L zFe|X@&9-@eui<6IH2?v1vAP-QMZv#r6a7 zr*T)PDrwSlf1AY7&>{(SA3J0#>ZCgH;@{yCiHMHgN#buY>-YWE1}=o#O$qu~&ller}7g}8+-pugtQROEguPHgQ#f8;iOVM@?9`p(b0whb${Gx=a3tn-9C z$`iBXPjSyCJU(vk&r6O|^Y)w!5TMmByIK6cnqdJax2d|opXFmnX)Tylf1ou^Fi0?@ zqfJn9)n~QGQ!`qBL)iIE)5#p$zMMCqL<;9?A!0uEby$$$=T%R-?FBNFm*U-#aIwxAM49*q~jySTNekn2Ys?oM1G(VH4JS4`Zhu3urfV&sV-LS@`&ki}Nar#O|{ z8Hf0uLUK#BIo-~MJ2PYU<)0|(KemCQ{Z8xU6z9tlvH%)8V#fWONSG>tt$*89+m$Xo z+LMVnXB%9hz{Q((A^HN7_b!W|qtOUOj7wdG8z^^Pgk*aj5E*d1nF!FcjTtH*odZAz zuB*7EaA|YD@=H#to5|CvQkM_IU*BZ9#16aoGhVtmychLfwR$7^2yuW`?R4h;X- z*l=7J=dO`dTuxW>eEyK{1yjD?+B$s)w*>AX4ar<+oU3>sK7D_|8&U8Er> zJ4$HRI%9vh2)GlbU~=L5_G~WHIqf5}(aJf%y+GyyK9M`j-6gb@{*YFam?w0fWqPpx zSc2bs$ShQ`H_5lzSY5VP%Ymp#2%QHc#cXv8#a&8lMGVxd44`CU^ke-5(5#daQ|P{~ zkr~S*^BjvlEO`9yS9Js9H{^PGEQTbR-8e1GWs@fyh=lpzx4? zc-F21#13i#Bjrr5(8r&Xvg5sJ@ZLV}P?Hrlyqz5(@Yec%V=<^?PFzl8K)%wTEzm(GRKzj-S3>v0%wi7 zZl_Ju3}wvzVJS2JKB0v*P-a=m$WZ5;LYe1cPYv92oj@t^dq_w$o(y%pUO%_EVA_;r z^wM2|hB>+YIJu0_m)NWM85MUljb9N3B~Yx5$zfeGzq!_%g)&=#T}?^PF%eDAi|>FX z*LEtOIEbp_kL%ULgLX5f$^R_hX`A()$0_CI9}F zmK*BbAR|7m-hzHywWB7x(;2mLqG-8syS#!6=n8+uG@*Tdi?|z9Wf}bCx|GZQ+o|@% ziPa7&v0#xhoIOdphaM%r_&v7%i>g_m+}e`~x=;=?7gs0A%YDu*O+Ek?SYxD6(#sfk z!~;k=tQM`LN6}UOVuom%kmFRALcq4U(L|5Ntwm>?%j7|yXpKV4iCndK5_(Qwsm=9B z4w-@JNOkkEO~)ktwjA2yHl2E&1Oen)L0d@4HsjX8(GO(I7}0ap!T7wxxT^vmTtq|2 z9C+gpbTK3bFHSA(DOFHL+GEV2EuQuKDf@ggh37vx%&!Zy?X6Y`&dkL7%b~7FhZ;E| ziN`RcnNOVvGEl4P@6{APhMz<|kfGK!a&5|IZ*?YO)sx@O&+9IkwIDsJXf)dMwRB%G zHC~zW)d{XU6<#VaxVzX$=T^azp(7)_TQGNK%6a>6Z>>!7iTg_8fUI>FQ_<(U%a$JO z*W9tz7R_Wz#ZyPjlNroP9(Sewdou5_|C-VZqj(K)sPw6GG@*!0I+ai6&N5F#eRWl5 zERWzk7A;9;-IZn=EisLW6ncpjZ2zQd*ogphVlsJav;15l0?~~~nM0OJGcx3TdRp-v zeCLC{!iEcGcMjZJ7bhKK2PqP>GxbDN|B#PG+-2j^ta^Oa1UHt67G|sDi~~MWWu0&x zq1{m6u;EG2iha(yS_)O5gmaLzt%KfL)h8ok*{g0B8#=rtIrgXBG|xzE?YxFMDx~@` z0Sow~yO*NlY0sz2ciobxx<5nbePMw)M8`8g|HA9BH58$eKy9aK3m&GZhpy3fp^S!C z02{6pezLzgaLsc&0GW=Mgr{-6=U3^fDMgchqu>d~`?h2F1ghKKJJJN> zMHSJi((J7VF>E_K_x-Z7SGWA5lbth#yd8DWqU4-}T#%h{*e-H3f9eRONH`5={!ypl za`Vg9vC4o5vo9}*V(V^^2xq(hYry*dK7II?e00bHSY7{f0Wtt_>5N&_oC1XJ0-cdd z&}hf4&tRso0#lRrMf1~w-Ny6?ocw8C`G>puM}}ixUp|e#P_6H6-U2XL5^daLqrlx+ zQLY#^_UO}SmZlQg$30OhD1!xarL#&sN;kg~-zQ-|@4C&=p`IquOY{cg5A}7b=ThaN zDw(d_dxtoJ<>uQAl~t8qD|VX!KLb7vD2Q7LJd`2HY8%q|Vq#exPL%)kDtoa=)}zx4 zY3|VsfbklWA3+JJ-YL$!J zS-&;-gR?nYtGbtziks%tSlWd;Txz!ceIl2Jns>j1E|Vz)a^9Y9BU7@$y*sv!N!`a6 zZ-XS>qUAxEsf&JP><6suKJ&T*VdGe3jcPlfaYGc-0}1Q<#sL~<6|DKTmD4P$V%=w+ z-g6OXIH;KL@0D>NFKgWVo|$Sk;a@r)dK!caR{iNQ7CRRo**&bgl`H&W^W^_)S^iuu zKCfSkbLH3KV4E4X0T&o8x3+F!t)vL*Mhd2Y(C4G9dK`Ou+=+F|KRGfe zb(7*|Lx}JOV4!q!G0@4Y)TP=LU|Ss?OU2wayUbK~?&M=gjy@JUPslzUq0^^KiEE&% zN=NgLTS_~3tjn#F)o$xI!E>Hqt`@D*U(s@XExJazGCPW0`CVA#P|`h z%qK@&Z-CLeADvyZyc|)8?K0&ko|gEbuw@6H@nTjvGyPQVB&mN-U4SVG_x>XL>Ne)K@}lEmqwm$B;bN`V{_o!a zx@<`hl(jr=T*Z1fp;Eq~l?rvYs8h^cVVK*UH6*8Vu@G0hfui2Ox)(4&qReC4-eUpt z}1o&O0<|2Z*1 zaU5`om{mf`eDBrN5@MBa)Cpyzd68i{o%RZ2gVDnJ?|*9viOoi-QteUTQ&dfl>6H(- zynaq=l!6w|@%TE_8xl;qH)ApeXX)t@_-P>ba~2b{OryZ~ zy}6bt>qK9rxFZc^(^ILjYM@iXN*ig>xfswxlPA$3Om&^=hMt!O`rB01v6F?*)f6GYn+k5KH(=XDd#fWchRLwNf96h}+(OdK6 za>SD&+yRax-1PguDHAUlPyy60Q~)8YuHQveus$I4boS$;`{{k0fn1tAdIT{M`jb@` z8}}n^1?N>F=^rNXiqJTXpFeoM_EwFGi*U25SD8_%Y8P9f)vDU|;6oSKW1l0PBC=ig zY0=snML+TM_@`oxKX9Mu%D6aM>0%7c3>!W*)21~e%~jYV3#-H?I@@Jcarim#HRa{x zPOr}SyV*6TU%h3_SIChx0np^Y3Vj(Xj%YM)Wz*KO1cM$UcKiON>ciT58oy&*KHk?pPosUw6x zXfIOY-a^+HaSu8Rj>)Y~*e?0Z(_No_uQQ(>!)Ww!OTL*u2XM;>Td)ZHJAwM!4|9qL zmgdm>uAJMS9p}ocM?z>zAd;9CpsS7n{&V;E4JszOWi|eSJ5{04>St!sEHTBJYzj<` zgtT;0Gz+v{*Lh3dr&He_;z@O&8oaZNz?kmio`b_bgamU&3AJ0i)uig9y#iTWB`V*H z)i^O!(ip$1^`D6nzrbW}wqs^G^kdt7+3e-;v$1%voxEu{v&XK*R@y*!EHNzvJ1M3x zwneO|>BjPtOlpMk6zC+rco)R|(7Mfye<#ULM22Ej^Sy@NSak@FJ-e@HMauv{yW-D` zr;Fz;{#dxT#ppd^%gZ?JjWB4wi;I4=+wN zJ~(###GR6O*2LJ+=O%#P{Ull1{~b^jo`94j$qx~riXb;Yh3~}!;drJO1RQ9>A6KuN z$e9+ax6QTrU~br&Q@64;3KD)y^!k6R{xD_&;69c z+?&{Ezk_HnJOL~Gb$|VZ8TOXxkmnxy>XA%5me=Dz78LY3pu^(v(7zz&dx?^mGKs>4 zaPKF$t?w|MOw19qu@cdBn*jk+@xo-tREm+Nj^2VGWede3q6B(566^z5hBawcuJL)!u^!f(=D|k3KL{T0EA!uKu=c{bx_pY~l+L6= zvDM2;v;d8o@~u}*;w0;k3yGU$N<7b8jOq)doyH^-GPQjCppTg2 z%W)x^b2HC^A2q$|N}^d1;z{J1(majHA*cZTV(I8Uc~FKVu^f-f!o9jqSuEOVTIjp* zftzI2xIV3MNJSVW9--qhkxY!-p^x8$cDFOH-qf}W@HVH?#{Ql!>JwLWL7b+{w^+VX7Hs`T;Y)PRpmnwsJbpChRJ~F2JRMYW(^_-k+;8egt*^i6npgxcQ@S3-FDT%U zD}51tzQL1cZkiYmcS~W`5Vbq!C}AibUF#vZPpR(GzFTqOOUs*9$Kg^(!$5KB5Gsu} z>mlg66j@k)P41w$-k34GJ`E`KRa?9ZXpx4skl^)7=&Vp$fE=VK;&C;+U0Z3duk4TSglB3c8mpqH5yR0&4ougWDq_q?Q+L zEbrYCJnm(2(~IHrVA_Mg=&Z$vR7N@vzLcs>w!pL7ThI{KD8cwAtLYt)v!4mpJO`sM z#V{r<5Z1nPQUA$Zu{=&MTEPU-hC$Zf$AgHVpJ0gg+>~&nYZAWO02MdrfCVt`UWAe` zm}h!cp!U$;dG2^v5-l{+H$5UQyD&Jjl~A{I#pZWVCmYT$j*{q_sZX}yt2v=_KQ^x= zpDF^sfP(CGQ=g5!(Co~KW~pi2L9B7(()*R3;44@36crW4YuDorBZa$!Bt{<_dl`(< z%m*vYe#5&`7RYBeneQ-=pG+%8p|p9Lz*<7^KqgIMmw<7ZC`*=b_e&cPn$#7_#sb=d zC(B40L#ID;KjYbzBP>{ssQB8wMJD}~f;8Bk`rBzuk8mkp{uUVED znxXA6CGuh~sU?wrqO%^S*LnBea#1=AMAJ4%{k$lIPGJ$YQZMc#+7>5kDkvQ}Bjt@H z#TU$W<$Jryj(rBK>cQ8i@FZ*moE2?e%%TtFmApXbdN(`KU&JL8`!cs9A-0Uo)4p#oZ^L z``x)9PgUx{Z~v{B`R||Yhymjh)N?7c-80=kC@i)Na|6q^A@igEhQVr03yWU|8&9QtxdGEX z3D=dW93h!5YP4y3P&E)1{K}*CnNPn1|aC~QafZZW@&Y*FFgKio&HN(i*P8P&Y?RuJdzn6RW1E2?o;f=9-; z;v`}IoK#Vz!0&3D6hs(ec|tx2t|p@VQ+Dzm@`aa#xb(jGE~F=NYdudt#coRY=}Vd~ zR#2W`GfJ!J?)6=Gcn+&-^1+qzM}V6QRn8e1C&i0&1!Ll|(Bf?%A;P`OyMQW(M$hc} z7l2 z4Q-z%H00PYYKQw{G-EkK3s~6{DPkfbJ}pDG`Vz#VYQG&9cpUCEZEo93B?^%x_GOO!w52Q5dqsmvesa zQvhx3?k_MLbPhMZ=Kh95Xy!dP+CIgGUR)^aF5$sfHQ8v5!Ll=nn9lV}{ff`-nE0|3 zJB>>b+23mYMvy53(u>qU+R)QRNwuK+Jb6L=ascH)d5b?KeHNk0dHD3sSLIJ1Ls13INS42U@L5v|s#o$^zZ29%ZV zv?zCU)#rfiapCg0k?s;|mK38h|J&N2?Ok41QnZ#)T)lp}Ty^)LA(H9U?0S@+39Z}3 z4)Sf*Rhtb3-l&#ps*|I12AjL1?q(YAvz-A$XGf)(@XuABv)Zg^d#ibTC{CuXcXXU{f3HFpbxQOM zBlhZsJXfKB>WI|ifBs;YOO6OgVOe_B;5Ml{hgxvNh43pFo6>V*-h%}S@=1&1XhI0U;?5F))XFQC12D1*$oE@@tK zdsyiPNqZ{LRplDz{;WrcxPW}TbbCqQH@OrWjxSQQ%+~&3 zUD0+XPjU1XMzd|s9P<{RH5m_^h_M9`%9v`ar1j?R_a5WKAr;gRzGg4~hq zYV~H9jUoS^X?HO7I-c%xLcX-jt^Xi9f5Y8^xL|eTThC$>;q$3zaA*bNviM9Ma|d=s znG^W4eqaMRM+U-weV|KIkQ1KlQuq6t`tU!$UXq3XBS$Ol-*2`x5g3T@w2GXF%FwD} z?r}tE$)8$1EeW^*gN6H8{#_*e{fAg`jaJs5geC(imX8f`h?EB@kZ+|`1te&} z_~z?8y1y;JU%$STMLyt=+P^*^4h{f`agytG$Dck#pkd`mdP+xorC%KDlWBO!x@qZK zG=IJL@5>t`g1p%x@UFkUEe;N7@=_Qs-t`dqm=(%mcY>US>HqVap>ga1$M1j);`$a} zMh-l`Phg7UpFyjA*%#I{Vzj)@?)t1d1SX$VdwuJY~t{A!#m&7}_x($sMoTpF$`wRZ*#X@<>{CQ+uj6sr6Z{zj2=goP|7V&1hsM530FQI( zOpqvEbc*7WZ~}FZC4!QgJO}jnRC@d$zJonX1hE|&fH0I_GR_NDnhzh=q227HC+Xj} z_Fvpx(-k<+ZTbINDT<(M&Ymi7=gseZ*G7ffA%GdP~3Zx?3O-%#$CaNCmLyFdEy!&Loa0cd`$K=*RmkLFq*xR>ofF_7RY|J>t{ffq|k zxlT|GGPQZgZAAeg5Cc7F%;5DZy$Q&5k!+Np0WL!)&|%X2+AvSHDA$jo0mI*$H`P1) zn{cNUfCPcUUw`}&t{R*a>b#sd?seo^1ujWx0rV?Z`k;|9BAt$85N<|V_R3#!8U@Mk zpNH^e0PcRR1y|uf&F&y=#Ba{@O;+R(Ivmi&dw@U*=c)!rAua&~`HS-a-$X@wfI2kw z;?@x72)2_Sace{DG33AnHOwmp$ij*XfT9Z;QK>tUR>rYkNewi9^P8Z1=?9X2GzGj{vJ{BdNni?{XIem{{qUb^ z5T}=!6SO;tcW3qFW5FS&6DZ!ce$|Q#$e~YNK1`4VHhqfxFeftgM*hvVH zL)0x;yZ;tc>ZaM_lFHo~7dxR}fHU6sOZJvF@DgjReSSx}u+}zlxFs&F3`EOU6#{=u z&y&l?g#!=$`4@rQc@eTcfbC%wFFo3GbG)U?dMv|sj2x6JSfurP`kp^}ACeXkw=Py_ zgfS1rZ|m-{I`GSyAw9mOk2(%O zh~A*5ozZU+iDQ)dACcogu?=TY11U5vI1z0QLl@K!InEO`uw{+{Z2{>{wS{WjBOQ!L z6|}+G;ivQ~7PBKdAn&JVPOhjA(;p@7LhKuI#EoFBP1e!tqb1Nl47O8^!Tv-QmSupa z`B#p}j+KFqwbnE38c2B;P!dmE6LdV@6Bw2uaibY!hY;2LY5*H#j!7QCGW!^u656QkZ=@_gZfC9WHY_G zg6w|$51?={E6tMKX_CSUJ5sPgNwbRh4JjtOWHvk6$ZqKF&5$)u?IPWDtw}jfPbDsN zBwLIRXZ1;bnRaytFYsIrv@6g~gdUcuaGnK5tneNNK2OkXd+E-I#W`C)W)7j!Y@4ogP#`H1U+>BqJn0YCG$UtVPSQu73` zg`^8=sEJ%YD*e3s+0B2?Z2q0`1UbOfT9m9PN~O<9Q*sxt9^b5+)(th?(5Mr9uPG3n z_udwnL6YkCjrC|J)W9-9XH0;*Vm76mtd`<)g1yJ!0r)En@n2OrFvG{x_TLculF(jTh5TZtR2eG3)>nB6)|&Z99Y=LwHf0U>X=sjD2!-m47ufR-xJ3 z58r!ouLc(Ot*?1}b9R{k*`0s4LUGW>SeUS`zxwTQIAd!{G*?LmN zW+=tD6=G-C%j>R5&OOTCuNZU3=n*8K*hNIya~r9`t+4N)(bzm3?C#TB-6^8&X}~n; zI(Y7dw8MScJE^buon!Xxn$(>4Aq1V%>YfBEfura>W^t#qPQO#Ug}h%M-y+>aJ1I@PrNyE7LzCAK7(=w_e+Q*_=g&eJ3v*OIv3e=uoU{eYvfBH ztpq;hyXl6H9NEkP-+M#++iRYL@==r&pFweplnVA(dk~3Pb!Rxnu+E=G0X)ku)50W=WBjt;<{%Q5NwD+L&zRjhJ z_+fIOKf6wJto5-9o`VJze8?}p<$aaHxt=EdX)TGXki&%owHqvxjIl;c2d0jLlxu+Q z6Htfii*O8Z=8M7X9(%bn-ABn z-g2#{z0vhVgP}rAlF)cx(B_;!bx30oo)n1m{(= zb8E>LkY?&CIv8feTUDHHkB84OeZ{ll^T%jbsgAg@SX+x(yT;zDNjCCcZnbPl?nhH< zCXfTUuVfT4o00Rb!hx|{tL2*FS-5l=-z{a@<@?Q0W!Td*66PA}Szg&oL*bjQG-&qM23bt92y?c+mme-Wck{4Gk!z?fVt=a%RstK`I zrGLRjPf&S&n!3L5d1fXQ>FvWTun-qReu9KP_Gh)r1N1bndtE4pj=@P_)SLPdZlqFT zcl+Lvo2!+aX_|V%~yMq?;Qb zLNQ5*F?(6@>M7!d8&J+Twko}EDZhUSWSnawiSy7VuzT?WlrDbQZrMGDo7YfExP)!C zFVd}yRkUZOX-x`e)aQbaK-H>Ocq-E#wz(-&>-_YvsF^06uvl6o?cRbgpT7wy*;zm^So4I+| zHmcJHD0C_J!aT5cv5NyrPv&O+NPB0tW87Q|DgRS;SJG(u^Bla_P^=QO6z5#`r%uiv zZplduA#n7DcmtlS8KHuise7krNI+gC;9(cr86qab+x;NN3E6+|DsX-EVg>_r@fXH4 zW1odNtk>5ke>a>ww5oXb`}4yg!Fajgg}-%=$Gv!PGs|OnCU~aM@RP-9>Qd^j9w%w zsQjEa^OO+RMK;Ck^TD2|jCG(i2_6ch;z`gs|I^y_^`DTVtq6Cnw6>g=(3g}mYKNMr z+WzfTqaG-z0=t+-klYUHZoTXP$!lF@7r6JMHr6OuCvFz+;PBVt$>wVP3E}=@!unDM zfhtJ23watpB$#$jY%b-!E^T;Zx-j5+Z|aY>mVhr?mwgaMwBW|Tr#Fhvlx(sbAfi5` zN4hXRSe%T=EA5*;k_;kzc;d}02rvs9C~%&-M^B3>o^=f_e2Bi6ua3+*AkAc`8M=0g z+7%;{ik)-`CoWqWF_`95@8h@+;wx*Q^h)o?qbSzPolLIFVUIwuY~p}zqBRVCi4|e_uBwI z=mJuLE}uHr*AU22JkQE4;Hiu7}hkJq2#kL)Hb02bOt4A7!5pe zQ3#nZ?+G$Su?`mgReuKjL4Isu@%{KuVM+uJ=;(Z#%SIP}E

5+-#*6c*ecQH5WN| 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 Date: Tue, 12 Nov 2024 04:00:25 -0800 Subject: [PATCH 172/205] chore(main): release docs-site 1.17.0 (#18476) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 13 +++++++++++++ packages/docs-site/package.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 64a926cf7d5..d2a73a3f26c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.16.0", + "packages/docs-site": "1.17.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index 90673b442ff..d4f5a79cae6 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [1.17.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.16.0...docs-site-v1.17.0) (2024-11-12) + + +### Features + +* **docs-site:** update testnet address ([#18472](https://github.com/taikoxyz/taiko-mono/issues/18472)) ([cda3956](https://github.com/taikoxyz/taiko-mono/commit/cda3956f23f5ae913d1432e90417351db52572fb)) +* **docs-site:** update tier config and graphic ([#18487](https://github.com/taikoxyz/taiko-mono/issues/18487)) ([af081af](https://github.com/taikoxyz/taiko-mono/commit/af081af99512e07763f1b95f2f747d43633320da)) + + +### Chores + +* **docs-site:** update block-states.mdx ([#18480](https://github.com/taikoxyz/taiko-mono/issues/18480)) ([3dff524](https://github.com/taikoxyz/taiko-mono/commit/3dff5248ae06be93c69c99b3d891133d8cbe2057)) + ## [1.16.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.15.0...docs-site-v1.16.0) (2024-11-07) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index 0f94541139d..e88e2a66ab7 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.16.0", + "version": "1.17.0", "scripts": { "dev": "astro dev", "start": "astro dev", From c7b9b4f01098d4fab337b9ff456ce394cdaf3a79 Mon Sep 17 00:00:00 2001 From: Noisy <125606576+donatik27@users.noreply.github.com> Date: Wed, 13 Nov 2024 05:23:45 +0100 Subject: [PATCH 173/205] chore(repo): improve documentation and changelog (#18489) --- packages/nfts/README.md | 4 ++-- packages/protocol/CHANGELOG.md | 8 ++++---- packages/relayer/README.md | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/nfts/README.md b/packages/nfts/README.md index fa7c0c91fb8..af6f8cd3fe8 100644 --- a/packages/nfts/README.md +++ b/packages/nfts/README.md @@ -2,7 +2,7 @@ ## Setup -To run in localhost, first, start an Anvil node: +To run on localhost, first, start an Anvil node: ```shell $ pnpm node @@ -20,7 +20,7 @@ $ pnpm install # installs the workspace's dependencies ## Deploying the Taikoons -In order to deploy the token, the images for the NFTs must be placed under `data/original/`. The following script will re-size them and upload them to IPFS: +In order to deploy the token, the images for the NFTs must be placed under `data/original/`. The following script will resize them and upload them to IPFS: ```shell $ pnpm deploy:ipfs diff --git a/packages/protocol/CHANGELOG.md b/packages/protocol/CHANGELOG.md index 68fb7a99736..d1b9a102079 100644 --- a/packages/protocol/CHANGELOG.md +++ b/packages/protocol/CHANGELOG.md @@ -26,14 +26,14 @@ ### Bug Fixes -* **protocl:** check blockId in getBlock and getBlockV2 ([#18327](https://github.com/taikoxyz/taiko-mono/issues/18327)) ([4288fb6](https://github.com/taikoxyz/taiko-mono/commit/4288fb6e0c8c76651d2db866cab55f32a9a25075)) +* **protocol:** check blockId in getBlock and getBlockV2 ([#18327](https://github.com/taikoxyz/taiko-mono/issues/18327)) ([4288fb6](https://github.com/taikoxyz/taiko-mono/commit/4288fb6e0c8c76651d2db866cab55f32a9a25075)) * **protocol:** avoid invocation in Bridge message processing if calldata is "" and value is 0 ([#18137](https://github.com/taikoxyz/taiko-mono/issues/18137)) ([10c2972](https://github.com/taikoxyz/taiko-mono/commit/10c29727081bd8f8b94bbfc4472b162ec552ef64)) * **protocol:** correct the wrong router address for mainnet ([#18291](https://github.com/taikoxyz/taiko-mono/issues/18291)) ([ae0a9da](https://github.com/taikoxyz/taiko-mono/commit/ae0a9daf83ab8f323c216978724ebcb71de54cfe)) * **protocol:** fix a new bug in LibProposing ([#18328](https://github.com/taikoxyz/taiko-mono/issues/18328)) ([7436bae](https://github.com/taikoxyz/taiko-mono/commit/7436bae9660cfcf1d430ca111df8c75d50908eae)) * **protocol:** fix an issue in same transition check ([#18254](https://github.com/taikoxyz/taiko-mono/issues/18254)) ([233806e](https://github.com/taikoxyz/taiko-mono/commit/233806e4838aa12e8de436a37979ff3e614119f2)) * **protocol:** fix DCAP configuration script ([#18088](https://github.com/taikoxyz/taiko-mono/issues/18088)) ([e8618c5](https://github.com/taikoxyz/taiko-mono/commit/e8618c54a58993499e852ec2ffc2468d4f0274ba)) * **protocol:** fix issue in mainnet deployment script ([#18283](https://github.com/taikoxyz/taiko-mono/issues/18283)) ([5c371a1](https://github.com/taikoxyz/taiko-mono/commit/5c371a181af444999f611e03774ec096ffbd1226)) -* **protocol:** fix LibAddress.supportsInterface to handle undecodeable return data ([#18286](https://github.com/taikoxyz/taiko-mono/issues/18286)) ([299b4c9](https://github.com/taikoxyz/taiko-mono/commit/299b4c9ecf96644c909df70a3527ae5c2e728a07)) +* **protocol:** fix LibAddress.supportsInterface to handle undecodable return data ([#18286](https://github.com/taikoxyz/taiko-mono/issues/18286)) ([299b4c9](https://github.com/taikoxyz/taiko-mono/commit/299b4c9ecf96644c909df70a3527ae5c2e728a07)) * **protocol:** fix permission in ComposeVerifier ([#18302](https://github.com/taikoxyz/taiko-mono/issues/18302)) ([4c45d8b](https://github.com/taikoxyz/taiko-mono/commit/4c45d8bcdb52521ac1738ca271316d82689537b0)) * **protocol:** fix proposeBlock()'s block id check ([#18227](https://github.com/taikoxyz/taiko-mono/issues/18227)) ([3a9d6c1](https://github.com/taikoxyz/taiko-mono/commit/3a9d6c166b7c6666eb2515893b6a3fbd00f4b1ea)) * **protocol:** fix test related to SendMessageToDelegateOwner.s.sol ([#18300](https://github.com/taikoxyz/taiko-mono/issues/18300)) ([65daa3e](https://github.com/taikoxyz/taiko-mono/commit/65daa3e631b471d17dbffb1001dab66efa67c499)) @@ -59,7 +59,7 @@ * **protocol:** set mainnet Ontake fork height ([#18112](https://github.com/taikoxyz/taiko-mono/issues/18112)) ([8812eb2](https://github.com/taikoxyz/taiko-mono/commit/8812eb2a8de367311b8ada6bd3587bfe5efee090)) * **protocol:** shorten imports in solidity files ([#18221](https://github.com/taikoxyz/taiko-mono/issues/18221)) ([9b2ba6a](https://github.com/taikoxyz/taiko-mono/commit/9b2ba6a2a2fae24d1fb34e23b29b3146e96f575e)) * **protocol:** undo 1.10.0 release ([#18363](https://github.com/taikoxyz/taiko-mono/issues/18363)) ([116578e](https://github.com/taikoxyz/taiko-mono/commit/116578ef8a4391611bd1b3c469f4068cec8a8447)) -* **protoco:** remove unused delegate owner deployment ([#18290](https://github.com/taikoxyz/taiko-mono/issues/18290)) ([63ba863](https://github.com/taikoxyz/taiko-mono/commit/63ba863dcf322b2cf04d7dcaf6d8905bf28de6bc)) +* **protocol:** remove unused delegate owner deployment ([#18290](https://github.com/taikoxyz/taiko-mono/issues/18290)) ([63ba863](https://github.com/taikoxyz/taiko-mono/commit/63ba863dcf322b2cf04d7dcaf6d8905bf28de6bc)) ### Documentation @@ -114,7 +114,7 @@ ### Bug Fixes -* **protocl:** check blockId in getBlock and getBlockV2 ([#18327](https://github.com/taikoxyz/taiko-mono/issues/18327)) ([4288fb6](https://github.com/taikoxyz/taiko-mono/commit/4288fb6e0c8c76651d2db866cab55f32a9a25075)) +* **protocol:** check blockId in getBlock and getBlockV2 ([#18327](https://github.com/taikoxyz/taiko-mono/issues/18327)) ([4288fb6](https://github.com/taikoxyz/taiko-mono/commit/4288fb6e0c8c76651d2db866cab55f32a9a25075)) * **protocol:** avoid invocation in Bridge message processing if calldata is "" and value is 0 ([#18137](https://github.com/taikoxyz/taiko-mono/issues/18137)) ([10c2972](https://github.com/taikoxyz/taiko-mono/commit/10c29727081bd8f8b94bbfc4472b162ec552ef64)) * **protocol:** correct the wrong router address for mainnet ([#18291](https://github.com/taikoxyz/taiko-mono/issues/18291)) ([ae0a9da](https://github.com/taikoxyz/taiko-mono/commit/ae0a9daf83ab8f323c216978724ebcb71de54cfe)) * **protocol:** fix a new bug in LibProposing ([#18328](https://github.com/taikoxyz/taiko-mono/issues/18328)) ([7436bae](https://github.com/taikoxyz/taiko-mono/commit/7436bae9660cfcf1d430ca111df8c75d50908eae)) diff --git a/packages/relayer/README.md b/packages/relayer/README.md index 371b6147b50..a9414d599df 100644 --- a/packages/relayer/README.md +++ b/packages/relayer/README.md @@ -2,7 +2,7 @@ # Relayer -A relayer for the Bridge to watch and sync event between Layer 1 and Taiko Layer 2. +A relayer for the Bridge to watch and sync events between Layer 1 and Taiko Layer 2. ## Build the Source From e83adc06ac4ce8ebe7e34feaad5691176dba27e2 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Thu, 14 Nov 2024 12:01:07 +0700 Subject: [PATCH 174/205] docs(protocol): add Ontake fork audit report from OpenZeppelin (#18491) --- ...aiko_protocol_ontake_audit_nov_2024.pdf.pdf | Bin 0 -> 165663 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/protocol/audit/open_zeppelin_taiko_protocol_ontake_audit_nov_2024.pdf.pdf diff --git a/packages/protocol/audit/open_zeppelin_taiko_protocol_ontake_audit_nov_2024.pdf.pdf b/packages/protocol/audit/open_zeppelin_taiko_protocol_ontake_audit_nov_2024.pdf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ffa07e75c8724ea74f02bda2d871e4649c2a7ec2 GIT binary patch literal 165663 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

bTSr=LQ0MIW3C?~& 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�yPdn1--h5DaoNeR&TS;fRFpvxCMJmhNy+ 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 Date: Thu, 14 Nov 2024 10:27:57 +0200 Subject: [PATCH 175/205] chore(protocol): fix typos in documentation files (#18490) --- .../protocol/deployments/mainnet-transfer-logs-L1.md | 10 +++++----- .../protocol/docs/analysis/MrPotatoMagic-Analysis.md | 2 +- packages/protocol/docs/analysis/kaveyjoe-Analysis.md | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/protocol/deployments/mainnet-transfer-logs-L1.md b/packages/protocol/deployments/mainnet-transfer-logs-L1.md index 53f75e6ec75..41222580562 100644 --- a/packages/protocol/deployments/mainnet-transfer-logs-L1.md +++ b/packages/protocol/deployments/mainnet-transfer-logs-L1.md @@ -12,11 +12,11 @@ #### tx`0x9ede1da0bb372fbaa210bb1847172888b30e8a3cc68c9d868ec066ca3301f480` -- labs.taiko.eth depositted 10 ETH to proposer: `0x000000633b68f5d8d3a86593ebb815b4663bcbe0` -- labs.taiko.eth depositted 10 ETH to prover: `0x000000629FBCf27A347d1AEbA658435230D74a5f` -- labs.taiko.eth depositted 5 ETH to contester: `0x00000027F51a57E7FcBC4b481d15fcE5BE68b30B` -- labs.taiko.eth depositted 0.01 ETH to bridge watchdog: `0x00000291ab79c55dc4fcd97dfba4880df4b93624` -- labs.taiko.eth depositted 5 ETH to bridge L1 relayer: `0x0000001539d3a970c979ac67a8836a359ce4a1fc` +- labs.taiko.eth deposited 10 ETH to proposer: `0x000000633b68f5d8d3a86593ebb815b4663bcbe0` +- labs.taiko.eth deposited 10 ETH to prover: `0x000000629FBCf27A347d1AEbA658435230D74a5f` +- labs.taiko.eth deposited 5 ETH to contester: `0x00000027F51a57E7FcBC4b481d15fcE5BE68b30B` +- labs.taiko.eth deposited 0.01 ETH to bridge watchdog: `0x00000291ab79c55dc4fcd97dfba4880df4b93624` +- labs.taiko.eth deposited 5 ETH to bridge L1 relayer: `0x0000001539d3a970c979ac67a8836a359ce4a1fc` - labs.taiko.eth transferred 5 ETH to Daniel Wang: `0x69AA0361Dbb0527d4F1e5312403Bd41788fe61Fe` #### tx`0xdb04aa0f162cd84cadae96135e471575108954d552a873d42027b579140ca182` diff --git a/packages/protocol/docs/analysis/MrPotatoMagic-Analysis.md b/packages/protocol/docs/analysis/MrPotatoMagic-Analysis.md index e9138690c4c..c07f6a03434 100644 --- a/packages/protocol/docs/analysis/MrPotatoMagic-Analysis.md +++ b/packages/protocol/docs/analysis/MrPotatoMagic-Analysis.md @@ -51,7 +51,7 @@ Day 19-21 1. The biggest trust assumption in the contract is the owner role handling all the Address manager contracts. This role can pause the contracts at anytime. 2. The second trust assumption is the guardians multisig. Currently, the guardians are trusted and will be removed over time. But since they are the highest tier, the centralization risk in the proving system exists. -3. ANother role is the bridge watchdog. This role can ban and suspend any messages at will. It is the most important risk of the bridge contracts. +3. Another role is the bridge watchdog. This role can ban and suspend any messages at will. It is the most important risk of the bridge contracts. 4. The snapshooter role has some risks associated since it takes snapshots on the TaikoToken. There are more roles in the codebase but these are the foremost and most central to the protocol. diff --git a/packages/protocol/docs/analysis/kaveyjoe-Analysis.md b/packages/protocol/docs/analysis/kaveyjoe-Analysis.md index c02ec09ac44..0e79b3b3765 100644 --- a/packages/protocol/docs/analysis/kaveyjoe-Analysis.md +++ b/packages/protocol/docs/analysis/kaveyjoe-Analysis.md @@ -63,7 +63,7 @@ The block will then mark complete on the chain. The block status changes from gr - The block consists of a transaction list (txList) and metadata. The txList of an L2 block will eventually (when EIP-4844 is live) be part of a blob in the L1 Consensus Layer (CL). - txList is not directly accessible to L1 contracts. Therefore, a ZKP shall prove that the chosen txList is a slice of the given blob data. -- Block validity criteria that all blocks need to respect: K_maxBobSize, K_BlockMaxTxs, K_BlockMaxGasLimit and config.anchorTxGasLimit +- Block validity criteria that all blocks need to respect: K_maxBlockSize, K_BlockMaxTxs, K_BlockMaxGasLimit and config.anchorTxGasLimit - Once the block is proposed, the Taiko client checks if the block is decoded into a list of transactions - Taiko client validates each enclosed transaction and generates a tracelog for each transaction for the prover to use as witness data. If a tx is invalid, it will be dropped. - The first transaction in the Taiko L2 block is always an anchoring transaction, which verifies the 256 hashes of the latest blocks, the L2 chain ID and the EIP-1559 base fee @@ -96,7 +96,7 @@ L2 tx fee = L2 EIP-1559* base fee + L1 tx fee + prover fee + proposer fee* L2 EIP-1559 fee = L2 EIP-1559 tip (goes to the proposer) + L2 EIP-1559 base fee (goes to the Taiko DAO). -Once a proposer has collected enough transactions, most probably including and ordering them with the intent to generate a (maxim) profit, they create a block. +Once a proposer has collected enough transactions, most probably including and ordering them with the intent to generate a (maximum) profit, they create a block. - Profit means that for the proposer, the sum of transaction fees (L2 tx fees) from the block is larger than L1 tx fee + prover fee + EIP-1559 base fee. From 83b6f154e372afe8512fdb6c528afabc8560a840 Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Thu, 14 Nov 2024 00:28:34 -0800 Subject: [PATCH 176/205] feat(eventindexer): eventindexer post ontake fork (#18474) --- packages/eventindexer/cmd/flags/indexer.go | 8 ++ packages/eventindexer/indexer/config.go | 2 + packages/eventindexer/indexer/filter.go | 136 +++++++++++++++++- packages/eventindexer/indexer/indexer.go | 6 +- .../indexer/save_block_proposed_event.go | 86 +++++++++++ .../indexer/save_block_verified_event.go | 75 ++++++++++ .../save_transition_contested_event.go | 69 +++++++++ .../indexer/save_transition_proved_event.go | 78 ++++++++++ 8 files changed, 457 insertions(+), 3 deletions(-) diff --git a/packages/eventindexer/cmd/flags/indexer.go b/packages/eventindexer/cmd/flags/indexer.go index 88824cdbe36..b41d929dd0a 100644 --- a/packages/eventindexer/cmd/flags/indexer.go +++ b/packages/eventindexer/cmd/flags/indexer.go @@ -74,6 +74,13 @@ var ( Category: indexerCategory, EnvVars: []string{"INDEX_ERC20S"}, } + OntakeForkHeight = &cli.Uint64Flag{ + Name: "ontakeForkHeight", + Usage: "Block number ontake fork height happened", + Value: 21134698, + Category: indexerCategory, + EnvVars: []string{"ONTAKE_FORK_HEIGHT"}, + } ) var IndexerFlags = MergeFlags(CommonFlags, []cli.Flag{ @@ -87,4 +94,5 @@ var IndexerFlags = MergeFlags(CommonFlags, []cli.Flag{ SyncMode, IndexNFTs, IndexERC20s, + OntakeForkHeight, }) diff --git a/packages/eventindexer/indexer/config.go b/packages/eventindexer/indexer/config.go index f0ac08b1983..122c45c59de 100644 --- a/packages/eventindexer/indexer/config.go +++ b/packages/eventindexer/indexer/config.go @@ -31,6 +31,7 @@ type Config struct { IndexNFTs bool IndexERC20s bool Layer string + OntakeForkHeight uint64 OpenDBFunc func() (db.DB, error) } @@ -55,6 +56,7 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { IndexNFTs: c.Bool(flags.IndexNFTs.Name), IndexERC20s: c.Bool(flags.IndexERC20s.Name), Layer: c.String(flags.Layer.Name), + OntakeForkHeight: c.Uint64(flags.OntakeForkHeight.Name), OpenDBFunc: func() (db.DB, error) { return db.OpenDBConnection(db.DBConnectionOpts{ Name: c.String(flags.DatabaseUsername.Name), diff --git a/packages/eventindexer/indexer/filter.go b/packages/eventindexer/indexer/filter.go index 9d6a2b67b98..6d457aed17a 100644 --- a/packages/eventindexer/indexer/filter.go +++ b/packages/eventindexer/indexer/filter.go @@ -123,9 +123,112 @@ func filterFunc( return nil } +func filterFuncOntake( + ctx context.Context, + chainID *big.Int, + i *Indexer, + filterOpts *bind.FilterOpts, +) error { + wg, ctx := errgroup.WithContext(ctx) + + if i.taikol1 != nil { + wg.Go(func() error { + transitionProvedEvents, err := i.taikol1.FilterTransitionProvedV2(filterOpts, nil) + if err != nil { + return errors.Wrap(err, "i.taikol1.FilterTransitionProved") + } + + err = i.saveTransitionProvedEventsV2(ctx, chainID, transitionProvedEvents) + if err != nil { + return errors.Wrap(err, "i.saveTransitionProvedEvents") + } + + return nil + }) + + wg.Go(func() error { + transitionContestedEvents, err := i.taikol1.FilterTransitionContestedV2(filterOpts, nil) + if err != nil { + return errors.Wrap(err, "i.taikol1.FilterTransitionContested") + } + + err = i.saveTransitionContestedEventsV2(ctx, chainID, transitionContestedEvents) + if err != nil { + return errors.Wrap(err, "i.saveTransitionContestedEvents") + } + + return nil + }) + + wg.Go(func() error { + blockProposedEvents, err := i.taikol1.FilterBlockProposedV2(filterOpts, nil) + if err != nil { + return errors.Wrap(err, "i.taikol1.FilterBlockProposed") + } + + err = i.saveBlockProposedEventsV2(ctx, chainID, blockProposedEvents) + if err != nil { + return errors.Wrap(err, "i.saveBlockProposedEvents") + } + + return nil + }) + + wg.Go(func() error { + blockVerifiedEvents, err := i.taikol1.FilterBlockVerifiedV2(filterOpts, nil, nil) + if err != nil { + return errors.Wrap(err, "i.taikol1.FilterBlockVerified") + } + + err = i.saveBlockVerifiedEventsV2(ctx, chainID, blockVerifiedEvents) + if err != nil { + return errors.Wrap(err, "i.saveBlockVerifiedEvents") + } + + return nil + }) + } + + if i.bridge != nil { + wg.Go(func() error { + messagesSent, err := i.bridge.FilterMessageSent(filterOpts, nil) + if err != nil { + return errors.Wrap(err, "i.bridge.FilterMessageSent") + } + + err = i.saveMessageSentEvents(ctx, chainID, messagesSent) + if err != nil { + return errors.Wrap(err, "i.saveMessageSentEvents") + } + + return nil + }) + } + + wg.Go(func() error { + if err := i.indexRawBlockData(ctx, chainID, filterOpts.Start, *filterOpts.End); err != nil { + return errors.Wrap(err, "i.indexRawBlockData") + } + + return nil + }) + + err := wg.Wait() + + if err != nil { + if errors.Is(err, context.Canceled) { + slog.Error("filter context cancelled") + return err + } + + return err + } + + return nil +} + func (i *Indexer) filter( ctx context.Context, - filter FilterFunc, ) error { endBlockID, err := i.ethClient.BlockNumber(ctx) if err != nil { @@ -138,14 +241,35 @@ func (i *Indexer) filter( "batchSize", i.blockBatchSize, ) + if i.latestIndexedBlockNumber >= i.ontakeForkHeight { + i.isPostOntakeForkHeightReached = true + } + for j := i.latestIndexedBlockNumber + 1; j <= endBlockID; j += i.blockBatchSize { - end := i.latestIndexedBlockNumber + i.blockBatchSize + end := j + i.blockBatchSize - 1 + // if the end of the batch is greater than the latest block number, set end // to the latest block number if end > endBlockID { end = endBlockID } + if !i.isPostOntakeForkHeightReached && i.taikol1 != nil && i.ontakeForkHeight > i.latestIndexedBlockNumber && i.ontakeForkHeight < end { + slog.Info("ontake fork height reached", "height", i.ontakeForkHeight) + + i.isPostOntakeForkHeightReached = true + + end = i.ontakeForkHeight - 1 + + slog.Info("setting end block ID to ontakeForkHeight - 1", + "latestIndexedBlockNumber", + i.latestIndexedBlockNumber, + "ontakeForkHeight", i.ontakeForkHeight, + "endBlockID", end, + "isPostOntakeForkHeightReached", i.isPostOntakeForkHeightReached, + ) + } + slog.Info("block batch", "start", j, "end", end) filterOpts := &bind.FilterOpts{ @@ -154,6 +278,14 @@ func (i *Indexer) filter( Context: ctx, } + var filter FilterFunc + + if i.isPostOntakeForkHeightReached { + filter = filterFuncOntake + } else { + filter = filterFunc + } + if err := filter(ctx, new(big.Int).SetUint64(i.srcChainID), i, filterOpts); err != nil { return errors.Wrap(err, "filter") } diff --git a/packages/eventindexer/indexer/indexer.go b/packages/eventindexer/indexer/indexer.go index 6093865f3bf..fe4a9562e26 100644 --- a/packages/eventindexer/indexer/indexer.go +++ b/packages/eventindexer/indexer/indexer.go @@ -68,6 +68,9 @@ type Indexer struct { contractToMetadata map[common.Address]*eventindexer.ERC20Metadata contractToMetadataMutex *sync.Mutex + + ontakeForkHeight uint64 + isPostOntakeForkHeightReached bool } func (i *Indexer) Start() error { @@ -97,7 +100,7 @@ func (i *Indexer) eventLoop(ctx context.Context) { slog.Info("event loop context done") return case <-t.C: - if err := i.filter(ctx, filterFunc); err != nil { + if err := i.filter(ctx); err != nil { slog.Error("error filtering", "error", err) } } @@ -204,6 +207,7 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) error { i.layer = cfg.Layer i.contractToMetadata = make(map[common.Address]*eventindexer.ERC20Metadata, 0) i.contractToMetadataMutex = &sync.Mutex{} + i.ontakeForkHeight = cfg.OntakeForkHeight return nil } diff --git a/packages/eventindexer/indexer/save_block_proposed_event.go b/packages/eventindexer/indexer/save_block_proposed_event.go index e8dc2669847..86585a0c963 100644 --- a/packages/eventindexer/indexer/save_block_proposed_event.go +++ b/packages/eventindexer/indexer/save_block_proposed_event.go @@ -103,3 +103,89 @@ func (i *Indexer) saveBlockProposedEvent( return nil } + +func (i *Indexer) saveBlockProposedEventsV2( + ctx context.Context, + chainID *big.Int, + events *taikol1.TaikoL1BlockProposedV2Iterator, +) error { + if !events.Next() || events.Event == nil { + slog.Info("no blockProposedV2 events") + return nil + } + + wg, ctx := errgroup.WithContext(ctx) + + for { + event := events.Event + + wg.Go(func() error { + tx, _, err := i.ethClient.TransactionByHash(ctx, event.Raw.TxHash) + if err != nil { + return errors.Wrap(err, "i.ethClient.TransactionByHash") + } + + sender, err := i.ethClient.TransactionSender(ctx, tx, event.Raw.BlockHash, event.Raw.TxIndex) + if err != nil { + return errors.Wrap(err, "i.ethClient.TransactionSender") + } + + if err := i.saveBlockProposedEventV2(ctx, chainID, event, sender); err != nil { + eventindexer.BlockProposedEventsProcessedError.Inc() + + return errors.Wrap(err, "i.saveBlockProposedEvent") + } + + return nil + }) + + if !events.Next() { + break + } + } + + if err := wg.Wait(); err != nil { + return err + } + + return nil +} + +func (i *Indexer) saveBlockProposedEventV2( + ctx context.Context, + chainID *big.Int, + event *taikol1.TaikoL1BlockProposedV2, + sender common.Address, +) error { + slog.Info("blockProposed", "proposer", sender.Hex()) + + marshaled, err := json.Marshal(event) + if err != nil { + return errors.Wrap(err, "json.Marshal(event)") + } + + blockID := event.BlockId.Int64() + + block, err := i.ethClient.BlockByNumber(ctx, new(big.Int).SetUint64(event.Raw.BlockNumber)) + if err != nil { + return errors.Wrap(err, "i.ethClient.BlockByNumber") + } + + _, err = i.eventRepo.Save(ctx, eventindexer.SaveEventOpts{ + Name: eventindexer.EventNameBlockProposed, + Data: string(marshaled), + ChainID: chainID, + Event: eventindexer.EventNameBlockProposed, + Address: sender.Hex(), + BlockID: &blockID, + TransactedAt: time.Unix(int64(block.Time()), 0).UTC(), + EmittedBlockID: event.Raw.BlockNumber, + }) + if err != nil { + return errors.Wrap(err, "i.eventRepo.Save") + } + + eventindexer.BlockProposedEventsProcessed.Inc() + + return nil +} diff --git a/packages/eventindexer/indexer/save_block_verified_event.go b/packages/eventindexer/indexer/save_block_verified_event.go index 3f9386cf369..1edcb560c9c 100644 --- a/packages/eventindexer/indexer/save_block_verified_event.go +++ b/packages/eventindexer/indexer/save_block_verified_event.go @@ -88,3 +88,78 @@ func (i *Indexer) saveBlockVerifiedEvent( return nil } + +func (i *Indexer) saveBlockVerifiedEventsV2( + ctx context.Context, + chainID *big.Int, + events *taikol1.TaikoL1BlockVerifiedV2Iterator, +) error { + if !events.Next() || events.Event == nil { + slog.Info("no BlockVerified events") + return nil + } + + wg, ctx := errgroup.WithContext(ctx) + + for { + event := events.Event + + wg.Go(func() error { + if err := i.saveBlockVerifiedEventV2(ctx, chainID, event); err != nil { + eventindexer.BlockVerifiedEventsProcessedError.Inc() + + return errors.Wrap(err, "i.saveBlockVerifiedEvent") + } + + return nil + }) + + if !events.Next() { + break + } + } + + if err := wg.Wait(); err != nil { + return err + } + + return nil +} + +func (i *Indexer) saveBlockVerifiedEventV2( + ctx context.Context, + chainID *big.Int, + event *taikol1.TaikoL1BlockVerifiedV2, +) error { + slog.Info("new blockVerified event", "blockID", event.BlockId.Int64()) + + marshaled, err := json.Marshal(event) + if err != nil { + return errors.Wrap(err, "json.Marshal(event)") + } + + blockID := event.BlockId.Int64() + + block, err := i.ethClient.BlockByNumber(ctx, new(big.Int).SetUint64(event.Raw.BlockNumber)) + if err != nil { + return errors.Wrap(err, "i.ethClient.BlockByNumber") + } + + _, err = i.eventRepo.Save(ctx, eventindexer.SaveEventOpts{ + Name: eventindexer.EventNameBlockVerified, + Data: string(marshaled), + ChainID: chainID, + Event: eventindexer.EventNameBlockVerified, + Address: "", + BlockID: &blockID, + TransactedAt: time.Unix(int64(block.Time()), 0), + EmittedBlockID: event.Raw.BlockNumber, + }) + if err != nil { + return errors.Wrap(err, "i.eventRepo.Save") + } + + eventindexer.BlockVerifiedEventsProcessed.Inc() + + return nil +} diff --git a/packages/eventindexer/indexer/save_transition_contested_event.go b/packages/eventindexer/indexer/save_transition_contested_event.go index fe2499e564e..a36c72c8ffc 100644 --- a/packages/eventindexer/indexer/save_transition_contested_event.go +++ b/packages/eventindexer/indexer/save_transition_contested_event.go @@ -81,3 +81,72 @@ func (i *Indexer) saveTransitionContestedEvent( return nil } + +func (i *Indexer) saveTransitionContestedEventsV2( + ctx context.Context, + chainID *big.Int, + events *taikol1.TaikoL1TransitionContestedV2Iterator, +) error { + if !events.Next() || events.Event == nil { + slog.Info("no transitionContested events") + return nil + } + + for { + event := events.Event + + if err := i.saveTransitionContestedEventV2(ctx, chainID, event); err != nil { + eventindexer.TransitionContestedEventsProcessedError.Inc() + + return errors.Wrap(err, "i.saveBlockProvenEvent") + } + + if !events.Next() { + return nil + } + } +} + +func (i *Indexer) saveTransitionContestedEventV2( + ctx context.Context, + chainID *big.Int, + event *taikol1.TaikoL1TransitionContestedV2, +) error { + slog.Info("transitionContested event found", + "blockID", event.BlockId.Int64(), + "contestBond", event.ContestBond.String(), + "contester", event.Contester.Hex(), + "tier", event.Tier, + ) + + marshaled, err := json.Marshal(event) + if err != nil { + return errors.Wrap(err, "json.Marshal(event)") + } + + blockID := event.BlockId.Int64() + + block, err := i.ethClient.BlockByNumber(ctx, new(big.Int).SetUint64(event.Raw.BlockNumber)) + if err != nil { + return errors.Wrap(err, "i.ethClient.BlockByNumber") + } + + _, err = i.eventRepo.Save(ctx, eventindexer.SaveEventOpts{ + Name: eventindexer.EventNameTransitionContested, + Data: string(marshaled), + ChainID: chainID, + Event: eventindexer.EventNameTransitionContested, + Address: event.Contester.Hex(), + BlockID: &blockID, + TransactedAt: time.Unix(int64(block.Time()), 0), + Tier: &event.Tier, + EmittedBlockID: event.Raw.BlockNumber, + }) + if err != nil { + return errors.Wrap(err, "i.eventRepo.Save") + } + + eventindexer.TransitionContestedEventsProcessed.Inc() + + return nil +} diff --git a/packages/eventindexer/indexer/save_transition_proved_event.go b/packages/eventindexer/indexer/save_transition_proved_event.go index 00efd2559d7..54f26caaa35 100644 --- a/packages/eventindexer/indexer/save_transition_proved_event.go +++ b/packages/eventindexer/indexer/save_transition_proved_event.go @@ -91,3 +91,81 @@ func (i *Indexer) saveTransitionProvedEvent( return nil } + +func (i *Indexer) saveTransitionProvedEventsV2( + ctx context.Context, + chainID *big.Int, + events *taikol1.TaikoL1TransitionProvedV2Iterator, +) error { + if !events.Next() || events.Event == nil { + slog.Info("no transitionProved events") + return nil + } + + wg, ctx := errgroup.WithContext(ctx) + + for { + event := events.Event + + wg.Go(func() error { + if err := i.saveTransitionProvedEventV2(ctx, chainID, event); err != nil { + eventindexer.TransitionProvedEventsProcessedError.Inc() + + return errors.Wrap(err, "i.saveBlockProvenEvent") + } + + return nil + }) + + if !events.Next() { + break + } + } + + if err := wg.Wait(); err != nil { + return err + } + + return nil +} + +func (i *Indexer) saveTransitionProvedEventV2( + ctx context.Context, + chainID *big.Int, + event *taikol1.TaikoL1TransitionProvedV2, +) error { + slog.Info("transitionProved event found", + "blockID", event.BlockId.Int64(), + "prover", event.Prover.Hex()) + + marshaled, err := json.Marshal(event) + if err != nil { + return errors.Wrap(err, "json.Marshal(event)") + } + + blockID := event.BlockId.Int64() + + block, err := i.ethClient.BlockByNumber(ctx, new(big.Int).SetUint64(event.Raw.BlockNumber)) + if err != nil { + return errors.Wrap(err, "i.ethClient.BlockByNumber") + } + + _, err = i.eventRepo.Save(ctx, eventindexer.SaveEventOpts{ + Name: eventindexer.EventNameTransitionProved, + Data: string(marshaled), + ChainID: chainID, + Event: eventindexer.EventNameTransitionProved, + Address: event.Prover.Hex(), + BlockID: &blockID, + TransactedAt: time.Unix(int64(block.Time()), 0), + Tier: &event.Tier, + EmittedBlockID: event.Raw.BlockNumber, + }) + if err != nil { + return errors.Wrap(err, "i.eventRepo.Save") + } + + eventindexer.TransitionProvedEventsProcessed.Inc() + + return nil +} From a9518b7de88565d65a436424479c72802aa00924 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 16:45:35 +0800 Subject: [PATCH 177/205] build(deps): bump github.com/buildkite/terminal-to-html/v3 from 3.8.0 to 3.16.3 (#18478) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 5a7576e5e62..0cc35d305d8 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.23 require ( github.com/btcsuite/btcd/btcec/v2 v2.3.4 - github.com/buildkite/terminal-to-html/v3 v3.8.0 + github.com/buildkite/terminal-to-html/v3 v3.16.3 github.com/cenkalti/backoff v2.2.1+incompatible github.com/cenkalti/backoff/v4 v4.3.0 github.com/cyberhorsey/errors v0.0.0-20220929234051-087d6d8bb841 @@ -211,7 +211,7 @@ require ( golang.org/x/mod v0.20.0 // indirect golang.org/x/net v0.28.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sys v0.25.0 // indirect + golang.org/x/sys v0.26.0 // indirect golang.org/x/term v0.24.0 // indirect golang.org/x/text v0.18.0 // indirect golang.org/x/time v0.6.0 // indirect diff --git a/go.sum b/go.sum index 2a5672519f8..c0c373b040a 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,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/buildkite/terminal-to-html/v3 v3.8.0 h1:S7ImMS8W+2yS/9D4ugrXzB95C4AuNaKcaw/eR/95bFU= -github.com/buildkite/terminal-to-html/v3 v3.8.0/go.mod h1:j3XxsnYElte/Bo7Pft+U5eQWWbcx3j51uQ8fo43VrjM= +github.com/buildkite/terminal-to-html/v3 v3.16.3 h1:IGuJjboHjuMLWOGsKZKNxbbn41emOLiHzXPmQZk31fk= +github.com/buildkite/terminal-to-html/v3 v3.16.3/go.mod h1:r/J7cC9c3EzBzP3/wDz0RJLPwv5PUAMp+KF2w+ntMc0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -789,8 +789,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= From 98422f70fc3af55429406380594d0876d788ddeb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 16:45:56 +0800 Subject: [PATCH 178/205] build(deps): bump golang.org/x/sync from 0.8.0 to 0.9.0 (#18479) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0cc35d305d8..447506e244b 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/testcontainers/testcontainers-go v0.34.0 github.com/urfave/cli/v2 v2.27.5 golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa - golang.org/x/sync v0.8.0 + golang.org/x/sync v0.9.0 gopkg.in/go-playground/assert.v1 v1.2.1 gopkg.in/yaml.v3 v3.0.1 gorm.io/datatypes v1.2.4 diff --git a/go.sum b/go.sum index c0c373b040a..430e2b57fd4 100644 --- a/go.sum +++ b/go.sum @@ -741,8 +741,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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= From a9afc63e962541e0183457d71ce459f6494912b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 16:46:10 +0800 Subject: [PATCH 179/205] build(deps): bump github.com/prysmaticlabs/prysm/v5 from 5.1.0 to 5.1.2 (#18477) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 40 +++++++++--------- go.sum | 126 ++++++++++++++++++++++++--------------------------------- 2 files changed, 72 insertions(+), 94 deletions(-) diff --git a/go.mod b/go.mod index 447506e244b..21b86eee639 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/pressly/goose/v3 v3.20.0 github.com/prometheus/client_golang v1.20.5 - github.com/prysmaticlabs/prysm/v5 v5.1.0 + github.com/prysmaticlabs/prysm/v5 v5.1.2 github.com/rabbitmq/amqp091-go v1.10.0 github.com/shopspring/decimal v1.4.0 github.com/stretchr/testify v1.9.0 @@ -97,13 +97,13 @@ require ( github.com/getsentry/sentry-go v0.27.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.20.0 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/spec v0.20.4 // indirect - github.com/go-openapi/swag v0.19.15 // indirect + github.com/go-openapi/swag v0.22.3 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.13.0 // indirect @@ -120,7 +120,6 @@ require ( github.com/gorilla/css v1.0.0 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect github.com/hashicorp/go-bexpr v0.1.11 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/yamux v0.1.1 // indirect @@ -175,11 +174,11 @@ require ( github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.55.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - github.com/prysmaticlabs/fastssz v0.0.0-20240620202422-a981b8ef89d3 // indirect + github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516 // indirect github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e // indirect github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b // indirect github.com/rivo/uniseg v0.4.4 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/cors v1.11.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect @@ -201,11 +200,10 @@ require ( github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect - go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.opentelemetry.io/otel v1.29.0 // indirect + go.opentelemetry.io/otel/metric v1.29.0 // indirect + go.opentelemetry.io/otel/trace v1.29.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.27.0 // indirect golang.org/x/mod v0.20.0 // indirect @@ -216,22 +214,22 @@ require ( golang.org/x/text v0.18.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.24.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/grpc v1.64.1 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/grpc v1.65.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/inconshreveable/log15.v2 v2.0.0-20200109203555-b30bc20e4fd1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/apimachinery v0.26.2 // indirect - k8s.io/client-go v0.26.2 // indirect - k8s.io/klog/v2 v2.90.1 // indirect - k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 // indirect + k8s.io/apimachinery v0.30.4 // indirect + k8s.io/client-go v0.30.4 // indirect + k8s.io/klog/v2 v2.120.1 // indirect + k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect rsc.io/tmplfunc v0.0.3 // indirect - sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/go.sum b/go.sum index 430e2b57fd4..0ecbdfa9877 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,4 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -contrib.go.opencensus.io/exporter/jaeger v0.2.1 h1:yGBYzYMewVL0yO9qqJv3Z5+IRhPdU7e9o/2oKpX4YvI= -contrib.go.opencensus.io/exporter/jaeger v0.2.1/go.mod h1:Y8IsLgdxqh1QxYxPC5IgXVmBaeLUeQFfBeBi9PbeZd0= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= @@ -163,12 +161,11 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= -github.com/emicklei/go-restful/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ= -github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= 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-optimism/go-ethereum-hdwallet v0.1.3 h1:RWHKLhCrQThMfch+QJ1Z8veEq5ZO3DfIhZ7xgRP9WTc= @@ -204,26 +201,27 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= -github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -258,9 +256,6 @@ github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2V github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -272,9 +267,7 @@ github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:x github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= @@ -284,14 +277,12 @@ github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXi github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 h1:k4Tw0nt6lwro3Uin8eqoET7MDA4JnT8YgbCjc/g5E3k= github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= -github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= -github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= 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= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -302,7 +293,6 @@ github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 h1:Ep/joEub9YwcjRY github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -378,6 +368,7 @@ github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= 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= @@ -499,8 +490,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= -github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= +github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= @@ -532,16 +523,16 @@ github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/prysmaticlabs/fastssz v0.0.0-20240620202422-a981b8ef89d3 h1:0LZAwwHnsZFfXm4IK4rzFV4N5IVSKZKLmuBMA4kAlFk= -github.com/prysmaticlabs/fastssz v0.0.0-20240620202422-a981b8ef89d3/go.mod h1:h2OlIZD/M6wFvV3YMZbW16lFgh3Rsye00G44J2cwLyU= +github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516 h1:xuVAdtz5ShYblG2sPyb4gw01DF8InbOI/kBCQjk7NiM= +github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516/go.mod h1:h2OlIZD/M6wFvV3YMZbW16lFgh3Rsye00G44J2cwLyU= github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e h1:ATgOe+abbzfx9kCPeXIW4fiWyDdxlwHw07j8UGhdTd4= github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e/go.mod h1:wmuf/mdK4VMD+jA9ThwcUKjg3a2XWM9cVfFYjDyY4j4= github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b h1:VK7thFOnhxAZ/5aolr5Os4beiubuD08WiuiHyRqgwks= github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b/go.mod h1:HRuvtXLZ4WkaB1MItToVH2e8ZwKwZPY5/Rcby+CvvLY= github.com/prysmaticlabs/protoc-gen-go-cast v0.0.0-20230228205207-28762a7b9294 h1:q9wE0ZZRdTUAAeyFP/w0SwBEnCqlVy2+on6X2/e+eAU= github.com/prysmaticlabs/protoc-gen-go-cast v0.0.0-20230228205207-28762a7b9294/go.mod h1:ZVEbRdnMkGhp/pu35zq4SXxtvUwWK0J1MATtekZpH2Y= -github.com/prysmaticlabs/prysm/v5 v5.1.0 h1:TY9A6tm0v7bI1z9YH+xkDh7XH7qm4ZK8sTeyckxbj4A= -github.com/prysmaticlabs/prysm/v5 v5.1.0/go.mod h1:SWb5kE/FhtQrLS2yt+IDj+leB7IhXrcOv6lhDnU1nBY= +github.com/prysmaticlabs/prysm/v5 v5.1.2 h1:ib9D7Drh7QPoetJPnYXAHaArmjIreXPZ0FboW9EMzT8= +github.com/prysmaticlabs/prysm/v5 v5.1.2/go.mod h1:ykj3Bl9dHv35cC7fRw6Cd1aCd9l+eNvInHY6gsPbEig= github.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw= github.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= @@ -550,8 +541,8 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -626,8 +617,6 @@ github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= -github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= @@ -651,22 +640,22 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= +go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= +go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4= +go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= -go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= +go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= +go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= +go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= +go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= +go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -715,7 +704,6 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226101413-39120d07d75e/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= @@ -830,34 +818,26 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T 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/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.44.0 h1:URs6qR1lAxDsqWITsQXI4ZkGiYJ5dHtRNiCpfs2OeKA= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= @@ -914,18 +894,18 @@ gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.26.2 h1:dM3cinp3PGB6asOySalOZxEG4CZ0IAdJsrYZXE/ovGQ= -k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= -k8s.io/apimachinery v0.26.2 h1:da1u3D5wfR5u2RpLhE/ZtZS2P7QvDgLZTi9wrNZl/tQ= -k8s.io/apimachinery v0.26.2/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= -k8s.io/client-go v0.26.2 h1:s1WkVujHX3kTp4Zn4yGNFK+dlDXy1bAAkIl+cFAiuYI= -k8s.io/client-go v0.26.2/go.mod h1:u5EjOuSyBa09yqqyY7m3abZeovO/7D/WehVVlZ2qcqU= -k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= -k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= -k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= -k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 h1:kmDqav+P+/5e1i9tFfHq1qcF3sOrDp+YEkVDAHu7Jwk= -k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/api v0.30.4 h1:XASIELmW8w8q0i1Y4124LqPoWMycLjyQti/fdYHYjCs= +k8s.io/api v0.30.4/go.mod h1:ZqniWRKu7WIeLijbbzetF4U9qZ03cg5IRwl8YVs8mX0= +k8s.io/apimachinery v0.30.4 h1:5QHQI2tInzr8LsT4kU/2+fSeibH1eIHswNx480cqIoY= +k8s.io/apimachinery v0.30.4/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= +k8s.io/client-go v0.30.4 h1:eculUe+HPQoPbixfwmaSZGsKcOf7D288tH6hDAdd+wY= +k8s.io/client-go v0.30.4/go.mod h1:IBS0R/Mt0LHkNHF4E6n+SUDPG7+m2po6RZU7YHeOpzc= +k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= +k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4= modernc.org/libc v1.41.0 h1:g9YAc6BkKlgORsUWj+JwqoB1wU3o4DE3bM3yvA3k+Gk= @@ -942,9 +922,9 @@ modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= -sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= -sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From 9da849989249072e3a03e611b9c08b00295cf42c Mon Sep 17 00:00:00 2001 From: David Date: Thu, 14 Nov 2024 23:34:28 +0900 Subject: [PATCH 180/205] docs(protocol): update mainnet deployment docs (#18482) --- .../layer1/mainnet/addrcache/RollupAddressCache.sol | 2 +- .../protocol/deployments/mainnet-contract-logs-L1.md | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol index d299485add7..3f92804e7e3 100644 --- a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol +++ b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol @@ -37,7 +37,7 @@ contract RollupAddressCache is AddressCache { return (true, 0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a); } if (_name == LibStrings.B_TIER_ROUTER) { - return (true, 0x1c02D13312B274648639630022C79d9F050f34e3); + return (true, 0x394E30d83d020469a1F8b16E89D7fD5FdB1935b0); } if (_name == LibStrings.B_TIER_SGX) { return (true, 0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81); diff --git a/packages/protocol/deployments/mainnet-contract-logs-L1.md b/packages/protocol/deployments/mainnet-contract-logs-L1.md index e8e680ab9ef..e084844b82d 100644 --- a/packages/protocol/deployments/mainnet-contract-logs-L1.md +++ b/packages/protocol/deployments/mainnet-contract-logs-L1.md @@ -175,14 +175,14 @@ - ens: `ram.based.taiko.eth` - proxy: `0x579f40D0BE111b823962043702cabe6Aaa290780` -- impl: `0x6D8e6e1a061791AD17A55De5e15a111c58f6Fb3D` +- impl: `0x52CA3c5566d779b3c6bb5c4f760Ea39E294Fc788` - names: - bond_token: `0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800` - taiko_token: `0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800` - signal_service: `0x9e0a24964e5397B566c1ed39258e21aB5E35C77C` - bridge: `0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC` - taiko: `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a` - - tier_router: `0x1c02D13312B274648639630022C79d9F050f34e3` + - tier_router: `0x394E30d83d020469a1F8b16E89D7fD5FdB1935b0` - tier_sgx: `0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81` - risc0_groth16_verifier: `0xcF706D99C265fC2349AE43c5f6BFD7931FE5308D` - tier_zkvm_risc0: `0x55902b2D3DF2A65370A89C86Ae9dd71Ecd508edc` @@ -216,12 +216,13 @@ - upgraded from `0x4f6D5D3109C07E77035B410602996e445b18E8E9` to `0x3202Fc255aE09F91DbbD5b000b87dA4A2E04eE37` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` - upgraded from `0x3202Fc255aE09F91DbbD5b000b87dA4A2E04eE37` to `0x190D5d50D98D2202a618f75B2fD9986e60E096be` @commit`4fd7b59` @tx`0xf26d0526aa4b8225c603720ce0dc016803188b959c50677d5446087d1f2c4e60` - upgraded from `0x190D5d50D98D2202a618f75B2fD9986e60E096be` to `0x6D8e6e1a061791AD17A55De5e15a111c58f6Fb3D` @commit`2625c60` @tx`0x5d46840df79d8df508880675e7ea549e9b46137f597ca520c3e0c979439441d1` + - upgraded from `0x6D8e6e1a061791AD17A55De5e15a111c58f6Fb3D` to `0x52CA3c5566d779b3c6bb5c4f760Ea39E294Fc788` @commit`9ae9a5e` @tx`0x43353a74df973d8f6a379b5c8815ac80935a5099f8ab93a4aa204eb5ef2c663e` #### taikoL1 - ens: `based.taiko.eth` - proxy: `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a` -- impl: `0xA3E75eDA1Be2114816f388A5cF53EbA142DCDB17` +- impl: `0xe7c4B445D3C7C8E4D68afb85A068F9fAa18e9A5B` - owner: `admin.taiko.eth` - logs: - deployed on May 1, 2024 @commit`56dddf2b6` @@ -241,15 +242,17 @@ - Upgrade to `0xf0E6d34937701622cA887a75c150cC23d4FFDf2F` @commit`b4f8547` @tx`0x8778064404816273804d74c97b051f3865bc03062cfa4b0e9567f4556ad31981` - Upgrade to `0x4229d14F520848aa83760Cf748abEB8A69cdaB2d` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd` - Upgrade to `0xA3E75eDA1Be2114816f388A5cF53EbA142DCDB17` @commit`ea0158f` @tx`0x78ca7c7d9c7e5aa9c5e6ab80e0229289a8d3bc8df2c2b9ba6baa74a0f60a0703` + - Upgrade to `0xe7c4B445D3C7C8E4D68afb85A068F9fAa18e9A5B` @commit`ea0158f` with new `RollupAddressManagerCache` @commit `9ae9a5e` @tx`0x5eb57ab352b3e3c1ddbc3fe468d582901b88c6a137ce49b0d70857d5218d626d` #### tier_router -- impl: `0x6Cc40878Fef0918b1dCBF4cfbC6F7E46e9Db269E` +- impl: `0x394E30d83d020469a1F8b16E89D7fD5FdB1935b0` - logs: - deployed on Oct 24, 2024 @commit`7334b1d` - deployed on Nov 1, 2024 @commit`f4f4796` - deployed on Nov 2, 2024 @commit`9182fba` - deployed on Nov 8, 2024 @commit`1fee7bb` without changes in [PR #18371](https://github.com/taikoxyz/taiko-mono/pull/18371) + - deployed on Nov 10, 2024 @commit`f24a908` without changes in [PR #18371](https://github.com/taikoxyz/taiko-mono/pull/18371) #### tier_sgx From e756e30f226b5200b1f6e66cff3a97e72c9ff958 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:37:06 +0800 Subject: [PATCH 181/205] build(deps): bump github.com/go-resty/resty/v2 from 2.15.3 to 2.16.0 (#18492) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 21b86eee639..f9b04d320d8 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/ethereum/go-ethereum v1.14.11 github.com/ethereum/hive v0.0.0-20240822135954-91829ccfb2c5 github.com/go-git/go-git/v5 v5.12.0 - github.com/go-resty/resty/v2 v2.15.3 + github.com/go-resty/resty/v2 v2.16.0 github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 github.com/google/uuid v1.6.0 github.com/joho/godotenv v1.5.1 diff --git a/go.sum b/go.sum index 0ecbdfa9877..f8510d8d761 100644 --- a/go.sum +++ b/go.sum @@ -234,8 +234,8 @@ github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91 github.com/go-playground/validator/v10 v10.4.0/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-playground/validator/v10 v10.13.0 h1:cFRQdfaSMCOSfGCCLB20MHvuoHb/s5G8L5pu2ppK5AQ= github.com/go-playground/validator/v10 v10.13.0/go.mod h1:dwu7+CG8/CtBiJFZDz4e+5Upb6OLw04gtBYw0mcG/z4= -github.com/go-resty/resty/v2 v2.15.3 h1:bqff+hcqAflpiF591hhJzNdkRsFhlB96CYfBwSFvql8= -github.com/go-resty/resty/v2 v2.15.3/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU= +github.com/go-resty/resty/v2 v2.16.0 h1:qpKalHWI2bpp9BIKlyT8TYWEJXOk1NuKbfiT3RRnzWc= +github.com/go-resty/resty/v2 v2.16.0/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= From 6794f1279aefc5c9cb7c8c23d6790f100168a19d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:38:19 +0800 Subject: [PATCH 182/205] build(deps): bump github.com/buildkite/terminal-to-html/v3 from 3.16.3 to 3.16.4 (#18493) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f9b04d320d8..0895b44c6ac 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.23 require ( github.com/btcsuite/btcd/btcec/v2 v2.3.4 - github.com/buildkite/terminal-to-html/v3 v3.16.3 + github.com/buildkite/terminal-to-html/v3 v3.16.4 github.com/cenkalti/backoff v2.2.1+incompatible github.com/cenkalti/backoff/v4 v4.3.0 github.com/cyberhorsey/errors v0.0.0-20220929234051-087d6d8bb841 diff --git a/go.sum b/go.sum index f8510d8d761..d71b5c77803 100644 --- a/go.sum +++ b/go.sum @@ -69,8 +69,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/buildkite/terminal-to-html/v3 v3.16.3 h1:IGuJjboHjuMLWOGsKZKNxbbn41emOLiHzXPmQZk31fk= -github.com/buildkite/terminal-to-html/v3 v3.16.3/go.mod h1:r/J7cC9c3EzBzP3/wDz0RJLPwv5PUAMp+KF2w+ntMc0= +github.com/buildkite/terminal-to-html/v3 v3.16.4 h1:QFYO8IGvRnp7tGgiQb8g9uFU8kY9wOzxsFFx17+yy6Q= +github.com/buildkite/terminal-to-html/v3 v3.16.4/go.mod h1:r/J7cC9c3EzBzP3/wDz0RJLPwv5PUAMp+KF2w+ntMc0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= From 73ba72e27586119f269a2c6baf29b6386fcf352c Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Sun, 17 Nov 2024 18:31:39 -0800 Subject: [PATCH 183/205] chore(docs-site): update tier router address (#18495) --- .../src/content/docs/network-reference/mainnet-addresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md b/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md index 51235a9f596..4e3bab65088 100644 --- a/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md +++ b/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md @@ -23,7 +23,7 @@ description: Network reference page describing various important addresses on Ta | ------------------------------- | -------------------------------------------- | -------------------------- | | TaikoL1 | `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a` | based.taiko.eth | | RollupAddressManager | `0x579f40D0BE111b823962043702cabe6Aaa290780` | ram.based.taiko.eth | -| TierRouter | `0x8f1C1D58C858e9a9eeCc587d7D51AECfd16b5542` | N/A | +| TierRouter | `0x394E30d83d020469a1F8b16E89D7fD5FdB1935b0` | N/A | | GuardianProver | `0xE3D777143Ea25A6E031d1e921F396750885f43aC` | guardians.based.taiko.eth | | GuardianProverMinority | `0x579A8d63a2Db646284CBFE31FE5082c9989E985c` | guardians1.based.taiko.eth | | AssignmentHook | `0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6` | N/A | From 81c4054b8fdf2a6d7a8a7fa9ba3a9b59e6aee2b7 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Sun, 17 Nov 2024 18:57:02 -0800 Subject: [PATCH 184/205] chore(main): release docs-site 1.17.1 (#18496) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 7 +++++++ packages/docs-site/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d2a73a3f26c..b5a6d715aa0 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.17.0", + "packages/docs-site": "1.17.1", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index d4f5a79cae6..58fff74f43a 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.17.1](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.17.0...docs-site-v1.17.1) (2024-11-18) + + +### Chores + +* **docs-site:** update tier router address ([#18495](https://github.com/taikoxyz/taiko-mono/issues/18495)) ([73ba72e](https://github.com/taikoxyz/taiko-mono/commit/73ba72e27586119f269a2c6baf29b6386fcf352c)) + ## [1.17.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.16.0...docs-site-v1.17.0) (2024-11-12) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index e88e2a66ab7..51e418d0de0 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.17.0", + "version": "1.17.1", "scripts": { "dev": "astro dev", "start": "astro dev", From e36e0e031d5b366b6eb92f8886d6cb0493d5dcde Mon Sep 17 00:00:00 2001 From: Donny <130464015+defitricks@users.noreply.github.com> Date: Fri, 22 Nov 2024 05:32:46 +0200 Subject: [PATCH 185/205] docs(balance-monitor): fix typo Update main.go (#18502) --- packages/balance-monitor/cmd/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/balance-monitor/cmd/main.go b/packages/balance-monitor/cmd/main.go index 7f01d6d1672..7dc4ba8b049 100644 --- a/packages/balance-monitor/cmd/main.go +++ b/packages/balance-monitor/cmd/main.go @@ -31,7 +31,7 @@ func main() { { Name: "balance-monitor", Flags: flags.CommonFlags, - Usage: "Starts the balance monitor oftware", + Usage: "Starts the balance monitor software", Description: "Taiko balance monitor", Action: utils.SubcommandAction(new(balanceMonitor.BalanceMonitor)), }, From 61994ffefcf29981beb567b84a3a55706300cf13 Mon Sep 17 00:00:00 2001 From: Hopium <135053852+Hopium21@users.noreply.github.com> Date: Fri, 22 Nov 2024 04:33:12 +0100 Subject: [PATCH 186/205] docs(repo): improve grammar and readability (#18501) --- packages/fork-diff/README.md | 2 +- .../protocol/contracts/layer1/automata-attestation/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/fork-diff/README.md b/packages/fork-diff/README.md index 184fe759e2e..28395f2a994 100644 --- a/packages/fork-diff/README.md +++ b/packages/fork-diff/README.md @@ -29,4 +29,4 @@ There is a workflow dispatch you can use to manually trigger a preview or produc > It is possible that state expiry might be unnecessary in a world where Verkle Tries succeed at their goals. -can anyone explain this like im 5. i dont even know what a verkle trie is outside of ppl saying merkle tries r annoying and these r better. +Can anyone explain this like I'm 5? I don't even know what a Verkle Trie is outside of people saying Merkle Tries are annoying and these are better. diff --git a/packages/protocol/contracts/layer1/automata-attestation/README.md b/packages/protocol/contracts/layer1/automata-attestation/README.md index 13f897ca957..473a73033de 100644 --- a/packages/protocol/contracts/layer1/automata-attestation/README.md +++ b/packages/protocol/contracts/layer1/automata-attestation/README.md @@ -1,4 +1,4 @@ # Readme -Original code (main branch) forked from https://github.com/automata-network/automata-dcap-v3-attestation and applied some gas optimizations here: https://github.com/smtmfft/automata-dcap-v3-attestation/tree/parse-quote-offline, which then got merged into taiko-mono. +Original code (main branch) forked from https://github.com/automata-network/automata-dcap-v3-attestation and applying some gas optimizations here: https://github.com/smtmfft/automata-dcap-v3-attestation/tree/parse-quote-offline, which then was merged into taiko-mono. The corresponding upstream PR is: https://github.com/automata-network/automata-dcap-v3-attestation/pull/6, waiting to be merged. From d998291fdb074c17b09da291553cc05456503852 Mon Sep 17 00:00:00 2001 From: xiaodino Date: Sun, 24 Nov 2024 16:25:12 -0800 Subject: [PATCH 187/205] feat(repo): add geth-rpc-gateway (#18382) --- packages/geth-rpc-gateway/.gitignore | 1 + packages/geth-rpc-gateway/README.md | 73 +++++++ packages/geth-rpc-gateway/main.go | 314 +++++++++++++++++++++++++++ 3 files changed, 388 insertions(+) create mode 100644 packages/geth-rpc-gateway/.gitignore create mode 100644 packages/geth-rpc-gateway/README.md create mode 100644 packages/geth-rpc-gateway/main.go diff --git a/packages/geth-rpc-gateway/.gitignore b/packages/geth-rpc-gateway/.gitignore new file mode 100644 index 00000000000..bea9f5fa1f3 --- /dev/null +++ b/packages/geth-rpc-gateway/.gitignore @@ -0,0 +1 @@ +geth-rpc-gateway \ No newline at end of file diff --git a/packages/geth-rpc-gateway/README.md b/packages/geth-rpc-gateway/README.md new file mode 100644 index 00000000000..2ae0fdc9bb1 --- /dev/null +++ b/packages/geth-rpc-gateway/README.md @@ -0,0 +1,73 @@ +# geth-rpc-gateway + +```sh +go build -o geth-rpc-gateway . +``` + +Build for Linux + +```sh +GOOS=linux GOARCH=amd64 go build -o geth-rpc-gateway . +``` + +## How to test + +### Example code + +``` +curl --location --request POST 'https://rpc.internal.taiko.xyz/' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "jsonrpc": "2.0", + "id": 4, + "method": "eth_blockNumber", + "params": [ + ] +}' +``` + +``` +'use strict' +const { ethers } = require('ethers'); + +// const provider = new ethers.providers.JsonRpcProvider("https://l1rpc.mainnet.taiko.xyz"); + +const provider = new ethers.providers.WebSocketProvider("wss://ws.internal.taiko.xyz"); + +async function main() { + console.log(await provider.getBlock("latest")); + process.exit(0); +} + +main().catch(console.error); +``` + +``` +curl -i -X POST \ + -H "Content-Type:application/json" \ + -d \ +'[ + {"id":92471,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x832ef3260c46288e9596d0ddb61c4c9d5965f7da8d076483d08ac2d4265a69b8"]}, + {"id":91112,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xbaac413b4cbf6a2f19ef3da2f103f8298042cbba2820fba020a322f9602f8e58"]}, + {"id":48734,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x7c649da4df9bea4552c05d4710a1ffb16fed5be81c11912aceb568a8212213d6"]}, + {"id":45180,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xb23f58cb6b5155f792fa96c63962c44efba5280a4eed76400eca477e04c7456c"]}, + {"id":95408,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xab7e06e9666ba0c270fe06e45fe604316049232c4479f975db0a0ec16b4f9b38"]}, + {"id":193,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xd453488f5e14cfb3ac1057e42c1e3eb74420759fe0331894c59f3108e1c813b0"]} +]' \ + 'https://rpc.hekla.taiko.xyz/' +``` + +``` +curl -i -X POST \ + -H "Content-Type:application/json" \ + -d \ +'[ + {"id":92471,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x832ef3260c46288e9596d0ddb61c4c9d5965f7da8d076483d08ac2d4265a69b8"]}, + {"id":91112,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xbaac413b4cbf6a2f19ef3da2f103f8298042cbba2820fba020a322f9602f8e58"]}, + {"id":48734,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x7c649da4df9bea4552c05d4710a1ffb16fed5be81c11912aceb568a8212213d6"]}, + {"id":45180,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xb23f58cb6b5155f792fa96c63962c44efba5280a4eed76400eca477e04c7456c"]}, + {"id":95408,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xab7e06e9666ba0c270fe06e45fe604316049232c4479f975db0a0ec16b4f9b38"]}, + {"id":193,"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xd453488f5e14cfb3ac1057e42c1e3eb74420759fe0331894c59f3108e1c813b0"]} +]' \ + 'http://localhost:8080' +``` diff --git a/packages/geth-rpc-gateway/main.go b/packages/geth-rpc-gateway/main.go new file mode 100644 index 00000000000..f82fef07b8c --- /dev/null +++ b/packages/geth-rpc-gateway/main.go @@ -0,0 +1,314 @@ +package main + +import ( + "bytes" + "encoding/json" + "io" + "io/ioutil" + "log" + "net/http" + "net/url" + "os" + "strings" + + "github.com/gorilla/websocket" +) + +type JSONRPCRequest struct { + Method string `json:"method"` +} + +var ( + upgrader = websocket.Upgrader{CheckOrigin: func(r *http.Request) bool { return true }} + methodsUsingPrimary map[string]bool + primaryURL *url.URL + secondaryURL *url.URL + webSocketURL *url.URL + enableDebugEndpoints bool +) + +func main() { + // Load the target URLs from environment variables + var err error + primaryURL, err = url.Parse(os.Getenv("TARGET_URL_PRIMARY")) + if err != nil || primaryURL == nil { + log.Fatalf("Failed to parse primary target URL: %v", err) + } + secondaryURL, err = url.Parse(os.Getenv("TARGET_URL_SECONDARY")) + if err != nil || secondaryURL == nil { + log.Fatalf("Failed to parse secondary target URL: %v", err) + } + webSocketURL, err = url.Parse(os.Getenv("WEBSOCKET_TARGET_URL")) + if err != nil || webSocketURL == nil { + log.Fatalf("Failed to parse WebSocket target URL: %v", err) + } + + methodsUsingPrimary = parsePrimaryMethods(os.Getenv("PRIMARY_METHODS")) + enableDebugEndpoints = os.Getenv("ENABLE_DEBUG_ENDPOINTS") == "true" + + http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { + log.Printf("/healthz Received request: Method=%s, Path=%s", r.Method, r.URL.Path) + w.WriteHeader(http.StatusOK) + w.Write([]byte("OK")) + }) + + // Determine if server should handle WebSocket or RPC based on environment variable + if os.Getenv("IS_WEBSOCKET") == "true" { + log.Println("Starting in WebSocket mode") + http.HandleFunc("/", rootWebSocketHandler) // WebSocket handler without CORS + } else { + log.Println("Starting in RPC mode") + http.Handle("/", enableCORS(http.HandlerFunc(rootHandler))) // HTTP handler with CORS middleware + } + + log.Fatal(http.ListenAndServe(":8080", nil)) +} + +// WebSocket handler for `/` path when in WebSocket mode +func rootWebSocketHandler(w http.ResponseWriter, r *http.Request) { + // Check for WebSocket Upgrade + if strings.ToLower(r.Header.Get("Upgrade")) == "websocket" { + log.Printf("WebSocket connection initiated...") + handleWebSocket(w, r, webSocketURL) + return + } + + w.WriteHeader(http.StatusOK) + w.Write([]byte("OK")) +} + +// CORS middleware to enable CORS headers +func enableCORS(next http.Handler) http.Handler { + log.Printf("enableCORS") + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + log.Printf("CORS middleware invoked for %s %s", r.Method, r.URL.Path) + + // Get the Origin header from the request + origin := r.Header.Get("Origin") + + // Set Access-Control-Allow-Origin only if the request has an Origin header + if origin != "" { + log.Printf("CORS middleware invoked for origin %s", origin) + w.Header().Del("Access-Control-Allow-Origin") // Clear any existing header + w.Header().Set("Access-Control-Allow-Origin", origin) + w.Header().Set("Vary", "Origin") // Ensure caching based on origin + } + + w.Header().Set("Access-Control-Allow-Methods", r.Method) + w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization") + + w.WriteHeader(http.StatusOK) + + next.ServeHTTP(w, r) + }) +} + +func rootHandler(w http.ResponseWriter, r *http.Request) { + log.Printf("rootHandler...") + + // Check for WebSocket Upgrade + if strings.ToLower(r.Header.Get("Upgrade")) == "websocket" { + handleWebSocket(w, r, webSocketURL) + return + } + + // Handle HTTP requests + + bodyBytes, err := ioutil.ReadAll(r.Body) + + log.Printf("Handle HTTP requests...") + if err != nil { + log.Printf("Error") + + http.Error(w, "Failed to read request body", http.StatusBadRequest) + return + } + defer r.Body.Close() + + if len(bodyBytes) == 0 { + w.Write([]byte("OK")) + return + } + + // Determine the target URL and extract methods + usePrimaryURL, methods := shouldUsePrimaryURL(bodyBytes) + var targetURL *url.URL + if usePrimaryURL { + targetURL = primaryURL + log.Printf("HTTP request hitting TARGET_URL_PRIMARY") + } else { + targetURL = secondaryURL + log.Printf("HTTP request hitting TARGET_URL_SECONDARY") + } + + // Check each method for debug restrictions + for _, method := range methods { + if enableDebugEndpoints && isDebugMethod(method) && method != "debug_traceBlock" && method != "debug_traceBlockByNumber" { + http.Error(w, "Unsupported method", http.StatusBadRequest) + return + } + } + + // Forward the original JSON payload as-is to the target URL + forwardRequest(w, r, targetURL, bodyBytes) +} + +// Function to forward the request to the target URL +func forwardRequest(w http.ResponseWriter, r *http.Request, targetURL *url.URL, bodyBytes []byte) { + + proxyReq, err := http.NewRequest(r.Method, targetURL.String()+r.RequestURI, ioutil.NopCloser(bytes.NewReader(bodyBytes))) + if err != nil { + http.Error(w, "Failed to create request", http.StatusInternalServerError) + return + } + + // Copy headers from the original request, excluding Accept-Encoding + for name, values := range r.Header { + log.Printf("proxy req name %s, value %s", name, values) + if name == "Accept-Encoding" { + continue + } + for _, value := range values { + proxyReq.Header.Add(name, value) + } + } + + // Send the request to the target URL + resp, err := http.DefaultClient.Do(proxyReq) + if err != nil { + http.Error(w, "Failed to reach target server", http.StatusInternalServerError) + return + } + defer resp.Body.Close() + + // Log headers before setting them to diagnose any discrepancies + log.Printf("Received Content-Type from upstream: %s", resp.Header.Get("Content-Type")) + + // Prepare to copy headers from the response + for name, values := range resp.Header { + log.Printf("response name %s, value %s", name, values) + switch name { + case "Content-Length", "Transfer-Encoding", "Connection": + // Skip these headers + continue + default: + for _, value := range values { + w.Header().Add(name, value) + } + } + } + + // Explicitly set Content-Type if it's present in the response + if contentType := resp.Header.Get("Content-Type"); contentType != "" { + w.Header().Set("Content-Type", contentType) + } else { + w.Header().Set("Content-Type", "application/json") // default if not provided + } + log.Printf("Set Content-Type header: %s", w.Header().Get("Content-Type")) + + // Read the response body into a buffer to set Content-Type explicitly + var buf bytes.Buffer + if _, err := io.Copy(&buf, resp.Body); err != nil { + log.Printf("Error reading response body into buffer: %v", err) + http.Error(w, "Failed to read response body", http.StatusInternalServerError) + return + } + + // Write status code and ensure Content-Type is set + w.WriteHeader(resp.StatusCode) + log.Printf("Response status code: %d", resp.StatusCode) + log.Printf("Final Content-Type header: %s", w.Header().Get("Content-Type")) + + // Write the buffered body to the response + if _, err := io.Copy(w, &buf); err != nil { + log.Printf("Error copying buffer to response: %v", err) + } +} + +func isDebugMethod(method string) bool { + return len(method) >= 6 && method[:6] == "debug_" && method != "debug_traceBlock" +} + +// Parses the PRIMARY_METHODS environment variable and returns a map of methods using the primary URL +func parsePrimaryMethods(methods string) map[string]bool { + methodMap := make(map[string]bool) + for _, method := range strings.Split(methods, ",") { + method = strings.TrimSpace(method) + if method != "" { + methodMap[method] = true + } + } + return methodMap +} + +// Checks if any method should use the primary URL and returns all methods +func shouldUsePrimaryURL(bodyBytes []byte) (bool, []string) { + var singleRequest JSONRPCRequest + var multipleRequests []JSONRPCRequest + methods := []string{} + + // Try unmarshalling as a single request + if err := json.Unmarshal(bodyBytes, &singleRequest); err == nil { + methods = append(methods, singleRequest.Method) + return methodsUsingPrimary[singleRequest.Method], methods + } + + // Try unmarshalling as an array of requests + if err := json.Unmarshal(bodyBytes, &multipleRequests); err == nil { + usePrimary := false + for _, req := range multipleRequests { + methods = append(methods, req.Method) + if methodsUsingPrimary[req.Method] { + usePrimary = true + } + } + return usePrimary, methods + } + + log.Printf("Invalid JSON in request body: unable to parse as single or multiple requests") + return false, methods // Default to secondary URL if JSON is invalid +} + +func handleWebSocket(w http.ResponseWriter, r *http.Request, targetURL *url.URL) { + clientConn, err := upgrader.Upgrade(w, r, nil) + if err != nil { + log.Printf("Failed to upgrade connection: %v", err) + http.Error(w, "Failed to upgrade to WebSocket", http.StatusInternalServerError) + return + } + defer clientConn.Close() + + targetConn, _, err := websocket.DefaultDialer.Dial(targetURL.String(), nil) + if err != nil { + log.Printf("Failed to connect to target WebSocket server: %v", err) + http.Error(w, "Failed to connect to target WebSocket server", http.StatusInternalServerError) + return + } + defer targetConn.Close() + + go func() { + for { + messageType, message, err := clientConn.ReadMessage() + if err != nil { + log.Printf("Error reading message from client: %v", err) + return + } + if err := targetConn.WriteMessage(messageType, message); err != nil { + log.Printf("Error writing message to target server: %v", err) + return + } + } + }() + + for { + messageType, message, err := targetConn.ReadMessage() + if err != nil { + log.Printf("Error reading message from target server: %v", err) + return + } + if err := clientConn.WriteMessage(messageType, message); err != nil { + log.Printf("Error writing message to client: %v", err) + return + } + } +} From a0c622ecbc7eea4907f8149f576db3ff0d09e031 Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Sun, 24 Nov 2024 17:59:53 -0800 Subject: [PATCH 188/205] fix(relayer): temp fix if `txSender` is not available for `txIndex` when processing events (#18513) --- packages/relayer/pkg/http/get_events_by_address.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/relayer/pkg/http/get_events_by_address.go b/packages/relayer/pkg/http/get_events_by_address.go index 4affe3826f7..c0cbdf6aa98 100644 --- a/packages/relayer/pkg/http/get_events_by_address.go +++ b/packages/relayer/pkg/http/get_events_by_address.go @@ -163,12 +163,10 @@ func (srv *Server) GetEventsByAddress(c echo.Context) error { common.HexToHash(r.Raw.BlockHash), uint(txIndex), ) - if err != nil { - return webutils.LogAndRenderErrors(c, http.StatusUnprocessableEntity, err) + if err == nil { + v.ClaimedBy = sender.Hex() } - v.ClaimedBy = sender.Hex() - v.ProcessedTxHash = r.Raw.TransactionHash } From a43f963aa46875a93ec2435bd1d630f46eea1263 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 10:00:50 +0800 Subject: [PATCH 189/205] build(deps): bump github.com/pressly/goose/v3 from 3.20.0 to 3.23.0 (#18509) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 +++++++------- go.sum | 58 ++++++++++++++++++++++++++++++---------------------------- 2 files changed, 37 insertions(+), 35 deletions(-) diff --git a/go.mod b/go.mod index 0895b44c6ac..e941dc84aa4 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 - github.com/pressly/goose/v3 v3.20.0 + github.com/pressly/goose/v3 v3.23.0 github.com/prometheus/client_golang v1.20.5 github.com/prysmaticlabs/prysm/v5 v5.1.2 github.com/rabbitmq/amqp091-go v1.10.0 @@ -56,7 +56,7 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/VictoriaMetrics/fastcache v1.12.2 // indirect - github.com/andybalholm/brotli v1.1.0 // indirect + github.com/andybalholm/brotli v1.1.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.13.0 // indirect @@ -182,7 +182,7 @@ require ( github.com/rs/cors v1.11.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/sethvargo/go-retry v0.2.4 // indirect + github.com/sethvargo/go-retry v0.3.0 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect github.com/shirou/gopsutil/v3 v3.23.12 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect @@ -205,13 +205,13 @@ require ( go.opentelemetry.io/otel/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.27.0 // indirect + golang.org/x/crypto v0.28.0 // indirect golang.org/x/mod v0.20.0 // indirect - golang.org/x/net v0.28.0 // indirect + golang.org/x/net v0.30.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sys v0.26.0 // indirect - golang.org/x/term v0.24.0 // indirect - golang.org/x/text v0.18.0 // indirect + golang.org/x/term v0.25.0 // indirect + golang.org/x/text v0.19.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect diff --git a/go.sum b/go.sum index d71b5c77803..e878e5f3339 100644 --- a/go.sum +++ b/go.sum @@ -29,8 +29,8 @@ github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKS github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= -github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= -github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= +github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= @@ -330,12 +330,12 @@ github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47 github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 h1:L0QtFUgDarD7Fpv9jeVMgy/+Ec0mtnmYuImjTz6dtDA= -github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.5.5 h1:amBjrZVmksIdNjxGW/IiIMzxMKZFelXbUoPNb+8sjQw= -github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A= -github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= -github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.7.1 h1:x7SYsPBYDkHDksogeSmZZ5xzThcTgRz++I5E+ePFUcs= +github.com/jackc/pgx/v5 v5.7.1/go.mod h1:e7O26IywZZ+naJtWWos6i6fvWK+29etgITqrqHLfoZA= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -426,8 +426,8 @@ github.com/mfridman/interpolate v0.0.2/go.mod h1:p+7uk6oE07mpE/Ik1b8EckO0O4ZXiGA github.com/microcosm-cc/bluemonday v1.0.4/go.mod h1:8iwZnFn2CDDNZ0r6UXhF4xawGvzaqzCRa1n3/lO3W2w= github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58= github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs= -github.com/microsoft/go-mssqldb v1.7.0 h1:sgMPW0HA6Ihd37Yx0MzHyKD726C2kY/8KJsQtXHNaAs= -github.com/microsoft/go-mssqldb v1.7.0/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA= +github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP3b/PA= +github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= @@ -512,8 +512,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/pressly/goose/v3 v3.20.0 h1:uPJdOxF/Ipj7ABVNOAMJXSxwFXZGwMGHNqjC8e61VA0= -github.com/pressly/goose/v3 v3.20.0/go.mod h1:BRfF2GcG4FTG12QfdBVy3q1yveaf4ckL9vWwEcIO3lA= +github.com/pressly/goose/v3 v3.23.0 h1:57hqKos8izGek4v6D5+OXBa+Y4Rq8MU//+MmnevdpVA= +github.com/pressly/goose/v3 v3.23.0/go.mod h1:rpx+D9GX/+stXmzKa+uh1DkjPnNVMdiOCV9iLdle4N8= github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -549,8 +549,8 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= -github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= -github.com/sethvargo/go-retry v0.2.4/go.mod h1:1afjQuvh7s4gflMObvjLPaWgluLLyhA1wmVZ6KLpICw= +github.com/sethvargo/go-retry v0.3.0 h1:EEt31A35QhrcRZtrYFDTBg91cqZVnFL2navjDrah2SE= +github.com/sethvargo/go-retry v0.3.0/go.mod h1:mNX17F0C/HguQMyMyJxcnU471gOZGxCLyYaFyAZraas= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= @@ -635,6 +635,8 @@ github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= +github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= +github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -677,8 +679,8 @@ golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= @@ -716,8 +718,8 @@ golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -785,8 +787,8 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= -golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -796,8 +798,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -908,14 +910,14 @@ k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSn k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4= -modernc.org/libc v1.41.0 h1:g9YAc6BkKlgORsUWj+JwqoB1wU3o4DE3bM3yvA3k+Gk= -modernc.org/libc v1.41.0/go.mod h1:w0eszPsiXoOnoMJgrXjglgLuDy/bt5RR4y3QzUUeodY= +modernc.org/libc v1.55.3 h1:AzcW1mhlPNrRtjS5sS+eW2ISCgSOLLNyFzRh/V3Qj/U= +modernc.org/libc v1.55.3/go.mod h1:qFXepLhz+JjFThQ4kzwzOjA/y/artDeg+pcYnY+Q83w= modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= -modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= -modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= -modernc.org/sqlite v1.29.6 h1:0lOXGrycJPptfHDuohfYgNqoe4hu+gYuN/pKgY5XjS4= -modernc.org/sqlite v1.29.6/go.mod h1:S02dvcmm7TnTRvGhv8IGYyLnIt7AS2KPaB1F/71p75U= +modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E= +modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU= +modernc.org/sqlite v1.34.1 h1:u3Yi6M0N8t9yKRDwhXcyp1eS5/ErhPTBggxWFuR6Hfk= +modernc.org/sqlite v1.34.1/go.mod h1:pXV2xHxhzXZsgT/RtTFAPY6JJDEvOTcTdwADQCCWD4k= modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= From 1a612cb07abd6b8f9be84258916634fbafb79139 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 10:01:31 +0800 Subject: [PATCH 190/205] build(deps): bump github.com/go-resty/resty/v2 from 2.16.0 to 2.16.2 (#18510) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e941dc84aa4..ab4e68d6a34 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/ethereum/go-ethereum v1.14.11 github.com/ethereum/hive v0.0.0-20240822135954-91829ccfb2c5 github.com/go-git/go-git/v5 v5.12.0 - github.com/go-resty/resty/v2 v2.16.0 + github.com/go-resty/resty/v2 v2.16.2 github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 github.com/google/uuid v1.6.0 github.com/joho/godotenv v1.5.1 diff --git a/go.sum b/go.sum index e878e5f3339..5b9cadeae8e 100644 --- a/go.sum +++ b/go.sum @@ -234,8 +234,8 @@ github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91 github.com/go-playground/validator/v10 v10.4.0/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-playground/validator/v10 v10.13.0 h1:cFRQdfaSMCOSfGCCLB20MHvuoHb/s5G8L5pu2ppK5AQ= github.com/go-playground/validator/v10 v10.13.0/go.mod h1:dwu7+CG8/CtBiJFZDz4e+5Upb6OLw04gtBYw0mcG/z4= -github.com/go-resty/resty/v2 v2.16.0 h1:qpKalHWI2bpp9BIKlyT8TYWEJXOk1NuKbfiT3RRnzWc= -github.com/go-resty/resty/v2 v2.16.0/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU= +github.com/go-resty/resty/v2 v2.16.2 h1:CpRqTjIzq/rweXUt9+GxzzQdlkqMdt8Lm/fuK/CAbAg= +github.com/go-resty/resty/v2 v2.16.2/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= From 63dec6695b3e330ba7bd69857743741d7608e2a4 Mon Sep 17 00:00:00 2001 From: maskpp Date: Mon, 25 Nov 2024 11:13:32 +0800 Subject: [PATCH 191/205] ci(repo): change to trigger hive test manually (#18514) --- .github/workflows/taiko-client--hive_test.yml | 2 +- packages/taiko-client/integration_test/hive_test.go | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/taiko-client--hive_test.yml b/.github/workflows/taiko-client--hive_test.yml index 33ecbac03c0..a1f9e944a35 100644 --- a/.github/workflows/taiko-client--hive_test.yml +++ b/.github/workflows/taiko-client--hive_test.yml @@ -12,7 +12,7 @@ on: jobs: hive_tests: - if: ${{ github.event.pull_request.draft == false && !startsWith(github.head_ref, 'release-please') }} + if: ${{ github.event.pull_request.draft == false && contains(github.event.pull_request.labels.*.name, 'option.hive-test') }} name: hive tests runs-on: [arc-runner-set] timeout-minutes: 40 diff --git a/packages/taiko-client/integration_test/hive_test.go b/packages/taiko-client/integration_test/hive_test.go index 0df80196797..24400119a7d 100644 --- a/packages/taiko-client/integration_test/hive_test.go +++ b/packages/taiko-client/integration_test/hive_test.go @@ -113,7 +113,6 @@ func testDenebReorg(t *testing.T, simPattern string, clientGroups [][]string) { handler, err := hivesim.NewHiveFramework(&hivesim.HiveConfig{ BuildOutput: false, ContainerOutput: true, - DockerPull: false, BaseDir: os.Getenv("HIVE_DIR"), SimPattern: "taiko", SimTestPattern: simPattern, From b67485732832fb90849179a7a8c8093f2228eb5a Mon Sep 17 00:00:00 2001 From: maskpp Date: Mon, 25 Nov 2024 15:49:34 +0800 Subject: [PATCH 192/205] refactor(taiko-client): move `utils` package from `internal/` to `pkg/` (#18516) --- packages/taiko-client/bindings/encoding/struct_test.go | 2 +- .../driver/anchor_tx_constructor/anchor_tx_constructor.go | 2 +- packages/taiko-client/driver/chain_syncer/blob/syncer.go | 5 ++--- .../taiko-client/driver/chain_syncer/blob/syncer_test.go | 2 +- packages/taiko-client/driver/state/state_test.go | 2 +- .../driver/txlist_decompressor/txlist_decompressor.go | 2 +- .../driver/txlist_decompressor/txlist_decompressor_test.go | 2 +- packages/taiko-client/internal/testutils/suite.go | 2 +- packages/taiko-client/pkg/rpc/methods.go | 5 ++--- packages/taiko-client/pkg/rpc/utils.go | 2 +- .../taiko-client/{internal => pkg}/utils/txmgr_selector.go | 0 .../{internal => pkg}/utils/txmgr_selector_test.go | 0 packages/taiko-client/{internal => pkg}/utils/util_test.go | 2 +- packages/taiko-client/{internal => pkg}/utils/utils.go | 0 packages/taiko-client/proposer/config.go | 5 ++--- packages/taiko-client/proposer/proposer.go | 2 +- packages/taiko-client/proposer/proposer_test.go | 2 +- packages/taiko-client/prover/config.go | 2 +- packages/taiko-client/prover/config_test.go | 2 +- packages/taiko-client/prover/event_handler/block_proposed.go | 2 +- .../prover/event_handler/transition_contested.go | 2 +- packages/taiko-client/prover/init.go | 2 +- .../prover/proof_submitter/transaction/sender.go | 2 +- 23 files changed, 23 insertions(+), 26 deletions(-) rename packages/taiko-client/{internal => pkg}/utils/txmgr_selector.go (100%) rename packages/taiko-client/{internal => pkg}/utils/txmgr_selector_test.go (100%) rename packages/taiko-client/{internal => pkg}/utils/util_test.go (93%) rename packages/taiko-client/{internal => pkg}/utils/utils.go (100%) diff --git a/packages/taiko-client/bindings/encoding/struct_test.go b/packages/taiko-client/bindings/encoding/struct_test.go index 8caf76b66ad..96763b69222 100644 --- a/packages/taiko-client/bindings/encoding/struct_test.go +++ b/packages/taiko-client/bindings/encoding/struct_test.go @@ -11,7 +11,7 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/stretchr/testify/require" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) var ( diff --git a/packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor.go b/packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor.go index 58289f50787..5bc43b1fd6a 100644 --- a/packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor.go +++ b/packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor.go @@ -15,8 +15,8 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/signer" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) // AnchorTxConstructor is responsible for assembling the anchor transaction (TaikoL2.anchor) in diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer.go b/packages/taiko-client/driver/chain_syncer/blob/syncer.go index 2abb04395d0..00c3dd4a1b4 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer.go @@ -8,8 +8,6 @@ import ( "net/url" "time" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" - "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/beacon/engine" @@ -20,12 +18,13 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/rlp" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/metadata" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" anchorTxConstructor "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/anchor_tx_constructor" txListDecompressor "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/txlist_decompressor" diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go index 2c622d88dda..55492b03e19 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go @@ -19,10 +19,10 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/config" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" ) diff --git a/packages/taiko-client/driver/state/state_test.go b/packages/taiko-client/driver/state/state_test.go index f7ac90f2243..a54a726ab39 100644 --- a/packages/taiko-client/driver/state/state_test.go +++ b/packages/taiko-client/driver/state/state_test.go @@ -9,7 +9,7 @@ import ( "github.com/stretchr/testify/suite" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) type DriverStateTestSuite struct { diff --git a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go index 1edd4158557..28e098b9932 100644 --- a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go +++ b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go @@ -8,7 +8,7 @@ import ( "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) // TxListDecompressor is responsible for validating and decompressing diff --git a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go index 071ea04a0ec..e93ccdd8d30 100644 --- a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go +++ b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go @@ -14,8 +14,8 @@ import ( "github.com/stretchr/testify/suite" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) var ( diff --git a/packages/taiko-client/internal/testutils/suite.go b/packages/taiko-client/internal/testutils/suite.go index bb6eaf8886c..b5cce9d0383 100644 --- a/packages/taiko-client/internal/testutils/suite.go +++ b/packages/taiko-client/internal/testutils/suite.go @@ -3,6 +3,7 @@ package testutils import ( "context" "crypto/ecdsa" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" "math/big" "os" "strconv" @@ -18,7 +19,6 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" ) diff --git a/packages/taiko-client/pkg/rpc/methods.go b/packages/taiko-client/pkg/rpc/methods.go index 35a96b6f2ba..caec456b8f2 100644 --- a/packages/taiko-client/pkg/rpc/methods.go +++ b/packages/taiko-client/pkg/rpc/methods.go @@ -7,8 +7,6 @@ import ( "math/big" "time" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/config" - "github.com/cenkalti/backoff/v4" "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi/bind" @@ -21,7 +19,8 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/config" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) var ( diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go index 7bf74c7378a..85dac756870 100644 --- a/packages/taiko-client/pkg/rpc/utils.go +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -17,7 +17,7 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) var ( diff --git a/packages/taiko-client/internal/utils/txmgr_selector.go b/packages/taiko-client/pkg/utils/txmgr_selector.go similarity index 100% rename from packages/taiko-client/internal/utils/txmgr_selector.go rename to packages/taiko-client/pkg/utils/txmgr_selector.go diff --git a/packages/taiko-client/internal/utils/txmgr_selector_test.go b/packages/taiko-client/pkg/utils/txmgr_selector_test.go similarity index 100% rename from packages/taiko-client/internal/utils/txmgr_selector_test.go rename to packages/taiko-client/pkg/utils/txmgr_selector_test.go diff --git a/packages/taiko-client/internal/utils/util_test.go b/packages/taiko-client/pkg/utils/util_test.go similarity index 93% rename from packages/taiko-client/internal/utils/util_test.go rename to packages/taiko-client/pkg/utils/util_test.go index 8ccafffc8fa..6c3da5f33de 100644 --- a/packages/taiko-client/internal/utils/util_test.go +++ b/packages/taiko-client/pkg/utils/util_test.go @@ -8,7 +8,7 @@ import ( "github.com/stretchr/testify/require" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) func TestEncodeDecodeBytes(t *testing.T) { diff --git a/packages/taiko-client/internal/utils/utils.go b/packages/taiko-client/pkg/utils/utils.go similarity index 100% rename from packages/taiko-client/internal/utils/utils.go rename to packages/taiko-client/pkg/utils/utils.go diff --git a/packages/taiko-client/proposer/config.go b/packages/taiko-client/proposer/config.go index 7ad390c4863..951130d8c06 100644 --- a/packages/taiko-client/proposer/config.go +++ b/packages/taiko-client/proposer/config.go @@ -12,11 +12,10 @@ import ( "github.com/urfave/cli/v2" "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + pkgFlags "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/flags" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" - - pkgFlags "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/flags" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) // Config contains all configurations to initialize a Taiko proposer. diff --git a/packages/taiko-client/proposer/proposer.go b/packages/taiko-client/proposer/proposer.go index c57edf632d5..bb6146a41bf 100644 --- a/packages/taiko-client/proposer/proposer.go +++ b/packages/taiko-client/proposer/proposer.go @@ -22,9 +22,9 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/config" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" builder "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer/transaction_builder" ) diff --git a/packages/taiko-client/proposer/proposer_test.go b/packages/taiko-client/proposer/proposer_test.go index be89ee88e3d..42e04020c45 100644 --- a/packages/taiko-client/proposer/proposer_test.go +++ b/packages/taiko-client/proposer/proposer_test.go @@ -28,10 +28,10 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/blob" "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/config" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" builder "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer/transaction_builder" ) diff --git a/packages/taiko-client/prover/config.go b/packages/taiko-client/prover/config.go index 0709f4be3df..2fe3cf7b954 100644 --- a/packages/taiko-client/prover/config.go +++ b/packages/taiko-client/prover/config.go @@ -14,9 +14,9 @@ import ( "github.com/urfave/cli/v2" "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" pkgFlags "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/flags" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) // Config contains the configurations to initialize a Taiko prover. diff --git a/packages/taiko-client/prover/config_test.go b/packages/taiko-client/prover/config_test.go index 90c07e2c219..9391bb1f75f 100644 --- a/packages/taiko-client/prover/config_test.go +++ b/packages/taiko-client/prover/config_test.go @@ -10,7 +10,7 @@ import ( "github.com/urfave/cli/v2" "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) var ( diff --git a/packages/taiko-client/prover/event_handler/block_proposed.go b/packages/taiko-client/prover/event_handler/block_proposed.go index c74c432c167..b68a580a8cf 100644 --- a/packages/taiko-client/prover/event_handler/block_proposed.go +++ b/packages/taiko-client/prover/event_handler/block_proposed.go @@ -14,9 +14,9 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/metadata" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" eventIterator "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/chain_iterator/event_iterator" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" guardianProverHeartbeater "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/guardian_prover_heartbeater" proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" state "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/shared_state" diff --git a/packages/taiko-client/prover/event_handler/transition_contested.go b/packages/taiko-client/prover/event_handler/transition_contested.go index bac510e332b..a3da2639bba 100644 --- a/packages/taiko-client/prover/event_handler/transition_contested.go +++ b/packages/taiko-client/prover/event_handler/transition_contested.go @@ -9,8 +9,8 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" ) diff --git a/packages/taiko-client/prover/init.go b/packages/taiko-client/prover/init.go index 2683fa55258..cf640ceca46 100644 --- a/packages/taiko-client/prover/init.go +++ b/packages/taiko-client/prover/init.go @@ -13,8 +13,8 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" handler "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/event_handler" proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" proofSubmitter "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter" diff --git a/packages/taiko-client/prover/proof_submitter/transaction/sender.go b/packages/taiko-client/prover/proof_submitter/transaction/sender.go index d75f72241eb..b9aed4db825 100644 --- a/packages/taiko-client/prover/proof_submitter/transaction/sender.go +++ b/packages/taiko-client/prover/proof_submitter/transaction/sender.go @@ -14,8 +14,8 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" producer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" ) From ac7eba69bfe13f026bc6e08074ebaec5dcb067eb Mon Sep 17 00:00:00 2001 From: maskpp Date: Mon, 25 Nov 2024 16:08:23 +0800 Subject: [PATCH 193/205] test(taiko-client): fix some lint issues for `taiko-client` (#18517) --- packages/taiko-client/internal/testutils/suite.go | 2 +- packages/taiko-client/pkg/utils/utils.go | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/taiko-client/internal/testutils/suite.go b/packages/taiko-client/internal/testutils/suite.go index b5cce9d0383..b510be4f2f4 100644 --- a/packages/taiko-client/internal/testutils/suite.go +++ b/packages/taiko-client/internal/testutils/suite.go @@ -3,7 +3,6 @@ package testutils import ( "context" "crypto/ecdsa" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" "math/big" "os" "strconv" @@ -21,6 +20,7 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils" ) type ClientTestSuite struct { diff --git a/packages/taiko-client/pkg/utils/utils.go b/packages/taiko-client/pkg/utils/utils.go index 1eaea75dd87..a7f7b0eb8df 100644 --- a/packages/taiko-client/pkg/utils/utils.go +++ b/packages/taiko-client/pkg/utils/utils.go @@ -6,9 +6,8 @@ import ( "crypto/rand" "errors" "fmt" - "math" - "io" + "math" "math/big" "os" "strings" From 3c2e943ab2d6ff636ad69dc7e93df34d8f549c4d Mon Sep 17 00:00:00 2001 From: maskpp Date: Mon, 25 Nov 2024 22:44:51 +0800 Subject: [PATCH 194/205] ci(repo): update go mod and use random port (#18515) --- Dockerfile | 2 +- go.mod | 2 +- packages/eventindexer/pkg/repo/containers_test.go | 9 ++++----- packages/eventindexer/pkg/repo/erc20_balance_test.go | 3 ++- packages/taiko-client/pkg/rpc/methods.go | 5 +++++ 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index e27049140ef..106561266b2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ ARG PACKAGE=eventindexer -FROM golang:1.23.0 as builder +FROM golang:1.23.0 AS builder ARG PACKAGE diff --git a/go.mod b/go.mod index ab4e68d6a34..e1184230d4e 100644 --- a/go.mod +++ b/go.mod @@ -18,6 +18,7 @@ require ( github.com/go-resty/resty/v2 v2.16.2 github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 github.com/google/uuid v1.6.0 + github.com/gorilla/websocket v1.5.3 github.com/joho/godotenv v1.5.1 github.com/labstack/echo-contrib v0.17.1 github.com/labstack/echo/v4 v4.12.0 @@ -119,7 +120,6 @@ require ( github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 // indirect github.com/gorilla/css v1.0.0 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/gorilla/websocket v1.5.3 // indirect github.com/hashicorp/go-bexpr v0.1.11 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/yamux v0.1.1 // indirect diff --git a/packages/eventindexer/pkg/repo/containers_test.go b/packages/eventindexer/pkg/repo/containers_test.go index 616148e7eee..7fd28bf6f77 100644 --- a/packages/eventindexer/pkg/repo/containers_test.go +++ b/packages/eventindexer/pkg/repo/containers_test.go @@ -23,8 +23,8 @@ var ( func testMysql(t *testing.T) (db.DB, func(), error) { req := testcontainers.ContainerRequest{ - Image: "mysql:8.0.33", - ExposedPorts: []string{"3306/tcp", "33060/tcp"}, + Image: "mysql:latest", + ExposedPorts: []string{"3306/tcp"}, Env: map[string]string{ "MYSQL_ROOT_PASSWORD": dbPassword, "MYSQL_DATABASE": dbName, @@ -51,11 +51,10 @@ func testMysql(t *testing.T) (db.DB, func(), error) { } host, _ := mysqlC.Host(ctx) - p, _ := mysqlC.MappedPort(ctx, "3306/tcp") - port := p.Int() + port, _ := mysqlC.MappedPort(ctx, "3306/tcp") dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?tls=skip-verify&parseTime=true&multiStatements=true", - dbUsername, dbPassword, host, port, dbName) + dbUsername, dbPassword, host, port.Int(), dbName) gormDB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ Logger: logger.Default.LogMode(logger.Silent), diff --git a/packages/eventindexer/pkg/repo/erc20_balance_test.go b/packages/eventindexer/pkg/repo/erc20_balance_test.go index dd07a8a95e2..4a41f291dea 100644 --- a/packages/eventindexer/pkg/repo/erc20_balance_test.go +++ b/packages/eventindexer/pkg/repo/erc20_balance_test.go @@ -2,6 +2,7 @@ package repo import ( "context" + "errors" "net/http" "testing" @@ -31,7 +32,7 @@ func Test_NewERC20BalanceRepo(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { _, err := NewERC20BalanceRepository(tt.db) - if err != tt.wantErr { + if !errors.Is(err, tt.wantErr) { t.Errorf("NewERC20BalanceRepository() error = %v, wantErr %v", err, tt.wantErr) return } diff --git a/packages/taiko-client/pkg/rpc/methods.go b/packages/taiko-client/pkg/rpc/methods.go index caec456b8f2..e8432ff8291 100644 --- a/packages/taiko-client/pkg/rpc/methods.go +++ b/packages/taiko-client/pkg/rpc/methods.go @@ -322,6 +322,11 @@ func (c *Client) CalculateBaseFee( return nil, fmt.Errorf("failed to fetch parent gas excess: %w", err) } } + // The time of l1Head should always be greater than that of l2Head. + // Since the block.Time after anvil rollback is smaller than the original one, the timestamp has to be modified here. + if currentTimestamp < l2Head.Time { + currentTimestamp = l2Head.Time + 1 + } baseFeeInfo, err = c.TaikoL2.CalculateBaseFee( &bind.CallOpts{BlockNumber: l2Head.Number, Context: ctx}, *baseFeeConfig, From 385fed2ce273d131635c54e99a11704a4ed385b8 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 25 Nov 2024 23:44:32 +0800 Subject: [PATCH 195/205] test(taiko-client): skip `TestCheckL1ReorgToSameHeightFork` temporarily (#18522) --- packages/taiko-client/driver/driver_test.go | 1 + packages/taiko-client/pkg/rpc/methods.go | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/taiko-client/driver/driver_test.go b/packages/taiko-client/driver/driver_test.go index b0a97cc4818..88d3b5c5520 100644 --- a/packages/taiko-client/driver/driver_test.go +++ b/packages/taiko-client/driver/driver_test.go @@ -212,6 +212,7 @@ func (s *DriverTestSuite) TestCheckL1ReorgToLowerFork() { } func (s *DriverTestSuite) TestCheckL1ReorgToSameHeightFork() { + s.T().Skip("Skip this test case because of the anvil timestamp issue after rollback.") var ( testnetL1SnapshotID = s.SetL1Snapshot() ) diff --git a/packages/taiko-client/pkg/rpc/methods.go b/packages/taiko-client/pkg/rpc/methods.go index e8432ff8291..caec456b8f2 100644 --- a/packages/taiko-client/pkg/rpc/methods.go +++ b/packages/taiko-client/pkg/rpc/methods.go @@ -322,11 +322,6 @@ func (c *Client) CalculateBaseFee( return nil, fmt.Errorf("failed to fetch parent gas excess: %w", err) } } - // The time of l1Head should always be greater than that of l2Head. - // Since the block.Time after anvil rollback is smaller than the original one, the timestamp has to be modified here. - if currentTimestamp < l2Head.Time { - currentTimestamp = l2Head.Time + 1 - } baseFeeInfo, err = c.TaikoL2.CalculateBaseFee( &bind.CallOpts{BlockNumber: l2Head.Number, Context: ctx}, *baseFeeConfig, From 23862a26890492231cdbf5dd07366e294debda99 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Tue, 26 Nov 2024 04:14:42 -0800 Subject: [PATCH 196/205] feat(docs-site): add software releases page that shows latest software releases and protocol deployments (#18523) --- _typos.toml | 3 +++ packages/docs-site/astro.config.ts | 4 +-- .../docs/network-reference/node-releases.md | 11 -------- .../software-releases-and-deployments.md | 26 +++++++++++++++++++ 4 files changed, 31 insertions(+), 13 deletions(-) delete mode 100644 packages/docs-site/src/content/docs/network-reference/node-releases.md create mode 100644 packages/docs-site/src/content/docs/network-reference/software-releases-and-deployments.md diff --git a/_typos.toml b/_typos.toml index 004806bd6cf..b854bc37085 100644 --- a/_typos.toml +++ b/_typos.toml @@ -18,6 +18,9 @@ extend-exclude = [ "*.png", "*.svg", "go.mod", + "go.sum", + "pnpm-lock.yaml", + "**/**/pnpm-lock.yaml", "CHANGELOG.md", "packages/protocol/audit/code4rena-2024-03-taiko-final-report.md", "packages/protocol/contracts/layer1/automata-attestation/**", diff --git a/packages/docs-site/astro.config.ts b/packages/docs-site/astro.config.ts index 479104944e6..5f7c4d44faf 100644 --- a/packages/docs-site/astro.config.ts +++ b/packages/docs-site/astro.config.ts @@ -190,8 +190,8 @@ export default defineConfig({ link: "/network-reference/network-configuration", }, { - label: "Node releases", - link: "/network-reference/node-releases", + label: "Software releases", + link: "/network-reference/software-releases-and-deployments", }, { label: "RPC configuration", diff --git a/packages/docs-site/src/content/docs/network-reference/node-releases.md b/packages/docs-site/src/content/docs/network-reference/node-releases.md deleted file mode 100644 index c0c21dfbf5a..00000000000 --- a/packages/docs-site/src/content/docs/network-reference/node-releases.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Node releases -description: Network reference page displaying the latest node software versions. ---- - -It is **highly recommended** you use the latest node software. You can find the latest versions here: - -| Package | Release notes | -| :------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [taiko-client](https://github.com/taikoxyz/taiko-mono/tree/main/packages/taiko-client) | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=taiko-client*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/taiko-client/CHANGELOG.md) | -| [taiko-geth](https://github.com/taikoxyz/taiko-geth) | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-geth?label=)](https://github.com/taikoxyz/taiko-geth/blob/taiko/CHANGELOG.md) | diff --git a/packages/docs-site/src/content/docs/network-reference/software-releases-and-deployments.md b/packages/docs-site/src/content/docs/network-reference/software-releases-and-deployments.md new file mode 100644 index 00000000000..336964cf320 --- /dev/null +++ b/packages/docs-site/src/content/docs/network-reference/software-releases-and-deployments.md @@ -0,0 +1,26 @@ +--- +title: Software releases and Deployments +description: Network reference page displaying the latest software versions. +--- + +## Software Releases + +It is **highly recommended** you use the latest software. You can find the latest versions here: + +| Package | Release notes | +| :------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [protocol](https://github.com/taikoxyz/taiko-mono/tree/main/packages/protocol) | [![Github Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=protocol*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/CHANGELOG.md) | +| [taiko-geth](https://github.com/taikoxyz/taiko-geth) | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-geth?label=)](https://github.com/taikoxyz/taiko-geth/blob/taiko/CHANGELOG.md) | +| [taiko-client](https://github.com/taikoxyz/taiko-mono/tree/main/packages/taiko-client) | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=taiko-client*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/taiko-client/CHANGELOG.md) | +| [simple-taiko-node](https://github.com/taikoxyz/simple-taiko-node/tree/main) | [![Github Release](https://img.shields.io/github/v/release/taikoxyz/simple-taiko-node?label=)](https://github.com/taikoxyz/simple-taiko-node/blob/main/CHANGELOG.md) | +| [raiko](https://github.com/taikoxyz/raiko/tree/main) | [![Github Release](https://img.shields.io/github/v/release/taikoxyz/raiko?label=)](https://github.com/taikoxyz/raiko/blob/main/CHANGELOG.md) | + +## Mainnet Deployment Logs + +You can find the contract addresses of the latest smart contract deployments of the Taiko Protocol on Ethereum [here](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/deployments/mainnet-contract-logs-L1.md). + +You can find the smart contract addresses of L2 contracts for the Taiko Protocol on Mainnet [here](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/deployments/mainnet-contract-logs-L2.md). + +## Hekla Deployment Logs + +You can find the all L1 and L2 contract addresses of the latest smart contract deployments of the Taiko Protocol [here](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/deployments/hekla-contract-logs.md). From 696a2ae13c2bc841ec4dfb932dc84ea3fc1c90b4 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Tue, 26 Nov 2024 06:42:56 -0800 Subject: [PATCH 197/205] chore(main): release docs-site 1.18.0 (#18526) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 7 +++++++ packages/docs-site/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b5a6d715aa0..0603998cecf 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.17.1", + "packages/docs-site": "1.18.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index 58fff74f43a..7a8908b159b 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.18.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.17.1...docs-site-v1.18.0) (2024-11-26) + + +### Features + +* **docs-site:** add software releases page that shows latest software releases and protocol deployments ([#18523](https://github.com/taikoxyz/taiko-mono/issues/18523)) ([23862a2](https://github.com/taikoxyz/taiko-mono/commit/23862a26890492231cdbf5dd07366e294debda99)) + ## [1.17.1](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.17.0...docs-site-v1.17.1) (2024-11-18) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index 51e418d0de0..57834c75faf 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.17.1", + "version": "1.18.0", "scripts": { "dev": "astro dev", "start": "astro dev", From 7246fbb76d46532af61f147b0761851f0cc90b91 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Wed, 27 Nov 2024 23:05:51 -0800 Subject: [PATCH 198/205] feat(docs-site): add escenario and explanation for contestable rollup (#18530) --- .../docs/core-concepts/contestable.png | Bin 0 -> 866650 bytes .../docs/core-concepts/proof-tiers.png | Bin 0 -> 165241 bytes .../docs/core-concepts/contestable-rollups.md | 21 +++++++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 packages/docs-site/src/assets/content/docs/core-concepts/contestable.png create mode 100644 packages/docs-site/src/assets/content/docs/core-concepts/proof-tiers.png diff --git a/packages/docs-site/src/assets/content/docs/core-concepts/contestable.png b/packages/docs-site/src/assets/content/docs/core-concepts/contestable.png new file mode 100644 index 0000000000000000000000000000000000000000..00aebddb7d3d421e97a40f0e960e572c82296918 GIT binary patch literal 866650 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%0DA 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

0<8Hr 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´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
tHe$;J*5N2Pt&zxCOp3&1Z;o&r$wFHB2 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 literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/content/docs/core-concepts/proof-tiers.png b/packages/docs-site/src/assets/content/docs/core-concepts/proof-tiers.png new file mode 100644 index 0000000000000000000000000000000000000000..a0e5974dd0f9ae68c472c80b59e29c2a903d035d GIT binary patch literal 165241 zcmeFZcT`i`);_F=iWQJ5iYTZ^XmY566hTC(LJ~@7D$=|3k{~FeR6R(ME*Js{z4syp zlx`p(9YMN)bO`OYw)dXzci(s1BYyvV-xy~M3pLq$t-0oW=JPyrzqqTebmA!6(S7^& zow#%Rrq;fFN7VQ2J5Wk<2z;eEn*Sa6Z@-h4lKj4`*0WRKlbfcxcg)n(_QAl%H2d}k zSni{Segynw1AoDUK3+$VH^_0(;ehn{QY?l9aOqFBpCFdaW+M39*H zp5L}CRSe5;*`4XD)Mi4FXz0$%J>IvUiu%_dv_GNtTuU-vN!#P+{(7w|M`_eI&j03X zk5W_PJo|aqYJTsMi(KK4I)GB4Uv$Zi5B0hNg7>j^v5Hr8k%FZE@&5Iaoioy|tSa9IiC1&z2{#Bd*svQ5dh9(_5x(uTZ&~~Za zRJX6%FpH6Nv5L9w@u+MxR4TBEMt)^}sG8L;@MT9#5zReAhuVXd{Uwe>cm-veFtyyF zp%H#rP1$kqbBYp9MX*xj1e=J3n&4N7{|vnU`nEs!Mdqe&p^OAmL~^P|qS4kHFVr>*XH_gVY9q5yCvtB5-QNC>H>^SN z=4h*tS%}$2-V4O#_0cd~!#OWL>6K2nWoz6uj-y7ZW5xGs{g!t&=cD{nN1mPY`1Z(<(@`qJ9st2UMJS!Y*vy*%9S+@S{FTAm-0 zJ#qSvi?(^6E?fQ>u1z36sT^hS=#J1; z@@W=#uwxxOxVS&ZTjTW?oHhBamnT0ntxf%29NwE{SikEB=he=*-Dh8oMpb!x7;>Jm zEzo2WHd7UfE7+VX$9=5}z?~59znWP*==n47+oabF2ulWzM5d{l1GF~e?$04m{5J`d z^BH0`#)vRP&qi_#nL*?Ft3xNxM!V?!-m2$B9$VhdnG>W^BKyIGwg=KQQ%F^tbFr)7 z$_i$(%2Q>~6hs9%-nBQKPl9Pws{91&)$`ypOCFf%0D5hJCzUODYRk3Xv4K`vq|kYa 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 W%+?CLYV#NT=c0&|aN_wZxBd_FvP+Wy literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/content/docs/core-concepts/contestable-rollups.md b/packages/docs-site/src/content/docs/core-concepts/contestable-rollups.md index 4d1c9275e61..18f71b74922 100644 --- a/packages/docs-site/src/content/docs/core-concepts/contestable-rollups.md +++ b/packages/docs-site/src/content/docs/core-concepts/contestable-rollups.md @@ -3,6 +3,25 @@ title: Contestable rollups description: Core concept page for "Contestable rollups". --- -The current Taiko mainnet and testnet are both configured as a based contestable rollup (BCR). +## Based Contestable Rollup + +In based rollups, block building is permissionless. But permissionless block building comes at a cost, in the form of permissionless attacks to the chain if there is a vulnerability in the Taiko codebase. Centralized rollups can tolerate these risks due to their centralized nature, but Taiko cannot as fully decentralized design. Therefore, Taiko needs a robust multi-proof structure to prevent malicious behaviours. + +Taiko is configured as a based contestable rollup (BCR). This means that there is a hierarchy of proofs in Taiko and it's permissionless to contest all tiers of proofs. Currently Taiko has SGX as a TEE proof, RiscO(RiscZero) and SP1(Succinct) as ZK proofs, Guardian (multi-sig) proof which is owned by Taiko Labs. Guardian proof is not contestable and we plan to phase out after the next protocol hard fork. + +![Proof Tiers](~/assets/content/docs/core-concepts/proof-tiers.png) + +**Scenario:** + +The process begins when a proposer submits a new block, followed by a tier-1 (SGX) prover who submits a proof with a TAIKO bond. During the 4 hour cooldown period, anyone can contest this proof by posting their own bond, as demonstrated by Cindy. + +The system then supports two possible scenarios: If a higher-tier proof confirms the original proof was correct, the original prover receives back their bond plus a reward, while the contester loses their bond. Conversely, if the higher-tier proof shows the original was wrong, the contester receives back their bond plus a reward, and the original prover loses their stake. + +If the contester wins: The contester receives their contestation bond back plus 1/4 of the original prover's validity bond. The new prover receives 1/4 of the original prover's validity bond as a proving fee. The remaining 1/2 goes to the DAO treasury. + +If the original prover wins: The original prover reclaims their validity bond and receives 1/4 of the contestation bond as a reward. The new prover (who may be the original prover) earns 1/4 of the contestation bond. The remaining 1/2 goes to the DAO treasury. + +![BCR Workflow](~/assets/content/docs/core-concepts/contestable.png) + Check out our blog post on the [Based Contestable Rollup (BCR): A configurable, multi-proof rollup design](https://taiko.mirror.xyz/Z4I5ZhreGkyfdaL5I9P0Rj0DNX4zaWFmcws-0CVMJ2A). From da237c2c0f4f4137b8858fb6b4677e2d7b773db5 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Wed, 27 Nov 2024 23:16:16 -0800 Subject: [PATCH 199/205] chore(main): release docs-site 1.19.0 (#18532) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 7 +++++++ packages/docs-site/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 0603998cecf..b79531d7936 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.18.0", + "packages/docs-site": "1.19.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index 7a8908b159b..30bc9bde95f 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.19.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.18.0...docs-site-v1.19.0) (2024-11-28) + + +### Features + +* **docs-site:** add escenario and explanation for contestable rollup ([#18530](https://github.com/taikoxyz/taiko-mono/issues/18530)) ([7246fbb](https://github.com/taikoxyz/taiko-mono/commit/7246fbb76d46532af61f147b0761851f0cc90b91)) + ## [1.18.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.17.1...docs-site-v1.18.0) (2024-11-26) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index 57834c75faf..4024bff0e0e 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.18.0", + "version": "1.19.0", "scripts": { "dev": "astro dev", "start": "astro dev", From f396b6929eaf531806affb4a359722eec652fedb Mon Sep 17 00:00:00 2001 From: Korbinian Date: Fri, 29 Nov 2024 15:16:40 +0100 Subject: [PATCH 200/205] feat(nfts): trailblazers "registerEvent" contract (#18198) --- .../contracts/eventRegister/EventRegister.sol | 269 ++++++++++++++++++ .../trailblazer/eventRegister/Deploy.sol | 20 ++ .../{ => trailblazer}/galxe/Deploy.s.sol | 2 +- .../trailblazers-badges/sol/Deploy.s.sol | 3 +- .../trailblazers-badges/sol/UpgradeV2.sol | 3 +- .../trailblazers-badges/sol/UpgradeV3.sol | 45 +++ .../trailblazers-badges/sol/Utils.s.sol | 78 +++++ .../trailblazers-badges/sol/Utils.s.sol | 6 +- .../eventRegister/EventRegister.t.sol | 269 ++++++++++++++++++ .../galxe/RegisterGalxePoints.t.sol | 2 +- .../TrailblazersBadges.t.sol | 6 +- .../TrailblazersBadgesV3.t.sol | 9 +- 12 files changed, 699 insertions(+), 13 deletions(-) create mode 100644 packages/nfts/contracts/eventRegister/EventRegister.sol create mode 100644 packages/nfts/script/trailblazer/eventRegister/Deploy.sol rename packages/nfts/script/{ => trailblazer}/galxe/Deploy.s.sol (88%) rename packages/nfts/script/{ => trailblazer}/trailblazers-badges/sol/Deploy.s.sol (96%) rename packages/nfts/script/{ => trailblazer}/trailblazers-badges/sol/UpgradeV2.sol (92%) create mode 100644 packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV3.sol create mode 100644 packages/nfts/script/trailblazer/trailblazers-badges/sol/Utils.s.sol create mode 100644 packages/nfts/test/trailblazer/eventRegister/EventRegister.t.sol rename packages/nfts/test/{ => trailblazer}/galxe/RegisterGalxePoints.t.sol (92%) rename packages/nfts/test/{ => trailblazer}/trailblazers-badges/TrailblazersBadges.t.sol (98%) rename packages/nfts/test/{ => trailblazer}/trailblazers-badges/TrailblazersBadgesV3.t.sol (87%) diff --git a/packages/nfts/contracts/eventRegister/EventRegister.sol b/packages/nfts/contracts/eventRegister/EventRegister.sol new file mode 100644 index 00000000000..72b01d77e8b --- /dev/null +++ b/packages/nfts/contracts/eventRegister/EventRegister.sol @@ -0,0 +1,269 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24.0; + +import "@openzeppelin/contracts/access/AccessControl.sol"; + +/** + * @title EventRegister + * @notice A contract that allows authorized managers to create events, manage user registrations, + * and track user participation using role-based access control. + * @dev Utilizes OpenZeppelin's AccessControl for role management. The contract does not hold any + * Ether. + */ +contract EventRegister is AccessControl { + /** + * @dev The role identifier for event managers. This role allows accounts to create events + * and manage registrations. + */ + bytes32 public constant EVENT_MANAGER_ROLE = keccak256("EVENT_MANAGER_ROLE"); + + /** + * @dev Represents an event with its associated details. + */ + struct Event { + ///< Unique identifier for the event. + uint256 id; + ///< Name of the event. + string name; + ///< Flag indicating whether the event exists. + bool exists; + ///< Flag indicating whether registrations are open for the event. + bool registrationOpen; + } + + /** + * @dev Mapping from event ID to Event details. + */ + mapping(uint256 eventId => Event eventData) public events; + + /** + * @dev Mapping from event ID to a mapping of user addresses to their registration status. + * Indicates whether a user has registered for a specific event. + */ + mapping(uint256 eventId => mapping(address registrant => bool isRegistered)) public + registrations; + + /** + * @dev Emitted when a new event is created. + * @param id The unique identifier of the created event. + * @param name The name of the created event. + */ + event EventCreated(uint256 id, string name); + + /** + * @dev Emitted when a user registers for an event. + * @param registrant The address of the user who registered. + * @param eventId The unique identifier of the event for which the user registered. + */ + event Registered(address indexed registrant, uint256 eventId); + + /** + * @dev Emitted when a user unregisters for an event. + * @param registrant The address of the user who unregistered. + * @param eventId The unique identifier of the event for which the user unregistered. + */ + event Unregistered(address indexed registrant, uint256 eventId); + + /** + * @dev Emitted when registrations are opened for an event. + * @param eventId The unique identifier of the event whose registrations are opened. + */ + event RegistrationOpened(uint256 eventId); + + /** + * @dev Emitted when registrations are closed for an event. + * @param eventId The unique identifier of the event whose registrations are closed. + */ + event RegistrationClosed(uint256 eventId); + + /** + * @dev Counter for assigning unique event IDs. + */ + uint256 private nextEventId; + + /** + * @notice Initializes the contract by granting the deployer the default admin role. + * @dev The deployer of the contract is granted the DEFAULT_ADMIN_ROLE, allowing them to manage + * roles. + */ + constructor() { + _grantRole(DEFAULT_ADMIN_ROLE, _msgSender()); + _grantRole(EVENT_MANAGER_ROLE, _msgSender()); + } + + /** + * @notice Grants the EVENT_MANAGER_ROLE to a specified account. + * @dev Only accounts with the DEFAULT_ADMIN_ROLE can call this function. + * @param account The address to be granted the EVENT_MANAGER_ROLE. + * + * Requirements: + * + * - The caller must have the DEFAULT_ADMIN_ROLE. + */ + function grantEventManagerRole(address account) external onlyRole(DEFAULT_ADMIN_ROLE) { + grantRole(EVENT_MANAGER_ROLE, account); + } + + /** + * @notice Revokes the EVENT_MANAGER_ROLE from a specified account. + * @dev Only accounts with the DEFAULT_ADMIN_ROLE can call this function. + * @param account The address from which the EVENT_MANAGER_ROLE will be revoked. + * + * Requirements: + * + * - The caller must have the DEFAULT_ADMIN_ROLE. + */ + function revokeEventManagerRole(address account) external onlyRole(DEFAULT_ADMIN_ROLE) { + revokeRole(EVENT_MANAGER_ROLE, account); + } + + /** + * @notice Creates a new event with the given name. + * @dev Only accounts with the EVENT_MANAGER_ROLE can call this function. + * Emits EventCreated and RegistrationOpened events upon successful creation. + * @param _name The name of the event to be created. + * + * Requirements: + * + * - The caller must have the EVENT_MANAGER_ROLE. + */ + function createEvent(string memory _name) external onlyRole(EVENT_MANAGER_ROLE) { + uint256 eventId = nextEventId; + events[eventId] = Event({ id: eventId, name: _name, exists: true, registrationOpen: true }); + emit EventCreated(eventId, _name); + emit RegistrationOpened(eventId); // Emit event indicating registrations are open + nextEventId++; + } + + /** + * @notice Opens registrations for a specific event. + * @dev Only accounts with the EVENT_MANAGER_ROLE can call this function. + * Emits a RegistrationOpened event upon successful operation. + * @param _eventId The unique identifier of the event for which to open registrations. + * + * Requirements: + * + * - The event with `_eventId` must exist. + * - Registrations for the event must currently be closed. + * - The caller must have the EVENT_MANAGER_ROLE. + */ + function openRegistration(uint256 _eventId) external onlyRole(EVENT_MANAGER_ROLE) { + require(events[_eventId].exists, "Event not found"); + require(!events[_eventId].registrationOpen, "Already open"); + + events[_eventId].registrationOpen = true; + emit RegistrationOpened(_eventId); + } + + /** + * @notice Closes registrations for a specific event. + * @dev Only accounts with the EVENT_MANAGER_ROLE can call this function. + * Emits a RegistrationClosed event upon successful operation. + * @param _eventId The unique identifier of the event for which to close registrations. + * + * Requirements: + * + * - The event with `_eventId` must exist. + * - Registrations for the event must currently be open. + * - The caller must have the EVENT_MANAGER_ROLE. + */ + function closeRegistration(uint256 _eventId) external onlyRole(EVENT_MANAGER_ROLE) { + require(events[_eventId].exists, "Event not found"); + require(events[_eventId].registrationOpen, "Already closed"); + + events[_eventId].registrationOpen = false; + emit RegistrationClosed(_eventId); + } + + /** + * @notice Allows a user to register for a specific event. + * @dev Emits a Registered event upon successful registration. + * @param _eventId The unique identifier of the event to register for. + * + * Requirements: + * + * - The event with `_eventId` must exist. + * - Registrations for the event must be open. + * - The caller must not have already registered for the event. + */ + function register(uint256 _eventId) external { + Event memory currentEvent = events[_eventId]; + require(currentEvent.exists, "Event not found"); + require(currentEvent.registrationOpen, "Registrations closed"); + require(!registrations[_eventId][msg.sender], "Already registered"); + + registrations[_eventId][msg.sender] = true; + + emit Registered(msg.sender, _eventId); + } + + /** + * @notice Allows the event manager to unregister a user from a specific event. + * @dev Emits an Unregistered event upon successful un-registration. + * @param _eventId The unique identifier of the event to unregister from. + * @param _user The address of the user to unregister. + * + * Requirements: + * - The event with `_eventId` must exist. + * - Registrations for the event must be open. + * - The user must be registered for the event. + */ + function unregister(uint256 _eventId, address _user) external onlyRole(EVENT_MANAGER_ROLE) { + Event memory currentEvent = events[_eventId]; + require(currentEvent.exists, "Event not found"); + require(currentEvent.registrationOpen, "Registrations closed"); + require(registrations[_eventId][_user], "Not registered"); + + registrations[_eventId][_user] = false; + emit Unregistered(_user, _eventId); + } + + /** + * @notice Retrieves all event IDs for which a user has registered. + * @dev Iterates through all existing events to compile a list of registrations. + * @param _user The address of the user whose registrations are to be retrieved. + * @return An array of event IDs that the user has registered for. + * + */ + function getRegisteredEvents(address _user) external view returns (uint256[] memory) { + uint256[] memory temp = new uint256[](nextEventId); + uint256 count = 0; + + for (uint256 i = 0; i < nextEventId; i++) { + if (registrations[i][_user]) { + temp[count] = i; + count++; + } + } + + // Create a fixed-size array to return + uint256[] memory registeredEvents = new uint256[](count); + for (uint256 j = 0; j < count; j++) { + registeredEvents[j] = temp[j]; + } + + return registeredEvents; + } + + /** + * @notice Retrieves the details of a specific event. + * @dev Returns the event's ID, name, and registration status. + * @param _eventId The unique identifier of the event to retrieve. + * @return id The unique identifier of the event. + * @return name The name of the event. + * @return registrationOpen_ A boolean indicating whether registrations are open for the event. + * + * Requirements: + * + * - The event with `_eventId` must exist. + */ + function getEvent(uint256 _eventId) + external + view + returns (uint256 id, string memory name, bool registrationOpen_) + { + require(events[_eventId].exists, "Event not found"); + Event memory e = events[_eventId]; + return (e.id, e.name, e.registrationOpen); + } +} diff --git a/packages/nfts/script/trailblazer/eventRegister/Deploy.sol b/packages/nfts/script/trailblazer/eventRegister/Deploy.sol new file mode 100644 index 00000000000..647511ea4d6 --- /dev/null +++ b/packages/nfts/script/trailblazer/eventRegister/Deploy.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import { Script, console } from "forge-std/src/Script.sol"; +import { EventRegister } from "../../../contracts/eventRegister/EventRegister.sol"; + +contract DeployEventRegisterScript is Script { + function run() public { + uint256 deployerPrivateKey = vm.envUint("MAINNET_PRIVATE_KEY"); + address deployerAddress = vm.addr(deployerPrivateKey); + + vm.startBroadcast(deployerPrivateKey); + + EventRegister eventRegister = new EventRegister(); + + console.log("Deployed EventRegister to:", address(eventRegister), "from", deployerAddress); + + vm.stopBroadcast(); + } +} diff --git a/packages/nfts/script/galxe/Deploy.s.sol b/packages/nfts/script/trailblazer/galxe/Deploy.s.sol similarity index 88% rename from packages/nfts/script/galxe/Deploy.s.sol rename to packages/nfts/script/trailblazer/galxe/Deploy.s.sol index 7517fb18744..c33708d9f73 100644 --- a/packages/nfts/script/galxe/Deploy.s.sol +++ b/packages/nfts/script/trailblazer/galxe/Deploy.s.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; import { Script, console } from "forge-std/src/Script.sol"; -import { RegisterGalxePoints } from "../../contracts/galxe/RegisterGalxePoints.sol"; +import { RegisterGalxePoints } from "../../../contracts/galxe/RegisterGalxePoints.sol"; contract DeployRegisterMyGalaxyPointScript is Script { function run() public { diff --git a/packages/nfts/script/trailblazers-badges/sol/Deploy.s.sol b/packages/nfts/script/trailblazer/trailblazers-badges/sol/Deploy.s.sol similarity index 96% rename from packages/nfts/script/trailblazers-badges/sol/Deploy.s.sol rename to packages/nfts/script/trailblazer/trailblazers-badges/sol/Deploy.s.sol index 7c380fac890..63bb1ea352e 100644 --- a/packages/nfts/script/trailblazers-badges/sol/Deploy.s.sol +++ b/packages/nfts/script/trailblazer/trailblazers-badges/sol/Deploy.s.sol @@ -5,7 +5,8 @@ import { UtilsScript } from "./Utils.s.sol"; import { Script, console } from "forge-std/src/Script.sol"; import { Merkle } from "murky/Merkle.sol"; import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import { TrailblazersBadges } from "../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { TrailblazersBadges } from + "../../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; contract DeployScript is Script { diff --git a/packages/nfts/script/trailblazers-badges/sol/UpgradeV2.sol b/packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV2.sol similarity index 92% rename from packages/nfts/script/trailblazers-badges/sol/UpgradeV2.sol rename to packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV2.sol index 0588945b84c..a9d80fd2993 100644 --- a/packages/nfts/script/trailblazers-badges/sol/UpgradeV2.sol +++ b/packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV2.sol @@ -5,7 +5,8 @@ import { UtilsScript } from "./Utils.s.sol"; import { Script, console } from "forge-std/src/Script.sol"; import { Merkle } from "murky/Merkle.sol"; import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import { TrailblazersBadges } from "../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { TrailblazersBadges } from + "../../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; contract UpgradeV2 is Script { diff --git a/packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV3.sol b/packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV3.sol new file mode 100644 index 00000000000..472192164cd --- /dev/null +++ b/packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV3.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { UtilsScript } from "./Utils.s.sol"; +import { Script, console } from "forge-std/src/Script.sol"; +import { Merkle } from "murky/Merkle.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { TrailblazersBadges } from + "../../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; +import { TrailblazersBadgesV3 } from + "../../../../contracts/trailblazers-badges/TrailblazersBadgesV3.sol"; + +contract UpgradeV2 is Script { + UtilsScript public utils; + string public jsonLocation; + uint256 public deployerPrivateKey; + address public deployerAddress; + + address tokenV2Address = 0xa20a8856e00F5ad024a55A663F06DCc419FFc4d5; + TrailblazersBadges public tokenV2; + TrailblazersBadgesV3 public tokenV3; + + function setUp() public { + utils = new UtilsScript(); + utils.setUp(); + + jsonLocation = utils.getContractJsonLocation(); + deployerPrivateKey = utils.getPrivateKey(); + deployerAddress = utils.getAddress(); + } + + function run() public { + vm.startBroadcast(deployerPrivateKey); + tokenV2 = TrailblazersBadges(tokenV2Address); + + tokenV2.upgradeToAndCall( + address(new TrailblazersBadgesV3()), abi.encodeCall(TrailblazersBadgesV3.version, ()) + ); + + tokenV3 = TrailblazersBadgesV3(tokenV3); + + console.log("Upgraded TrailblazersBadgesV3 to:", address(tokenV3)); + } +} diff --git a/packages/nfts/script/trailblazer/trailblazers-badges/sol/Utils.s.sol b/packages/nfts/script/trailblazer/trailblazers-badges/sol/Utils.s.sol new file mode 100644 index 00000000000..3af584af2bb --- /dev/null +++ b/packages/nfts/script/trailblazer/trailblazers-badges/sol/Utils.s.sol @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { Script, console } from "forge-std/src/Script.sol"; +import "forge-std/src/StdJson.sol"; +import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; +import { MockBlacklist } from "../../../../test/util/Blacklist.sol"; + +contract UtilsScript is Script { + using stdJson for string; + + address public nounsTokenAddress; + + uint256 public chainId; + + string public lowercaseNetworkKey; + string public uppercaseNetworkKey; + + function setUp() public { + // load all network configs + chainId = block.chainid; + + if (chainId == 31_337) { + lowercaseNetworkKey = "localhost"; + uppercaseNetworkKey = "LOCALHOST"; + } else if (chainId == 17_000) { + lowercaseNetworkKey = "holesky"; + uppercaseNetworkKey = "HOLESKY"; + } else if (chainId == 167_001) { + lowercaseNetworkKey = "devnet"; + uppercaseNetworkKey = "DEVNET"; + } else if (chainId == 11_155_111) { + lowercaseNetworkKey = "sepolia"; + uppercaseNetworkKey = "SEPOLIA"; + } else if (chainId == 167_008) { + lowercaseNetworkKey = "katla"; + uppercaseNetworkKey = "KATLA"; + } else if (chainId == 167_000) { + lowercaseNetworkKey = "mainnet"; + uppercaseNetworkKey = "MAINNET"; + } else if (chainId == 167_009) { + lowercaseNetworkKey = "hekla"; + uppercaseNetworkKey = "HEKLA"; + } else { + revert("Unsupported chainId"); + } + } + + function getPrivateKey() public view returns (uint256) { + string memory lookupKey = string.concat(uppercaseNetworkKey, "_PRIVATE_KEY"); + return vm.envUint(lookupKey); + } + + function getAddress() public view returns (address) { + string memory lookupKey = string.concat(uppercaseNetworkKey, "_ADDRESS"); + return vm.envAddress(lookupKey); + } + + function getContractJsonLocation() public view returns (string memory) { + string memory root = vm.projectRoot(); + return + string.concat(root, "/deployments/trailblazers-badges/", lowercaseNetworkKey, ".json"); + } + + function getBlacklist() public view returns (IMinimalBlacklist blacklistAddress) { + if (block.chainid == 167_000) { + // mainnet blacklist address + blacklistAddress = IMinimalBlacklist(vm.envAddress("BLACKLIST_ADDRESS")); + } else { + // deploy a mock blacklist otherwise + blacklistAddress = IMinimalBlacklist(0xbdEd0D2bf404bdcBa897a74E6657f1f12e5C6fb6); + } + + return blacklistAddress; + } + + function run() public { } +} diff --git a/packages/nfts/script/trailblazers-badges/sol/Utils.s.sol b/packages/nfts/script/trailblazers-badges/sol/Utils.s.sol index 6e3a113feea..3a0dc45a5c6 100644 --- a/packages/nfts/script/trailblazers-badges/sol/Utils.s.sol +++ b/packages/nfts/script/trailblazers-badges/sol/Utils.s.sol @@ -3,8 +3,8 @@ pragma solidity 0.8.24; import { Script, console } from "forge-std/src/Script.sol"; import "forge-std/src/StdJson.sol"; -import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; import { MockBlacklist } from "../../../test/util/Blacklist.sol"; +import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; contract UtilsScript is Script { using stdJson for string; @@ -16,6 +16,8 @@ contract UtilsScript is Script { string public lowercaseNetworkKey; string public uppercaseNetworkKey; + error UNSUPPORTED_CHAIN_ID(); + function setUp() public { // load all network configs chainId = block.chainid; @@ -42,7 +44,7 @@ contract UtilsScript is Script { lowercaseNetworkKey = "hekla"; uppercaseNetworkKey = "HEKLA"; } else { - revert("Unsupported chainId"); + revert UNSUPPORTED_CHAIN_ID(); } } diff --git a/packages/nfts/test/trailblazer/eventRegister/EventRegister.t.sol b/packages/nfts/test/trailblazer/eventRegister/EventRegister.t.sol new file mode 100644 index 00000000000..702165d3b2e --- /dev/null +++ b/packages/nfts/test/trailblazer/eventRegister/EventRegister.t.sol @@ -0,0 +1,269 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.24; + +import { Test } from "forge-std/src/Test.sol"; +import "../../../contracts/eventRegister/EventRegister.sol"; + +contract EventRegisterTest is Test { + EventRegister public eventRegister; + + address public owner = address(0x1); + address public manager = address(0x2); + address public user1 = address(0x3); + address public user2 = address(0x4); + + string public eventName1 = "Spring Season"; + string public eventName2 = "Summer Season"; + + function setUp() public { + vm.startPrank(owner); + eventRegister = new EventRegister(); + vm.stopPrank(); + + vm.startPrank(owner); + eventRegister.grantEventManagerRole(manager); + vm.stopPrank(); + } + + function testDeployerHasAdminRole() public view { + assertTrue( + eventRegister.hasRole(eventRegister.DEFAULT_ADMIN_ROLE(), owner), + "Owner should have DEFAULT_ADMIN_ROLE" + ); + } + + function testManagerHasEventManagerRole() public view { + assertTrue( + eventRegister.hasRole(eventRegister.EVENT_MANAGER_ROLE(), manager), + "Manager should have EVENT_MANAGER_ROLE" + ); + } + + function testAdminCanGrantEventManagerRole() public { + vm.startPrank(owner); + eventRegister.grantEventManagerRole(user1); + vm.stopPrank(); + + assertTrue( + eventRegister.hasRole(eventRegister.EVENT_MANAGER_ROLE(), user1), + "User1 should have EVENT_MANAGER_ROLE" + ); + } + + function testAdminCanRevokeEventManagerRole() public { + vm.startPrank(owner); + eventRegister.grantEventManagerRole(user1); + eventRegister.revokeEventManagerRole(user1); + vm.stopPrank(); + + assertFalse( + eventRegister.hasRole(eventRegister.EVENT_MANAGER_ROLE(), user1), + "User1 should not have EVENT_MANAGER_ROLE" + ); + } + + function testOnlyEventManagersCanCreateEvents() public { + vm.startPrank(user1); + vm.expectRevert(); + eventRegister.createEvent(eventName1); + vm.stopPrank(); + + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + vm.stopPrank(); + + (uint256 id, string memory name, bool registrationOpen) = eventRegister.getEvent(0); + assertEq(id, 0, "Event ID should be 0"); + assertEq(name, eventName1, "Event name should match"); + assertTrue(registrationOpen, "Registration should be open"); + } + + function testOpenAndCloseRegistrations() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + eventRegister.closeRegistration(0); + vm.stopPrank(); + + vm.startPrank(user1); + vm.expectRevert("Registrations closed"); + eventRegister.register(0); + vm.stopPrank(); + + vm.startPrank(manager); + eventRegister.openRegistration(0); + vm.stopPrank(); + + vm.startPrank(user1); + eventRegister.register(0); + vm.stopPrank(); + + assertTrue(eventRegister.registrations(0, user1), "User1 should be registered"); + } + + function testOnlyEventManagersCanOpenCloseRegistrations() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + vm.stopPrank(); + + vm.startPrank(user1); + vm.expectRevert(); + eventRegister.closeRegistration(0); + vm.stopPrank(); + + vm.startPrank(user1); + vm.expectRevert(); + eventRegister.openRegistration(0); + vm.stopPrank(); + } + + function testUserCanRegisterForOpenEvent() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + vm.stopPrank(); + + vm.startPrank(user1); + eventRegister.register(0); + vm.stopPrank(); + + assertTrue(eventRegister.registrations(0, user1), "User1 should be registered for event 0"); + } + + function testUserCannotRegisterTwice() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + vm.stopPrank(); + + vm.startPrank(user1); + eventRegister.register(0); + vm.expectRevert("Already registered"); + eventRegister.register(0); + vm.stopPrank(); + } + + function testUserCannotRegisterForNonExistentEvent() public { + vm.startPrank(user1); + vm.expectRevert("Event not found"); + eventRegister.register(999); + vm.stopPrank(); + } + + function testCannotCreateEventAsNonManager() public { + vm.startPrank(user1); + vm.expectRevert(); + eventRegister.createEvent("Autumn Season"); + vm.stopPrank(); + } + + function testCannotOpenRegistrationAsNonManager() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + vm.stopPrank(); + + vm.startPrank(user1); + vm.expectRevert(); + eventRegister.openRegistration(0); + vm.stopPrank(); + } + + function testCannotCloseRegistrationAsNonManager() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + vm.stopPrank(); + + vm.startPrank(user1); + vm.expectRevert(); + eventRegister.closeRegistration(0); + vm.stopPrank(); + } + + function testMultipleEventCreation() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + eventRegister.createEvent(eventName2); + vm.stopPrank(); + + (uint256 id1, string memory name1, bool regOpen1) = eventRegister.getEvent(0); + assertEq(id1, 0, "First event ID should be 0"); + assertEq(name1, eventName1, "First event name should match"); + assertTrue(regOpen1, "First event registration should be open"); + + (uint256 id2, string memory name2, bool regOpen2) = eventRegister.getEvent(1); + assertEq(id2, 1, "Second event ID should be 1"); + assertEq(name2, eventName2, "Second event name should match"); + assertTrue(regOpen2, "Second event registration should be open"); + } + + function testCannotCloseAlreadyClosedRegistration() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + eventRegister.closeRegistration(0); + vm.expectRevert("Already closed"); + eventRegister.closeRegistration(0); + vm.stopPrank(); + } + + function testCannotOpenAlreadyOpenRegistration() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + vm.expectRevert("Already open"); + eventRegister.openRegistration(0); + vm.stopPrank(); + } + + function testCannotRegisterAfterClosingRegistration() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + eventRegister.closeRegistration(0); + vm.stopPrank(); + + vm.startPrank(user1); + vm.expectRevert("Registrations closed"); + eventRegister.register(0); + vm.stopPrank(); + } + + function testMultipleUsersRegistration() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + vm.stopPrank(); + + vm.startPrank(user1); + eventRegister.register(0); + vm.stopPrank(); + + vm.startPrank(user2); + eventRegister.register(0); + vm.stopPrank(); + + assertTrue(eventRegister.registrations(0, user1), "User1 should be registered"); + assertTrue(eventRegister.registrations(0, user2), "User2 should be registered"); + } + + function testGetRegisteredEvents() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + eventRegister.createEvent(eventName2); + vm.stopPrank(); + + vm.startPrank(user1); + eventRegister.register(0); + eventRegister.register(1); + vm.stopPrank(); + + uint256[] memory registeredEvents = eventRegister.getRegisteredEvents(user1); + assertEq(registeredEvents.length, 2, "User1 should have registered for 2 events"); + assertEq(registeredEvents[0], 0, "First event ID should be 0"); + assertEq(registeredEvents[1], 1, "Second event ID should be 1"); + } + + function testGetEventDetails() public { + vm.startPrank(manager); + eventRegister.createEvent(eventName1); + vm.stopPrank(); + + (uint256 id, string memory name, bool registrationOpen) = eventRegister.getEvent(0); + assertEq(id, 0, "Event ID should be 0"); + assertEq(name, eventName1, "Event name should match"); + assertTrue(registrationOpen, "Registration should be open"); + } +} diff --git a/packages/nfts/test/galxe/RegisterGalxePoints.t.sol b/packages/nfts/test/trailblazer/galxe/RegisterGalxePoints.t.sol similarity index 92% rename from packages/nfts/test/galxe/RegisterGalxePoints.t.sol rename to packages/nfts/test/trailblazer/galxe/RegisterGalxePoints.t.sol index fa4539035f7..7d074bda361 100644 --- a/packages/nfts/test/galxe/RegisterGalxePoints.t.sol +++ b/packages/nfts/test/trailblazer/galxe/RegisterGalxePoints.t.sol @@ -3,7 +3,7 @@ pragma solidity 0.8.24; import { Test } from "forge-std/src/Test.sol"; -import { RegisterGalxePoints } from "../../contracts/galxe/RegisterGalxePoints.sol"; +import { RegisterGalxePoints } from "../../../contracts/galxe/RegisterGalxePoints.sol"; contract RegisterGalxePointsTest is Test { RegisterGalxePoints public registerGalxePoints; diff --git a/packages/nfts/test/trailblazers-badges/TrailblazersBadges.t.sol b/packages/nfts/test/trailblazer/trailblazers-badges/TrailblazersBadges.t.sol similarity index 98% rename from packages/nfts/test/trailblazers-badges/TrailblazersBadges.t.sol rename to packages/nfts/test/trailblazer/trailblazers-badges/TrailblazersBadges.t.sol index 7fe6531a114..193ab093deb 100644 --- a/packages/nfts/test/trailblazers-badges/TrailblazersBadges.t.sol +++ b/packages/nfts/test/trailblazer/trailblazers-badges/TrailblazersBadges.t.sol @@ -3,11 +3,11 @@ pragma solidity 0.8.24; import { Test } from "forge-std/src/Test.sol"; -import { TrailblazersBadges } from "../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { TrailblazersBadges } from "../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; import { Merkle } from "murky/Merkle.sol"; import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import { UtilsScript } from "../../script/taikoon/sol/Utils.s.sol"; -import { MockBlacklist } from "../util/Blacklist.sol"; +import { UtilsScript } from "../../../script/taikoon/sol/Utils.s.sol"; +import { MockBlacklist } from "../../util/Blacklist.sol"; import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; contract TrailblazersBadgesTest is Test { diff --git a/packages/nfts/test/trailblazers-badges/TrailblazersBadgesV3.t.sol b/packages/nfts/test/trailblazer/trailblazers-badges/TrailblazersBadgesV3.t.sol similarity index 87% rename from packages/nfts/test/trailblazers-badges/TrailblazersBadgesV3.t.sol rename to packages/nfts/test/trailblazer/trailblazers-badges/TrailblazersBadgesV3.t.sol index d4f4bc34002..cd64ea8f320 100644 --- a/packages/nfts/test/trailblazers-badges/TrailblazersBadgesV3.t.sol +++ b/packages/nfts/test/trailblazer/trailblazers-badges/TrailblazersBadgesV3.t.sol @@ -3,13 +3,14 @@ pragma solidity 0.8.24; import { Test } from "forge-std/src/Test.sol"; -import { TrailblazersBadges } from "../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { TrailblazersBadges } from "../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; import { Merkle } from "murky/Merkle.sol"; import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import { UtilsScript } from "../../script/taikoon/sol/Utils.s.sol"; -import { MockBlacklist } from "../util/Blacklist.sol"; +import { UtilsScript } from "../../../script/taikoon/sol/Utils.s.sol"; +import { MockBlacklist } from "../../util/Blacklist.sol"; import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import { TrailblazersBadgesV3 } from "../../contracts/trailblazers-badges/TrailblazersBadgesV3.sol"; +import { TrailblazersBadgesV3 } from + "../../../contracts/trailblazers-badges/TrailblazersBadgesV3.sol"; contract TrailblazersBadgesV3Test is Test { UtilsScript public utils; From 524ac559813315bc13ba3e5f0caf57b80a1c90df Mon Sep 17 00:00:00 2001 From: Bernat Canal Garceran Date: Mon, 2 Dec 2024 12:20:54 +0100 Subject: [PATCH 201/205] feat(nfts): trailblazers badges s2 (#18040) Co-authored-by: bearni95 --- .../TrailblazersBadgesV3.sol | 2 +- .../BadgeRecruitment.sol | 748 ++++++++++++++++++ .../TrailblazersBadgesS2.sol | 211 +++++ .../TrailblazersS1BadgesV4.sol | 70 ++ packages/nfts/deployments/gen-layouts.sh | 2 + .../nfts/deployments/profile/mainnet.json | 2 +- packages/nfts/deployments/taikoon/hekla.json | 2 +- .../trailblazers-airdrop/hekla.json | 3 +- .../trailblazers-airdrop/mainnet.json | 3 +- .../trailblazers-badges/hekla.json | 6 +- .../trailblazers-season-2/hekla.json | 6 + .../trailblazers-season-2/mainnet.json | 6 + packages/nfts/package.json | 36 +- .../{sol => }/Deploy.s.sol | 11 +- .../{sol/UpgradeV2.sol => UpgradeS1.sol} | 7 +- .../trailblazers-badges}/UpgradeV3.s.sol | 0 .../{sol => }/UpgradeV3.sol | 9 +- .../trailblazers-badges/UpgradeV4.s.sol | 52 ++ .../trailblazers-badges}/Utils.s.sol | 0 .../script/trailblazers-season-2/Deploy.s.sol | 163 ++++ .../trailblazers-season-2/UpgradeV2.s.sol | 50 ++ .../sol => trailblazers-season-2}/Utils.s.sol | 12 +- .../BadgeRecruitment.t.sol | 493 ++++++++++++ .../TrailblazersBadgesS2.t.sol | 111 +++ .../test/util/TrailblazerBadgesS1MintTo.sol | 24 + 25 files changed, 1991 insertions(+), 38 deletions(-) create mode 100644 packages/nfts/contracts/trailblazers-season-2/BadgeRecruitment.sol create mode 100644 packages/nfts/contracts/trailblazers-season-2/TrailblazersBadgesS2.sol create mode 100644 packages/nfts/contracts/trailblazers-season-2/TrailblazersS1BadgesV4.sol create mode 100644 packages/nfts/deployments/trailblazers-season-2/hekla.json create mode 100644 packages/nfts/deployments/trailblazers-season-2/mainnet.json rename packages/nfts/script/trailblazer/trailblazers-badges/{sol => }/Deploy.s.sol (90%) rename packages/nfts/script/trailblazer/trailblazers-badges/{sol/UpgradeV2.sol => UpgradeS1.sol} (84%) rename packages/nfts/script/{trailblazers-badges/sol => trailblazer/trailblazers-badges}/UpgradeV3.s.sol (100%) rename packages/nfts/script/trailblazer/trailblazers-badges/{sol => }/UpgradeV3.sol (83%) create mode 100644 packages/nfts/script/trailblazer/trailblazers-badges/UpgradeV4.s.sol rename packages/nfts/script/{trailblazers-badges/sol => trailblazer/trailblazers-badges}/Utils.s.sol (100%) create mode 100644 packages/nfts/script/trailblazers-season-2/Deploy.s.sol create mode 100644 packages/nfts/script/trailblazers-season-2/UpgradeV2.s.sol rename packages/nfts/script/{trailblazer/trailblazers-badges/sol => trailblazers-season-2}/Utils.s.sol (88%) create mode 100644 packages/nfts/test/trailblazers-season-2/BadgeRecruitment.t.sol create mode 100644 packages/nfts/test/trailblazers-season-2/TrailblazersBadgesS2.t.sol create mode 100644 packages/nfts/test/util/TrailblazerBadgesS1MintTo.sol diff --git a/packages/nfts/contracts/trailblazers-badges/TrailblazersBadgesV3.sol b/packages/nfts/contracts/trailblazers-badges/TrailblazersBadgesV3.sol index 3d6c0e511ba..cae60cd6468 100644 --- a/packages/nfts/contracts/trailblazers-badges/TrailblazersBadgesV3.sol +++ b/packages/nfts/contracts/trailblazers-badges/TrailblazersBadgesV3.sol @@ -4,7 +4,7 @@ pragma solidity 0.8.24; import "./TrailblazersBadges.sol"; contract TrailblazersBadgesV3 is TrailblazersBadges { - function version() external pure returns (string memory) { + function version() external pure virtual returns (string memory) { return "V3"; } diff --git a/packages/nfts/contracts/trailblazers-season-2/BadgeRecruitment.sol b/packages/nfts/contracts/trailblazers-season-2/BadgeRecruitment.sol new file mode 100644 index 00000000000..4b2e1f57a90 --- /dev/null +++ b/packages/nfts/contracts/trailblazers-season-2/BadgeRecruitment.sol @@ -0,0 +1,748 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol"; +import "../trailblazers-badges/ECDSAWhitelist.sol"; +import "@taiko/blacklist/IMinimalBlacklist.sol"; +import "@openzeppelin/contracts/utils/Strings.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"; +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; +import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; +import "@openzeppelin/contracts/access/AccessControl.sol"; +import "@openzeppelin/contracts/utils/Strings.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/utils/ERC721HolderUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import "./TrailblazersS1BadgesV4.sol"; +import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "./TrailblazersBadgesS2.sol"; + +contract BadgeRecruitment is + UUPSUpgradeable, + Ownable2StepUpgradeable, + AccessControlUpgradeable, + ERC721HolderUpgradeable +{ + /// @notice Season 1 Badges ERC721 contract + TrailblazersBadgesV4 public s1Badges; + /// @notice badges role key + bytes32 public constant S1_BADGES_ROLE = keccak256("S1_BADGES_ROLE"); + /// @notice Season 2 Badges ERC1155 contract + TrailblazersBadgesS2 public s2Badges; + /// @notice Wallet authorized to sign as a source of randomness + address public randomSigner; + /// @notice Recruitment-enabled badge IDs per cycle + //mapping(uint256 cycle => mapping(uint256 s1BadgeId => bool enabled)) public enabledBadgeIds; + // uint256[] public currentCycleEnabledRecruitmentIds; + /// @notice Current recruitment cycle + uint256 public recruitmentCycleId; + + /// @notice Mapping of unique user-per-mint-per-cycle + mapping( + uint256 recruitmentCycle + => mapping( + address minter + => mapping( + uint256 s1BadgeId + => mapping(RecruitmentType recruitmentType => bool mintEnded) + ) + ) + ) public recruitmentCycleUniqueMints; + /// @notice User experience points + + mapping(address user => uint256 experience) public userExperience; + /// @notice Influence colors available + + enum InfluenceColor { + Undefined, // unused + Whale, // based, pink + Minnow // boosted, purple + + } + + /// @notice Recruitment types + enum RecruitmentType { + Undefined, + Claim, + Migration + } + /// @notice Hash types + enum HashType { + Undefined, + Start, + End, + Influence + } + + /// @notice Configuration struct + struct Config { + uint256 cooldownRecruitment; + uint256 cooldownInfluence; + uint256 influenceWeightPercent; + uint256 baseMaxInfluences; + uint256 maxInfluencesDivider; + uint256 defaultCycleDuration; + } + /// @notice Current config + + Config private config; + /// @notice Recruitment struct + + struct Recruitment { + uint256 recruitmentCycle; + address user; + uint256 s1BadgeId; + uint256 s1TokenId; + uint256 s2TokenId; + uint256 cooldownExpiration; + uint256 influenceExpiration; + uint256 whaleInfluences; + uint256 minnowInfluences; + } + /// @notice Recruitment Cycle struct + + struct RecruitmentCycle { + uint256 cycleId; + uint256 startTime; + uint256 endTime; + uint256[] s1BadgeIds; + } + + /// @notice Recruitment cycles + mapping(uint256 cycleId => RecruitmentCycle recruitmentCycle) public recruitmentCycles; + + /// @notice Recruitments per user + + mapping(address _user => Recruitment[] _recruitment) public recruitments; + /// @notice Gap for upgrade safety + uint256[43] private __gap; + /// @notice Errors + + error MAX_INFLUENCES_REACHED(); + error RECRUITMENT_NOT_STARTED(); + error RECRUITMENT_ALREADY_STARTED(); + error INFLUENCE_IN_PROGRESS(); + error RECRUITMENT_NOT_READY(); + error RECRUITMENT_NOT_ENABLED(); + error TOKEN_NOT_OWNED(); + error NOT_RANDOM_SIGNER(); + error ALREADY_MIGRATED_IN_CYCLE(); + error HASH_MISMATCH(); + error NOT_S1_CONTRACT(); + error EXP_TOO_LOW(); + error INVALID_INFLUENCE_COLOR(); + error CURRENT_CYCLE_NOT_OVER(); + /// @notice Events + + event RecruitmentCycleToggled( + uint256 indexed recruitmentCycleId, + uint256 indexed startTime, + uint256 indexed endTime, + uint256[] s1BadgeIds, + bool enabled + ); + + event RecruitmentUpdated( + uint256 indexed recruitmentCycle, + address indexed user, + uint256 s1BadgeId, + uint256 s1TokenId, + uint256 s2TokenId, + uint256 cooldownExpiration, + uint256 influenceExpiration, + uint256 whaleInfluences, + uint256 minnowInfluences + ); + + event RecruitmentComplete( + uint256 indexed recruitmentCycle, + address indexed user, + uint256 s1TokenId, + uint256 s2TokenId, + uint256 finalColor + ); + + /// @notice Check if the message sender has an active recruitment + modifier isMigrating() { + Recruitment memory recruitment_ = getActiveRecruitmentFor(_msgSender()); + if (recruitment_.cooldownExpiration == 0) { + revert RECRUITMENT_NOT_STARTED(); + } + _; + } + + /// @notice Reverts if sender is already migrating + modifier isNotMigrating(address _user) { + if ( + recruitments[_user].length > 0 + && recruitments[_user][recruitments[_user].length - 1].cooldownExpiration + > block.timestamp + ) { + revert RECRUITMENT_ALREADY_STARTED(); + } + _; + } + + /// @notice Reverts if recruitments aren't enabled for that badge + /// @param _s1BadgeId The badge ID + modifier recruitmentOpen(uint256 _s1BadgeId) { + RecruitmentCycle memory cycle_ = recruitmentCycles[recruitmentCycleId]; + + if (cycle_.startTime > block.timestamp || cycle_.endTime < block.timestamp) { + revert RECRUITMENT_NOT_ENABLED(); + } + + bool found_ = false; + + for (uint256 i = 0; i < cycle_.s1BadgeIds.length; i++) { + if (cycle_.s1BadgeIds[i] == _s1BadgeId) { + found_ = true; + break; + } + } + + if (!found_) { + revert RECRUITMENT_NOT_ENABLED(); + } + _; + } + + /// @notice Limits recruitments to one per user, badge and cycle + /// @param _s1BadgeId The badge ID + /// @param _minter The minter address + /// @param _recruitmentType The recruitment type + modifier hasntMigratedInCycle( + uint256 _s1BadgeId, + address _minter, + RecruitmentType _recruitmentType + ) { + // check that the minter hasn't used the recruitment within this cycle + if (recruitmentCycleUniqueMints[recruitmentCycleId][_minter][_s1BadgeId][_recruitmentType]) + { + revert ALREADY_MIGRATED_IN_CYCLE(); + } + _; + } + + /// @notice Contract initializer + /// @param _s1Badges The Season 1 Badges contract address + /// @param _s2Badges The Season 2 Badges contract address + /// @param _randomSigner The random signer address + /// @param _config The initial configuration + function initialize( + address _s1Badges, + address _s2Badges, + address _randomSigner, + Config memory _config + ) + external + initializer + { + _transferOwnership(_msgSender()); + __Context_init(); + _grantRole(DEFAULT_ADMIN_ROLE, _msgSender()); + s1Badges = TrailblazersBadgesV4(_s1Badges); + _grantRole(S1_BADGES_ROLE, _s1Badges); + s2Badges = TrailblazersBadgesS2(_s2Badges); + randomSigner = _randomSigner; + config = _config; + } + + /// @notice Upgrade configuration + /// @param _config The new configuration + function setConfig(Config memory _config) external onlyRole(DEFAULT_ADMIN_ROLE) { + config = _config; + } + + /// @notice Get the current configuration + /// @return The current configuration + function getConfig() external view returns (Config memory) { + return config; + } + + /// @notice Disable all current recruitments + /// @dev Bypasses the default date checks + function forceDisableRecruitments() internal onlyRole(DEFAULT_ADMIN_ROLE) { + recruitmentCycles[recruitmentCycleId].endTime = block.timestamp; + } + + /// @notice Enable recruitments for a set of badges + /// @param _startTime The start time of the recruitment cycle + /// @param _endTime The end time of the recruitment cycle + /// @param _s1BadgeIds The badge IDs to enable + function _enableRecruitments( + uint256 _startTime, + uint256 _endTime, + uint256[] calldata _s1BadgeIds + ) + internal + { + if ( + recruitmentCycleId > 0 + && recruitmentCycles[recruitmentCycleId].endTime > block.timestamp + ) { + revert CURRENT_CYCLE_NOT_OVER(); + } + // emit disabled badges + emit RecruitmentCycleToggled( + recruitmentCycleId, + recruitmentCycles[recruitmentCycleId].startTime, + recruitmentCycles[recruitmentCycleId].endTime, + recruitmentCycles[recruitmentCycleId].s1BadgeIds, + false + ); + + recruitmentCycleId++; + recruitmentCycles[recruitmentCycleId] = + RecruitmentCycle(recruitmentCycleId, _startTime, _endTime, _s1BadgeIds); + + // emit enabled badges + emit RecruitmentCycleToggled(recruitmentCycleId, _startTime, _endTime, _s1BadgeIds, true); + } + + /// @notice Enable recruitments for a set of badges + /// @param _s1BadgeIds The badge IDs to enable + /// @dev Can be called only by the contract owner/admin + function enableRecruitments(uint256[] calldata _s1BadgeIds) + external + onlyRole(DEFAULT_ADMIN_ROLE) + { + _enableRecruitments( + block.timestamp, block.timestamp + config.defaultCycleDuration, _s1BadgeIds + ); + } + + /// @notice Enable recruitments for a set of badges + /// @param _startTime The start time of the recruitment cycle + /// @param _endTime The end time of the recruitment cycle + /// @param _s1BadgeIds The badge IDs to enable + /// @dev Can be called only by the contract owner/admin + function enableRecruitments( + uint256 _startTime, + uint256 _endTime, + uint256[] calldata _s1BadgeIds + ) + external + onlyRole(DEFAULT_ADMIN_ROLE) + { + _enableRecruitments(_startTime, _endTime, _s1BadgeIds); + } + + /// @notice Get the current recruitment cycle + /// @return The current recruitment cycle + function getRecruitmentCycle(uint256 _cycleId) + external + view + returns (RecruitmentCycle memory) + { + return recruitmentCycles[_cycleId]; + } + + /// @notice Internal logic to start a recruitment + /// @param _user The user address + /// @param _s1BadgeId The badge ID + /// @param _s1TokenId The badge token ID + /// @param _recruitmentType The recruitment type + function _startRecruitment( + address _user, + uint256 _s1BadgeId, + uint256 _s1TokenId, + RecruitmentType _recruitmentType + ) + internal + virtual + { + Recruitment memory _recruitment = Recruitment( + recruitmentCycleId, // recruitmentCycle + _user, // user + _s1BadgeId, + _s1TokenId, + 0, // s2TokenId, unset + block.timestamp + config.cooldownRecruitment, // cooldownExpiration + 0, // influenceExpiration, unset + 0, // whaleInfluences + 0 // minnowInfluences + ); + + recruitments[_user].push(_recruitment); + recruitmentCycleUniqueMints[recruitmentCycleId][_user][_s1BadgeId][_recruitmentType] = true; + + emit RecruitmentUpdated( + _recruitment.recruitmentCycle, + _recruitment.user, + _recruitment.s1BadgeId, + _recruitment.s1TokenId, + _recruitment.s2TokenId, + _recruitment.cooldownExpiration, + _recruitment.influenceExpiration, + _recruitment.whaleInfluences, + _recruitment.minnowInfluences + ); + } + + /// @notice Start a recruitment for a badge using the user's experience points + /// @param _hash The hash to sign of the signature + /// @param _v The signature V field + /// @param _r The signature R field + /// @param _s The signature S field + /// @param _exp The user's experience points + function startRecruitment( + bytes32 _hash, + uint8 _v, + bytes32 _r, + bytes32 _s, + uint256 _exp + ) + external + virtual + isNotMigrating(_msgSender()) + { + bytes32 calculatedHash_ = generateClaimHash(HashType.Start, _msgSender(), _exp); + + if (calculatedHash_ != _hash) { + revert HASH_MISMATCH(); + } + + (address recovered_,,) = ECDSA.tryRecover(_hash, _v, _r, _s); + if (recovered_ != randomSigner) { + revert NOT_RANDOM_SIGNER(); + } + + if (_exp < userExperience[_msgSender()]) { + revert EXP_TOO_LOW(); + } + + userExperience[_msgSender()] = _exp; + + RecruitmentCycle memory cycle_ = recruitmentCycles[recruitmentCycleId]; + if (cycle_.startTime > block.timestamp || cycle_.endTime < block.timestamp) { + revert RECRUITMENT_NOT_ENABLED(); + } + uint256 randomSeed_ = randomFromSignature(_hash, _v, _r, _s); + uint256 s1BadgeId_ = cycle_.s1BadgeIds[randomSeed_ % cycle_.s1BadgeIds.length]; + + if ( + recruitmentCycleUniqueMints[recruitmentCycleId][_msgSender()][s1BadgeId_][RecruitmentType + .Claim] + ) { + revert ALREADY_MIGRATED_IN_CYCLE(); + } + + _startRecruitment(_msgSender(), s1BadgeId_, 0, RecruitmentType.Claim); + } + + /// @notice Start a recruitment for a badge using the user's experience points + /// @param _hash The hash to sign of the signature + /// @param _v The signature V field + /// @param _r The signature R field + /// @param _s The signature S field + /// @param _exp The user's experience points + /// @param _s1BadgeId The badge ID (s1) + function startRecruitment( + bytes32 _hash, + uint8 _v, + bytes32 _r, + bytes32 _s, + uint256 _exp, + uint256 _s1BadgeId + ) + external + virtual + isNotMigrating(_msgSender()) + recruitmentOpen(_s1BadgeId) + hasntMigratedInCycle(_s1BadgeId, _msgSender(), RecruitmentType.Claim) + { + bytes32 calculatedHash_ = generateClaimHash(HashType.Start, _msgSender(), _s1BadgeId); + + if (calculatedHash_ != _hash) { + revert HASH_MISMATCH(); + } + + (address recovered_,,) = ECDSA.tryRecover(_hash, _v, _r, _s); + if (recovered_ != randomSigner) { + revert NOT_RANDOM_SIGNER(); + } + + if (_exp < userExperience[_msgSender()]) { + revert EXP_TOO_LOW(); + } + + userExperience[_msgSender()] = _exp; + + _startRecruitment(_msgSender(), _s1BadgeId, 0, RecruitmentType.Claim); + } + + /// @notice Start a recruitment for a badge + /// @param _s1BadgeId The badge ID (s1) + /// @dev Not all badges are eligible for recruitment at the same time + /// @dev Defines a cooldown for the recruitment to be complete + /// @dev the cooldown is lesser the higher the Pass Tier + /// @dev Must be called from the s1 badges contract + function startRecruitment( + address _user, + uint256 _s1BadgeId + ) + external + virtual + onlyRole(S1_BADGES_ROLE) + recruitmentOpen(_s1BadgeId) + isNotMigrating(_user) + hasntMigratedInCycle(_s1BadgeId, _user, RecruitmentType.Migration) + { + uint256 s1TokenId_ = s1Badges.getTokenId(_user, _s1BadgeId); + + if (s1Badges.ownerOf(s1TokenId_) != _user) { + revert TOKEN_NOT_OWNED(); + } + _startRecruitment(_user, _s1BadgeId, s1TokenId_, RecruitmentType.Migration); + } + + /// @notice Get the active recruitment for a user + /// @param _user The user address + /// @return The active recruitment + function getActiveRecruitmentFor(address _user) public view returns (Recruitment memory) { + if (recruitments[_user].length == 0) { + revert RECRUITMENT_NOT_STARTED(); + } + return recruitments[_user][recruitments[_user].length - 1]; + } + + /// @notice Update a recruitment + /// @param _recruitment The updated recruitment + function _updateRecruitment(Recruitment memory _recruitment) internal virtual { + recruitments[_recruitment.user][recruitments[_recruitment.user].length - 1] = _recruitment; + + emit RecruitmentUpdated( + _recruitment.recruitmentCycle, + _recruitment.user, + _recruitment.s1BadgeId, + _recruitment.s1TokenId, + _recruitment.s2TokenId, + _recruitment.cooldownExpiration, + _recruitment.influenceExpiration, + _recruitment.whaleInfluences, + _recruitment.minnowInfluences + ); + } + + /// @notice Get the maximum number of influences for a given experience + /// @param _exp The user's experience points + function maxInfluences(uint256 _exp) public view virtual returns (uint256 value) { + value = 0; // _exp / config.maxInfluencesDivider; + value += config.baseMaxInfluences; + return value; + } + + /// @notice Influence (alter) the chances during a recruitment + /// @param _hash The hash to sign + /// @param _v signature V field + /// @param _r signature R field + /// @param _s signature S field + /// @param _influenceColor the influence's color + /// @dev Can be called only during an active recruitment + /// @dev Implements a cooldown before allowing to re-influence + /// @dev The max influence amount is determined by Pass Tier + function influenceRecruitment( + bytes32 _hash, + uint8 _v, + bytes32 _r, + bytes32 _s, + uint256 _exp, + InfluenceColor _influenceColor + ) + external + isMigrating + { + bytes32 calculatedHash_ = generateClaimHash(HashType.Influence, _msgSender(), _exp); + + if (calculatedHash_ != _hash) { + revert HASH_MISMATCH(); + } + + (address recovered_,,) = ECDSA.tryRecover(_hash, _v, _r, _s); + if (recovered_ != randomSigner) revert NOT_RANDOM_SIGNER(); + Recruitment memory recruitment_ = getActiveRecruitmentFor(_msgSender()); + + if ((recruitment_.whaleInfluences + recruitment_.minnowInfluences) >= maxInfluences(_exp)) { + revert MAX_INFLUENCES_REACHED(); + } + + if (recruitment_.influenceExpiration > block.timestamp) { + revert INFLUENCE_IN_PROGRESS(); + } + + // apply the influence, and reset the other + if (_influenceColor == InfluenceColor.Whale) { + recruitment_.whaleInfluences++; + recruitment_.minnowInfluences = 0; + } else if (_influenceColor == InfluenceColor.Minnow) { + recruitment_.minnowInfluences++; + recruitment_.whaleInfluences = 0; + } else { + revert INVALID_INFLUENCE_COLOR(); + } + + recruitment_.influenceExpiration = block.timestamp + config.cooldownInfluence; + + _updateRecruitment(recruitment_); + } + + /// @notice End a recruitment + /// @param _hash The hash to sign + /// @param _v signature V field + /// @param _r signature R field + /// @param _s signature S field + /// @param _exp The user's experience points + /// @dev Can be called only during an active recruitment, after the cooldown is over + /// @dev The final color is determined randomly, and affected by the influence amounts + function endRecruitment( + bytes32 _hash, + uint8 _v, + bytes32 _r, + bytes32 _s, + uint256 _exp + ) + external + isMigrating + { + Recruitment memory recruitment_ = getActiveRecruitmentFor(_msgSender()); + + if (recruitment_.influenceExpiration > block.timestamp) { + revert INFLUENCE_IN_PROGRESS(); + } + // check if the cooldown is over + if (recruitment_.cooldownExpiration > block.timestamp) { + revert RECRUITMENT_NOT_READY(); + } + // ensure the hash corresponds to the start time + bytes32 calculatedHash_ = generateClaimHash(HashType.End, _msgSender(), _exp); + + if (calculatedHash_ != _hash) { + revert HASH_MISMATCH(); + } + + uint256 randomSeed_ = randomFromSignature(_hash, _v, _r, _s); + + uint256 whaleWeight_ = 50 + recruitment_.whaleInfluences * config.influenceWeightPercent; + uint256 minnowWeight_ = 50 + recruitment_.minnowInfluences * config.influenceWeightPercent; + + uint256 totalWeight_ = whaleWeight_ + minnowWeight_; + + uint256 randomValue = randomSeed_ % totalWeight_; + + TrailblazersBadgesS2.MovementType finalColor_; + if (randomValue < minnowWeight_) { + finalColor_ = TrailblazersBadgesS2.MovementType.Minnow; + } else { + finalColor_ = TrailblazersBadgesS2.MovementType.Whale; + } + + uint256 s1BadgeId_ = recruitment_.s1BadgeId; + + // mint the badge + s2Badges.mint(_msgSender(), TrailblazersBadgesS2.BadgeType(s1BadgeId_), finalColor_); + uint256 s2TokenId_ = s2Badges.totalSupply(); + + recruitment_.s2TokenId = s2TokenId_; + recruitment_.cooldownExpiration = 0; + recruitment_.influenceExpiration = 0; + + _updateRecruitment(recruitment_); + + emit RecruitmentComplete( + recruitment_.recruitmentCycle, + recruitment_.user, + recruitment_.s1TokenId, + recruitment_.s2TokenId, + uint256(finalColor_) + ); + } + + /// @notice Generate a unique hash for each recruitment uniquely + /// @param _user The user address + /// @param _exp The users experience points + /// @return _hash The unique hash + function generateClaimHash( + HashType _hashType, + address _user, + uint256 _exp + ) + public + pure + returns (bytes32) + { + return keccak256(abi.encodePacked(_hashType, _user, _exp)); + } + + /// @notice Check if a recruitment is active for a user + /// @param _user The user address + /// @return Whether the user has an active recruitment + function isRecruitmentActive(address _user) public view returns (bool) { + if (recruitments[_user].length == 0) { + return false; + } + Recruitment memory recruitment_ = getActiveRecruitmentFor(_user); + return recruitment_.cooldownExpiration != 0; + } + + /// @notice Generates a random number from a signature + /// @param _hash The hash to sign + /// @param _v signature V field + /// @param _r signature R field + /// @param _s signature S field + /// @return _random The pseudo-random number + function randomFromSignature( + bytes32 _hash, + uint8 _v, + bytes32 _r, + bytes32 _s + ) + public + view + returns (uint256 _random) + { + (address recovered_,,) = ECDSA.tryRecover(_hash, _v, _r, _s); + if (recovered_ != randomSigner) revert NOT_RANDOM_SIGNER(); + return uint256(keccak256(abi.encodePacked(_r, _s, _v))); + } + + /// @notice Check if a influence is active for a user + /// @param _user The user address + /// @return Whether the user has an active influence + function isInfluenceActive(address _user) public view returns (bool) { + Recruitment memory recruitment_ = getActiveRecruitmentFor(_user); + return recruitment_.influenceExpiration > block.timestamp; + } + + /// @notice Get the recruitment influence counts for a user + /// @param _user The user address + /// @return _whaleInfluences The Whale influence count + /// @return _minnowInfluences The Minnow influence count + function getRecruitmentInfluences(address _user) + public + view + returns (uint256 _whaleInfluences, uint256 _minnowInfluences) + { + if (!isRecruitmentActive(_user)) { + revert RECRUITMENT_NOT_STARTED(); + } + Recruitment memory recruitment_ = getActiveRecruitmentFor(_user); + return (recruitment_.whaleInfluences, recruitment_.minnowInfluences); + } + + /// @notice supportsInterface implementation + /// @param _interfaceId The interface ID + /// @return Whether the interface is supported + function supportsInterface(bytes4 _interfaceId) public view override returns (bool) { + return super.supportsInterface(_interfaceId); + } + + /// @notice Internal method to authorize an upgrade + function _authorizeUpgrade(address) internal virtual override onlyOwner { } +} diff --git a/packages/nfts/contracts/trailblazers-season-2/TrailblazersBadgesS2.sol b/packages/nfts/contracts/trailblazers-season-2/TrailblazersBadgesS2.sol new file mode 100644 index 00000000000..5984e3a3e75 --- /dev/null +++ b/packages/nfts/contracts/trailblazers-season-2/TrailblazersBadgesS2.sol @@ -0,0 +1,211 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol"; +import "../trailblazers-badges/ECDSAWhitelist.sol"; +import "@taiko/blacklist/IMinimalBlacklist.sol"; +import "@openzeppelin/contracts/utils/Strings.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"; +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; +import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; +import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Pausable.sol"; +import "@openzeppelin/contracts/access/AccessControl.sol"; +import "@openzeppelin/contracts/utils/Strings.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/utils/ERC721HolderUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import "./TrailblazersS1BadgesV4.sol"; +import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; + +contract TrailblazersBadgesS2 is + ContextUpgradeable, + UUPSUpgradeable, + Ownable2StepUpgradeable, + AccessControlUpgradeable, + ERC1155SupplyUpgradeable +{ + /// @notice Badge types + enum BadgeType { + Ravers, // s1 id: 0 + Robots, // s1 id: 1 + Bouncers, // s1 id: 2 + Masters, // s1 id: 3 + Monks, // s1 id: 4 + Androids, // s1 id: 5 + Drummers, // s1 id: 6 + Shinto // s1 id: 7 + + } + + /// @notice Movement types + enum MovementType { + Undefined, // unused + Whale, // s1 based/pink + Minnow // s1 boosted/purple + + } + + /// @notice Badge struct + struct Badge { + uint256 tokenId; + BadgeType badgeType; + MovementType movementType; + } + + /// @notice Badge mapping + mapping(uint256 tokenId => Badge badge) private badges; + /// @notice User, Badge, and Movement relation to tokenId + mapping( + address user + => mapping(BadgeType badgeType => mapping(MovementType movementType => uint256 tokenId)) + ) private userBadges; + /// @notice Badge URI template + string public uriTemplate; + /// @notice Minter address; BadgeMigration contract + address public minter; + /// @notice Minter role + bytes32 public constant MINTER_ROLE = keccak256("MINTER"); + /// @notice Gap for upgrade safety + uint256[43] private __gap; + + /// @notice Errors + error NOT_MINTER(); + error TOKEN_NOT_MINTED(); + + /// @notice Initialize the contract + /// @param _minter The minter address + /// @param _uriTemplate The badge URI template + function initialize( + address _minter, + string calldata _uriTemplate + ) + external + virtual + initializer + { + __ERC1155_init(""); + __ERC1155Supply_init(); + _transferOwnership(_msgSender()); + __Context_init(); + _grantRole(DEFAULT_ADMIN_ROLE, _msgSender()); + _grantRole(MINTER_ROLE, _minter); + minter = _minter; + uriTemplate = _uriTemplate; + } + + /// @notice Set the minter address + /// @param _minter The minter address + /// @dev Only the owner can call this function + function setMinter(address _minter) external virtual onlyRole(DEFAULT_ADMIN_ROLE) { + minter = _minter; + _grantRole(MINTER_ROLE, _minter); + } + + /// @notice Mint a badge + /// @param _to The address to mint the badge to + /// @param _badgeType The badge type + /// @param _movementType The movement type + /// @dev Only the minter can call this function + function mint( + address _to, + BadgeType _badgeType, + MovementType _movementType + ) + external + virtual + onlyRole(MINTER_ROLE) + { + uint256 tokenId_ = totalSupply() + 1; + Badge memory badge_ = Badge(tokenId_, _badgeType, _movementType); + _mint(_to, tokenId_, 1, ""); + badges[tokenId_] = badge_; + } + + /// @notice Internal method to assemble URIs + /// @param _badgeType The badge type + /// @param _movementType The movement type + /// @return The URI + function _uri( + BadgeType _badgeType, + MovementType _movementType + ) + internal + view + virtual + returns (string memory) + { + string memory badgeType_ = Strings.toString(uint256(_badgeType)); + string memory movementType_ = Strings.toString(uint256(_movementType)); + + return string(abi.encodePacked(uriTemplate, "/", movementType_, "/", badgeType_)); + } + + /// @notice Retrieve the URI for a badge given the type & movement + /// @param _badgeType The badge type + /// @param _movementType The movement type + /// @return The URI + function uri( + BadgeType _badgeType, + MovementType _movementType + ) + external + view + virtual + returns (string memory) + { + return _uri(_badgeType, _movementType); + } + + /// @notice Retrieve the URI for a badge given the token ID + /// @param _tokenId The token ID + /// @return The URI + function uri(uint256 _tokenId) public view virtual override returns (string memory) { + if (_tokenId > totalSupply()) { + revert TOKEN_NOT_MINTED(); + } + Badge memory badge_ = badges[_tokenId]; + return _uri(badge_.badgeType, badge_.movementType); + } + + /// @notice Retrieve a badge + /// @param _tokenId The token ID + /// @return The badge + function getBadge(uint256 _tokenId) external view virtual returns (Badge memory) { + if (_tokenId < totalSupply()) { + revert TOKEN_NOT_MINTED(); + } + return badges[_tokenId]; + } + + /// @notice supportsInterface implementation + /// @param _interfaceId The interface ID + /// @return Whether the interface is supported + function supportsInterface(bytes4 _interfaceId) + public + view + virtual + override(AccessControlUpgradeable, ERC1155Upgradeable) + returns (bool) + { + return super.supportsInterface(_interfaceId); + } + + /// @notice Internal method to authorize an upgrade + function _authorizeUpgrade(address) internal virtual override onlyOwner { } + + // v2 + + function version() public pure returns (string memory) { + return "v2"; + } + + function setUri(string memory __uri) public onlyRole(DEFAULT_ADMIN_ROLE) { + uriTemplate = __uri; + } +} diff --git a/packages/nfts/contracts/trailblazers-season-2/TrailblazersS1BadgesV4.sol b/packages/nfts/contracts/trailblazers-season-2/TrailblazersS1BadgesV4.sol new file mode 100644 index 00000000000..c272a552667 --- /dev/null +++ b/packages/nfts/contracts/trailblazers-season-2/TrailblazersS1BadgesV4.sol @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../trailblazers-badges/TrailblazersBadgesV3.sol"; +import "./BadgeRecruitment.sol"; + +contract TrailblazersBadgesV4 is TrailblazersBadgesV3 { + /// @notice Duration for which a s1 badge is locked after recruitment is started + uint256 public recruitmentLockDuration; + /// @notice BadgeRecruitment contract + BadgeRecruitment public recruitmentContract; + /// @notice Mapping of badge token id to unlock timestamp + mapping(uint256 tokenId => uint256 unlockTimestamp) public unlockTimestamps; + + /// @notice Errors + error BADGE_LOCKED(); + error RECRUITMENT_LOCK_DURATION_NOT_SET(); + + /// @notice Updated version function + /// @return Version string + function version() external pure virtual override returns (string memory) { + return "V4"; + } + + /// @notice Overwritten update function that prevents locked badges from being transferred + /// @param to Address to transfer badge to + /// @param tokenId Badge token id + /// @param auth Address to authorize transfer + /// @return Address of the recipient + function _update( + address to, + uint256 tokenId, + address auth + ) + internal + virtual + override + returns (address) + { + if (unlockTimestamps[tokenId] > block.timestamp) { + revert BADGE_LOCKED(); + } + return super._update(to, tokenId, auth); + } + + /// @notice Set recruitment contract + /// @param _recruitmentContract Address of the recruitment contract + /// @dev Only owner + function setRecruitmentContract(address _recruitmentContract) public onlyOwner { + recruitmentContract = BadgeRecruitment(_recruitmentContract); + } + + /// @notice Set recruitment lock duration + /// @param _duration Duration in seconds + /// @dev Only owner + function setRecruitmentLockDuration(uint256 _duration) public onlyOwner { + recruitmentLockDuration = _duration; + } + + /// @notice Start recruitment for a badge + /// @param _badgeId Badge id + function startRecruitment(uint256 _badgeId) public { + if (recruitmentLockDuration == 0) { + revert RECRUITMENT_LOCK_DURATION_NOT_SET(); + } + uint256 tokenId = getTokenId(_msgSender(), _badgeId); + unlockTimestamps[tokenId] = block.timestamp + recruitmentLockDuration; + recruitmentContract.startRecruitment(_msgSender(), _badgeId); + } +} diff --git a/packages/nfts/deployments/gen-layouts.sh b/packages/nfts/deployments/gen-layouts.sh index 2d0fbb034b4..6f647cfb56c 100755 --- a/packages/nfts/deployments/gen-layouts.sh +++ b/packages/nfts/deployments/gen-layouts.sh @@ -7,6 +7,8 @@ contracts=( "SnaefellToken" "ECDSAWhitelist" "TrailblazersBadges" + "TrailblazersBadgesV2" + "BadgeMigration" ) # Empty the output file initially diff --git a/packages/nfts/deployments/profile/mainnet.json b/packages/nfts/deployments/profile/mainnet.json index eb752c06c71..4093af55cab 100644 --- a/packages/nfts/deployments/profile/mainnet.json +++ b/packages/nfts/deployments/profile/mainnet.json @@ -1,3 +1,3 @@ { - "RegisterProfilePicture": "0xCbC7846351BaEaB1ed51f8FF57e10C367E01488A" + "RegisterProfilePicture": "0x58617427f3d42e5435908661d3c788d7d2EAf3fa" } diff --git a/packages/nfts/deployments/taikoon/hekla.json b/packages/nfts/deployments/taikoon/hekla.json index 6d54379cbe2..f9241cbc4ef 100644 --- a/packages/nfts/deployments/taikoon/hekla.json +++ b/packages/nfts/deployments/taikoon/hekla.json @@ -1,5 +1,5 @@ { "MerkleRoot": "0x1c3b504b4d5640d26ad1aa3b57a9df9ec034f19239768e734b849c306d10b110", "Owner": "0x4100a9B680B1Be1F10Cb8b5a57fE59eA77A8184e", - "TaikoonToken": "0xf3FBa6f1E6C1998195239e7DD794c1EcEA8Da66B" + "TaikoonToken": "0x6e68900B53D6de5c20A4b81CE42A488b887f40Ce" } diff --git a/packages/nfts/deployments/trailblazers-airdrop/hekla.json b/packages/nfts/deployments/trailblazers-airdrop/hekla.json index 5c8dd9aabf2..10960be94d8 100644 --- a/packages/nfts/deployments/trailblazers-airdrop/hekla.json +++ b/packages/nfts/deployments/trailblazers-airdrop/hekla.json @@ -1,4 +1,5 @@ { "ERC20Airdrop": "0xdeC2662Dff4eAB8b94B5257D637204d18D95cb74", - "MerkleRoot": "0xbe8ec647626f95185f551887b3eee43ea9e8965c7baf558a9f8cb22b020597f0" + "MerkleRoot": "0xbe8ec647626f95185f551887b3eee43ea9e8965c7baf558a9f8cb22b020597f0", + "ERC20Token": "0xa9d23408b9ba935c230493c40c73824df71a0975" } diff --git a/packages/nfts/deployments/trailblazers-airdrop/mainnet.json b/packages/nfts/deployments/trailblazers-airdrop/mainnet.json index 289f920f46b..d0f2601ab76 100644 --- a/packages/nfts/deployments/trailblazers-airdrop/mainnet.json +++ b/packages/nfts/deployments/trailblazers-airdrop/mainnet.json @@ -1,4 +1,5 @@ { "ERC20Airdrop": "0x290265ACd21816EE414E64eEC77dd490d8dd9f51", - "MerkleRoot": "0xc7f7e6bb3d1bb31b0ef5e2e34383c12ec9ef8a301ffde9771bd9de7554c70b1d" + "MerkleRoot": "0xc7f7e6bb3d1bb31b0ef5e2e34383c12ec9ef8a301ffde9771bd9de7554c70b1d", + "ERC20Token": "0xa9d23408b9ba935c230493c40c73824df71a0975" } diff --git a/packages/nfts/deployments/trailblazers-badges/hekla.json b/packages/nfts/deployments/trailblazers-badges/hekla.json index 5730ee038c0..ecc500a7b7c 100644 --- a/packages/nfts/deployments/trailblazers-badges/hekla.json +++ b/packages/nfts/deployments/trailblazers-badges/hekla.json @@ -1,5 +1,5 @@ { - "MintSigner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "Owner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "TrailblazersBadges": "0x4406dB2850EcE5e44B93a7b0296229DF882d34e6" + "Owner": "0x4100a9B680B1Be1F10Cb8b5a57fE59eA77A8184e", + "TrailblazersBadges": "0xe20616Be39a58cC990c3B8ab069F31e230BeD74D", + "TrailblazersBadgesS2": "0x5dC1F8ef5c7f4f40AdA892B0988b563e71f03eEd" } diff --git a/packages/nfts/deployments/trailblazers-season-2/hekla.json b/packages/nfts/deployments/trailblazers-season-2/hekla.json new file mode 100644 index 00000000000..0b70fbc0bf4 --- /dev/null +++ b/packages/nfts/deployments/trailblazers-season-2/hekla.json @@ -0,0 +1,6 @@ +{ + "BadgeRecruitment": "0xBd368C65Cb354eBAd6c1429b551bD0197f19C2B8", + "Owner": "0x4100a9B680B1Be1F10Cb8b5a57fE59eA77A8184e", + "TrailblazersBadges": "0x9E14C357E964BeE012bA82Ce9d6513dAec6ea961", + "TrailblazersBadgesS2": "0xc84B76a5836Cb0CeF094808af445F7E98504ED5B" +} diff --git a/packages/nfts/deployments/trailblazers-season-2/mainnet.json b/packages/nfts/deployments/trailblazers-season-2/mainnet.json new file mode 100644 index 00000000000..4430837567d --- /dev/null +++ b/packages/nfts/deployments/trailblazers-season-2/mainnet.json @@ -0,0 +1,6 @@ +{ + "BadgeRecruitment": "0xa9Ceb04F3aF71fF123409d426A92BABb5124970C", + "Owner": "0x7d70236E2517f5B95247AF1d806A9E3C328a7860", + "TrailblazersBadges": "0xa20a8856e00F5ad024a55A663F06DCc419FFc4d5", + "TrailblazersBadgesS2": "0x52A7dBeC10B404548066F59DE89484e27b4181dA" +} diff --git a/packages/nfts/package.json b/packages/nfts/package.json index 6f7be4c873c..41926afa56c 100644 --- a/packages/nfts/package.json +++ b/packages/nfts/package.json @@ -12,32 +12,36 @@ "node": "anvil", "layout": "./deployments/gen-layouts.sh", "taikoon:merkle": "node script/taikoon/js/generate-merkle-tree.js", - "snaefell:merkle": "node script/snaefell/js/generate-merkle-tree.js", - "taikoon:deploy:localhost": "forge clean && pnpm compile && forge script script/taikoon/sol/Deploy.s.sol --rpc-url http://localhost:8545 --broadcast", - "snaefell:deploy:localhost": "forge clean && pnpm compile && forge script script/snaefell/sol/Deploy.s.sol --rpc-url http://localhost:8545 --broadcast", + "taikoon:deploy:localhost": "forge clean && forge script script/taikoon/sol/Deploy.s.sol --rpc-url http://localhost:8545 --broadcast", "taikoon:deploy:ipfs": "rm -rf data/taikoon/metadata/* && node script/taikoon/js/4everland.js", + "taikoon:deploy:devnet": "forge clean && forge script script/taikoon/sol/Deploy.s.sol --rpc-url https://rpc.internal.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "taikoon:deploy:mainnet": "forge clean && forge script script/taikoon/sol/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --legacy --with-gas-price 13 ", + "taikoon:deploy:holesky": "forge clean && forge script script/taikoon/sol/Deploy.s.sol --rpc-url https://1rpc.io/holesky --broadcast --gas-estimate-multiplier 200", + "taikoon:deploy:v2": "forge clean && forge script script/taikoon/sol/UpgradeV2.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast", + "snaefell:merkle": "node script/snaefell/js/generate-merkle-tree.js", + "snaefell:deploy:localhost": "forge clean && forge script script/snaefell/sol/Deploy.s.sol --rpc-url http://localhost:8545 --broadcast", "snaefell:deploy:ipfs": "rm -rf data/snaefell/metadata/* && node script/snaefell/js/4everland.js", - "taikoon:deploy:devnet": "forge clean && pnpm compile && forge script script/taikoon/sol/Deploy.s.sol --rpc-url https://rpc.internal.taiko.xyz --broadcast --gas-estimate-multiplier 200", - "snaefell:deploy:devnet": "forge clean && pnpm compile && forge script script/snaefell/sol/Deploy.s.sol --rpc-url https://rpc.internal.taiko.xyz --broadcast --gas-estimate-multiplier 200", - "taikoon:deploy:mainnet": "forge clean && pnpm compile && forge script script/taikoon/sol/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --legacy --with-gas-price 13 ", - "snaefell:deploy:mainnet": "forge clean && pnpm compile && forge script script/snaefell/sol/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --legacy --with-gas-price 13 ", - "taikoon:deploy:holesky": "forge clean && pnpm compile && forge script script/taikoon/sol/Deploy.s.sol --rpc-url https://1rpc.io/holesky --broadcast --gas-estimate-multiplier 200", - "taikoon:deploy:hekla": "forge clean && pnpm compile && forge script script/taikoon/sol/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", - "tbzb:deploy:localhost": "forge clean && pnpm compile && forge script script/trailblazers-badges/sol/Deploy.s.sol --rpc-url http://localhost:8545 --broadcast", - "tbzb:deploy:hekla": "forge clean && pnpm compile && forge script script/trailblazers-badges/sol/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", - "galxe:deploy:mainnet": "forge clean && pnpm compile && forge script script/galxe/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --legacy --with-gas-price 1", - "tbzb:deploy:mainnet": "forge clean && pnpm compile && forge script script/trailblazers-badges/sol/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --legacy --with-gas-price 13 ", - "taikoon:deploy:v2": "forge clean && pnpm compile && forge script script/taikoon/sol/UpgradeV2.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast", - "kbw:deploy:hekla": "forge clean && pnpm compile && forge script script/party-ticket/sol/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "snaefell:deploy:devnet": "forge clean && forge script script/snaefell/sol/Deploy.s.sol --rpc-url https://rpc.internal.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "snaefell:deploy:mainnet": "forge clean && forge script script/snaefell/sol/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --legacy --with-gas-price 13 ", "kbw:deploy:mainnet": "forge clean && pnpm compile && forge script script/party-ticket/sol/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --legacy --with-gas-price 30 ", "kbw:upgradeV2:hekla": "forge clean && pnpm compile && forge script script/party-ticket/sol/UpgradeV2.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", "kbw:upgradeV2:mainnet": "forge clean && pnpm compile && forge script script/party-ticket/sol/UpgradeV2.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast", + "tbzb:deploy:localhost": "forge clean && forge script script/trailblazers-badges/Deploy.s.sol --rpc-url http://localhost:8545 --broadcast", + "tbzb:deploy:hekla": "forge clean && forge script script/trailblazers-badges/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "galxe:deploy:mainnet": "forge clean && forge script script/galxe/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --legacy --with-gas-price 1", + "tbzb:deploy:mainnet": "forge clean && forge script script/trailblazers-badges/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --legacy --with-gas-price 13 ", + "kbw:deploy:hekla": "forge clean && forge script script/party-ticket/sol/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "tbz:s2:deploy:hekla": "forge clean && forge script script/trailblazers-season-2/Deploy.s.sol --tc DeployS2Script --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "tbz:s2:deploy:mainnet": "forge clean && forge script script/trailblazers-season-2/Deploy.s.sol --tc DeployS2Script --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 200", + "taikoon:deploy:hekla": "forge clean && pnpm compile && forge script script/taikoon/sol/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", "pfp:deploy:hekla": "forge clean && pnpm compile && forge script script/profile/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", "pfp:deploy:mainnet": "forge clean && pnpm compile && forge script script/profile/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 200", "tbz:airdrop:hekla": "forge clean && pnpm compile && forge script script/trailblazers-airdrop/Deploy.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", "tbz:airdrop:mainnet": "forge clean && pnpm compile && forge script script/trailblazers-airdrop/Deploy.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100", "tbz:upgradeV3:hekla": "forge clean && pnpm compile && forge script script/trailblazers-badges/sol/UpgradeV3.s.sol --rpc-url https://rpc.hekla.taiko.xyz --broadcast --gas-estimate-multiplier 200", - "tbz:upgradeV3:mainnet": "forge clean && pnpm compile && forge script script/trailblazers-badges/sol/UpgradeV3.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100" + "tbz:upgradeV3:mainnet": "forge clean && pnpm compile && forge script script/trailblazers-badges/sol/UpgradeV3.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100", + "tbz:upgradeV4:mainnet": "forge clean && pnpm compile && forge script script/trailblazers-badges/UpgradeV4.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100", + "tbz-s2:upgradeV2:mainnet": "forge clean && pnpm compile && forge script script/trailblazers-season-2/UpgradeV2.s.sol --rpc-url https://rpc.mainnet.taiko.xyz --broadcast --gas-estimate-multiplier 100" }, "devDependencies": { "@types/node": "^20.11.30", diff --git a/packages/nfts/script/trailblazer/trailblazers-badges/sol/Deploy.s.sol b/packages/nfts/script/trailblazer/trailblazers-badges/Deploy.s.sol similarity index 90% rename from packages/nfts/script/trailblazer/trailblazers-badges/sol/Deploy.s.sol rename to packages/nfts/script/trailblazer/trailblazers-badges/Deploy.s.sol index 63bb1ea352e..932321e9237 100644 --- a/packages/nfts/script/trailblazer/trailblazers-badges/sol/Deploy.s.sol +++ b/packages/nfts/script/trailblazer/trailblazers-badges/Deploy.s.sol @@ -1,12 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import { UtilsScript } from "./Utils.s.sol"; +import { UtilsScript, MockBlacklist } from "./Utils.s.sol"; import { Script, console } from "forge-std/src/Script.sol"; import { Merkle } from "murky/Merkle.sol"; import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import { TrailblazersBadges } from - "../../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { TrailblazersBadges } from "../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; contract DeployScript is Script { @@ -50,6 +49,12 @@ contract DeployScript is Script { vm.startBroadcast(deployerPrivateKey); + if (block.chainid == 167_000) { + // mainnet, use existing blacklist + } else { + blacklist = new MockBlacklist(); + } + // deploy token with empty root address impl = address(new TrailblazersBadges()); address proxy = address( diff --git a/packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV2.sol b/packages/nfts/script/trailblazer/trailblazers-badges/UpgradeS1.sol similarity index 84% rename from packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV2.sol rename to packages/nfts/script/trailblazer/trailblazers-badges/UpgradeS1.sol index a9d80fd2993..662a98a3561 100644 --- a/packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV2.sol +++ b/packages/nfts/script/trailblazer/trailblazers-badges/UpgradeS1.sol @@ -5,8 +5,7 @@ import { UtilsScript } from "./Utils.s.sol"; import { Script, console } from "forge-std/src/Script.sol"; import { Merkle } from "murky/Merkle.sol"; import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import { TrailblazersBadges } from - "../../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { TrailblazersBadges } from "../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; contract UpgradeV2 is Script { @@ -15,7 +14,7 @@ contract UpgradeV2 is Script { uint256 public deployerPrivateKey; address public deployerAddress; - address tokenV1 = 0xa20a8856e00F5ad024a55A663F06DCc419FFc4d5; + address s1Token = 0xa20a8856e00F5ad024a55A663F06DCc419FFc4d5; TrailblazersBadges public token; function setUp() public { @@ -28,7 +27,7 @@ contract UpgradeV2 is Script { } function run() public { - token = TrailblazersBadges(tokenV1); + token = TrailblazersBadges(s1Token); vm.startBroadcast(deployerPrivateKey); token.upgradeToAndCall( diff --git a/packages/nfts/script/trailblazers-badges/sol/UpgradeV3.s.sol b/packages/nfts/script/trailblazer/trailblazers-badges/UpgradeV3.s.sol similarity index 100% rename from packages/nfts/script/trailblazers-badges/sol/UpgradeV3.s.sol rename to packages/nfts/script/trailblazer/trailblazers-badges/UpgradeV3.s.sol diff --git a/packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV3.sol b/packages/nfts/script/trailblazer/trailblazers-badges/UpgradeV3.sol similarity index 83% rename from packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV3.sol rename to packages/nfts/script/trailblazer/trailblazers-badges/UpgradeV3.sol index 472192164cd..e212f866987 100644 --- a/packages/nfts/script/trailblazer/trailblazers-badges/sol/UpgradeV3.sol +++ b/packages/nfts/script/trailblazer/trailblazers-badges/UpgradeV3.sol @@ -5,13 +5,12 @@ import { UtilsScript } from "./Utils.s.sol"; import { Script, console } from "forge-std/src/Script.sol"; import { Merkle } from "murky/Merkle.sol"; import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import { TrailblazersBadges } from - "../../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { TrailblazersBadges } from "../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; import { TrailblazersBadgesV3 } from - "../../../../contracts/trailblazers-badges/TrailblazersBadgesV3.sol"; + "../../../contracts/trailblazers-badges/TrailblazersBadgesV3.sol"; -contract UpgradeV2 is Script { +contract UpgradeV3 is Script { UtilsScript public utils; string public jsonLocation; uint256 public deployerPrivateKey; @@ -38,7 +37,7 @@ contract UpgradeV2 is Script { address(new TrailblazersBadgesV3()), abi.encodeCall(TrailblazersBadgesV3.version, ()) ); - tokenV3 = TrailblazersBadgesV3(tokenV3); + tokenV3 = TrailblazersBadgesV3(address(tokenV2)); console.log("Upgraded TrailblazersBadgesV3 to:", address(tokenV3)); } diff --git a/packages/nfts/script/trailblazer/trailblazers-badges/UpgradeV4.s.sol b/packages/nfts/script/trailblazer/trailblazers-badges/UpgradeV4.s.sol new file mode 100644 index 00000000000..d49ad9cb55a --- /dev/null +++ b/packages/nfts/script/trailblazer/trailblazers-badges/UpgradeV4.s.sol @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { UtilsScript } from "./Utils.s.sol"; +import { Script, console } from "forge-std/src/Script.sol"; +import { Merkle } from "murky/Merkle.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { TrailblazersBadges } from "../../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; +import { TrailblazersBadgesV3 } from + "../../../contracts/trailblazers-badges/TrailblazersBadgesV3.sol"; +import { TrailblazersBadgesV4 } from + "../../../contracts/trailblazers-season-2/TrailblazersS1BadgesV4.sol"; + +contract UpgradeV4 is Script { + UtilsScript public utils; + string public jsonLocation; + uint256 public deployerPrivateKey; + address public deployerAddress; + + address tokenV3Address = 0xa20a8856e00F5ad024a55A663F06DCc419FFc4d5; + TrailblazersBadgesV3 public tokenV3; + TrailblazersBadgesV4 public tokenV4; + + function setUp() public { + utils = new UtilsScript(); + utils.setUp(); + + jsonLocation = utils.getContractJsonLocation(); + deployerPrivateKey = utils.getPrivateKey(); + deployerAddress = utils.getAddress(); + } + + function run() public { + vm.startBroadcast(deployerPrivateKey); + tokenV3 = TrailblazersBadgesV3(tokenV3Address); + + tokenV3.upgradeToAndCall( + address(new TrailblazersBadgesV4()), abi.encodeCall(TrailblazersBadgesV4.version, ()) + ); + + tokenV4 = TrailblazersBadgesV4(address(tokenV3)); + + console.log("Upgraded TrailblazersBadgesV3 to:", address(tokenV4)); + + // update uri + tokenV4.setUri( + "https://taikonfts.4everland.link/ipfs/bafybeiatuzeeeznd3hi5qiulslxcjd22ebu45t4fra2jvi3smhocr2c66a" + ); + console.log("Updated token URI"); + } +} diff --git a/packages/nfts/script/trailblazers-badges/sol/Utils.s.sol b/packages/nfts/script/trailblazer/trailblazers-badges/Utils.s.sol similarity index 100% rename from packages/nfts/script/trailblazers-badges/sol/Utils.s.sol rename to packages/nfts/script/trailblazer/trailblazers-badges/Utils.s.sol diff --git a/packages/nfts/script/trailblazers-season-2/Deploy.s.sol b/packages/nfts/script/trailblazers-season-2/Deploy.s.sol new file mode 100644 index 00000000000..2775e877772 --- /dev/null +++ b/packages/nfts/script/trailblazers-season-2/Deploy.s.sol @@ -0,0 +1,163 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { UtilsScript, MockBlacklist } from "./Utils.s.sol"; +import { Script, console } from "forge-std/src/Script.sol"; +import { Merkle } from "murky/Merkle.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { TrailblazersBadges } from "../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; +import { TrailblazersBadgesS2 } from + "../../contracts/trailblazers-season-2/TrailblazersBadgesS2.sol"; +import { TrailblazersBadgesV4 } from + "../../contracts/trailblazers-season-2/TrailblazersS1BadgesV4.sol"; +import { BadgeRecruitment } from "../../contracts/trailblazers-season-2/BadgeRecruitment.sol"; + +contract DeployS2Script is Script { + UtilsScript public utils; + string public jsonLocation; + uint256 public deployerPrivateKey; + address public deployerAddress; + + BadgeRecruitment recruitment; + + // Taiko Mainnet Values + //address owner = 0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be; + address claimMintSigner = 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266; + address recruitmentSigner = 0x9Fc8d56c7376f9b062FEe7E02BAdFA670d603248; + string baseURI = + "https://taikonfts.4everland.link/ipfs/bafybeiatuzeeeznd3hi5qiulslxcjd22ebu45t4fra2jvi3smhocr2c66a"; + IMinimalBlacklist blacklist = IMinimalBlacklist(0xfA5EA6f9A13532cd64e805996a941F101CCaAc9a); + + uint256 public MAX_INFLUENCES = 5; + uint256 public COOLDOWN_RECRUITMENT = 24 hours; + uint256 public COOLDOWN_INFLUENCE = 30 minutes; + uint256 public INFLUENCE_WEIGHT_PERCENT = 9; + uint256 public MAX_INFLUENCES_DIVIDER = 100; + uint256 public DEFAULT_CYCLE_DURATION = 7 days; + uint256 public s1EndDate = 1_734_350_400; // Dec 16th 2024, noon UTC + uint256 public S1_LOCK_DURATION = (s1EndDate - block.timestamp); + + // Hekla Testnet Values + /* + string baseURI = + "https://taikonfts.4everland.link/ipfs/bafybeiatuzeeeznd3hi5qiulslxcjd22ebu45t4fra2jvi3smhocr2c66a"; + + IMinimalBlacklist blacklist = IMinimalBlacklist(0xe61E9034b5633977eC98E302b33e321e8140F105); + address claimMintSigner = 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266; + address recruitmentSigner = 0x3cda4F2EaC3fc2FdE78B3DFFe1A1A1Eff88c68c5; + + uint256 public MAX_INFLUENCES = 5; + uint256 public COOLDOWN_RECRUITMENT = 5 minutes; + uint256 public COOLDOWN_INFLUENCE = 1 minutes; + uint256 public INFLUENCE_WEIGHT_PERCENT = 9; + uint256 public MAX_INFLUENCES_DIVIDER = 100; + uint256 public DEFAULT_CYCLE_DURATION = 7 days; + uint256 public S1_LOCK_DURATION = 365 days; + */ + + address s1Contract = 0xa20a8856e00F5ad024a55A663F06DCc419FFc4d5; + + function setUp() public { + utils = new UtilsScript(); + utils.setUp(); + + jsonLocation = utils.getContractJsonLocation(); + + deployerPrivateKey = utils.getPrivateKey(); + deployerAddress = utils.getAddress(); + } + + function run() public { + string memory jsonRoot = "root"; + address owner = deployerAddress; + require(owner != address(0), "Owner must be specified"); + + address impl; + address proxy; + TrailblazersBadgesV4 s1Token; + TrailblazersBadgesS2 s2Token; + + vm.startBroadcast(deployerPrivateKey); + + if (block.chainid == 167_000) { + // mainnet, use existing contract + s1Token = TrailblazersBadgesV4(s1Contract); + } else { + // hekla/localhost, deploy a s1 contract + impl = address(new TrailblazersBadges()); + blacklist = new MockBlacklist(); + proxy = address( + new ERC1967Proxy( + impl, + abi.encodeCall( + TrailblazersBadges.initialize, (owner, baseURI, claimMintSigner, blacklist) + ) + ) + ); + + TrailblazersBadges s1TokenV2 = TrailblazersBadges(proxy); + + // upgrade s1 contract to v4 + s1TokenV2.upgradeToAndCall( + address(new TrailblazersBadgesV4()), + abi.encodeCall(TrailblazersBadgesV4.version, ()) + ); + + s1Token = TrailblazersBadgesV4(address(s1TokenV2)); + } + + // deploy s2 contract + impl = address(new TrailblazersBadgesS2()); + proxy = address( + new ERC1967Proxy( + impl, abi.encodeCall(TrailblazersBadgesS2.initialize, (address(owner), baseURI)) + ) + ); + + s2Token = TrailblazersBadgesS2(proxy); + + // deploy the recruitment contract + + BadgeRecruitment.Config memory config = BadgeRecruitment.Config( + COOLDOWN_RECRUITMENT, + COOLDOWN_INFLUENCE, + INFLUENCE_WEIGHT_PERCENT, + MAX_INFLUENCES, + MAX_INFLUENCES_DIVIDER, + DEFAULT_CYCLE_DURATION + ); + + impl = address(new BadgeRecruitment()); + proxy = address( + new ERC1967Proxy( + impl, + abi.encodeCall( + BadgeRecruitment.initialize, + (address(s1Token), address(s2Token), recruitmentSigner, config) + ) + ) + ); + recruitment = BadgeRecruitment(proxy); + + // assign relations + s1Token.setRecruitmentContract(address(recruitment)); + s2Token.setMinter(address(recruitment)); + + // set the lock duration + s1Token.setRecruitmentLockDuration(S1_LOCK_DURATION); + + console.log("Token Base URI:", baseURI); + console.log("Deployed TrailblazersBadgesS2 to:", address(s2Token)); + console.log("Deployed BadgeRecruitment to:", address(recruitment)); + + // Register deployment + vm.serializeAddress(jsonRoot, "TrailblazersBadges", address(s1Token)); + vm.serializeAddress(jsonRoot, "TrailblazersBadgesS2", address(s2Token)); + vm.serializeAddress(jsonRoot, "BadgeRecruitment", address(recruitment)); + string memory finalJson = vm.serializeAddress(jsonRoot, "Owner", s2Token.owner()); + vm.writeJson(finalJson, jsonLocation); + + vm.stopBroadcast(); + } +} diff --git a/packages/nfts/script/trailblazers-season-2/UpgradeV2.s.sol b/packages/nfts/script/trailblazers-season-2/UpgradeV2.s.sol new file mode 100644 index 00000000000..14c71373b27 --- /dev/null +++ b/packages/nfts/script/trailblazers-season-2/UpgradeV2.s.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { UtilsScript } from "./Utils.s.sol"; +import { Script, console } from "forge-std/src/Script.sol"; +import { Merkle } from "murky/Merkle.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { TrailblazersBadges } from "../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; + +import { TrailblazersBadgesS2 } from + "../../contracts/trailblazers-season-2/TrailblazersBadgesS2.sol"; + +contract UpgradeV2 is Script { + UtilsScript public utils; + string public jsonLocation; + uint256 public deployerPrivateKey; + address public deployerAddress; + + address tokenAddress = 0x52A7dBeC10B404548066F59DE89484e27b4181dA; + TrailblazersBadgesS2 public token; + + function setUp() public { + utils = new UtilsScript(); + utils.setUp(); + + jsonLocation = utils.getContractJsonLocation(); + deployerPrivateKey = utils.getPrivateKey(); + deployerAddress = utils.getAddress(); + } + + function run() public { + vm.startBroadcast(deployerPrivateKey); + token = TrailblazersBadgesS2(tokenAddress); + + token.upgradeToAndCall( + address(new TrailblazersBadgesS2()), abi.encodeCall(TrailblazersBadgesS2.version, ()) + ); + + token = TrailblazersBadgesS2(address(token)); + + console.log("Upgraded TrailblazersBadgesV3 to:", address(token)); + + // update uri + token.setUri( + "https://taikonfts.4everland.link/ipfs/bafybeief7o4u6f676e6uz4yt4cv34ai4mesd7motoq6y4xxaoyjfbna5de" + ); + console.log("Updated token URI"); + } +} diff --git a/packages/nfts/script/trailblazer/trailblazers-badges/sol/Utils.s.sol b/packages/nfts/script/trailblazers-season-2/Utils.s.sol similarity index 88% rename from packages/nfts/script/trailblazer/trailblazers-badges/sol/Utils.s.sol rename to packages/nfts/script/trailblazers-season-2/Utils.s.sol index 3af584af2bb..f52d15f54c8 100644 --- a/packages/nfts/script/trailblazer/trailblazers-badges/sol/Utils.s.sol +++ b/packages/nfts/script/trailblazers-season-2/Utils.s.sol @@ -4,7 +4,6 @@ pragma solidity 0.8.24; import { Script, console } from "forge-std/src/Script.sol"; import "forge-std/src/StdJson.sol"; import { IMinimalBlacklist } from "@taiko/blacklist/IMinimalBlacklist.sol"; -import { MockBlacklist } from "../../../../test/util/Blacklist.sol"; contract UtilsScript is Script { using stdJson for string; @@ -59,7 +58,7 @@ contract UtilsScript is Script { function getContractJsonLocation() public view returns (string memory) { string memory root = vm.projectRoot(); return - string.concat(root, "/deployments/trailblazers-badges/", lowercaseNetworkKey, ".json"); + string.concat(root, "/deployments/trailblazers-season-2/", lowercaseNetworkKey, ".json"); } function getBlacklist() public view returns (IMinimalBlacklist blacklistAddress) { @@ -76,3 +75,12 @@ contract UtilsScript is Script { function run() public { } } + +contract MockBlacklist is IMinimalBlacklist { + function isBlacklisted(address _account) external pure returns (bool) { + if (_account == address(0)) { + return true; + } + return false; + } +} diff --git a/packages/nfts/test/trailblazers-season-2/BadgeRecruitment.t.sol b/packages/nfts/test/trailblazers-season-2/BadgeRecruitment.t.sol new file mode 100644 index 00000000000..45ab1952fcc --- /dev/null +++ b/packages/nfts/test/trailblazers-season-2/BadgeRecruitment.t.sol @@ -0,0 +1,493 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { Test } from "forge-std/src/Test.sol"; + +import { TrailblazersBadges } from "../../contracts/trailblazers-badges/TrailblazersBadges.sol"; +import { Merkle } from "murky/Merkle.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { UtilsScript } from "../../script/taikoon/sol/Utils.s.sol"; +import { MockBlacklist } from "../util/Blacklist.sol"; +import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import { TrailblazersBadgesS2 } from + "../../contracts/trailblazers-season-2/TrailblazersBadgesS2.sol"; +import { TrailblazerBadgesS1MintTo } from "../util/TrailblazerBadgesS1MintTo.sol"; +import { TrailblazersBadgesV4 } from + "../../contracts/trailblazers-season-2/TrailblazersS1BadgesV4.sol"; +import { BadgeRecruitment } from "../../contracts/trailblazers-season-2/BadgeRecruitment.sol"; + +contract TrailblazersBadgesS2Test is Test { + UtilsScript public utils; + + TrailblazersBadgesV4 public s1BadgesV4; + TrailblazersBadgesS2 public s2Badges; + + address public owner = vm.addr(0x5); + + address[3] public minters = [vm.addr(0x1), vm.addr(0x2), vm.addr(0x3)]; + + uint256 public BADGE_ID; + + MockBlacklist public blacklist; + + address mintSigner; + uint256 mintSignerPk; + + uint256 public MAX_INFLUENCES = 3; + uint256 public COOLDOWN_RECRUITMENT = 1 hours; + uint256 public COOLDOWN_INFLUENCE = 5 minutes; + uint256 public INFLUENCE_WEIGHT_PERCENT = 5; + uint256 public MAX_INFLUENCES_DIVIDER = 100; + uint256 public DEFAULT_CYCLE_DURATION = 7 days; + + BadgeRecruitment public recruitment; + + function setUp() public { + utils = new UtilsScript(); + utils.setUp(); + blacklist = new MockBlacklist(); + // create whitelist merkle tree + vm.startBroadcast(owner); + + (mintSigner, mintSignerPk) = makeAddrAndKey("mintSigner"); + + // deploy token with empty root + address impl = address(new TrailblazersBadges()); + address proxy = address( + new ERC1967Proxy( + impl, + abi.encodeCall( + TrailblazersBadges.initialize, (owner, "ipfs://", mintSigner, blacklist) + ) + ) + ); + + TrailblazersBadges s1BadgesV2 = TrailblazersBadges(proxy); + + // upgrade s1 badges contract to use the mock version + + s1BadgesV2.upgradeToAndCall( + address(new TrailblazerBadgesS1MintTo()), + abi.encodeCall(TrailblazerBadgesS1MintTo.call, ()) + ); + + BADGE_ID = s1BadgesV2.BADGE_RAVERS(); + + // upgrade s1 contract to v4 + s1BadgesV2.upgradeToAndCall( + address(new TrailblazersBadgesV4()), abi.encodeCall(TrailblazersBadgesV4.version, ()) + ); + + s1BadgesV4 = TrailblazersBadgesV4(address(s1BadgesV2)); + + // set cooldown recruitment + s1BadgesV4.setRecruitmentLockDuration(365 days); + + // deploy the s2 erc1155 token contract + + impl = address(new TrailblazersBadgesS2()); + proxy = address( + new ERC1967Proxy( + impl, + abi.encodeCall(TrailblazersBadgesS2.initialize, (address(recruitment), "ipfs://")) + ) + ); + s2Badges = TrailblazersBadgesS2(proxy); + + // deploy the recruitment contract + + BadgeRecruitment.Config memory config = BadgeRecruitment.Config( + COOLDOWN_RECRUITMENT, + COOLDOWN_INFLUENCE, + INFLUENCE_WEIGHT_PERCENT, + MAX_INFLUENCES, + MAX_INFLUENCES_DIVIDER, + DEFAULT_CYCLE_DURATION + ); + + impl = address(new BadgeRecruitment()); + proxy = address( + new ERC1967Proxy( + impl, + abi.encodeCall( + BadgeRecruitment.initialize, + (address(s1BadgesV2), address(s2Badges), mintSigner, config) + ) + ) + ); + recruitment = BadgeRecruitment(proxy); + s1BadgesV4.setRecruitmentContract(address(recruitment)); + s2Badges.setMinter(address(recruitment)); + // enable recruitment for BADGE_ID + uint256[] memory enabledBadgeIds = new uint256[](1); + enabledBadgeIds[0] = BADGE_ID; + recruitment.enableRecruitments(enabledBadgeIds); + + vm.stopBroadcast(); + } + + function mint_s1(address minter, uint256 badgeId) public { + bytes32 _hash = s1BadgesV4.getHash(minter, badgeId); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(mintSignerPk, _hash); + + bool canMint = s1BadgesV4.canMint(abi.encodePacked(r, s, v), minter, badgeId); + assertTrue(canMint); + + vm.startPrank(minter); + s1BadgesV4.mint(abi.encodePacked(r, s, v), badgeId); + vm.stopPrank(); + } + + function test_mint_s1() public { + mint_s1(minters[0], s1BadgesV4.BADGE_RAVERS()); + mint_s1(minters[0], s1BadgesV4.BADGE_ROBOTS()); + assertEq(s1BadgesV4.balanceOf(minters[0]), 2); + + mint_s1(minters[1], s1BadgesV4.BADGE_BOUNCERS()); + mint_s1(minters[1], s1BadgesV4.BADGE_MASTERS()); + assertEq(s1BadgesV4.balanceOf(minters[1]), 2); + + mint_s1(minters[2], s1BadgesV4.BADGE_MONKS()); + mint_s1(minters[2], s1BadgesV4.BADGE_DRUMMERS()); + assertEq(s1BadgesV4.balanceOf(minters[2]), 2); + } + + function test_startRecruitment() public { + mint_s1(minters[0], BADGE_ID); + + vm.prank(minters[0]); + wait(100); + s1BadgesV4.startRecruitment(BADGE_ID); + + uint256 tokenId = s1BadgesV4.getTokenId(minters[0], BADGE_ID); + assertEq(s1BadgesV4.balanceOf(minters[0]), 1); + assertEq(recruitment.isRecruitmentActive(minters[0]), true); + assertEq(s1BadgesV4.unlockTimestamps(tokenId), block.timestamp + 365 days); + } + + function wait(uint256 time) public { + vm.warp(block.timestamp + time); + } + + // happy-path, make 3 pink influences, and 2 purple ones + function test_influenceRecruitment() public { + test_startRecruitment(); + + vm.startPrank(minters[0]); + + uint256 points = 0; + bytes32 _hash = + recruitment.generateClaimHash(BadgeRecruitment.HashType.Influence, minters[0], points); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(mintSignerPk, _hash); + + wait(COOLDOWN_INFLUENCE); + + recruitment.influenceRecruitment( + _hash, v, r, s, points, BadgeRecruitment.InfluenceColor.Minnow + ); + wait(COOLDOWN_INFLUENCE); + + recruitment.influenceRecruitment( + _hash, v, r, s, points, BadgeRecruitment.InfluenceColor.Minnow + ); + + for (uint256 i = 0; i < MAX_INFLUENCES; i++) { + wait(COOLDOWN_INFLUENCE); + recruitment.influenceRecruitment( + _hash, v, r, s, points, BadgeRecruitment.InfluenceColor.Whale + ); + } + + vm.stopPrank(); + + assertEq(recruitment.isInfluenceActive(minters[0]), true); + assertEq(recruitment.isRecruitmentActive(minters[0]), true); + + (uint256 whaleInfluences, uint256 minnowInfluences) = + recruitment.getRecruitmentInfluences(minters[0]); + + assertEq(whaleInfluences, MAX_INFLUENCES); + assertEq(minnowInfluences, 0); + } + + function test_revert_tooManyInfluences() public { + uint256 points = 0; + bytes32 _hash = + recruitment.generateClaimHash(BadgeRecruitment.HashType.Influence, minters[0], points); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(mintSignerPk, _hash); + + test_influenceRecruitment(); + vm.startPrank(minters[0]); + vm.expectRevert(); + recruitment.influenceRecruitment( + _hash, v, r, s, points, BadgeRecruitment.InfluenceColor.Whale + ); + + vm.stopPrank(); + } + + function test_endRecruitment() public { + test_influenceRecruitment(); + + wait(COOLDOWN_INFLUENCE); + wait(COOLDOWN_RECRUITMENT); + + // generate the claim hash for the current recruitment + bytes32 claimHash = recruitment.generateClaimHash( + BadgeRecruitment.HashType.End, + minters[0], + 0 // experience points + ); + + // simulate the backend signing the hash + (uint8 v, bytes32 r, bytes32 s) = vm.sign(mintSignerPk, claimHash); + + // exercise the randomFromSignature function + + vm.prank(minters[0]); + recruitment.endRecruitment(claimHash, v, r, s, 0); + + // check for s2 state reset + assertEq(recruitment.isRecruitmentActive(minters[0]), false); + assertEq(recruitment.isInfluenceActive(minters[0]), false); + + // check for s2 mint + assertEq(s2Badges.balanceOf(minters[0], 1), 1); + } + + function test_revert_startRecruitmentTwice() public { + test_startRecruitment(); + vm.startPrank(minters[0]); + vm.expectRevert(); + s1BadgesV4.startRecruitment(BADGE_ID); + vm.stopPrank(); + } + + function test_revert_migrateDisabled() public { + uint256 badgeId = s1BadgesV4.BADGE_ROBOTS(); + mint_s1(minters[0], badgeId); + + uint256 tokenId = s1BadgesV4.tokenOfOwnerByIndex(minters[0], 0); + + vm.startPrank(minters[0]); + vm.expectRevert(); + s1BadgesV4.startRecruitment(badgeId); + vm.stopPrank(); + // ensure no values got changed/updated + assertEq(s1BadgesV4.balanceOf(minters[0]), 1); + assertEq(s1BadgesV4.balanceOf(address(s2Badges)), 0); + assertEq(s1BadgesV4.ownerOf(tokenId), minters[0]); + assertEq(recruitment.isRecruitmentActive(minters[0]), false); + } + + function test_randomFromSignature() public view { + bytes32 signatureHash = keccak256( + abi.encodePacked( + keccak256("1234567890"), // should use the block's hash + minters[0] + ) + ); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(mintSignerPk, signatureHash); + + uint256 random = recruitment.randomFromSignature(signatureHash, v, r, s); + + assertEq( + random, + 28_417_844_340_632_250_945_870_465_294_567_768_196_388_504_060_802_704_441_612_911_129_119_444_309_664 + ); + } + + function test_setConfig() public { + BadgeRecruitment.Config memory config = + BadgeRecruitment.Config(1 hours, 5 minutes, 5, 3, 100, DEFAULT_CYCLE_DURATION); + vm.prank(owner); + recruitment.setConfig(config); + + BadgeRecruitment.Config memory newConfig = recruitment.getConfig(); + + assertEq(newConfig.cooldownRecruitment, 1 hours); + assertEq(newConfig.cooldownInfluence, 5 minutes); + assertEq(newConfig.influenceWeightPercent, 5); + assertEq(newConfig.baseMaxInfluences, 3); + } + + function test_setConfig_revert__notOwner() public { + BadgeRecruitment.Config memory config = + BadgeRecruitment.Config(1 hours, 5 minutes, 5, 3, 100, DEFAULT_CYCLE_DURATION); + + vm.startPrank(minters[0]); + vm.expectRevert(); + recruitment.setConfig(config); + vm.stopPrank(); + } + + function test_rollCycle() public { + BadgeRecruitment.RecruitmentCycle memory cycle = + recruitment.getRecruitmentCycle(recruitment.recruitmentCycleId()); + assertEq(cycle.cycleId, 1); + assertEq(cycle.startTime, block.timestamp); + assertEq(cycle.endTime, block.timestamp + DEFAULT_CYCLE_DURATION); + assertEq(cycle.s1BadgeIds.length, 1); + assertEq(cycle.s1BadgeIds[0], BADGE_ID); + test_endRecruitment(); + + // close the current cycle + vm.startPrank(owner); + //recruitment.endRecruitment(); + wait(DEFAULT_CYCLE_DURATION + 1); + // launch the next cycle + uint256[] memory enabledBadgeIds = new uint256[](1); + enabledBadgeIds[0] = 2; + recruitment.enableRecruitments(enabledBadgeIds); + + // check cycle roll forward + cycle = recruitment.getRecruitmentCycle(recruitment.recruitmentCycleId()); + assertEq(cycle.cycleId, 2); + assertEq(cycle.startTime, block.timestamp); + assertEq(cycle.endTime, block.timestamp + DEFAULT_CYCLE_DURATION); + assertEq(cycle.s1BadgeIds.length, 1); + assertEq(cycle.s1BadgeIds[0], 2); + } + + function test_revertTransferAfterRecruitmentStarts() public { + test_startRecruitment(); + assertEq(s1BadgesV4.balanceOf(minters[0]), 1); + uint256 tokenId = s1BadgesV4.getTokenId(minters[0], BADGE_ID); + vm.prank(minters[0]); + vm.expectRevert(); + s1BadgesV4.transferFrom(minters[0], minters[1], tokenId); + } + + function test_startRecruitment_expBased() public { + uint256 points = 100; + bytes32 _hash = + recruitment.generateClaimHash(BadgeRecruitment.HashType.Start, minters[0], points); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(mintSignerPk, _hash); + + vm.prank(minters[0]); + recruitment.startRecruitment(_hash, v, r, s, points); + + assertEq(recruitment.isRecruitmentActive(minters[0]), true); + } + + function test_startRecruitment_expBased_revert_hashMismatch() public { + mint_s1(minters[0], BADGE_ID); + + uint256 points = 100; + bytes32 _hash = + recruitment.generateClaimHash(BadgeRecruitment.HashType.Start, minters[0], points); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(mintSignerPk, _hash); + + vm.prank(minters[0]); + vm.expectRevert(BadgeRecruitment.HASH_MISMATCH.selector); + recruitment.startRecruitment(_hash, v, s, r, points + 1); + } + + function test_startRecruitment_expBased_revert_notRandomSigner() public { + mint_s1(minters[0], BADGE_ID); + + uint256 points = 100; + bytes32 _hash = + recruitment.generateClaimHash(BadgeRecruitment.HashType.Start, minters[0], points); + (, uint256 badSignerPk) = makeAddrAndKey("badSigner"); + (uint8 v, bytes32 r, bytes32 s) = vm.sign(badSignerPk, _hash); + + vm.prank(minters[0]); + vm.expectRevert(BadgeRecruitment.NOT_RANDOM_SIGNER.selector); + recruitment.startRecruitment(_hash, v, r, s, points); + } + + function test_startRecruitment_multiCycle() public { + // start a recruitment for minters[0] and badgeId + test_endRecruitment(); + + // mint the same badge on minters[1], and transfer to minters[0] + mint_s1(minters[1], BADGE_ID); + uint256 tokenId = s1BadgesV4.getTokenId(minters[1], BADGE_ID); + vm.prank(minters[1]); + s1BadgesV4.transferFrom(minters[1], minters[0], tokenId); + assertEq(s1BadgesV4.balanceOf(minters[0]), 2); + + // ensure they can migrate via exp + test_startRecruitment_expBased(); + wait(COOLDOWN_INFLUENCE); + wait(COOLDOWN_RECRUITMENT); + + // generate the claim hash for the current recruitment + bytes32 claimHash = recruitment.generateClaimHash( + BadgeRecruitment.HashType.End, + minters[0], + 0 // experience points + ); + + // simulate the backend signing the hash + (uint8 v, bytes32 r, bytes32 s) = vm.sign(mintSignerPk, claimHash); + + // exercise the randomFromSignature function + vm.prank(minters[0]); + recruitment.endRecruitment(claimHash, v, r, s, 0); + assertEq(s2Badges.balanceOf(minters[0], 1), 1); + + // + + // ensure minters[0] cannot recruit again within this same cycle + vm.startPrank(minters[0]); + vm.expectRevert(BadgeRecruitment.ALREADY_MIGRATED_IN_CYCLE.selector); + s1BadgesV4.startRecruitment(BADGE_ID); + // ensure they can't either via exp call + uint256 points = 100; + bytes32 _hash = + recruitment.generateClaimHash(BadgeRecruitment.HashType.Start, minters[0], points); + + (v, r, s) = vm.sign(mintSignerPk, _hash); + + vm.expectRevert(BadgeRecruitment.ALREADY_MIGRATED_IN_CYCLE.selector); + recruitment.startRecruitment(_hash, v, r, s, points); + + // move the cycle forward + wait(DEFAULT_CYCLE_DURATION + 1); + + // no cycle is set, should fail to recruit + vm.startPrank(minters[0]); + vm.expectRevert(BadgeRecruitment.RECRUITMENT_NOT_ENABLED.selector); + s1BadgesV4.startRecruitment(BADGE_ID); + + // enable the next cycle + uint256[] memory enabledBadgeIds = new uint256[](1); + enabledBadgeIds[0] = BADGE_ID; + vm.startPrank(owner); + recruitment.enableRecruitments(enabledBadgeIds); + + // ensure they can recruit with the second badge + vm.startPrank(minters[0]); + s1BadgesV4.startRecruitment(BADGE_ID); + + tokenId = s1BadgesV4.getTokenId(minters[0], BADGE_ID); + assertEq(s1BadgesV4.balanceOf(minters[0]), 2); + assertEq(recruitment.isRecruitmentActive(minters[0]), true); + assertEq(s1BadgesV4.unlockTimestamps(tokenId), block.timestamp + 365 days); + + // ensure they cannot start it again + vm.expectRevert(BadgeRecruitment.RECRUITMENT_ALREADY_STARTED.selector); + s1BadgesV4.startRecruitment(BADGE_ID); + } + + function test_enableDisableRecruitment_admin() public { + // should fail to enable new recruitments + uint256[] memory enabledBadgeIds = new uint256[](1); + enabledBadgeIds[0] = BADGE_ID; + vm.startPrank(owner); + vm.expectRevert(BadgeRecruitment.CURRENT_CYCLE_NOT_OVER.selector); + recruitment.enableRecruitments(enabledBadgeIds); + // wait out the currently-open cycle + wait(DEFAULT_CYCLE_DURATION + 1); + // create a second cycle + recruitment.enableRecruitments(enabledBadgeIds); + } +} diff --git a/packages/nfts/test/trailblazers-season-2/TrailblazersBadgesS2.t.sol b/packages/nfts/test/trailblazers-season-2/TrailblazersBadgesS2.t.sol new file mode 100644 index 00000000000..40918273115 --- /dev/null +++ b/packages/nfts/test/trailblazers-season-2/TrailblazersBadgesS2.t.sol @@ -0,0 +1,111 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { Test } from "forge-std/src/Test.sol"; + +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { UtilsScript } from "../../script/taikoon/sol/Utils.s.sol"; +import { TrailblazersBadgesS2 } from + "../../contracts/trailblazers-season-2/TrailblazersBadgesS2.sol"; + +contract TrailblazersBadgesS2Test is Test { + UtilsScript public utils; + + address public owner = vm.addr(0x5); + address public authorizedMinter = vm.addr(0x6); + address[3] public minters = [vm.addr(0x1), vm.addr(0x2), vm.addr(0x3)]; + + string public uriTemplate = "ipfs://hash"; + + TrailblazersBadgesS2 public nft; + + uint256 public TOKEN_ID = 1; + + function setUp() public { + utils = new UtilsScript(); + utils.setUp(); + // create whitelist merkle tree + vm.startBroadcast(owner); + + address impl = address(new TrailblazersBadgesS2()); + address proxy = address( + new ERC1967Proxy( + impl, + abi.encodeCall(TrailblazersBadgesS2.initialize, (authorizedMinter, uriTemplate)) + ) + ); + + nft = TrailblazersBadgesS2(proxy); + + vm.stopBroadcast(); + } + + function test_mint() public { + vm.prank(authorizedMinter); + nft.mint( + minters[0], + TrailblazersBadgesS2.BadgeType.Ravers, + TrailblazersBadgesS2.MovementType.Minnow + ); + + assertEq(nft.balanceOf(minters[0], TOKEN_ID), 1); + + TrailblazersBadgesS2.Badge memory badge = nft.getBadge(TOKEN_ID); + assertEq(badge.tokenId, TOKEN_ID); + assertEq(uint8(badge.badgeType), uint8(TrailblazersBadgesS2.BadgeType.Ravers)); + assertEq(uint8(badge.movementType), uint8(TrailblazersBadgesS2.MovementType.Minnow)); + } + + function test_uri_byTokenId() public { + test_mint(); + assertEq(nft.uri(TOKEN_ID), "ipfs://hash/2/0"); + } + + function test_uri_byTypeAndMovement() public { + test_mint(); + assertEq( + nft.uri(TrailblazersBadgesS2.BadgeType.Ravers, TrailblazersBadgesS2.MovementType.Minnow), + "ipfs://hash/2/0" + ); + } + + function test_uri_full() public { + vm.startPrank(authorizedMinter); + uint8 tokenId = 1; + + TrailblazersBadgesS2.Badge memory badge; + for (uint8 i = 1; i < 3; i++) { + for (uint8 j = 0; j < 8; j++) { + nft.mint( + minters[0], + TrailblazersBadgesS2.BadgeType(j), + TrailblazersBadgesS2.MovementType(i) + ); + + badge = nft.getBadge(tokenId); + string memory badgeType = vm.toString(uint256(badge.badgeType)); + string memory movementType = vm.toString(uint256(badge.movementType)); + + string memory uri = + string(abi.encodePacked("ipfs://hash/", movementType, "/", badgeType)); + assertEq(nft.uri(tokenId), uri); + tokenId++; + } + } + } + + function test_uri_revert__tokenNotMinted() public { + vm.expectRevert(); + nft.uri(TOKEN_ID); + } + + function test_mint_revert__notAuthorizedMinter() public { + vm.prank(minters[1]); + vm.expectRevert(); + nft.mint( + minters[1], + TrailblazersBadgesS2.BadgeType.Ravers, + TrailblazersBadgesS2.MovementType.Minnow + ); + } +} diff --git a/packages/nfts/test/util/TrailblazerBadgesS1MintTo.sol b/packages/nfts/test/util/TrailblazerBadgesS1MintTo.sol new file mode 100644 index 00000000000..27f3697fd7c --- /dev/null +++ b/packages/nfts/test/util/TrailblazerBadgesS1MintTo.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import { Test } from "forge-std/src/Test.sol"; + +import { TrailblazersBadgesV4 } from + "../../contracts/trailblazers-season-2/TrailblazersS1BadgesV4.sol"; + +contract TrailblazerBadgesS1MintTo is TrailblazersBadgesV4 { + function mintTo(address _minter, uint256 _badgeId) public onlyOwner { + if (_badgeId > BADGE_SHINTO) revert INVALID_BADGE_ID(); + + uint256 tokenId = totalSupply() + 1; + badges[tokenId] = _badgeId; + + _mint(_minter, tokenId); + + emit BadgeCreated(tokenId, _minter, _badgeId); + } + + function call() public view returns (bool) { + return true; + } +} From 7642961a9031840183f4d00d0a4c19fdb8a68058 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Thu, 5 Dec 2024 11:16:23 +0800 Subject: [PATCH 202/205] feat(taiko-client): enable proof aggregation (batch proofs) (#18163) Co-authored-by: David Co-authored-by: maskpp --- .../taiko-client/bindings/encoding/input.go | 44 +++ packages/taiko-client/cmd/flags/prover.go | 28 ++ .../taiko-client/internal/metrics/metrics.go | 12 + packages/taiko-client/pkg/rpc/ethclient.go | 61 +++++ .../taiko-client/pkg/rpc/ethclient_test.go | 26 ++ packages/taiko-client/pkg/rpc/utils.go | 141 +++++++++- packages/taiko-client/prover/config.go | 6 + packages/taiko-client/prover/init.go | 14 +- .../prover/proof_producer/dummy_producer.go | 12 + .../proof_producer/guardian_producer.go | 10 + .../proof_producer/optimistic_producer.go | 25 ++ .../prover/proof_producer/proof_producer.go | 14 + .../prover/proof_producer/sgx_producer.go | 235 +++++++++++++++- .../prover/proof_producer/zkvm_producer.go | 258 ++++++++++++++++-- .../prover/proof_submitter/interface.go | 3 + .../prover/proof_submitter/proof_buffer.go | 98 +++++++ .../prover/proof_submitter/proof_submitter.go | 232 ++++++++++++++-- .../proof_submitter/proof_submitter_test.go | 23 +- .../proof_submitter/transaction/builder.go | 74 +++++ .../proof_submitter/transaction/sender.go | 77 +++++- packages/taiko-client/prover/prover.go | 90 +++++- packages/taiko-client/prover/prover_test.go | 114 ++++++++ 22 files changed, 1515 insertions(+), 82 deletions(-) create mode 100644 packages/taiko-client/prover/proof_submitter/proof_buffer.go diff --git a/packages/taiko-client/bindings/encoding/input.go b/packages/taiko-client/bindings/encoding/input.go index 9be7c456a06..0aebf3113ee 100644 --- a/packages/taiko-client/bindings/encoding/input.go +++ b/packages/taiko-client/bindings/encoding/input.go @@ -294,6 +294,13 @@ var ( {Name: "TaikoData.Transition", Type: transitionComponentsType}, {Name: "TaikoData.TierProof", Type: tierProofComponentsType}, } + proveBlocksInputArgs = abi.Arguments{ + {Name: "TaikoData.BlockMetadata", Type: blockMetadataV2ComponentsType}, + {Name: "TaikoData.Transition", Type: transitionComponentsType}, + } + proveBlocksBatchProofArgs = abi.Arguments{ + {Name: "TaikoData.TierProof", Type: tierProofComponentsType}, + } ) // Contract ABIs. @@ -423,6 +430,43 @@ func EncodeProveBlockInput( return b, nil } +// EncodeProveBlocksInput performs the solidity `abi.encode` for the given TaikoL1.proveBlocks input. +func EncodeProveBlocksInput( + metas []metadata.TaikoBlockMetaData, + transitions []bindings.TaikoDataTransition, +) ([][]byte, error) { + if len(metas) != len(transitions) { + return nil, fmt.Errorf("both arrays of TaikoBlockMetaData and TaikoDataTransition must be equal in length") + } + b := make([][]byte, 0, len(metas)) + for i := range metas { + input, err := proveBlocksInputArgs.Pack( + metas[i].(*metadata.TaikoDataBlockMetadataOntake).InnerMetadata(), + transitions[i], + ) + if err != nil { + return nil, fmt.Errorf("failed to abi.encode TaikoL1.proveBlocks input item after ontake fork, %w", err) + } + + b = append(b, input) + } + + return b, nil +} + +// EncodeProveBlocksBatchProof performs the solidity `abi.encode` for the given TaikoL1.proveBlocks batchProof. +func EncodeProveBlocksBatchProof( + tierProof *bindings.TaikoDataTierProof, +) ([]byte, error) { + input, err := proveBlocksBatchProofArgs.Pack( + tierProof, + ) + if err != nil { + return nil, fmt.Errorf("failed to abi.encode TaikoL1.proveBlocks input item after ontake fork, %w", err) + } + return input, nil +} + // UnpackTxListBytes unpacks the input data of a TaikoL1.proposeBlock transaction, and returns the txList bytes. func UnpackTxListBytes(txData []byte) ([]byte, error) { method, err := TaikoL1ABI.MethodById(txData) diff --git a/packages/taiko-client/cmd/flags/prover.go b/packages/taiko-client/cmd/flags/prover.go index 0dff9537694..d9c13f1ce1d 100644 --- a/packages/taiko-client/cmd/flags/prover.go +++ b/packages/taiko-client/cmd/flags/prover.go @@ -195,6 +195,31 @@ var ( Category: proverCategory, EnvVars: []string{"PROVER_BLOCK_CONFIRMATIONS"}, } + // Batch proof related flag + SGXBatchSize = &cli.Uint64Flag{ + Name: "prover.sgx.batchSize", + Usage: "The default size of batch sgx proofs, when it arrives, submit a batch of proof immediately, " + + "this flag only works post Ontake fork", + Value: 1, + Category: proverCategory, + EnvVars: []string{"PROVER_SGX_BATCH_SIZE"}, + } + ZKVMBatchSize = &cli.Uint64Flag{ + Name: "prover.zkvm.batchSize", + Usage: "The size of batch ZKVM proof, when it arrives, submit a batch of proof immediately, " + + "this flag only works post Ontake fork", + Value: 1, + Category: proverCategory, + EnvVars: []string{"PROVER_ZKVM_BATCH_SIZE"}, + } + ForceProveInterval = &cli.DurationFlag{ + Name: "prover.forceBatchProvingInterval", + Usage: "Time interval to prove blocks even the number of pending proof do not exceed prover.batchSize, " + + "this flag only works post Ontake fork", + Category: proverCategory, + Value: 30 * time.Minute, + EnvVars: []string{"PROVER_FORCE_BATCH_PROVING_INTERVAL"}, + } ) // ProverFlags All prover flags. @@ -227,4 +252,7 @@ var ProverFlags = MergeFlags(CommonFlags, []cli.Flag{ BlockConfirmations, RaikoRequestTimeout, RaikoZKVMHostEndpoint, + SGXBatchSize, + ZKVMBatchSize, + ForceProveInterval, }, TxmgrFlags) diff --git a/packages/taiko-client/internal/metrics/metrics.go b/packages/taiko-client/internal/metrics/metrics.go index 6ac55f11865..27f4da07724 100644 --- a/packages/taiko-client/internal/metrics/metrics.go +++ b/packages/taiko-client/internal/metrics/metrics.go @@ -47,15 +47,27 @@ var ( ProverSubmissionErrorCounter = factory.NewCounter(prometheus.CounterOpts{ Name: "prover_proof_submission_error", }) + ProverAggregationSubmissionErrorCounter = factory.NewCounter(prometheus.CounterOpts{ + Name: "prover_proof_aggregation_submission_error", + }) ProverSgxProofGeneratedCounter = factory.NewCounter(prometheus.CounterOpts{ Name: "prover_proof_sgx_generated", }) + ProverSgxProofAggregationGeneratedCounter = factory.NewCounter(prometheus.CounterOpts{ + Name: "prover_proof_sgx_aggregation_generated", + }) ProverR0ProofGeneratedCounter = factory.NewCounter(prometheus.CounterOpts{ Name: "prover_proof_r0_generated", }) + ProverR0ProofAggregationGeneratedCounter = factory.NewCounter(prometheus.CounterOpts{ + Name: "prover_proof_r0_aggregation_generated", + }) ProverSp1ProofGeneratedCounter = factory.NewCounter(prometheus.CounterOpts{ Name: "prover_proof_sp1_generated", }) + ProverSp1ProofAggregationGeneratedCounter = factory.NewCounter(prometheus.CounterOpts{ + Name: "prover_proof_sp1_aggregation_generated", + }) ProverSubmissionRevertedCounter = factory.NewCounter(prometheus.CounterOpts{ Name: "prover_proof_submission_reverted", }) diff --git a/packages/taiko-client/pkg/rpc/ethclient.go b/packages/taiko-client/pkg/rpc/ethclient.go index 02df6da9d60..f16e43d57b2 100644 --- a/packages/taiko-client/pkg/rpc/ethclient.go +++ b/packages/taiko-client/pkg/rpc/ethclient.go @@ -2,6 +2,7 @@ package rpc import ( "context" + "errors" "math/big" "time" @@ -14,6 +15,10 @@ import ( "github.com/ethereum/go-ethereum/rpc" ) +var ( + ErrInvalidLenOfParams = errors.New("invalid length of parameters") +) + // gethClient is a wrapper for go-ethereum geth client. type gethClient struct { *gethclient.Client @@ -74,6 +79,34 @@ func (c *EthClient) BlockByHash(ctx context.Context, hash common.Hash) (*types.B return c.ethClient.BlockByHash(ctxWithTimeout, hash) } +func (c *EthClient) BatchBlocksByHashes(ctx context.Context, hashes []common.Hash) ([]*types.Block, error) { + if len(hashes) < 1 { + return nil, ErrInvalidLenOfParams + } + ctxWithTimeout, cancel := CtxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + reqs := make([]rpc.BatchElem, len(hashes)) + results := make([]*types.Block, len(hashes)) + for i, hash := range hashes { + reqs[i] = rpc.BatchElem{ + Method: "eth_getBlockByHash", + Args: []interface{}{hash, true}, + Result: &results[i], + } + } + if err := c.BatchCallContext(ctxWithTimeout, reqs); err != nil { + return nil, err + } + for i := range reqs { + if reqs[i].Error != nil { + return nil, reqs[i].Error + } + } + + return results, nil +} + // BlockByNumber returns a block from the current canonical chain. If number is nil, the // latest known block is returned. // @@ -119,6 +152,34 @@ func (c *EthClient) HeaderByNumber(ctx context.Context, number *big.Int) (*types return c.ethClient.HeaderByNumber(ctxWithTimeout, number) } +func (c *EthClient) BatchHeadersByNumbers(ctx context.Context, numbers []*big.Int) ([]*types.Header, error) { + if len(numbers) < 1 { + return nil, ErrInvalidLenOfParams + } + ctxWithTimeout, cancel := CtxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + reqs := make([]rpc.BatchElem, len(numbers)) + results := make([]*types.Header, len(numbers)) + for i, blockNum := range numbers { + reqs[i] = rpc.BatchElem{ + Method: "eth_getBlockByNumber", + Args: []interface{}{blockNum, false}, + Result: &results[i], + } + } + if err := c.BatchCallContext(ctxWithTimeout, reqs); err != nil { + return nil, err + } + for i := range reqs { + if reqs[i].Error != nil { + return nil, reqs[i].Error + } + } + + return results, nil +} + // TransactionByHash returns the transaction with the given hash. func (c *EthClient) TransactionByHash( ctx context.Context, diff --git a/packages/taiko-client/pkg/rpc/ethclient_test.go b/packages/taiko-client/pkg/rpc/ethclient_test.go index 3739482b63d..608b2e9773a 100644 --- a/packages/taiko-client/pkg/rpc/ethclient_test.go +++ b/packages/taiko-client/pkg/rpc/ethclient_test.go @@ -2,6 +2,7 @@ package rpc import ( "context" + "math/big" "testing" "github.com/ethereum/go-ethereum" @@ -168,3 +169,28 @@ func TestEstimateGas(t *testing.T) { _, err := client.L1.EstimateGas(context.Background(), ethereum.CallMsg{}) require.Nil(t, err) } + +func TestBatchBlocksByNumbers(t *testing.T) { + client := newTestClientWithTimeout(t) + + headers, err := client.L1.BatchHeadersByNumbers(context.Background(), []*big.Int{big.NewInt(0), big.NewInt(1)}) + require.Nil(t, err) + require.Len(t, headers, 2) +} + +func TestBatchBlocksByHashes(t *testing.T) { + client := newTestClientWithTimeout(t) + + headers, err := client.L1.BatchHeadersByNumbers(context.Background(), []*big.Int{big.NewInt(0), big.NewInt(1)}) + require.Nil(t, err) + require.Len(t, headers, 2) + + hashes := make([]common.Hash, len(headers)) + for i, header := range headers { + hashes[i] = header.Hash() + } + + blocks, err := client.L1.BatchBlocksByHashes(context.Background(), hashes) + require.Nil(t, err) + require.Len(t, blocks, 2) +} diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go index 85dac756870..570d72da166 100644 --- a/packages/taiko-client/pkg/rpc/utils.go +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -14,6 +14,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" + "golang.org/x/sync/errgroup" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" @@ -62,7 +63,6 @@ func GetProtocolStateVariables( } opts.Context, cancel = CtxWithTimeoutOrDefault(opts.Context, defaultTimeout) defer cancel() - // Notice: sloB.LastProposedIn and slotB.LastUnpausedAt are always 0 // before upgrading contract, but we can ignore it since we won't use it. slotA, slotB, err := taikoL1Client.GetStateVariables(opts) @@ -248,6 +248,145 @@ func GetBlockProofStatus( }, nil } +// BatchGetBlocksProofStatus checks whether the batch of L2 blocks still need new proofs or new contests. +// Here are the possible status: +// 1. No proof on chain at all. +// 2. A valid proof has been submitted. +// 3. An invalid proof has been submitted, and there is no valid contest. +// 4. An invalid proof has been submitted, and there is a valid contest. +func BatchGetBlocksProofStatus( + ctx context.Context, + cli *Client, + ids []*big.Int, + proverAddress common.Address, + proverSetAddress common.Address, +) ([]*BlockProofStatus, error) { + ctxWithTimeout, cancel := CtxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + var ( + parentHashes = make([][32]byte, len(ids)) + parents = make([]*types.Header, len(ids)) + blockIDs = make([]uint64, len(ids)) + result = make([]*BlockProofStatus, len(ids)) + highestBlockID = big.NewInt(0) + ) + // Get the local L2 parent header. + g, gCtx := errgroup.WithContext(ctxWithTimeout) + for i, id := range ids { + g.Go(func() error { + parent, err := cli.L2.HeaderByNumber(gCtx, new(big.Int).Sub(id, common.Big1)) + if err != nil { + return err + } + parentHashes[i] = parent.Hash() + parents[i] = parent + blockIDs[i] = id.Uint64() + if id.Cmp(highestBlockID) > 0 { + highestBlockID = id + } + return nil + }) + } + if gErr := g.Wait(); gErr != nil { + return nil, gErr + } + + // Get the transition state from TaikoL1 contract. + transitions, err := cli.TaikoL1.GetTransitions( + &bind.CallOpts{Context: ctxWithTimeout}, + blockIDs, + parentHashes, + ) + if err != nil { + return nil, err + } + highestHeader, err := cli.WaitL2Header(ctxWithTimeout, highestBlockID) + if err != nil { + return nil, err + } + g, gCtx = errgroup.WithContext(ctxWithTimeout) + for i, transition := range transitions { + // No proof on chain + if transition.BlockHash == (common.Hash{}) { + result[i] = &BlockProofStatus{IsSubmitted: false, ParentHeader: parents[i]} + continue + } + g.Go(func() error { + if err != nil { + return err + } + var ( + localBlockHash common.Hash + localStateRoot [32]byte + ) + if i+1 < len(parents) { + localBlockHash = parents[i+1].Hash() + localStateRoot = parents[i+1].Root + } else { + localBlockHash = highestHeader.Hash() + localStateRoot = highestHeader.Root + } + + if localBlockHash != transition.BlockHash || + (transition.StateRoot != (common.Hash{}) && transition.StateRoot != localStateRoot) { + log.Info( + "Different block hash or state root detected, try submitting a contest", + "localBlockHash", localBlockHash, + "protocolTransitionBlockHash", common.BytesToHash(transition.BlockHash[:]), + "localStateRoot", localStateRoot, + "protocolTransitionStateRoot", common.BytesToHash(transition.StateRoot[:]), + ) + result[i] = &BlockProofStatus{ + IsSubmitted: true, + Invalid: true, + CurrentTransitionState: &transitions[i], + ParentHeader: parents[i], + } + return nil + } + + if proverAddress == transition.Prover || + (proverSetAddress != ZeroAddress && transition.Prover == proverSetAddress) { + log.Info( + "📬 Block's proof has already been submitted by current prover", + "blockID", ids[i], + "parent", parents[i].Hash().Hex(), + "hash", common.Bytes2Hex(transition.BlockHash[:]), + "stateRoot", common.Bytes2Hex(transition.StateRoot[:]), + "timestamp", transition.Timestamp, + "contester", transition.Contester, + ) + result[i] = &BlockProofStatus{ + IsSubmitted: true, + Invalid: transition.Contester != ZeroAddress, + ParentHeader: parents[i], + CurrentTransitionState: &transitions[i], + } + return nil + } + log.Info( + "📬 Block's proof has already been submitted by another prover", + "blockID", ids[i], + "prover", transition.Prover, + "parent", parents[i].Hash().Hex(), + "hash", common.Bytes2Hex(transition.BlockHash[:]), + "stateRoot", common.Bytes2Hex(transition.StateRoot[:]), + "timestamp", transition.Timestamp, + "contester", transition.Contester, + ) + + result[i] = &BlockProofStatus{ + IsSubmitted: true, + Invalid: transition.Contester != ZeroAddress, + ParentHeader: parents[i], + CurrentTransitionState: &transitions[i], + } + return nil + }) + } + return result, g.Wait() +} + // SetHead makes a `debug_setHead` RPC call to set the chain's head, should only be used // for testing purpose. func SetHead(ctx context.Context, client *EthClient, headNum *big.Int) error { diff --git a/packages/taiko-client/prover/config.go b/packages/taiko-client/prover/config.go index 2fe3cf7b954..552ecfac231 100644 --- a/packages/taiko-client/prover/config.go +++ b/packages/taiko-client/prover/config.go @@ -60,6 +60,9 @@ type Config struct { BlockConfirmations uint64 TxmgrConfigs *txmgr.CLIConfig PrivateTxmgrConfigs *txmgr.CLIConfig + SGXProofBufferSize uint64 + ZKVMProofBufferSize uint64 + ForceProveInterval time.Duration } // NewConfigFromCliContext creates a new config instance from command line flags. @@ -183,5 +186,8 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { l1ProverPrivKey, c, ), + SGXProofBufferSize: c.Uint64(flags.SGXBatchSize.Name), + ZKVMProofBufferSize: c.Uint64(flags.ZKVMBatchSize.Name), + ForceProveInterval: c.Duration(flags.ForceProveInterval.Name), }, nil } diff --git a/packages/taiko-client/prover/init.go b/packages/taiko-client/prover/init.go index cf640ceca46..dc2e4cb40eb 100644 --- a/packages/taiko-client/prover/init.go +++ b/packages/taiko-client/prover/init.go @@ -98,9 +98,10 @@ func (p *Prover) initProofSubmitters( ) error { for _, tier := range p.sharedState.GetTiers() { var ( - producer proofProducer.ProofProducer - submitter proofSubmitter.Submitter - err error + bufferSize = p.cfg.SGXProofBufferSize + producer proofProducer.ProofProducer + submitter proofSubmitter.Submitter + err error ) switch tier.ID { case encoding.TierOptimisticID: @@ -121,6 +122,7 @@ func (p *Prover) initProofSubmitters( Dummy: p.cfg.Dummy, RaikoRequestTimeout: p.cfg.RaikoRequestTimeout, } + bufferSize = p.cfg.ZKVMProofBufferSize case encoding.TierZkVMSp1ID: producer = &proofProducer.ZKvmProofProducer{ ZKProofType: proofProducer.ZKProofTypeSP1, @@ -129,10 +131,13 @@ func (p *Prover) initProofSubmitters( Dummy: p.cfg.Dummy, RaikoRequestTimeout: p.cfg.RaikoRequestTimeout, } + bufferSize = p.cfg.ZKVMProofBufferSize case encoding.TierGuardianMinorityID: producer = proofProducer.NewGuardianProofProducer(encoding.TierGuardianMinorityID, p.cfg.EnableLivenessBondProof) + bufferSize = 0 case encoding.TierGuardianMajorityID: producer = proofProducer.NewGuardianProofProducer(encoding.TierGuardianMajorityID, p.cfg.EnableLivenessBondProof) + bufferSize = 0 default: return fmt.Errorf("unsupported tier: %d", tier.ID) } @@ -141,6 +146,8 @@ func (p *Prover) initProofSubmitters( p.rpc, producer, p.proofGenerationCh, + p.batchProofGenerationCh, + p.aggregationNotify, p.cfg.ProverSetAddress, p.cfg.TaikoL2Address, p.cfg.Graffiti, @@ -151,6 +158,7 @@ func (p *Prover) initProofSubmitters( tiers, p.IsGuardianProver(), p.cfg.GuardianProofSubmissionDelay, + bufferSize, ); err != nil { return err } diff --git a/packages/taiko-client/prover/proof_producer/dummy_producer.go b/packages/taiko-client/prover/proof_producer/dummy_producer.go index 54d10df173c..5828979b52e 100644 --- a/packages/taiko-client/prover/proof_producer/dummy_producer.go +++ b/packages/taiko-client/prover/proof_producer/dummy_producer.go @@ -31,3 +31,15 @@ func (o *DummyProofProducer) RequestProof( Tier: tier, }, nil } + +// RequestBatchProofs returns a dummy proof aggregation to the result channel. +func (o *DummyProofProducer) RequestBatchProofs( + proofs []*ProofWithHeader, + tier uint16, +) (*BatchProofs, error) { + return &BatchProofs{ + Proofs: proofs, + BatchProof: bytes.Repeat([]byte{0xbb}, 100), + Tier: tier, + }, nil +} diff --git a/packages/taiko-client/prover/proof_producer/guardian_producer.go b/packages/taiko-client/prover/proof_producer/guardian_producer.go index fb3c45865e0..39439deb1a2 100644 --- a/packages/taiko-client/prover/proof_producer/guardian_producer.go +++ b/packages/taiko-client/prover/proof_producer/guardian_producer.go @@ -61,6 +61,7 @@ func (g *GuardianProofProducer) RequestProof( return g.DummyProofProducer.RequestProof(opts, blockID, meta, header, g.Tier(), requestAt) } +// RequestCancel implements the ProofProducer interface to cancel the proof generating progress. func (g *GuardianProofProducer) RequestCancel( _ context.Context, _ *ProofRequestOptions, @@ -68,6 +69,15 @@ func (g *GuardianProofProducer) RequestCancel( return nil } +// Aggregate implements the ProofProducer interface to aggregate a batch of proofs. +func (g *GuardianProofProducer) Aggregate( + _ context.Context, + _ []*ProofWithHeader, + _ time.Time, +) (*BatchProofs, error) { + return nil, nil +} + // Tier implements the ProofProducer interface. func (g *GuardianProofProducer) Tier() uint16 { return g.tier diff --git a/packages/taiko-client/prover/proof_producer/optimistic_producer.go b/packages/taiko-client/prover/proof_producer/optimistic_producer.go index b97feef14e4..8596d518a7d 100644 --- a/packages/taiko-client/prover/proof_producer/optimistic_producer.go +++ b/packages/taiko-client/prover/proof_producer/optimistic_producer.go @@ -35,6 +35,31 @@ func (o *OptimisticProofProducer) RequestProof( return o.DummyProofProducer.RequestProof(opts, blockID, meta, header, o.Tier(), requestAt) } +// Aggregate implements the ProofProducer interface to aggregate a batch of proofs. +func (o *OptimisticProofProducer) Aggregate( + _ context.Context, + items []*ProofWithHeader, + _ time.Time, +) (*BatchProofs, error) { + log.Info( + "Aggregate batch optimistic proof", + ) + if len(items) == 0 { + return nil, ErrInvalidLength + } + blockIDs := make([]*big.Int, len(items)) + for i, item := range items { + blockIDs[i] = item.Meta.GetBlockID() + } + batchProof, err := o.DummyProofProducer.RequestBatchProofs(items, o.Tier()) + if err != nil { + return nil, err + } + batchProof.BlockIDs = blockIDs + return batchProof, nil +} + +// RequestCancel implements the ProofProducer interface to cancel the proof generating progress. func (o *OptimisticProofProducer) RequestCancel( _ context.Context, _ *ProofRequestOptions, diff --git a/packages/taiko-client/prover/proof_producer/proof_producer.go b/packages/taiko-client/prover/proof_producer/proof_producer.go index 3987963539d..292a90d2d60 100644 --- a/packages/taiko-client/prover/proof_producer/proof_producer.go +++ b/packages/taiko-client/prover/proof_producer/proof_producer.go @@ -15,6 +15,7 @@ import ( var ( errProofGenerating = errors.New("proof is generating") errEmptyProof = errors.New("proof is empty") + ErrInvalidLength = errors.New("invalid items length") ) // ProofRequestBody represents a request body to generate a proof. @@ -46,6 +47,7 @@ type ProofRequestOptions struct { Graffiti string GasUsed uint64 ParentGasUsed uint64 + Compressed bool } type ProofWithHeader struct { @@ -57,6 +59,13 @@ type ProofWithHeader struct { Tier uint16 } +type BatchProofs struct { + Proofs []*ProofWithHeader + BatchProof []byte + Tier uint16 + BlockIDs []*big.Int +} + type ProofProducer interface { RequestProof( ctx context.Context, @@ -66,6 +75,11 @@ type ProofProducer interface { header *types.Header, requestAt time.Time, ) (*ProofWithHeader, error) + Aggregate( + ctx context.Context, + items []*ProofWithHeader, + requestAt time.Time, + ) (*BatchProofs, error) RequestCancel( ctx context.Context, opts *ProofRequestOptions, diff --git a/packages/taiko-client/prover/proof_producer/sgx_producer.go b/packages/taiko-client/prover/proof_producer/sgx_producer.go index 0ff4eb3c241..3f4861fd933 100644 --- a/packages/taiko-client/prover/proof_producer/sgx_producer.go +++ b/packages/taiko-client/prover/proof_producer/sgx_producer.go @@ -47,6 +47,17 @@ type RaikoRequestProofBody struct { SP1 *SP1RequestProofBodyParam `json:"sp1"` } +// RaikoRequestProofBodyV3 represents the JSON body for requesting the proof. +type RaikoRequestProofBodyV3 struct { + Blocks [][2]*big.Int `json:"block_numbers"` + Prover string `json:"prover"` + Graffiti string `json:"graffiti"` + Type string `json:"proof_type"` + SGX *SGXRequestProofBodyParam `json:"sgx"` + RISC0 *RISC0RequestProofBodyParam `json:"risc0"` + SP1 *SP1RequestProofBodyParam `json:"sp1"` +} + // SGXRequestProofBodyParam represents the JSON body of RaikoRequestProofBody's `sgx` field. type SGXRequestProofBodyParam struct { Setup bool `json:"setup"` @@ -66,6 +77,7 @@ type RISC0RequestProofBodyParam struct { type SP1RequestProofBodyParam struct { Recursion string `json:"recursion"` Prover string `json:"prover"` + Verify bool `json:"verify"` } // RaikoRequestProofBodyResponse represents the JSON body of the response of the proof requests. @@ -117,13 +129,207 @@ func (s *SGXProofProducer) RequestProof( }, nil } +// Aggregate implements the ProofProducer interface to aggregate a batch of proofs. +func (s *SGXProofProducer) Aggregate( + ctx context.Context, + items []*ProofWithHeader, + requestAt time.Time, +) (*BatchProofs, error) { + log.Info( + "Aggregate sgx batch proofs from raiko-host service", + ) + if len(items) == 0 { + return nil, ErrInvalidLength + } + + blockIDs := make([]*big.Int, len(items)) + for i, item := range items { + blockIDs[i] = item.Meta.GetBlockID() + } + batchProof, err := s.requestBatchProof( + ctx, + blockIDs, + items[0].Opts.ProverAddress, + items[0].Opts.Graffiti, + requestAt, + ) + if err != nil { + return nil, err + } + + metrics.ProverSgxProofAggregationGeneratedCounter.Add(1) + + return &BatchProofs{ + Proofs: items, + BatchProof: batchProof, + Tier: s.Tier(), + BlockIDs: blockIDs, + }, nil +} + +// RequestCancel implements the ProofProducer interface to cancel the proof generating progress. func (s *SGXProofProducer) RequestCancel( - _ context.Context, - _ *ProofRequestOptions, + ctx context.Context, + opts *ProofRequestOptions, ) error { + reqBody := RaikoRequestProofBody{ + Type: s.ProofType, + Block: opts.BlockID, + Prover: opts.ProverAddress.Hex()[2:], + Graffiti: opts.Graffiti, + SGX: &SGXRequestProofBodyParam{ + Setup: false, + Bootstrap: false, + Prove: true, + }, + } + + client := &http.Client{} + + jsonValue, err := json.Marshal(reqBody) + if err != nil { + return err + } + + req, err := http.NewRequestWithContext( + ctx, + "POST", + s.RaikoHostEndpoint+"/v2/proof/cancel", + bytes.NewBuffer(jsonValue), + ) + if err != nil { + return err + } + req.Header.Set("Content-Type", "application/json") + if len(s.JWT) > 0 { + req.Header.Set("Authorization", "Bearer "+base64.StdEncoding.EncodeToString([]byte(s.JWT))) + } + + res, err := client.Do(req) + if err != nil { + return err + } + + defer res.Body.Close() + if res.StatusCode != http.StatusOK { + return fmt.Errorf("failed to cancel requesting proof, statusCode: %d", res.StatusCode) + } + return nil } +// requestBatchProof poll the proof aggregation service to get the aggregated proof. +func (s *SGXProofProducer) requestBatchProof( + ctx context.Context, + blockIDs []*big.Int, + proverAddress common.Address, + graffiti string, + requestAt time.Time, +) ([]byte, error) { + var ( + proof []byte + ) + + ctx, cancel := rpc.CtxWithTimeoutOrDefault(ctx, s.RaikoRequestTimeout) + defer cancel() + + blocks := make([][2]*big.Int, len(blockIDs)) + for i := range blockIDs { + blocks[i][0] = blockIDs[i] + } + reqBody := RaikoRequestProofBodyV3{ + Type: s.ProofType, + Blocks: blocks, + Prover: proverAddress.Hex()[2:], + Graffiti: graffiti, + SGX: &SGXRequestProofBodyParam{ + Setup: false, + Bootstrap: false, + Prove: true, + }, + } + + client := &http.Client{} + + jsonValue, err := json.Marshal(reqBody) + if err != nil { + return nil, err + } + + log.Debug( + "Send batch proof generation request", + "blockIDs", blockIDs, + "proofType", "sgx", + "input", string(jsonValue), + ) + + req, err := http.NewRequestWithContext( + ctx, + "POST", + s.RaikoHostEndpoint+"/v3/proof", + bytes.NewBuffer(jsonValue), + ) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/json") + if len(s.JWT) > 0 { + req.Header.Set("Authorization", "Bearer "+base64.StdEncoding.EncodeToString([]byte(s.JWT))) + } + + res, err := client.Do(req) + if err != nil { + return nil, err + } + + defer res.Body.Close() + if res.StatusCode != http.StatusOK { + return nil, fmt.Errorf("failed to request batch proof, ids: %v, statusCode: %d", blockIDs, res.StatusCode) + } + + resBytes, err := io.ReadAll(res.Body) + if err != nil { + return nil, err + } + + log.Debug( + "Batch proof generation output", + "blockIDs", blockIDs, + "proofType", "sgx", + "output", string(resBytes), + ) + + var output RaikoRequestProofBodyResponseV2 + if err := json.Unmarshal(resBytes, &output); err != nil { + return nil, err + } + + if len(output.ErrorMessage) > 0 || len(output.Error) > 0 { + return nil, fmt.Errorf("failed to get batch proof, msg: %s", output.ErrorMessage) + } + + if output.Data.Status == ErrProofInProgress.Error() { + return nil, ErrProofInProgress + } + if output.Data.Status == StatusRegistered { + return nil, ErrRetry + } + + if len(output.Data.Proof.Proof) == 0 { + return nil, errEmptyProof + } + proof = common.Hex2Bytes(output.Data.Proof.Proof[2:]) + + log.Info( + "Batch proof generated", + "blockIDs", blockIDs, + "time", time.Since(requestAt), + "producer", "SGXProofProducer", + ) + + return proof, nil +} + // callProverDaemon keeps polling the proverd service to get the requested proof. func (s *SGXProofProducer) callProverDaemon( ctx context.Context, @@ -153,15 +359,22 @@ func (s *SGXProofProducer) callProverDaemon( return nil, errProofGenerating } + if output.Data.Status == ErrProofInProgress.Error() { + return nil, ErrProofInProgress + } + if output.Data.Status == StatusRegistered { + return nil, ErrRetry + } + // Raiko returns "" as proof when proof type is native, // so we just convert "" to bytes if s.ProofType == ProofTypeCPU { - proof = common.Hex2Bytes(output.Data.Proof) + proof = common.Hex2Bytes(output.Data.Proof.Proof) } else { - if len(output.Data.Proof) == 0 { + if len(output.Data.Proof.Proof) == 0 { return nil, errEmptyProof } - proof = common.Hex2Bytes(output.Data.Proof[2:]) + proof = common.Hex2Bytes(output.Data.Proof.Proof[2:]) } log.Info( @@ -178,7 +391,7 @@ func (s *SGXProofProducer) callProverDaemon( func (s *SGXProofProducer) requestProof( ctx context.Context, opts *ProofRequestOptions, -) (*RaikoRequestProofBodyResponse, error) { +) (*RaikoRequestProofBodyResponseV2, error) { reqBody := RaikoRequestProofBody{ Type: s.ProofType, Block: opts.BlockID, @@ -198,7 +411,7 @@ func (s *SGXProofProducer) requestProof( return nil, err } - req, err := http.NewRequestWithContext(ctx, "POST", s.RaikoHostEndpoint+"/v1/proof", bytes.NewBuffer(jsonValue)) + req, err := http.NewRequestWithContext(ctx, "POST", s.RaikoHostEndpoint+"/v2/proof", bytes.NewBuffer(jsonValue)) if err != nil { return nil, err } @@ -225,17 +438,17 @@ func (s *SGXProofProducer) requestProof( log.Debug( "Proof generation output", "blockID", opts.BlockID, - "zkType", "sgx", + "proofType", "sgx", "output", string(resBytes), ) - var output RaikoRequestProofBodyResponse + var output RaikoRequestProofBodyResponseV2 if err := json.Unmarshal(resBytes, &output); err != nil { return nil, err } - if len(output.ErrorMessage) > 0 { - return nil, fmt.Errorf("failed to get proof, msg: %s", output.ErrorMessage) + if len(output.ErrorMessage) > 0 || len(output.Error) > 0 { + return nil, fmt.Errorf("failed to get proof,err: %s, msg: %s", output.Error, output.ErrorMessage) } return &output, nil diff --git a/packages/taiko-client/prover/proof_producer/zkvm_producer.go b/packages/taiko-client/prover/proof_producer/zkvm_producer.go index 5892b9d506d..3e2711a1962 100644 --- a/packages/taiko-client/prover/proof_producer/zkvm_producer.go +++ b/packages/taiko-client/prover/proof_producer/zkvm_producer.go @@ -23,8 +23,10 @@ import ( ) const ( - ZKProofTypeR0 = "risc0" - ZKProofTypeSP1 = "sp1" + ZKProofTypeR0 = "risc0" + ZKProofTypeSP1 = "sp1" + RecursionPlonk = "plonk" + RecursionCompressed = "compressed" ) var ( @@ -37,6 +39,7 @@ var ( type RaikoRequestProofBodyResponseV2 struct { Data *RaikoProofDataV2 `json:"data"` ErrorMessage string `json:"message"` + Error string `json:"error"` } type RaikoProofDataV2 struct { @@ -103,6 +106,7 @@ func (s *ZKvmProofProducer) RequestProof( }, nil } +// RequestCancel implements the ProofProducer interface to cancel the proof generating progress. func (s *ZKvmProofProducer) RequestCancel( ctx context.Context, opts *ProofRequestOptions, @@ -110,6 +114,50 @@ func (s *ZKvmProofProducer) RequestCancel( return s.requestCancel(ctx, opts) } +// Aggregate implements the ProofProducer interface to aggregate a batch of proofs. +func (s *ZKvmProofProducer) Aggregate( + ctx context.Context, + items []*ProofWithHeader, + requestAt time.Time, +) (*BatchProofs, error) { + log.Info( + "Aggregate zkvm batch proofs from raiko-host service", + "zkType", s.ZKProofType, + ) + if len(items) == 0 { + return nil, ErrInvalidLength + } + + blockIDs := make([]*big.Int, len(items)) + for i, item := range items { + blockIDs[i] = item.Meta.GetBlockID() + } + batchProof, err := s.requestBatchProof( + ctx, + blockIDs, + items[0].Opts.ProverAddress, + items[0].Opts.Graffiti, + requestAt, + ) + if err != nil { + return nil, err + } + + switch s.ZKProofType { + case ZKProofTypeSP1: + metrics.ProverSp1ProofAggregationGeneratedCounter.Add(1) + default: + metrics.ProverR0ProofAggregationGeneratedCounter.Add(1) + } + + return &BatchProofs{ + Proofs: items, + BatchProof: batchProof, + Tier: s.Tier(), + BlockIDs: blockIDs, + }, nil +} + // callProverDaemon keeps polling the proverd service to get the requested proof. func (s *ZKvmProofProducer) callProverDaemon( ctx context.Context, @@ -136,10 +184,12 @@ func (s *ZKvmProofProducer) callProverDaemon( return nil, ErrRetry } - if len(output.Data.Proof.Proof) == 0 { - return nil, errEmptyProof + if !opts.Compressed { + if len(output.Data.Proof.Proof) == 0 { + return nil, errEmptyProof + } + proof = common.Hex2Bytes(output.Data.Proof.Proof[2:]) } - proof = common.Hex2Bytes(output.Data.Proof.Proof[2:]) log.Info( "Proof generated", "height", opts.BlockID, @@ -155,7 +205,15 @@ func (s *ZKvmProofProducer) requestProof( ctx context.Context, opts *ProofRequestOptions, ) (*RaikoRequestProofBodyResponseV2, error) { - var reqBody RaikoRequestProofBody + var ( + reqBody RaikoRequestProofBody + recursion string + ) + if opts.Compressed { + recursion = RecursionCompressed + } else { + recursion = RecursionPlonk + } switch s.ZKProofType { case ZKProofTypeSP1: reqBody = RaikoRequestProofBody{ @@ -164,8 +222,9 @@ func (s *ZKvmProofProducer) requestProof( Prover: opts.ProverAddress.Hex()[2:], Graffiti: opts.Graffiti, SP1: &SP1RequestProofBodyParam{ - Recursion: "plonk", + Recursion: recursion, Prover: "network", + Verify: true, }, } default: @@ -199,6 +258,13 @@ func (s *ZKvmProofProducer) requestProof( req.Header.Set("Authorization", "Bearer "+base64.StdEncoding.EncodeToString([]byte(s.JWT))) } + log.Debug( + "Send proof generation request", + "blockID", opts.BlockID, + "zkProofType", s.ZKProofType, + "input", string(jsonValue), + ) + res, err := client.Do(req) if err != nil { return nil, err @@ -225,8 +291,8 @@ func (s *ZKvmProofProducer) requestProof( return nil, err } - if len(output.ErrorMessage) > 0 { - return nil, fmt.Errorf("failed to get proof, msg: %s", output.ErrorMessage) + if len(output.ErrorMessage) > 0 || len(output.Error) > 0 { + return nil, fmt.Errorf("failed to get proof,err: %s, msg: %s", output.Error, output.ErrorMessage) } return &output, nil @@ -236,17 +302,41 @@ func (s *ZKvmProofProducer) requestCancel( ctx context.Context, opts *ProofRequestOptions, ) error { - reqBody := RaikoRequestProofBody{ - Type: s.ZKProofType, - Block: opts.BlockID, - Prover: opts.ProverAddress.Hex()[2:], - Graffiti: opts.Graffiti, - RISC0: &RISC0RequestProofBodyParam{ - Bonsai: true, - Snark: true, - Profile: false, - ExecutionPo2: big.NewInt(20), - }, + var ( + reqBody RaikoRequestProofBody + recursion string + ) + if opts.Compressed { + recursion = RecursionCompressed + } else { + recursion = RecursionPlonk + } + switch s.ZKProofType { + case ZKProofTypeSP1: + reqBody = RaikoRequestProofBody{ + Type: s.ZKProofType, + Block: opts.BlockID, + Prover: opts.ProverAddress.Hex()[2:], + Graffiti: opts.Graffiti, + SP1: &SP1RequestProofBodyParam{ + Recursion: recursion, + Prover: "network", + Verify: true, + }, + } + default: + reqBody = RaikoRequestProofBody{ + Type: s.ZKProofType, + Block: opts.BlockID, + Prover: opts.ProverAddress.Hex()[2:], + Graffiti: opts.Graffiti, + RISC0: &RISC0RequestProofBodyParam{ + Bonsai: true, + Snark: true, + Profile: false, + ExecutionPo2: big.NewInt(20), + }, + } } client := &http.Client{} @@ -283,6 +373,134 @@ func (s *ZKvmProofProducer) requestCancel( return nil } +// requestBatchProof poll the proof aggregation service to get the aggregated proof. +func (s *ZKvmProofProducer) requestBatchProof( + ctx context.Context, + blockIDs []*big.Int, + proverAddress common.Address, + graffiti string, + requestAt time.Time, +) ([]byte, error) { + var ( + proof []byte + ) + + ctx, cancel := rpc.CtxWithTimeoutOrDefault(ctx, s.RaikoRequestTimeout) + defer cancel() + + blocks := make([][2]*big.Int, len(blockIDs)) + for i := range blockIDs { + blocks[i][0] = blockIDs[i] + } + var reqBody RaikoRequestProofBodyV3 + switch s.ZKProofType { + case ZKProofTypeSP1: + reqBody = RaikoRequestProofBodyV3{ + Type: s.ZKProofType, + Blocks: blocks, + Prover: proverAddress.Hex()[2:], + Graffiti: graffiti, + SP1: &SP1RequestProofBodyParam{ + Recursion: RecursionCompressed, + Prover: "network", + Verify: true, + }, + } + default: + reqBody = RaikoRequestProofBodyV3{ + Type: s.ZKProofType, + Blocks: blocks, + Prover: proverAddress.Hex()[2:], + Graffiti: graffiti, + RISC0: &RISC0RequestProofBodyParam{ + Bonsai: true, + Snark: true, + Profile: false, + ExecutionPo2: big.NewInt(20), + }, + } + } + + client := &http.Client{} + + jsonValue, err := json.Marshal(reqBody) + if err != nil { + return nil, err + } + + log.Debug( + "Send batch proof generation request", + "blockIDs", blockIDs, + "zkProofType", s.ZKProofType, + "input", string(jsonValue), + ) + + req, err := http.NewRequestWithContext( + ctx, + "POST", + s.RaikoHostEndpoint+"/v3/proof", + bytes.NewBuffer(jsonValue), + ) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/json") + if len(s.JWT) > 0 { + req.Header.Set("Authorization", "Bearer "+base64.StdEncoding.EncodeToString([]byte(s.JWT))) + } + + res, err := client.Do(req) + if err != nil { + return nil, err + } + + defer res.Body.Close() + if res.StatusCode != http.StatusOK { + return nil, fmt.Errorf("failed to request batch proof, ids: %v, statusCode: %d", blockIDs, res.StatusCode) + } + + resBytes, err := io.ReadAll(res.Body) + if err != nil { + return nil, err + } + + log.Debug( + "Batch proof generation output", + "blockIDs", blockIDs, + "zkProofType", s.ZKProofType, + "output", string(resBytes), + ) + + var output RaikoRequestProofBodyResponseV2 + if err := json.Unmarshal(resBytes, &output); err != nil { + return nil, err + } + + if len(output.ErrorMessage) > 0 || len(output.Error) > 0 { + return nil, fmt.Errorf("failed to get batch proof, msg: %s", output.ErrorMessage) + } + if output.Data.Status == ErrProofInProgress.Error() { + return nil, ErrProofInProgress + } + if output.Data.Status == StatusRegistered { + return nil, ErrRetry + } + + if len(output.Data.Proof.Proof) == 0 { + return nil, errEmptyProof + } + proof = common.Hex2Bytes(output.Data.Proof.Proof[2:]) + + log.Info( + "Batch proof generated", + "blockIDs", blockIDs, + "time", time.Since(requestAt), + "producer", "ZKvmProofProducer", + ) + + return proof, nil +} + // Tier implements the ProofProducer interface. func (s *ZKvmProofProducer) Tier() uint16 { switch s.ZKProofType { diff --git a/packages/taiko-client/prover/proof_submitter/interface.go b/packages/taiko-client/prover/proof_submitter/interface.go index 7b7ace1390e..26971fc8587 100644 --- a/packages/taiko-client/prover/proof_submitter/interface.go +++ b/packages/taiko-client/prover/proof_submitter/interface.go @@ -14,8 +14,11 @@ import ( type Submitter interface { RequestProof(ctx context.Context, meta metadata.TaikoBlockMetaData) error SubmitProof(ctx context.Context, proofWithHeader *proofProducer.ProofWithHeader) error + BatchSubmitProofs(ctx context.Context, proofsWithHeaders *proofProducer.BatchProofs) error + AggregateProofs(ctx context.Context) error Producer() proofProducer.ProofProducer Tier() uint16 + BufferSize() uint64 } // Contester is the interface for contesting proofs of the L2 blocks. diff --git a/packages/taiko-client/prover/proof_submitter/proof_buffer.go b/packages/taiko-client/prover/proof_submitter/proof_buffer.go new file mode 100644 index 00000000000..b21e992aa37 --- /dev/null +++ b/packages/taiko-client/prover/proof_submitter/proof_buffer.go @@ -0,0 +1,98 @@ +package submitter + +import ( + "errors" + "sync" + + producer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" +) + +var ( + errBufferOverflow = errors.New("proof buffer overflow") + errNotEnoughProof = errors.New("not enough proof") +) + +// ProofBuffer caches all single proof with a fixed size. +type ProofBuffer struct { + MaxLength uint64 + buffer []*producer.ProofWithHeader + mutex sync.RWMutex +} + +// NewProofBuffer creates a new ProofBuffer instance. +func NewProofBuffer(maxLength uint64) *ProofBuffer { + return &ProofBuffer{ + buffer: make([]*producer.ProofWithHeader, 0, maxLength), + MaxLength: maxLength, + } +} + +// Write adds new item to the buffer. +func (pb *ProofBuffer) Write(item *producer.ProofWithHeader) (int, error) { + pb.mutex.Lock() + defer pb.mutex.Unlock() + + if len(pb.buffer)+1 > int(pb.MaxLength) { + return len(pb.buffer), errBufferOverflow + } + + pb.buffer = append(pb.buffer, item) + return len(pb.buffer), nil +} + +// Read returns the content with given length in the buffer. +func (pb *ProofBuffer) Read(length int) ([]*producer.ProofWithHeader, error) { + pb.mutex.RLock() + defer pb.mutex.RUnlock() + if length > len(pb.buffer) { + return nil, errNotEnoughProof + } + + data := make([]*producer.ProofWithHeader, length) + copy(data, pb.buffer[:length]) + return data, nil +} + +// ReadAll returns all the content in the buffer. +func (pb *ProofBuffer) ReadAll() ([]*producer.ProofWithHeader, error) { + return pb.Read(pb.Len()) +} + +// Len returns current length of the buffer. +func (pb *ProofBuffer) Len() int { + pb.mutex.RLock() + defer pb.mutex.RUnlock() + return len(pb.buffer) +} + +// Clear clears all buffer. +func (pb *ProofBuffer) Clear() { + pb.mutex.Lock() + defer pb.mutex.Unlock() + pb.buffer = pb.buffer[:0] +} + +// ClearItems clears items that has given block ids in the buffer. +func (pb *ProofBuffer) ClearItems(blockIDs ...uint64) int { + pb.mutex.Lock() + defer pb.mutex.Unlock() + + clearMap := make(map[uint64]bool) + for _, blockID := range blockIDs { + clearMap[blockID] = true + } + + newBuffer := make([]*producer.ProofWithHeader, 0, len(pb.buffer)) + clearedCount := 0 + + for _, b := range pb.buffer { + if !clearMap[b.Meta.GetBlockID().Uint64()] { + newBuffer = append(newBuffer, b) + } else { + clearedCount++ + } + } + + pb.buffer = newBuffer + return clearedCount +} diff --git a/packages/taiko-client/prover/proof_submitter/proof_submitter.go b/packages/taiko-client/prover/proof_submitter/proof_submitter.go index c4040bcbb06..ba1cb8bad0d 100644 --- a/packages/taiko-client/prover/proof_submitter/proof_submitter.go +++ b/packages/taiko-client/prover/proof_submitter/proof_submitter.go @@ -10,6 +10,7 @@ import ( "github.com/cenkalti/backoff/v4" "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" @@ -29,25 +30,30 @@ var ( submissionDelayRandomBumpRange float64 = 20 proofPollingInterval = 10 * time.Second ProofTimeout = 3 * time.Hour + ErrInvalidProof = errors.New("invalid proof found") ) // ProofSubmitter is responsible requesting proofs for the given L2 // blocks, and submitting the generated proofs to the TaikoL1 smart contract. type ProofSubmitter struct { - rpc *rpc.Client - proofProducer proofProducer.ProofProducer - resultCh chan *proofProducer.ProofWithHeader - anchorValidator *validator.AnchorTxValidator - txBuilder *transaction.ProveBlockTxBuilder - sender *transaction.Sender - proverAddress common.Address - proverSetAddress common.Address - taikoL2Address common.Address - graffiti [32]byte - tiers []*rpc.TierProviderTierWithID + rpc *rpc.Client + proofProducer proofProducer.ProofProducer + resultCh chan *proofProducer.ProofWithHeader + batchResultCh chan *proofProducer.BatchProofs + aggregationNotify chan uint16 + anchorValidator *validator.AnchorTxValidator + txBuilder *transaction.ProveBlockTxBuilder + sender *transaction.Sender + proverAddress common.Address + proverSetAddress common.Address + taikoL2Address common.Address + graffiti [32]byte + tiers []*rpc.TierProviderTierWithID // Guardian prover related. isGuardian bool submissionDelay time.Duration + // Batch proof related + proofBuffer *ProofBuffer } // NewProofSubmitter creates a new ProofSubmitter instance. @@ -55,6 +61,8 @@ func NewProofSubmitter( rpcClient *rpc.Client, proofProducer proofProducer.ProofProducer, resultCh chan *proofProducer.ProofWithHeader, + batchResultCh chan *proofProducer.BatchProofs, + aggregationNotify chan uint16, proverSetAddress common.Address, taikoL2Address common.Address, graffiti string, @@ -65,6 +73,7 @@ func NewProofSubmitter( tiers []*rpc.TierProviderTierWithID, isGuardian bool, submissionDelay time.Duration, + proofBufferSize uint64, ) (*ProofSubmitter, error) { anchorValidator, err := validator.New(taikoL2Address, rpcClient.L2.ChainID, rpcClient) if err != nil { @@ -72,19 +81,22 @@ func NewProofSubmitter( } return &ProofSubmitter{ - rpc: rpcClient, - proofProducer: proofProducer, - resultCh: resultCh, - anchorValidator: anchorValidator, - txBuilder: builder, - sender: transaction.NewSender(rpcClient, txmgr, privateTxmgr, proverSetAddress, gasLimit), - proverAddress: txmgr.From(), - proverSetAddress: proverSetAddress, - taikoL2Address: taikoL2Address, - graffiti: rpc.StringToBytes32(graffiti), - tiers: tiers, - isGuardian: isGuardian, - submissionDelay: submissionDelay, + rpc: rpcClient, + proofProducer: proofProducer, + resultCh: resultCh, + batchResultCh: batchResultCh, + aggregationNotify: aggregationNotify, + anchorValidator: anchorValidator, + txBuilder: builder, + sender: transaction.NewSender(rpcClient, txmgr, privateTxmgr, proverSetAddress, gasLimit), + proverAddress: txmgr.From(), + proverSetAddress: proverSetAddress, + taikoL2Address: taikoL2Address, + graffiti: rpc.StringToBytes32(graffiti), + tiers: tiers, + isGuardian: isGuardian, + submissionDelay: submissionDelay, + proofBuffer: NewProofBuffer(proofBufferSize), }, nil } @@ -131,13 +143,13 @@ func (s *ProofSubmitter) RequestProof(ctx context.Context, meta metadata.TaikoBl Graffiti: common.Bytes2Hex(s.graffiti[:]), GasUsed: header.GasUsed, ParentGasUsed: parent.GasUsed(), + Compressed: s.proofBuffer.MaxLength > 1, } // If the prover set address is provided, we use that address as the prover on chain. if s.proverSetAddress != rpc.ZeroAddress { opts.ProverAddress = s.proverSetAddress } - startTime := time.Now() // Send the generated proof. @@ -147,6 +159,11 @@ func (s *ProofSubmitter) RequestProof(ctx context.Context, meta metadata.TaikoBl log.Error("Failed to request proof, context is canceled", "blockID", opts.BlockID, "error", ctx.Err()) return nil } + // Check if the proof buffer is full + if s.proofBuffer.MaxLength > 1 && s.proofBuffer.MaxLength == uint64(s.proofBuffer.Len()) { + log.Debug("Buffer is full now", "blockID", meta.GetBlockID()) + return errBufferOverflow + } // Check if there is a need to generate proof proofStatus, err := rpc.GetBlockProofStatus( ctx, @@ -181,7 +198,25 @@ func (s *ProofSubmitter) RequestProof(ctx context.Context, meta metadata.TaikoBl } return fmt.Errorf("failed to request proof (id: %d): %w", meta.GetBlockID(), err) } - s.resultCh <- result + if meta.IsOntakeBlock() && s.proofBuffer.MaxLength > 1 { + bufferSize, err := s.proofBuffer.Write(result) + if err != nil { + return fmt.Errorf("failed to add proof into buffer (id: %d)(current buffer size: %d): %w", + meta.GetBlockID(), + bufferSize, + err, + ) + } + log.Debug("Succeed to generate proof", + "blockID", meta.GetBlockID(), + "bufferSize", bufferSize, + ) + if s.proofBuffer.MaxLength == uint64(bufferSize) { + s.aggregationNotify <- s.Tier() + } + } else { + s.resultCh <- result + } metrics.ProverQueuedProofCounter.Add(1) return nil }, @@ -299,6 +334,146 @@ func (s *ProofSubmitter) SubmitProof( return nil } +// BatchSubmitProofs implements the Submitter interface to submit proof aggregation. +func (s *ProofSubmitter) BatchSubmitProofs(ctx context.Context, batchProof *proofProducer.BatchProofs) error { + log.Info( + "Batch submit block proofs", + "proof", common.Bytes2Hex(batchProof.BatchProof), + "blockIds", batchProof.BlockIDs, + "tier", batchProof.Tier, + ) + var ( + invalidBlockIDs []uint64 + latestProvenBlockID = big.NewInt(0) + ) + if len(batchProof.Proofs) == 0 { + return proofProducer.ErrInvalidLength + } + // Check if the proof has already been submitted. + proofStatus, err := rpc.BatchGetBlocksProofStatus( + ctx, + s.rpc, + batchProof.BlockIDs, + batchProof.Proofs[0].Opts.ProverAddress, + s.proverSetAddress, + ) + if err != nil { + return err + } + stateVars, err := s.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: ctx}) + if err != nil { + log.Warn( + "Failed to fetch state variables", + "error", err, + ) + return err + } + for i, proof := range batchProof.Proofs { + // Check if this proof is still needed to be submitted. + ok, err := s.sender.ValidateProof(ctx, proof, new(big.Int).SetUint64(stateVars.B.LastVerifiedBlockId)) + if err != nil { + return err + } + if !ok { + log.Error("a valid proof for block is already submitted", "blockId", proof.BlockID) + invalidBlockIDs = append(invalidBlockIDs, proof.BlockID.Uint64()) + continue + } + + if proofStatus[i].IsSubmitted && !proofStatus[i].Invalid { + log.Error("a valid proof for block is already submitted", "blockId", proof.BlockID) + invalidBlockIDs = append(invalidBlockIDs, proof.BlockID.Uint64()) + continue + } + + // Get the corresponding L2 block. + block, err := s.rpc.L2.BlockByHash(ctx, proof.Header.Hash()) + if err != nil { + log.Error("failed to get L2 block with given hash", + "hash", proof.Header.Hash(), + "error", err, + ) + invalidBlockIDs = append(invalidBlockIDs, proof.BlockID.Uint64()) + continue + } + + if block.Transactions().Len() == 0 { + log.Error("Invalid block without anchor transaction, blockID", "blockId", proof.BlockID) + invalidBlockIDs = append(invalidBlockIDs, proof.BlockID.Uint64()) + continue + } + + // Validate TaikoL2.anchor transaction inside the L2 block. + anchorTx := block.Transactions()[0] + if err = s.anchorValidator.ValidateAnchorTx(anchorTx); err != nil { + log.Error("Invalid anchor transaction", "error", err) + invalidBlockIDs = append(invalidBlockIDs, proof.BlockID.Uint64()) + } + if proof.BlockID.Cmp(latestProvenBlockID) > 0 { + latestProvenBlockID = proof.BlockID + } + } + + if len(invalidBlockIDs) > 0 { + log.Warn("Detected invalid proofs", "blockIds", invalidBlockIDs) + s.proofBuffer.ClearItems(invalidBlockIDs...) + return ErrInvalidProof + } + + // Build the TaikoL1.proveBlocks transaction and send it to the L1 node. + if err := s.sender.SendBatchProof( + ctx, + s.txBuilder.BuildProveBlocks(batchProof, s.graffiti), + batchProof, + ); err != nil { + if err.Error() == transaction.ErrUnretryableSubmission.Error() { + return nil + } + metrics.ProverAggregationSubmissionErrorCounter.Add(1) + return err + } + + metrics.ProverSentProofCounter.Add(float64(len(batchProof.BlockIDs))) + metrics.ProverLatestProvenBlockIDGauge.Set(float64(latestProvenBlockID.Uint64())) + s.proofBuffer.Clear() + + return nil +} + +// AggregateProofs read all data from buffer and aggregate them. +func (s *ProofSubmitter) AggregateProofs(ctx context.Context) error { + startTime := time.Now() + if err := backoff.Retry( + func() error { + buffer, err := s.proofBuffer.ReadAll() + if err != nil { + return fmt.Errorf("failed to read proof from buffer: %w", err) + } + if len(buffer) == 0 { + log.Debug("Buffer is empty now, skip aggregating") + return nil + } + + result, err := s.proofProducer.Aggregate( + ctx, + buffer, + startTime, + ) + if err != nil { + log.Error("Failed to request proof aggregation", "err", err) + return err + } + s.batchResultCh <- result + return nil + }, + backoff.WithContext(backoff.NewConstantBackOff(proofPollingInterval), ctx), + ); err != nil { + log.Error("Aggregate proof error", "error", err) + return err + } + return nil +} + // getRandomBumpedSubmissionDelay returns a random bumped submission delay. func (s *ProofSubmitter) getRandomBumpedSubmissionDelay(expiredAt time.Time) (time.Duration, error) { if s.submissionDelay == 0 { @@ -331,3 +506,8 @@ func (s *ProofSubmitter) Producer() proofProducer.ProofProducer { func (s *ProofSubmitter) Tier() uint16 { return s.proofProducer.Tier() } + +// BufferSize returns the size of the proof buffer. +func (s *ProofSubmitter) BufferSize() uint64 { + return s.proofBuffer.MaxLength +} diff --git a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go index 7b96d2f226a..3a7cbde8a12 100644 --- a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go +++ b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go @@ -31,17 +31,21 @@ import ( type ProofSubmitterTestSuite struct { testutils.ClientTestSuite - submitter *ProofSubmitter - contester *ProofContester - blobSyncer *blob.Syncer - proposer *proposer.Proposer - proofCh chan *producer.ProofWithHeader + submitter *ProofSubmitter + contester *ProofContester + blobSyncer *blob.Syncer + proposer *proposer.Proposer + proofCh chan *producer.ProofWithHeader + batchProofGenerationCh chan *producer.BatchProofs + aggregationNotify chan uint16 } func (s *ProofSubmitterTestSuite) SetupTest() { s.ClientTestSuite.SetupTest() s.proofCh = make(chan *producer.ProofWithHeader, 1024) + s.batchProofGenerationCh = make(chan *producer.BatchProofs, 1024) + s.aggregationNotify = make(chan uint16, 1) builder := transaction.NewProveBlockTxBuilder( s.RPCClient, @@ -83,6 +87,8 @@ func (s *ProofSubmitterTestSuite) SetupTest() { s.RPCClient, &producer.OptimisticProofProducer{}, s.proofCh, + s.batchProofGenerationCh, + s.aggregationNotify, rpc.ZeroAddress, common.HexToAddress(os.Getenv("TAIKO_L2")), "test", @@ -93,6 +99,7 @@ func (s *ProofSubmitterTestSuite) SetupTest() { tiers, false, 0*time.Second, + 0, ) s.Nil(err) s.contester = NewProofContester( @@ -179,6 +186,8 @@ func (s *ProofSubmitterTestSuite) TestGetRandomBumpedSubmissionDelay() { s.RPCClient, &producer.OptimisticProofProducer{}, s.proofCh, + s.batchProofGenerationCh, + s.aggregationNotify, common.Address{}, common.HexToAddress(os.Getenv("TAIKO_L2")), "test", @@ -189,6 +198,7 @@ func (s *ProofSubmitterTestSuite) TestGetRandomBumpedSubmissionDelay() { s.submitter.tiers, false, time.Duration(0), + 0, ) s.Nil(err) @@ -200,6 +210,8 @@ func (s *ProofSubmitterTestSuite) TestGetRandomBumpedSubmissionDelay() { s.RPCClient, &producer.OptimisticProofProducer{}, s.proofCh, + s.batchProofGenerationCh, + s.aggregationNotify, common.Address{}, common.HexToAddress(os.Getenv("TAIKO_L2")), "test", @@ -210,6 +222,7 @@ func (s *ProofSubmitterTestSuite) TestGetRandomBumpedSubmissionDelay() { s.submitter.tiers, false, 1*time.Hour, + 0, ) s.Nil(err) delay, err = submitter2.getRandomBumpedSubmissionDelay(time.Now()) diff --git a/packages/taiko-client/prover/proof_submitter/transaction/builder.go b/packages/taiko-client/prover/proof_submitter/transaction/builder.go index 913bf9fd9d2..4ec13d85b2d 100644 --- a/packages/taiko-client/prover/proof_submitter/transaction/builder.go +++ b/packages/taiko-client/prover/proof_submitter/transaction/builder.go @@ -14,6 +14,7 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/metadata" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" ) var ( @@ -153,3 +154,76 @@ func (a *ProveBlockTxBuilder) Build( }, nil } } + +// BuildProveBlocks creates a new TaikoL1.ProveBlocks transaction. +func (a *ProveBlockTxBuilder) BuildProveBlocks( + batchProof *proofProducer.BatchProofs, + graffiti [32]byte, +) TxBuilder { + return func(txOpts *bind.TransactOpts) (*txmgr.TxCandidate, error) { + var ( + data []byte + to common.Address + err error + metas = make([]metadata.TaikoBlockMetaData, len(batchProof.Proofs)) + transitions = make([]bindings.TaikoDataTransition, len(batchProof.Proofs)) + blockIDs = make([]uint64, len(batchProof.Proofs)) + ) + for i, proof := range batchProof.Proofs { + metas[i] = proof.Meta + transitions[i] = bindings.TaikoDataTransition{ + ParentHash: proof.Header.ParentHash, + BlockHash: proof.Opts.BlockHash, + StateRoot: proof.Opts.StateRoot, + Graffiti: graffiti, + } + blockIDs[i] = proof.BlockID.Uint64() + } + log.Info( + "Build batch proof submission transaction", + "blockIDs", blockIDs, + "gasLimit", txOpts.GasLimit, + ) + input, err := encoding.EncodeProveBlocksInput(metas, transitions) + if err != nil { + return nil, err + } + tierProof, err := encoding.EncodeProveBlocksBatchProof(&bindings.TaikoDataTierProof{ + Tier: batchProof.Tier, + Data: batchProof.BatchProof, + }) + if err != nil { + return nil, err + } + + if a.proverSetAddress != ZeroAddress { + if data, err = encoding.ProverSetABI.Pack( + "proveBlocks", + blockIDs, + input, + tierProof, + ); err != nil { + return nil, err + } + to = a.proverSetAddress + } else { + if data, err = encoding.TaikoL1ABI.Pack( + "proveBlocks", + blockIDs, + input, + tierProof, + ); err != nil { + return nil, err + } + to = a.taikoL1Address + } + + return &txmgr.TxCandidate{ + TxData: data, + To: &to, + Blobs: nil, + GasLimit: txOpts.GasLimit, + Value: txOpts.Value, + }, nil + } +} diff --git a/packages/taiko-client/prover/proof_submitter/transaction/sender.go b/packages/taiko-client/prover/proof_submitter/transaction/sender.go index b9aed4db825..3363390e181 100644 --- a/packages/taiko-client/prover/proof_submitter/transaction/sender.go +++ b/packages/taiko-client/prover/proof_submitter/transaction/sender.go @@ -65,7 +65,7 @@ func (s *Sender) Send( } // Check if this proof is still needed to be submitted. - ok, err := s.validateProof(ctx, proofWithHeader) + ok, err := s.ValidateProof(ctx, proofWithHeader, nil) if err != nil || !ok { return err } @@ -115,9 +115,56 @@ func (s *Sender) Send( return nil } -// validateProof checks if the proof's corresponding L1 block is still in the canonical chain and if the +func (s *Sender) SendBatchProof( + ctx context.Context, + buildTx TxBuilder, + batchProof *producer.BatchProofs, +) error { + // Assemble the TaikoL1.proveBlocks transaction. + txCandidate, err := buildTx(&bind.TransactOpts{GasLimit: s.gasLimit}) + if err != nil { + return err + } + // Send the transaction. + txMgr, isPrivate := s.txmgrSelector.Select() + receipt, err := txMgr.Send(ctx, *txCandidate) + if err != nil { + if isPrivate { + s.txmgrSelector.RecordPrivateTxMgrFailed() + } + return encoding.TryParsingCustomError(err) + } + + if receipt.Status != types.ReceiptStatusSuccessful { + log.Error( + "Failed to submit batch proofs", + "txHash", receipt.TxHash, + "isPrivateMempool", isPrivate, + "error", encoding.TryParsingCustomErrorFromReceipt(ctx, s.rpc.L1, txMgr.From(), receipt), + ) + metrics.ProverSubmissionRevertedCounter.Add(1) + return ErrUnretryableSubmission + } + + log.Info( + "🚚 Your batch proofs were accepted", + "txHash", receipt.TxHash, + "tier", batchProof.Tier, + "blockIDs", batchProof.BlockIDs, + ) + + metrics.ProverSubmissionAcceptedCounter.Add(float64(len(batchProof.BlockIDs))) + + return nil +} + +// ValidateProof checks if the proof's corresponding L1 block is still in the canonical chain and if the // latest verified head is not ahead of this block proof. -func (s *Sender) validateProof(ctx context.Context, proofWithHeader *producer.ProofWithHeader) (bool, error) { +func (s *Sender) ValidateProof( + ctx context.Context, + proofWithHeader *producer.ProofWithHeader, + latestVerifiedID *big.Int, +) (bool, error) { // 1. Check if the corresponding L1 block is still in the canonical chain. l1Header, err := s.rpc.L1.HeaderByNumber(ctx, proofWithHeader.Meta.GetRawBlockHeight()) if err != nil { @@ -140,18 +187,22 @@ func (s *Sender) validateProof(ctx context.Context, proofWithHeader *producer.Pr return false, nil } + var verifiedID = latestVerifiedID // 2. Check if latest verified head is ahead of this block proof. - stateVars, err := s.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: ctx}) - if err != nil { - log.Warn( - "Failed to fetch state variables", - "blockID", proofWithHeader.BlockID, - "error", err, - ) - return false, err + if verifiedID == nil { + stateVars, err := s.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: ctx}) + if err != nil { + log.Warn( + "Failed to fetch state variables", + "blockID", proofWithHeader.BlockID, + "error", err, + ) + return false, err + } + verifiedID = new(big.Int).SetUint64(stateVars.B.LastVerifiedBlockId) } - latestVerifiedID := stateVars.B.LastVerifiedBlockId - if new(big.Int).SetUint64(latestVerifiedID).Cmp(proofWithHeader.BlockID) >= 0 { + + if verifiedID.Cmp(proofWithHeader.BlockID) >= 0 { log.Info( "Block is already verified, skip current proof submission", "blockID", proofWithHeader.BlockID.Uint64(), diff --git a/packages/taiko-client/prover/prover.go b/packages/taiko-client/prover/prover.go index 3edc8f3636e..237a7f44937 100644 --- a/packages/taiko-client/prover/prover.go +++ b/packages/taiko-client/prover/prover.go @@ -15,6 +15,7 @@ import ( "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/log" "github.com/urfave/cli/v2" + "golang.org/x/sync/errgroup" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" @@ -62,11 +63,13 @@ type Prover struct { assignmentExpiredCh chan metadata.TaikoBlockMetaData proveNotify chan struct{} + aggregationNotify chan uint16 // Proof related channels - proofSubmissionCh chan *proofProducer.ProofRequestBody - proofContestCh chan *proofProducer.ContestRequestBody - proofGenerationCh chan *proofProducer.ProofWithHeader + proofSubmissionCh chan *proofProducer.ProofRequestBody + proofContestCh chan *proofProducer.ContestRequestBody + proofGenerationCh chan *proofProducer.ProofWithHeader + batchProofGenerationCh chan *proofProducer.BatchProofs // Transactions manager txmgr *txmgr.SimpleTxManager @@ -130,10 +133,12 @@ func InitFromConfig( chBufferSize := p.protocolConfigs.BlockMaxProposals p.proofGenerationCh = make(chan *proofProducer.ProofWithHeader, chBufferSize) + p.batchProofGenerationCh = make(chan *proofProducer.BatchProofs, chBufferSize) p.assignmentExpiredCh = make(chan metadata.TaikoBlockMetaData, chBufferSize) p.proofSubmissionCh = make(chan *proofProducer.ProofRequestBody, p.cfg.Capacity) p.proofContestCh = make(chan *proofProducer.ContestRequestBody, p.cfg.Capacity) p.proveNotify = make(chan struct{}, 1) + p.aggregationNotify = make(chan uint16, 1) if err := p.initL1Current(cfg.StartingBlockID); err != nil { return fmt.Errorf("initialize L1 current cursor error: %w", err) @@ -274,6 +279,15 @@ func (p *Prover) eventLoop() { default: } } + // reqAggregation requests performing a aggregate operation, won't block + // if we are already aggregating. + reqAggregation := func() { + select { + // 0 means aggregating all tier proofs + case p.aggregationNotify <- 0: + default: + } + } // Call reqProving() right away to catch up with the latest state. reqProving() @@ -283,6 +297,9 @@ func (p *Prover) eventLoop() { forceProvingTicker := time.NewTicker(15 * time.Second) defer forceProvingTicker.Stop() + forceAggregatingTicker := time.NewTicker(p.cfg.ForceProveInterval) + defer forceAggregatingTicker.Stop() + // Channels chBufferSize := p.protocolConfigs.BlockMaxProposals blockProposedCh := make(chan *bindings.TaikoL1ClientBlockProposed, chBufferSize) @@ -321,12 +338,18 @@ func (p *Prover) eventLoop() { p.withRetry(func() error { return p.contestProofOp(req) }) case proofWithHeader := <-p.proofGenerationCh: p.withRetry(func() error { return p.submitProofOp(proofWithHeader) }) + case batchProof := <-p.batchProofGenerationCh: + p.withRetry(func() error { return p.submitProofAggregationOp(batchProof) }) case req := <-p.proofSubmissionCh: p.withRetry(func() error { return p.requestProofOp(req.Meta, req.Tier) }) case <-p.proveNotify: if err := p.proveOp(); err != nil { log.Error("Prove new blocks error", "error", err) } + case tier := <-p.aggregationNotify: + p.withRetry(func() error { + return p.aggregateOp(tier) + }) case e := <-blockVerifiedCh: p.blockVerifiedHandler.Handle(encoding.BlockVerifiedEventToV2(e)) case e := <-transitionProvedCh: @@ -366,6 +389,8 @@ func (p *Prover) eventLoop() { reqProving() case <-forceProvingTicker.C: reqProving() + case <-forceAggregatingTicker.C: + reqAggregation() } } } @@ -392,6 +417,35 @@ func (p *Prover) proveOp() error { return iter.Iter() } +// aggregateOp aggregates all proofs in buffer. +func (p *Prover) aggregateOp(tier uint16) error { + g, gCtx := errgroup.WithContext(p.ctx) + for _, submitter := range p.proofSubmitters { + g.Go(func() error { + if submitter.BufferSize() > 1 && + (tier == 0 || submitter.Tier() == tier) { + if err := submitter.AggregateProofs(gCtx); err != nil { + log.Error("Failed to aggregate proofs", + "error", err, + "tier", submitter.Tier(), + ) + return err + } + } else { + log.Debug( + "Skip the current aggregation operation", + "requestTier", tier, + "submitterTier", submitter.Tier(), + "bufferSize", submitter.BufferSize(), + ) + } + return nil + }) + } + + return g.Wait() +} + // contestProofOp performs a proof contest operation. func (p *Prover) contestProofOp(req *proofProducer.ContestRequestBody) error { if err := p.proofContester.SubmitContest( @@ -474,6 +528,36 @@ func (p *Prover) submitProofOp(proofWithHeader *proofProducer.ProofWithHeader) e return nil } +// submitProofsOp performs a batch proof submission operation. +func (p *Prover) submitProofAggregationOp(batchProof *proofProducer.BatchProofs) error { + submitter := p.getSubmitterByTier(batchProof.Tier) + if submitter == nil { + return nil + } + + if err := submitter.BatchSubmitProofs(p.ctx, batchProof); err != nil { + if strings.Contains(err.Error(), vm.ErrExecutionReverted.Error()) || + strings.Contains(err.Error(), proofSubmitter.ErrInvalidProof.Error()) { + log.Error( + "Proof submission reverted", + "blockIDs", batchProof.BlockIDs, + "tier", batchProof.Tier, + "error", err, + ) + return nil + } + log.Error( + "Submit proof error", + "blockIDs", batchProof.BlockIDs, + "tier", batchProof.Tier, + "error", err, + ) + return err + } + + return nil +} + // Name returns the application name. func (p *Prover) Name() string { return "prover" diff --git a/packages/taiko-client/prover/prover_test.go b/packages/taiko-client/prover/prover_test.go index 4ef524d751c..638dc9b7aec 100644 --- a/packages/taiko-client/prover/prover_test.go +++ b/packages/taiko-client/prover/prover_test.go @@ -27,6 +27,7 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" guardianProverHeartbeater "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/guardian_prover_heartbeater" producer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" + proofSubmitter "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter" "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter/transaction" ) @@ -488,6 +489,119 @@ func (s *ProverTestSuite) TestGetBlockProofStatus() { s.Equal(proofWithHeader.Opts.BlockHash, common.BytesToHash(status.CurrentTransitionState.BlockHash[:])) } +func (s *ProverTestSuite) TestAggregateProofsAlreadyProved() { + batchSize := 2 + // Init batch prover + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + decimal, err := s.RPCClient.TaikoToken.Decimals(nil) + s.Nil(err) + batchProver := new(Prover) + s.Nil(InitFromConfig(context.Background(), batchProver, &Config{ + L1WsEndpoint: os.Getenv("L1_WS"), + L2WsEndpoint: os.Getenv("L2_WS"), + L2HttpEndpoint: os.Getenv("L2_HTTP"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN")), + L1ProverPrivKey: l1ProverPrivKey, + Dummy: true, + ProveUnassignedBlocks: true, + Capacity: 1024, + Allowance: new(big.Int).Exp(big.NewInt(1_000_000_100), new(big.Int).SetUint64(uint64(decimal)), nil), + RPCTimeout: 3 * time.Second, + BackOffRetryInterval: 3 * time.Second, + BackOffMaxRetries: 12, + L1NodeVersion: "1.0.0", + L2NodeVersion: "0.1.0", + SGXProofBufferSize: uint64(batchSize), + }, s.txmgr, s.txmgr)) + + for i := 0; i < batchSize; i++ { + _ = s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer()) + } + + sink2 := make(chan *bindings.TaikoL1ClientTransitionProvedV2, batchSize) + sub2, err := s.p.rpc.TaikoL1.WatchTransitionProvedV2(nil, sink2, nil) + s.Nil(err) + defer func() { + sub2.Unsubscribe() + close(sink2) + }() + + s.Nil(s.p.proveOp()) + s.Nil(batchProver.proveOp()) + for i := 0; i < batchSize; i++ { + req1 := <-s.p.proofSubmissionCh + s.Nil(s.p.requestProofOp(req1.Meta, req1.Tier)) + req2 := <-batchProver.proofSubmissionCh + s.Nil(batchProver.requestProofOp(req2.Meta, req2.Tier)) + s.Nil(s.p.selectSubmitter(req1.Tier).SubmitProof(context.Background(), <-s.p.proofGenerationCh)) + } + tier := <-batchProver.aggregationNotify + s.Nil(batchProver.aggregateOp(tier)) + s.ErrorIs( + batchProver.selectSubmitter(tier).BatchSubmitProofs(context.Background(), <-batchProver.batchProofGenerationCh), + proofSubmitter.ErrInvalidProof, + ) + for i := 0; i < batchSize; i++ { + <-sink2 + } +} + +func (s *ProverTestSuite) TestAggregateProofs() { + batchSize := 2 + // Init batch prover + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + decimal, err := s.RPCClient.TaikoToken.Decimals(nil) + s.Nil(err) + batchProver := new(Prover) + s.Nil(InitFromConfig(context.Background(), batchProver, &Config{ + L1WsEndpoint: os.Getenv("L1_WS"), + L2WsEndpoint: os.Getenv("L2_WS"), + L2HttpEndpoint: os.Getenv("L2_HTTP"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN")), + L1ProverPrivKey: l1ProverPrivKey, + Dummy: true, + ProveUnassignedBlocks: true, + Capacity: 1024, + Allowance: new(big.Int).Exp(big.NewInt(1_000_000_100), new(big.Int).SetUint64(uint64(decimal)), nil), + RPCTimeout: 3 * time.Second, + BackOffRetryInterval: 3 * time.Second, + BackOffMaxRetries: 12, + L1NodeVersion: "1.0.0", + L2NodeVersion: "0.1.0", + SGXProofBufferSize: uint64(batchSize), + }, s.txmgr, s.txmgr)) + + for i := 0; i < batchSize; i++ { + _ = s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer()) + } + + sink2 := make(chan *bindings.TaikoL1ClientTransitionProvedV2, batchSize) + sub2, err := s.p.rpc.TaikoL1.WatchTransitionProvedV2(nil, sink2, nil) + s.Nil(err) + defer func() { + sub2.Unsubscribe() + close(sink2) + }() + + s.Nil(batchProver.proveOp()) + for i := 0; i < batchSize; i++ { + req := <-batchProver.proofSubmissionCh + s.Nil(batchProver.requestProofOp(req.Meta, req.Tier)) + } + tier := <-batchProver.aggregationNotify + s.Nil(batchProver.aggregateOp(tier)) + s.Nil(batchProver.selectSubmitter(tier).BatchSubmitProofs(context.Background(), <-batchProver.batchProofGenerationCh)) + for i := 0; i < batchSize; i++ { + <-sink2 + } +} + func (s *ProverTestSuite) TestSetApprovalAlreadySetHigher() { originalAllowance, err := s.p.rpc.TaikoToken.Allowance(&bind.CallOpts{}, s.p.ProverAddress(), s.p.cfg.TaikoL1Address) s.Nil(err) From 55acc93c1cf6628f2d1ca6f0b2ca20a257f74e1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCnger?= <98948000+0xjunger@users.noreply.github.com> Date: Fri, 6 Dec 2024 03:41:53 +0300 Subject: [PATCH 203/205] feat(docs-site): add taiko-protocol section with economics and codebase analysis (#18542) Co-authored-by: RogerLamTd Co-authored-by: swarna1101 --- packages/docs-site/astro.config.ts | 32 ++-- .../docs/taiko-protocol/based-economics.png | Bin 0 -> 214929 bytes .../bridging-dest-chain.webp | Bin .../bridging-source-chain.webp | Bin .../proposed.png | Bin .../proved.png | Bin .../taiko-nodes.png | Bin .../verified.png | Bin .../{based-sequencing.md => based-rollup.md} | 6 +- ...table-rollups.md => contestable-rollup.md} | 0 .../docs/core-concepts/inception-layers.md | 2 +- .../docs/core-concepts/multi-proofs.md | 6 +- .../docs/core-concepts/what-is-taiko.md | 6 +- .../block-states.mdx | 0 .../bridging.md | 4 +- .../codebase-analysis/taikol1-contract.md | 150 ++++++++++++++++++ .../codebase-analysis/taikol2-contract.md | 115 ++++++++++++++ .../content/docs/taiko-protocol/economics.md | 15 ++ .../taiko-nodes.md | 2 +- 19 files changed, 311 insertions(+), 27 deletions(-) create mode 100644 packages/docs-site/src/assets/content/docs/taiko-protocol/based-economics.png rename packages/docs-site/src/assets/content/docs/{core-concepts => taiko-protocol}/bridging-dest-chain.webp (100%) rename packages/docs-site/src/assets/content/docs/{core-concepts => taiko-protocol}/bridging-source-chain.webp (100%) rename packages/docs-site/src/assets/content/docs/{core-concepts => taiko-protocol}/proposed.png (100%) rename packages/docs-site/src/assets/content/docs/{core-concepts => taiko-protocol}/proved.png (100%) rename packages/docs-site/src/assets/content/docs/{core-concepts => taiko-protocol}/taiko-nodes.png (100%) rename packages/docs-site/src/assets/content/docs/{core-concepts => taiko-protocol}/verified.png (100%) rename packages/docs-site/src/content/docs/core-concepts/{based-sequencing.md => based-rollup.md} (58%) rename packages/docs-site/src/content/docs/core-concepts/{contestable-rollups.md => contestable-rollup.md} (100%) rename packages/docs-site/src/content/docs/{core-concepts => taiko-protocol}/block-states.mdx (100%) rename packages/docs-site/src/content/docs/{core-concepts => taiko-protocol}/bridging.md (98%) create mode 100644 packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/taikol1-contract.md create mode 100644 packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/taikol2-contract.md create mode 100644 packages/docs-site/src/content/docs/taiko-protocol/economics.md rename packages/docs-site/src/content/docs/{core-concepts => taiko-protocol}/taiko-nodes.md (98%) diff --git a/packages/docs-site/astro.config.ts b/packages/docs-site/astro.config.ts index 5f7c4d44faf..71087619c0d 100644 --- a/packages/docs-site/astro.config.ts +++ b/packages/docs-site/astro.config.ts @@ -68,34 +68,38 @@ export default defineConfig({ label: "Core Concepts", items: [ { label: "What is Taiko?", link: "/core-concepts/what-is-taiko/" }, - { - label: "Based sequencing", - link: "/core-concepts/based-sequencing/", - }, { label: "Contestable rollups (BCR)", - link: "/core-concepts/contestable-rollups/", + link: "/core-concepts/contestable-rollup/", }, { label: "Booster rollups (BBR)", link: "/core-concepts/booster-rollups/", }, { label: "Multi-proofs", link: "/core-concepts/multi-proofs/" }, - { label: "Block states", link: "/core-concepts/block-states" }, - { - label: "Taiko nodes", - link: "/core-concepts/taiko-nodes/", - }, - { - label: "Bridging", - link: "/core-concepts/bridging/", - }, { label: "Inception layers", link: "/core-concepts/inception-layers/", }, ], }, + { + label: "Taiko Protocol", + items: [ + { + label: "Codebase Analysis", + collapsed: true, + items: [ + {label: "TaikoL1 Contract", link: "/taiko-protocol/codebase-analysis/taikol1-contract"}, + {label: "TaikoL2 Contract", link: "/taiko-protocol/codebase-analysis/taikol2-contract"}, + ], + }, + { label: "Block states", link: "/taiko-protocol/block-states" }, + { label: "Bridging", link: "/taiko-protocol/bridging" }, + { label: "Economics", link: "/taiko-protocol/economics" }, + { label: "Taiko nodes", link: "/taiko-protocol/taiko-nodes" }, + ] + }, { label: "Guides", items: [ diff --git a/packages/docs-site/src/assets/content/docs/taiko-protocol/based-economics.png b/packages/docs-site/src/assets/content/docs/taiko-protocol/based-economics.png new file mode 100644 index 0000000000000000000000000000000000000000..e714579a5957985764cdd9cff6a02b9558c17bef GIT binary patch literal 214929 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 Q1MnAg **Proposed:** -![proposed](~/assets/content/docs/core-concepts/proposed.png) +![proposed](~/assets/content/docs/taiko-protocol/proposed.png) **Proved:** -![proved](~/assets/content/docs/core-concepts/proved.png) +![proved](~/assets/content/docs/taiko-protocol/proved.png) **Verified:** -![verified](~/assets/content/docs/core-concepts/verified.png) +![verified](~/assets/content/docs/taiko-protocol/verified.png) ## Off chain prover market (PBS style) diff --git a/packages/docs-site/src/content/docs/core-concepts/what-is-taiko.md b/packages/docs-site/src/content/docs/core-concepts/what-is-taiko.md index 2380604a9c6..41ca6aa6ddd 100644 --- a/packages/docs-site/src/content/docs/core-concepts/what-is-taiko.md +++ b/packages/docs-site/src/content/docs/core-concepts/what-is-taiko.md @@ -5,9 +5,9 @@ description: Core concept page for "What is Taiko?". Ethereum is too expensive. We believe in Ethereum's core properties (e.g., censorship-resistant, permissionless, secure). We also believe that rollups should **extend** (not augment) these properties. -Taiko is a [based rollup](/core-concepts/based-sequencing) which makes Ethereum cheaper while maintaining its properties: +Taiko is a [based rollup](/core-concepts/based-rollup) which makes Ethereum cheaper while maintaining its properties: -- [Based contestable rollup](/core-concepts/contestable-rollups): A configurable rollup to reduce transaction fees on Ethereum. +- [Based contestable rollup](/core-concepts/contestable-rollup): A configurable rollup to reduce transaction fees on Ethereum. - [Based booster rollup](/core-concepts/booster-rollups): An innovative approach to **native L1 scaling**. Taiko is a **highly configurable, fully open source, permissionless (based), Ethereum-equivalent rollup**. @@ -32,7 +32,7 @@ It can be easily configured as a fully ZK rollup, optimistic rollup, or anything ### Non-critical infrastructure :::note -Anyone can run these components, not just Taiko Labs. Yes you can sequence blocks on Taiko, host your own bridge using our [signal service](/core-concepts/bridging#the-signal-service), etc. +Anyone can run these components, not just Taiko Labs. Yes you can sequence blocks on Taiko, host your own bridge using our [signal service](/taiko-protocol/bridging#the-signal-service), etc. ::: #### Frontends diff --git a/packages/docs-site/src/content/docs/core-concepts/block-states.mdx b/packages/docs-site/src/content/docs/taiko-protocol/block-states.mdx similarity index 100% rename from packages/docs-site/src/content/docs/core-concepts/block-states.mdx rename to packages/docs-site/src/content/docs/taiko-protocol/block-states.mdx diff --git a/packages/docs-site/src/content/docs/core-concepts/bridging.md b/packages/docs-site/src/content/docs/taiko-protocol/bridging.md similarity index 98% rename from packages/docs-site/src/content/docs/core-concepts/bridging.md rename to packages/docs-site/src/content/docs/taiko-protocol/bridging.md index d5bc0333a82..fe5926a6d67 100644 --- a/packages/docs-site/src/content/docs/core-concepts/bridging.md +++ b/packages/docs-site/src/content/docs/taiko-protocol/bridging.md @@ -80,8 +80,8 @@ The bridge is a set of smart contracts and a frontend web app that allow you to First, here is a flowchart of how our bridge dapp implementation works, which uses the signal service: -![bridging send message flowchart](~/assets/content/docs/core-concepts/bridging-source-chain.webp) \ -![bridging process message flowchart](~/assets/content/docs/core-concepts/bridging-dest-chain.webp) +![bridging send message flowchart](~/assets/content/docs/taiko-protocol/bridging-source-chain.webp) +![bridging process message flowchart](~/assets/content/docs/taiko-protocol/bridging-dest-chain.webp) ### How does Ether bridging work? diff --git a/packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/taikol1-contract.md b/packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/taikol1-contract.md new file mode 100644 index 00000000000..6045c4c8114 --- /dev/null +++ b/packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/taikol1-contract.md @@ -0,0 +1,150 @@ +--- +title: TaikoL1 +description: Taiko protocol page for "TaikoL1.sol". +--- + +[TaikoL1](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/contracts/layer1/based/TaikoL1.sol) is a smart contract that serves as the **base layer** of the Taiko protocol. It provides functionalities for **proposing, proving, and verifying blocks**, enabling the rollup's consensus and state transitions. The contract also supports **bond deposits and withdrawals** and manages state synchronization between L1 and L2. + +--- + +## Core Purpose + +1. **Block Lifecycle Management** + Manages the proposal, proof, and verification of Taiko blocks, ensuring consistent state transitions. + +2. **Cross-Layer Synchronization** + Ensures the synchronization of states between Layer 1 (L1) and Layer 2 (L2). + +3. **Bond Management** + Handles the deposit and withdrawal of bonds to incentivize proposers and ensure accountability. + +4. **Base Layer Scalability** + Enables the deployment on L2 to create L3 rollups, expanding Taiko's scalability. + +--- + +## Key Functions + +### `proposeBlockV2` + +- **Purpose:** + Proposes a single block for inclusion in the rollup. + +- **Parameters:** + + - `_params`: Encoded block parameters. + - `_txList`: Transactions to include in the block. + +- **Returns:** + `TaikoData.BlockMetadataV2` containing metadata of the proposed block. + +--- + +### `proposeBlocksV2` + +- **Purpose:** + Proposes multiple blocks in batch. + +- **Parameters:** + + - `_paramsArr`: Array of encoded block parameters. + - `_txListArr`: Arrays of transactions for each block. + +- **Returns:** + Array of `TaikoData.BlockMetadataV2` for all proposed blocks. + +--- + +### `proveBlock` + +- **Purpose:** + Proves the validity of a single block. + +- **Parameters:** + - `_blockId`: ID of the block to be proven. + - `_input`: Encoded proof data. + +--- + +### `proveBlocks` + +- **Purpose:** + Proves multiple blocks in a single call. + +- **Parameters:** + - `_blockIds`: IDs of the blocks to be proven. + - `_inputs`: Proofs for each block. + - `_batchProof`: Batch proof covering all blocks. + +--- + +### `verifyBlocks` + +- **Purpose:** + Verifies a batch of blocks after proofs are submitted. + +- **Parameters:** + - `_maxBlocksToVerify`: Maximum number of blocks to verify. + +--- + +### `depositBond` + +- **Purpose:** + Deposits a bond required for proposing blocks. + +- **Parameters:** + - `_amount`: Amount of bond to deposit. + +--- + +### `withdrawBond` + +- **Purpose:** + Withdraws bond deposits after successful proposals. + +- **Parameters:** + - `_amount`: Amount of bond to withdraw. + +--- + +### `getLastVerifiedBlock` + +- **Purpose:** + Retrieves the details of the most recently verified block. + +- **Returns:** + - `blockId_`: ID of the last verified block. + - `blockHash_`: Block hash of the verified block. + - `stateRoot_`: State root of the verified block. + - `verifiedAt_`: Timestamp when the block was verified. + +--- + +## Key Events + +1. **`DebugGasPerBlock`** + Provides gas usage metrics for block proposals or proofs. + +- `isProposeBlock`: Indicates whether the event is for proposals or proofs. +- `gasUsed`: Gas consumed per block. +- `batchSize`: Number of blocks in the batch. + +2. **`StateVariablesUpdated`** + Signals updates to the state variables. + +--- + +## Important Data Structures + +1. **`state`**: + Tracks the rollup state, including blocks, bonds, and configurations. + +2. **`__gap`**: + Reserved storage for future upgrades. + +--- + +## Design Highlights + +--- diff --git a/packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/taikol2-contract.md b/packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/taikol2-contract.md new file mode 100644 index 00000000000..be5cc5e5962 --- /dev/null +++ b/packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/taikol2-contract.md @@ -0,0 +1,115 @@ +--- +title: TaikoL2 +description: Taiko protocol page for "TaikoL2.sol". +--- + +[TaikoL2](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/contracts/layer2/based/TaikoL2.sol) is a smart contract that handles cross-layer message verification and manages EIP-1559 gas pricing for Taiko operations. It is used to anchor the latest L1 block details to L2 for cross-layer communication, manage EIP-1559 parameters for gas pricing, and store verified L1 block information. + +--- + +## Core Purpose + +1. **Anchor:** + Due to Taiko's **based rollup** nature, each L2 block requires anchoring to the latest L1 block details. The first transaction of every block must perform this anchor, or all calls will revert with `L2_PUBLIC_INPUT_HASH_MISMATCH`. + +2. **Gas Pricing:** + The contract calculates **EIP-1559 base fee** and updates gas parameters dynamically for optimal gas pricing using key inputs such as `_parentGasUsed` and `_baseFeeConfig`. + +3. **State Synchronization:** + The contract ensures L2 remains in sync with L1 by storing verified block information and updating state data like block hashes and timestamps. + +4. **Bridging Support:** + It plays a crucial role in **L1-L2 bridging**, anchoring state roots to enable secure and efficient communication between layers. For more, visit the [Bridging page](/taiko-protocol/bridging). + +--- + +## Key Functions + +### `anchorV2` + +- **Purpose:** + Anchors the latest L1 block details to L2, enabling **cross-layer message verification**. + +- **Parameters:** + + - `_anchorBlockId`: The L1 block ID to anchor. + - `_anchorStateRoot`: State root of the specified L1 block. + - `_parentGasUsed`: Gas usage in the parent block. + - `_baseFeeConfig`: Configuration for base fee calculation. + +- **Mechanism:** + Verifies and updates the `publicInputHash`, calculates the base fee and gas excess using `getBasefeeV2`, and synchronizes chain data. + +--- + +### `getBasefeeV2` + +- **Purpose:** + Computes the **EIP-1559 base fee** and updates gas parameters like **gas excess** and **gas target**. + +- **Parameters:** + + - `_parentGasUsed`: Gas used in the parent block. + - `_baseFeeConfig`: Configuration for EIP-1559 calculations. + +- **Returns:** + + - `basefee_`: Calculated base fee per gas. + - `newGasTarget_`: Updated gas target. + - `newGasExcess_`: Updated gas excess. + +- **Technical Details:** + Uses `LibEIP1559.calc1559BaseFee` and `LibEIP1559.adjustExcess` for precise gas pricing dynamics. + +--- + +### `getBlockHash` + +- **Purpose:** + Fetches the block hash for a specified block ID. + +- **Technical Note:** + If the block ID is too old (not in the last 256 blocks), it uses an internal mapping (`_blockhashes`) to retrieve stored hashes. + +--- + +## Key Events + +1. **`Anchored`** + Emitted when L1 block details are successfully anchored to L2. + + **Parameters:** + + - `parentHash`: Hash of the parent block. + - `parentGasExcess`: Gas excess for base fee calculation. + +2. **`EIP1559Update`** + Emitted when gas parameters (e.g., target, excess, base fee) are updated. + + **Parameters:** + + - `oldGasTarget`: Previous gas target. + - `newGasTarget`: Updated gas target. + - `oldGasExcess`: Previous gas excess. + - `newGasExcess`: Updated gas excess. + - `basefee`: Calculated base fee. + +--- + +## Important Data Structures + +### State Variables + +1. **`publicInputHash`**: + Validates the integrity of public inputs for block verification. + +2. **`parentGasExcess`**: + Tracks gas usage exceeding the target for dynamic base fee adjustment. + +3. **`lastSyncedBlock`**: + Stores the ID of the most recent L1 block synced with L2. + +4. **`l1ChainId`**: + Chain ID of the base layer (L1). + +--- diff --git a/packages/docs-site/src/content/docs/taiko-protocol/economics.md b/packages/docs-site/src/content/docs/taiko-protocol/economics.md new file mode 100644 index 00000000000..6f9187386c9 --- /dev/null +++ b/packages/docs-site/src/content/docs/taiko-protocol/economics.md @@ -0,0 +1,15 @@ +--- +title: Economics +description: Core concept page for "Economics". +--- + + +## taiko-economics + +Thanks to its based and multi-proof structure, Taiko has a unique economic cycle. + +This diagram illustrates Taiko's fee distribution mechanism. When users submit transactions on Taiko L2, they pay fees that are split into two components: a priority tip and a base fee. The priority tip goes to the L2 block proposer, who builds and proposes new blocks. The base fee is split between Taiko DAO Treasury (25%) and the L2 block proposer (75%). L2 block proposers have to pay two fees: L1 fee to the TaikoL1 contract on Ethereum to call `proposeBlock` function and a prover fee to the block prover. Block provers incur proof generation costs while proving the correctness of proposed blocks. + +For the current amount of the validity/contest bond on mainnet, please see [network configuration](/network-reference/network-configuration) page. + +![Economics](~/assets/content/docs/taiko-protocol/based-economics.png) diff --git a/packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md b/packages/docs-site/src/content/docs/taiko-protocol/taiko-nodes.md similarity index 98% rename from packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md rename to packages/docs-site/src/content/docs/taiko-protocol/taiko-nodes.md index 84a8d11589a..1db1eb3b197 100644 --- a/packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md +++ b/packages/docs-site/src/content/docs/taiko-protocol/taiko-nodes.md @@ -10,7 +10,7 @@ Taiko nodes are minimally modified Ethereum [execution clients](https://ethereum You can think of it like an Ethereum mainnet node, except replacing the consensus client with `taiko-client`. `taiko-client` then drives `taiko-geth` over the [Engine API](https://github.com/ethereum/execution-apis/tree/main/src/engine). This is a modular design that allows easily plugging in other execution clients. -![Taiko nodes diagram](~/assets/content/docs/core-concepts/taiko-nodes.png) +![Taiko nodes diagram](~/assets/content/docs/taiko-protocol/taiko-nodes.png) ## taiko-geth From a3aff9518c4c8f73cae6433c5691d31492918133 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Thu, 5 Dec 2024 19:29:42 -0800 Subject: [PATCH 204/205] chore(main): release docs-site 1.20.0 (#18550) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 7 +++++++ packages/docs-site/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b79531d7936..9787e4e14f9 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/bridge-ui": "2.12.0", - "packages/docs-site": "1.19.0", + "packages/docs-site": "1.20.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.6.1", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index 30bc9bde95f..37c8da3c92b 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.20.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.19.0...docs-site-v1.20.0) (2024-12-06) + + +### Features + +* **docs-site:** add taiko-protocol section with economics and codebase analysis ([#18542](https://github.com/taikoxyz/taiko-mono/issues/18542)) ([55acc93](https://github.com/taikoxyz/taiko-mono/commit/55acc93c1cf6628f2d1ca6f0b2ca20a257f74e1f)) + ## [1.19.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.18.0...docs-site-v1.19.0) (2024-11-28) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index 4024bff0e0e..90bd698f554 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.19.0", + "version": "1.20.0", "scripts": { "dev": "astro dev", "start": "astro dev", From 0854e12beb8ad4036eecaa3d72589bdb5ab82927 Mon Sep 17 00:00:00 2001 From: Roger <50648015+RogerLamTd@users.noreply.github.com> Date: Fri, 6 Dec 2024 03:20:20 -0800 Subject: [PATCH 205/205] chore(docs-site): update hekla proof tier config graphic and address (#18554) --- .../proof-tier-config-hekla.webp | Bin 266084 -> 331690 bytes .../network-configuration.mdx | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-hekla.webp b/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-hekla.webp index e5ec541ad00b3e13e01311de6a4573b27cce5299..46d6758c74c557252ed9a133cd9f6c2ef6fc0553 100644 GIT binary patch literal 331690 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

5<((uTtq` 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

?r+4MR6Y*pKiO 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≈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%0A0oNpf=Be8h8gcxZ?!)NwSIB%V&TplM&Lz3tl*Ki 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 N1fH&bF6*2UngBECherSa literal 266084 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 z z&E3tP-)`CF2;JE!ED2m1-7iejq-mSj2N~6-aP)dEyAvb_1pKk_B`Qmc9!ML4s|)_`7cOQH}e3!Vs6k8$Z^8 zC`Uf?S%StO07GK23)&n)PO#ra3~cULz!Or&bDEApV545dDVU@z9AR@zm1D0l?;AkmL3x6 z(u21S$mBUr{M;{^u7PsI?jt|c$GU8me)imsmJsu1|Fr!>##s(0VdU{jIK4-eGyqGT`H z$c#1US5yg|?s1!iJWCe36WKMZI{i(S5WW24M<|&JSuX3EC80BElN4I%U`6N*afaU- zYXz%oGQ3Xq9*NZ@q)t`Sq~1^g1)3=Cy#LIN2ssRYbif|?AxQIY9-2Rn2b1_ZPZDRQ zj0rU4NjqF!V%$E6P*&%FO}|0_yL0f~trkwqHb(gm*-=}W;+s?3U=5Z=gkzAdY}LLe zYU_K^S~k3HI(nkq8leGkSrCBpdwf^RcvI-STtRdO*3NB4RZ@MK;Zot`+yn|f$AcAB zAWX}jyma<`P^q z0r5Zm5pK_#bjh;>7PxA3G>N}7f^9(TuctS4%C9MZ!aNth#)1JLxNjayjov=jdf4UZ zIzTx{;xR#HYPX{|Fj-1@Y@GOH-QCv8Q_VuvI76q0WQEqvcm@cf5T$u z^gsS}TEv{e4!BaqR_g+~px(3~0be?|h1?s&>{?(eacujDG81Um@5e7kVhNtN*hsF7{I%@X|6!}UW1 z!@-bzrqQ=iBVSL`<{TUjBRFyJjsu`DPk_3YteFEb+XrUVuNJ6#>eN&M_Tm67eaKO_ z6F|zM#+aE&yyyTV$@H(fKB{hl29_1nx_Tea_R8kK&L^`bzw2xIYly_Cx7c+D zLy7?w#GJVETxB>^pD;0`!F}K-?nM4iR}TB>AHO0nmKn*@Rk!H{iZrxhFZAfiDA46R zv7632)va~Sho0}W4sP*e3R!^q?*##n8pVR;bw5UUze2Y_JB-#I<#>axZy}ISG{n(3 zg;%=F52)@sf#~XiN(vNEF4TczL8w8Un<`pn2et=(Qp-?qAG))S8REwh7RRcsoT-vZ zlNK$Aj}s-H2I?3>UWW+Tf4Z6y(sTuQ^E+GlhP4&HqJe@<9yGe&%7w8fl7XVLHWIwG zV#S+@jpYzqps~u5ECM%?Mu}M`iR!3deP9P(A&P>}ssktpsf!%E`G}U#`v`Nk(Adq% z%C|_b(eiE|A?Fo3AVh(kD3gKn*787YQInV;w~@6>St_ZY0Hm_IDC1G@vi=F3Xh<04 zh%Axf8vg-|1Y!mRUJKrx9mnbm_)Ew0KZ51UAoM-S|7JX`CFsT_SVIQ}6b6I8u-x!l z*EJ?vg7FrCPH;Gq*vNV`=K%o8G>m=%8TGp&+ccw3k9F11d-%|9uwWnDO)H($@cpgY z?VRU3D?1bBsj)yVIArcE40B!?p#Ki6ot=uim(i9Bp4;`ydxo5(FZ*{1etTk;0==~u zXFiX4U-rPf@8wArdNm{%)x=}1O*MGyM}3_Is9lNond?NEWegqE7eFwv<|2{@+S$+P zpUODm&J(_&#FL{lLtnIs{Kb}k44#e{nVb>7fF(sVKkgTb4mNxfd~}b|nIu?h(CA|b zO3jR}*;gCk=IiJN`fFB20*`qP6$0<>VLj6*iEg$$GsNfVJ7r4_-5)K;NgT@R8XB zff@yKC>SuRV0aXC2G*E9Flh`$K!NX$ z*5{Jm0PAZ+drd4~pNm6n7K5syi!d&5g&u=NY!%%GNIKXBcwsbHRbX^h-$VM7 zOUK}he_-2B5X5|95V$1D?j_;=Q~1FAjJ`K|sYZ4zlt3Nmb$PN3Oa?g1?_hfpG!LjN z)_#!sPcMK(5KGX)lY)qy6(U-o0#5Iu^N?}|v7^{fb_V?JGVa4m9nn&=!IZ;qp%VbS zQX3X`gL(VWWiBuF9_x+EQc^+V!CFxMUXcPku2ZnjQDgehBB*X}TqRsA1xgXQmTQKHpj!%eTIJb0MY0 zO`Ow-hy)uKo!MVf3gG-x7z?=vekx88=zi~b1-Su%V}k(C?o-mI$Cf+>C{RDe`i+AS zil&9@H1)A%VX2Ci8y|1M8TZ{!a!|-Bc0G6O9CC8;jnS- zkY$VIe2J>3Tc==YYA)yEbQzp8na^5F{?p?GtD^xa!cI^G-)!*#Q9VOBS*R;_>cEU& zBpU#;>0fE+e$-T`h@MDOJb9DtBV2>u$U-H=Mex-VEe4kVz?ehsJ*(?^@NK}@=wJz& zw9OJGe0z=uCx{)~RbOf=4etHZT_vs1q>K4Prbv$REDa;51-<$jgh`EQ6I$n0O)`M; zsix#xq$41N+dx#x%0+H843Z?-$o`L>q_ONq(8n%PLpad8Ehk&}_t+UWgrMg1;!@0Q zI?)rAGd|X#qtT<`Tb>JnZ$t1xahkbn_F;Xft$zER5E4I&>zrQhcCN6veqN(Iikq-JUFPj+A}e?)L!)R&uEN_oo(=FYFCaT2q>R0tJqssMrR;tgh`IT!-Dk&Pj*?*X0 zXM(za6e;V0toN)$?@=#+2NK2yK3Ty(770)tuFUeY=z@KPq2fVHW~AC zy02@5by6R%Q{^@B3(~vaeS?GN^I>F7((B<{^?P3+>tsyG-5$ z&_Kn0CO_y~cWgXfX2Qf;>KTkZ(!yHY(&U_|NJ88}LI3Ae za)B0PG&BWor7t(uMssVarVl>IR5@Y?{zA8Ej&>jf8%Eu@_nT>tx%E4)_4|&pD6Bzh zn$;BYIukB!?EW2B0I(Kx)h0c$(bEr;76WqwLv0S3$XjFB{<)_coVQ9`UVXV zA-;83Hz??+$MB=v5?l4^$8D8yIHaf_U7+ed81fAAK~xXWYrHf{p@7CZFpGOagezOG z2W%m0Ls`xluJ|#1KcWpk=st;plH!PBHk`l~U_7O@twO|~Xs~bq3X-)~C>8&+L8?dA zlf3Tx98MlVN-vn!XhecE+>mT;)QDQjA=FMI2y(TL>?nE*2tYZH1j4TSPtv{(!~~WY z>R?H?ZHlkLE5yh#6>z2bi z>L&WG#0qN!yF`eM4Uqux2P9?dTp%cXzdsa+_nTV(!(%CqLvg7mVG($qXwy&k7SGKg zvs7qf#Y9Sq>HO|fRrVF<-|V6h@nE()CNuULgcRnV1!RX6&2erJ*DZnMmS;SvjXlEY zO+E_%HLbHu)~P!8;iD3ibkEqPfg$nH83=gVg`gPDY*5lZbWXT@YCmx8P^9xLf6~KA z#_T4*Ca4Q`i5V!$#u#DC2~15eUAU3XxCGcNxhFqRyz5WKDJ`KReNtRbPSF37?bg>ndK}=GrZzWO&LsGw zb~(kf?`|9Y8%esivTSbv1pvc)-Un0`AB0@2rfPUM6VAp> zBU$V$mlbsIFqOyERYV@3t*)G6ZYld_2g{Tis1y; zZzbG3$fdp69~dO9Sbc5Npo$j&^OPKG8ntZDPNKbET)mB_XP;mD2~Y6cg5Fwsn>72G za!eEW|14XHdXCY|PcM-d8aH0vNI8usT}lR^ANF!qqoQ5QmsG$7@h%h?xHehmUYZW_ zOpAlp$%mFI4$Be_5^P&^HS6gs@OP8j|H7$uSp8oR{hSk-0w!za$~+t>FshFwtG-)R zzRVvq1M1I5#CIgwe#oiI=~p{u)a`Y#LZ+hjg}^`x^2%*xEI*N?6bw7qcW4lAqgI&% z>EVKPe#AmlS~bp=i~crm<>68Jt**HWW3)k}=wa6ggR~fSBj@H}0Zo|LlF_XAHRz0z zRG-a)GTf4QB6ilAhQeYX&3|v{$=U9~H0jUiKx#O4SyiOyCw9X}V1`>hR3g?RkpGK`qAM@=(LznfWicPXpi5_?d-b+?+EIJgh% zBlHGjIRExsh+P4NzVB3U%v&aIX({vT_vnj>pHSaYF!pJ@25e+A2AvpgF|f@Zo=j~t618&!aR7V7dM)xPTbeFso@QRny^ zj%s5#kiDjXHZ{Z1>9M-{J@*a>>^WYCkYruLc-n>=HpgSc`PXRHg~BR*mV58aWM4kv zOhr$y+$$2jXDR*p%a7higoID93!yyhfT!b^r3HE8v^>ql*N_r>!d&vzaXtgvcI$>w@1>>*w%QW zY$d9nxNXsb4e7Id_@00RVTe02PP=gvnr%XKpWe@!nCevrE#aU>;;I9osyk?Mx`dHE z#SrBVG25m0SPWEp;+`9{4X|;*jnc&SL0w*UN#U=A zFTzi2gI5&bhL38-w}BIbbJ_ z)6c6y2u-Q5{Z_(60BNETuz04M>84w)DUHU2oJFLE0KH<gx0Hzv%i)desCG?XyA?{oiDJ9xgnL`mF1z^*&!7&8VpKSJqidx9xfq%}xno`@$Raq;@SEsh9z9G*~!+hn|H0Lrm8ryBhRa&h4B|yDpnU{^KbZ#k8x2VTN9wQC{n)VZfvNvT z*;hwZxvhH(f`rm3-KB&|SuQd5#BHL|fuhvC57JMg zgeDG;AN|1H}bRXv;e?rHtR|M!#e0!Zo}I@@Qs#3|?VSKsYVZ}IZ1WC)Sbmwh%FXYASi{M{b-=P>90N2ovonaI zxWN%DFK&QAxDg`bEJVPeMS$JosZM)l7!gAl&zQrU*w7$@UeArO12nyPU7H~q6Fyt_ z;FdBNm@@r17liRN^BqKYr3=gky04=SmI$TiaPo+bvllX302#Y2pR_{T-%9F*H8N{> zZ84ap;S6fmG6`T&Di@pERn2w`YRALAO&~>?*~eJU)ZZYyVd=83t+_)X{fYUrsH~+L z9u}zsb|zpK2w*9p@(}4MGqt$E8zX3@6&jQ=0}Wku3I0gHc6kj&a{qChUSYS+xC3&) zO6+&yooL%&4*WQ3k2<1a5sfTaI+drPR-q?%2$m#0*}Wc1>EPm^3#t1LABF`I&P26A zZ5E^kGcX!KGd3$~RH*VN9)?j4bkCMH?2x>r_jfdCg+~^EHh5T%QdbJymj(QMjKdT^ z4hAC%@UG=dBmNUKiSZWff|7BFeIan#!~%4nK*~Gm(M-!D^L-Y=Bk-BKF6bO?u@EYt z$~eVTvp-RXlCdZq;45n4@4qT-rk*A98uNgqmjZZb*)j?N=73t%W6w_87bjy#OH*3R zQ~P%Rk#*$1z2``rs#5U<^v%w3T47zitXYF>p;CB~UC;1eroTrF!tNSM)DfH-!K zqHrhi?>7{G3{xyHB4uV7Odr+&Vz36n7oTYh*i15@bPQib7Qjcl0I-CR1SWBqKI)Sf zU9MXJ9PV#tyfpyuXe)Ahdhgo3#4!W|fJj9N+%yHUc?|&9!6*T+Y6rD<70iHuKL8@b zULXKl=VN}t>DKxUix?ZFi~(1F*Zq+zJctJL^ga|*e;2^z%5(LuW0inHV`&e;yIsxc zB+f!u2_6({cih30Wsw5>!pp#@dUv_9is^huJKe{IJB%e3QNvD6`f9Vy^ZJ zNO^~c-jlEdykrC;tLGMY#1PPmk{weH(ggqgH~@S%9)<7DlE<(It8dA@C5;0Dl-~c; zK-1N{mLm?^Mh)mOum5(8HR`J>+6~V?4lM&%#{NXg_5hsbAnXQHPOYrl`X)iLAN4qo zW`((MI!M86K9Eaa`Qzs$M14O-YAYv3WGg_jUV$q8S&5MtAitbjJJ%$?DS{>Guy@-+ z4*iM={7K_iQ@nqAT{_UgAe((-!|Wj?D)#xkIl|@Q1q7!-uXN^BvVqvH+<8Ma4`_g% zet6u|(5dmY$#zEIF5gRkQeGniz;;mt(@l0{fB`s9;5latSVSQ&CkWW1KOrywRM(dI zegaIf0T7+%jF$nmwIbk-3SW!@UiY)ZQk&JFu+wTR=psf-jwIZ6-f0!+fSmiG1ooK6 zw$oaGZD7LoF|M@K$OGc;L=aeA;{0-h2z3lUpl@akP)9w;Pq)PFf43n0t3zf$;{_@R zcYCzgHU=!70YwnUVHIHbecz9ul7LCro~rwV1_z(MzT@YH`vfGR zYRI7I>~go=7k>Ecv?4CCU}KOMdIBn)FYf#Ez;L#Vz5P8o1%SngU>8;dr~~8!9Dt@; za{w)eYAsA8{fAPKIbac`6RJgqR{W)T;-633LJal;x_waFpn@dw+W;TM3hL#(dtC>q zs00FCV;|N7*cHg6hLE#0y>|mF&uf6?THW#U()W7AtG0~_EkhNdVMd2{=XZw;^}#G6DS<1+)uDA7fA; zR;VYqLKa-v2|o5~KtGj(9ztpm2_(k%hR!IApi*2~Ul{^OdjP9sLqxB@u!b_B1w2=qkZ4}QS#FzzDY2LvC z0Ba9DuCMkEP|33>skV~X!hA% zfN_;x&DJ`~h=3~qPns-cTmq80^|$0tkqdrbKsko*x|7lgm{z%0fD(@9H5SkQ=~n}` zv94sX1W7(%K5i3Y5V@we0uk2<0Fl9BHXaQB<3{ws|LA&tOO1E>)2$^_ClHgJ2;>Ha zO;WzQ;6jA@uVgfG2SVwfJpRxRE^BV8*pm(-zY$i`(jf+gr&PYxfh2V}5HCzSNAwN=I&T$R3s4SlI#w8vjcV>r z03k%vUNIn$5Xhfda<@@Q;#=*f{@9JJ3*JX6Sj7i7x~3VN+8G*K&bA7yjPe&-B);kv z>OBy4T!z7E1Q#&3kWWlzKM#5lWBZ_v3BQ;+>A&a~|GCK& zkn0z7~Z9Tp{zX%hT^9FQ3WoPLl73w8|@@A2RrdrK|{wEVoFQ&7)x z)7p4mZS%a!jfNZw>_%DBDv?zM0G_h}rjDrnA)1wL!+C&^@#8nPImWgM7YZ3kcXx`? z2!suKAE>ki`GMf_YRZyZ$VCF_{amFarRA=elIHi|V9eKXQ1C`+H+?|R@++Xg*`f=T zL)pY#V@{bRL}VRo30u8>Z)Ub-Z$E@a^BOlBNaWvRdcg4557?c4J{tG8Xp-RgolDU~ z_47>TKah>(TVVY=nq|}}{c&i(4u9fvpYSwR0%!o|lrH8fEMmBC)ng!y89Pj2-w`Q{ zJ5}V|$CQK(OLeycu0UnL5BRsdw&ZMdNYf+p{>|#*0t&)JASYSd zN+QnfOXOr0A}s^q$}{)Q!Oac{01<`KJZT1JQ}rVLk_b>9Sv8`l=qE9BwlPumw-?^M zX}LtCR@%;t0~3-z_}$Ngjk?@zsTzlfPG5p}m3+#hE6`7){37Q38S|QyNKRF^C+JdY z;BXtZCt_FlQ!#l3_WlcTKPN-qljwmywWp6iq$< z>qWPmuQ_zN?LT!oF)mNTT24wVN3yu&-egJ#C+a$U#xvBag&t;YVU?iHD#)6l*6l4O z&Bb7$2*~1e>`m(Jd?1WLp^+3`KK!7iTI!y2eQZAuVI^J>Yb$CGnxPJ2uYTW0o!PT= z7f3lgj%}?DJ%CEUP1V`nX}CQI0=8W%r5s(5w_{|A-+j-H>YYyBv+vQR|KL}bAX0%C z=KP^vG#FB(w`e&0m*~!yd9(TUc*}QEFai@$P5&&#;M+g#BIwe9h(5fDh2MR!)Q;&< zhEmyK-^3>v1$#!l;WdzzqB5}I;5f#HJ%%Pq-xz01pA&d&BncIFS`C9-ovgqCZ5LL7 zEYQ%NV;TaAwmDYNH4T=`ild-vfIQ{O+CkmSe22u4X(*o!F}tcwO^`n-M*m)nYuIw} zeE=-y(>IRRH5-n}+=X=ju-7P_O=YY2?Zg^@&YopGpkhi9mNmA=GuoYe1cP?X#$wSL z&8B-|EP&0{_v+N54k&le#DSt`eT>wBPck$)v{b*z)3u>#5Q%3(h3=|_7ib5_4ecYK zW6Eoa{>rOK8S3sDfR4$Of7L4Lecj}F91rdt=vC%z`iwA)STbM3Az_Cq)d2qIZ7b0;kK8 zVg<)oCLbNEjg2gNSu&Uly$07bp+8kzvKf+3aaUeMx>Vt=nuk!@Qo)?Vno$(UbDISj z2pzD1k@6T!^2k`az$|=$0c|IC@arSf4(tYer$-W?4G(PW>K=%yKcE5vhsNEgZ7Xp% zEFL@GlO?QQ(^Ul#f?2ZOg=ot{(up#0)R&2-Xj69 z5CboUgr54xj(Vz~yjI|%3-MuN7hIkHbR}(}XBIad=FbC6r`JAucBZ%xq@g@?*;EgW zT_H3k%4$XhTGctdcD<41x;V2sipyqYy;#cGgwI#V!q5)*oQRI>^4AI zl25yb1XMFj1iLWjTY?t=G|c1bTY#1w_kDCIDr6tHJG4Ar`NbB@_E+5@qG&q@mBeli z5Zc87IVNcK^b1qtI+DU3E@||Y>yA5+UccWC@>_W8Wd%Lx1%h7f`4pi{2%GQH6<{~r**AcmZK+QkT9?H=k-+#jZw-cCiYEsn6i@sx<1CKTfl!vyMEs%z3p{_Kj^FkKG)yE@Xp@JP(J3+v< zRq1MJt$ngU4<*bN!?2`;L{*hu7?Y7T>jSauLwN;6*qtNUNxLQi>{&tGeBVqUx5J?#mfPvVOf<9c5H8CS8G;L#`E zupb93;?RRn%bDk)tvG{VOa3Xhg=+-FIa<;JXD|vec-{5yQ8oPIgBv5HYuHuzGAE8< zI|q*^LYWvow;xfjNFH>$qw!t<73J8Im^cP0^y8gAiSBH?GP02UA;Wnu*lAvCX@ z@CC4bz_;e<{hr1+dfTV3Q-a5?1qJd}0H+CktUiQE<_gL;VRTJ2HnvX~{7E_(7h$xF z+@|3%o;d!V1h`j@asuKoF;ugk-n9JmkB!U*20C{ny_lyK>eh%Ve5e=mkWgcuiYPct ziS?I$72u&4BJ!U^+q#={s_+_w4NR06`!O^MIJq*<@=Nzj>A+l^2g;xy?2KOqh&sh?^UYw-L>)`f1T$WXp45_L z56sRU$UYf#{Fw1V?RF@o!@&~Z6_bI^LxYT&09*)ge$!dpGT=f~L%R9;%8RuzTYUo> zQd8^fYX!V;=(J~}w@UP(lI`0xfxLx)E9RmR++#GCVR3yeVo+P)&JiSu|83CYBPBuO zj~tbANlj=Em^R}iQLh%6G?+s8^=$BW-%m2R=wZ9v8F(^RuVKyZ0x$)z3M#pLj|K!W zPcy6d=$;GNhV^`)ko8@4mbY}aU9T}+FX>EQWC%{Db~0tYt`k_@?Ucf{cqE26#P271 ze&h7Vp-*c8gbO8b7HtueHQUK_HWpe$#(SE<9-hdcQb8oz)j? zsYiPRWZrB4Mowcn9Lk)w&EPGDuhkkmL2IxH2erOst{a&I6 z!wu^xR$w4U4fkzW&hl~e-K?1M<`DV8b{!L`M z0b|aV_Y(GQblN=VRVq>gg#rIyLXz2V7#W0J3P2oA@tUNydjqL1OjMp{8;Dt_+t?s3 zfbz?Ri&~?RT}t}H*z@1yK(~|}Uge5wQ{7nF>1wwF6#tGqEAq*#MaABfJF@_y1aw2nT={f#40&~x&4Y-erxjYWAjHZFC ztg0#P8(o$iz>g9sqiLq5Z&J;f_?6*1m&7^KW|qg1(6sS6MKJf*k%tqdQ)eC@;=QY@ zV`NKR;5-A@N%#~0WXzI2nP?=Mr}erMN9|)hIu9r8WXx%Qiq@!}DUG;rgl0(wpx5V3 z=z2%wScoHTI!n*HI{dhmNtwBrz^0NPapA`ACjq`9-jRE??j45Ng61HP57q2`QtSGe z(cyT8ziVt|siBpTNY;5c6M5VKI++5#%RwW=SyM?#G0brX2jBAlG7~RxqXDv`nHeW$ zNAvw{w|kWORI&798OspK=xc@!rV@k2Erf$jv6W}J?{w@_3JbBgsXh;ZJ z%mgr{Pt2qZ&L@s@Hoye6wV{x9(aAf4 zc8CBEMzvEw0VX1C8r*gh<;$M4XL;!w4S;=z5F}+}F?S#~sW4tcOWKd7rxrP5u1hU) zzO_?&MYW?3dg0kyt$o@HKJ52A14o`@~h ztfyHmf|bjaQqOrMPnt!Wc||lxZ?qiNh%%)ed&#Z_0Jyl|y3{y80C*SK1`ib&%yD2a zK71H3(L7L&&juF4zm+pd-e)1yY^#0ZdJ2EN_T~)WoCUFKBJx$f1RA8LMVh&)MG-&A zOljM`$|Q!I(0p|GN%$P3EU<Idwyl0eMJKqEfQ@>7@%r-KH?+jONf|8W!} zQPSVpyEkNChpn6tNI&YZ2upild*Bl6j~6ifY8?VD0d?bK6e*A0ucw7Lg16Q(;>$rt zuw}F_0>qd=dJ|X_vt(C+nX6!U9D8GLa522u^gHfa90-k-0|LRQhWz{N0hT2GCox~K z04L-u#6r9qee-7kh(3&dhZZ29%R1_HO&k4W9)dejroHIW17lZ>o zT3gR~SIjONv*ZQLyF@)R5WX30YgE1d0;+~y_8wp!lZ{?!qBu~1&ebCOC;#YGlMZP` z0Wi`@W>Tb`J`F|K$M{40Ac*C*bZ73<_s>wtL7=F$tdtHrcT3)h!dOQ6Q5@a(>)^F0 zW@~oVz4*hQ9v{V_T@Zq^bD0ax!Xzy;Xn8B8)wPQZ^h_(gs?Hz()H5vx0&bE*T@OS< z5VE7jie#o=F5Vv%s}&U}_@|#FM54ak%WIGftbtkf#ru)qHdSo^&_98IA7fMkPabA> zKLyAK|EUE3_b<{x<+X>yIt~~sY&jH0?x`Y)) zhH~sMP5k`?fbY@(VgtzA#mPv3V~nG4r0ts6+YD$W*d0nH7pRK``K`x=?kDC#X&ep$ z{vho>vrQpD218nloHtlZ>Rrmrn*-7~fI{KNy54`+BmCj92+c5n2o+dm z6@Vto%toB%9Y{KH$B6cQq^PPw%Nz51>)u^!vF(Ovna}JSe%DYw4q1WZJ_a;F(5g0| zwVVElObEM;k;d%uj56kS!ytbr89El04+BLqcVcDLmO`_w2Y0eSD&Ki82+v&~ag46cSU60Rm)bR}3`3z~S zxw7cZj1CS5p-v{h&=s{a^H*t4q$)+kTCBdLr9D*qFglB1|D8S>aqm#5@KvC)?z zLt`h`ZBAm|^n(1d9N@z#oZ?bV#P9~T`C2u;a*{ue`A0CHj)hF5M>}+v=2=PB9)Z)J zNm-SY2j}gTv!1>;-NZ7QiW24^B$;Rer{)&<7cF6hXc%oi??+W+yL~e?~l~>j0`^L}VO%mNJZhKrGmZ2A)dp-}lJDa+SpaXu_ z?ZX-i;Ri5-q3g{~+W)=}{@1@O5~1n-!$bDjW@?z|jl26VhKXw1XAoS~3!V7&{xzah zNiE!K(@Na^bUrh3PWa`H9{mTA{C>A;JGO~-0;LaBRjf$;ec3ANmYN2i({h_4W96tL zg$%U#GEcmgm~b?F{4+_O`}!PPqVIi;8IZ3Qo8}t2lLod~Rgyl$H|$?GHHp31E*`u> zyIlRz`+CbYBt>5dQN25>jd$h*-Zbgmh2~ESH&kOW(4T_c#XrDV=uh*G&4xbMMz~I{ z60czy{)x>>~9nnUnYQmLH7^wYS6O z%evAN3jUJMm=Ow%Cx>gD0ZmRD3)cDfrSc!guMO~^-JYV=^sg4k=dBs~sMBs%@-pSx zssGF6W-Vtv)Gqk}R%88F^NKafUA&DGu zLpfhhKii*_uR<%byDs;_q6$%K_=?P)MwCtTgW$6U(^IbDx1}(U(?-OZ2uL{>tvuf{>zdNBX5q|K{2ZveFnd>-A8fG8r6@9+gOMh zQwLe+-k%rR%0F#LG?Mg=_s*6agqtigX92WmmoCI6cwf!ZhmavFc=awk&+{WNHHPKO z?E+(@6LP!=t79j^@0y!pqD0fV$&ux$hppE`f3@~yedigyqChGE=WRrM)pKXHoKIVu zv%6O(R|JjM=>`UesZ{I>xyA~;S>GY)x_nwL>hmNjjaAo$@cl;$K@{=tMWuE1Yp@e@vkq-tf6xNa`y{mKR}zE3n@)(2A$lXd|*{b(SXO$Fe{duCs>~&`}W+pnRfAwE_>c4C$7r9Rrq1x!SXyE z63^#zrZD62VhORm=W;?z}pOkd4S z?F{Koi@S2g)_;MMo@kz(VT|uP9yozRPM!Bd@ zUrirxC1-8S+iom_Dfv_CuTv4Y`ZCK|Qu}cZ*&&+r(%4)>p-4EZ#`^vE^`0N`9GYwm z>4Qic3ZXg4#(wpp4>J$a^1ZGt!@qS|48%tCC37%RGCA~?tMxG3&L{@{d}DyLsH!6; zXVa~=P4Xk4O@zJqp|rd+#TvC%MJw^#X~H)0nT44 z*eMm$LO9rSp2k~?*7P+|Pp~S^qsJH9`6yny$i+bqcXTH3X=0sQc$1Ef{9Nu0Zfr^@ z{Lsz6zj6KIUg-QUlN#6NZ!-H z=ile*KXi+i-HbLSisMEfHK$OAB9tN9)M`3k!(RE;y=NJ+r|k`Et&|sO{?cV}wb&{W zXfAcwd*SE&Aan9+-%wq0jYWZ>8>OLw<1PRG%P9o^xO^+XOXuq>kS$L|0A*zXxbnK! z*Uc43r0#;7t5aw|n7s(dmH;%igEseg5->h1eGss<8u9{KglA1>LDE$3$aoC&ijA7` zx7>dHkgIp!x2su++Q68_St%1sI~x;gcs)dol!;}(_soE<3KGCv-fkR~L@ghqP_1j6 z@LAZoCyIo<5K%IXZuOSESK%tNowh>)N=8p7Y*1{wumdh_RugBfoA=el8A=hbOFYP= zS6ZeKW?j=HW6>@nR{AVXKecqjPF9lN`I^pJ^1B3-k+6CM$Q!CKZ}z4&eSh$6l8%vilfhYVz+`kyU?V@&JrObx63d?TU_D6ukO@P_0~=c@}3?es~wv`Rcn_^zTjkQLko zf`d78Aag<~JSKW1w7|kN%Cgq*&N3J!yu^7S zPhCZg;*$axH%8QSJQ@0ni?Bx$aaHry!B_-J1l_Ac)^bt+94ROm6=o)Dq$1Z5aI1 z_a*u@*~@{c7cKeei)*xq9>TivC0_S2ZIAM{?<_<91Uscm^9Rm*LN>oSgpuu$*JbW( zi#jU%^nR>bS!k>>(sDuFvHh==I`825$=rP;AMz^aDPuh6d+D${?_WpKKUCAuc>GT3 zS-AOW#(wYg_!KhDYp7{%Da~18|HuU~Z(UM_c#%;xR7bFI++1=G2uvCdXYxu&T4FSB z8CW|Tdp)S4{T&$JkKJotpQ^`Cq-;bl%W5 zvzAQmRMCm6E9d3{V`j!D6HhPnv%&hR_LOhgtZh?nJX~zBDI(`i*i-(R;exnZZMn7j zwb65h+qOq-G&^m-fUR?MYii_;%;^w4@{5Z2xz>bldj)T)Cl)Quanb<0qeJuC zNIdi}@;6Kxf9w4q!C<(7hAnvmozVZrfB#bH=}RDcs9sCff3lm((l()leGQZoSr7fP z(xyXcoWe*VOIofxjcvABoTj6J@(?7CP=cGn!r{UDAF-Kt#ae6TJ+0Y$b%0!X?J=Ft zZ;kC4_ux;p`_1RmAU*zLIbHC3qHf)iL(U0<*UrX%JyKtrUn|eR$6>92Vp8HTrl0$c zlkbWU?M~)3cy%<-wOMD-;Da^uJHF3mzKebaNs*THGv>_RWr3prOR6|O^$gU^Y;6~9yj{Z+ z-y4qJYm|H(DBBSg9zH;Po85PJug}bPwC{}7Y1-Zfo|xgSxL`>lRe|-S7Jl&j%G-m< z=91!ke~m|Q(=~leVpZMmUO~(u-xf5&;@Ihd5OyLJ8tm|yjH3MiS|R^jH{Fq~%ikjm zjdp;P>btKBOc13|^#P9PI0gePUffh)5K%h)0|tEnWSk90gJkJ2tCRvGdp~x#;63kp zNXlzG;`A7lmaGU_(z=3cM&Cv2p4N2ONnH$bs4~Yv(V>UO6CuN3+|+sf0W#GrRwoZL zZJ+lsEI#8E{KU@+G}(hYpT*WML5QKLn;;fm^S2%?&S-wofX*usF01=bpuSk z2o7ne9%7MQU_h7Vh@=1sy)?Qx8_x4ST{%W>0R=pVwZCYQEFR=)b@>?sKF*cFj9nHi z@Yw5zuN;1d-OBxFyG=hYT#sO%m+>z8=vL9GYiNO500&*_7q+J-6~)l14)ct*ehFjO z)k7oRI8B44#cPF&^eeuD>2B-Bkukv+AFD;{iXYb))7P>S=V@~UG#JH@*nFG=Q~AT@ zgG1Ey>q&Ra+Sf z3necP(AXbZ zz7YtsvS&!xRV!W6*ECpF0W^io`iVoFOVBN`juYD4MsxK85`eRiSs;Pb=c}{O5IByo0)s-|Z?tSi6 zr3%+x6Bnd-EYu!&qBEE-s z7!tEyHJ6BPzKQ1V*=h|dTgO{uo4oh2gAYp~5O?Xrn*{)6bMaEo;V|N>N$|J@~j3o+_U5XEOK-74~krh%H@sT+H1RhmmGiZSUKy}sjJNn*6MNYVsX%o@ zoOgkS;dt}Vcyk+^alpMpP!mHUoc9DbB(Y(nYJe7_}fA_l_c8$3<7 zJX9Oj*v>Df*bVF8b-G0w?Un0C5?8~?tXJZN^A05X*4ws)gM$q$IHw~wuf;Sf18~?~ z+=r6b&vn#Tq!+RF-5Pxb4BUYfwKJNQ8V}P1BK-{qg9{VXDoSPjPl^9`J^PPpg&`H2 zWAzl+i#FQ;9_IDY?`RX4W%zr`EP)B%xClt1nji3P(f2cz#)jg@VzP@ z&Tgww{$%&N%<(O6QjdlB75VmPo;onw0@f3QGi?;#e642Mv;3rZm%N9eZ z?MitJbzqf%@+;oabED z-pqPWGGn&A@gn#of<)8O_oNQ4#cZXZi1?N`&%ocgMQ-mfG1^1;M0 zr%7c`k<5K?Q@wYO>3P;lda){HwMf57v)zQ5%}P3^U~%meIq!?ZDGS7$hlOkvOX0W# zLbhPeTwdR&={O61z|v1$1b2-V`e9|e(3#H$cjtXC+`jI28a&`@`u$1zw3n+(-Pnfr ziB#EX@X#HZUVG?Z@SaZ7O&#ogBT8Kk=oAP|aPG>ms~@K_@*MzK=Ea{kV_Mi$%70B5 zCSkvyXC5gwe5UF+;Pr&5sJ(<>p4OEVx3`(^&N@H8OQy5SF`KH1rukW~_kEdEf!dK!$vg~fu zkO=$Ip?4YyWfO&y*3v>kp5TI|bGqMjc(Q&J&FiC&=HwTHKrxE?OT>dm=T|rg&?L36t7&;P9g6F#(+*&=69O73yl_M!Nxb(!`=;jiB0%hTKen$vfeA{XNB zO^9Nz>2+O%`^FV>KXtJs8o#@xwO{kK(dwZgGM3pU!Klgb*uki|NrH>?Jm;oeb=8YX z7rDOmp&G>|Rh6(gO>eTJ`Gx7)2VaJ!M!bl%!#>&wEGBobg^>A){x0?_yEZC*@~+_` zv|$faUi5pt;FxoKJG@h7m#u93_MPXc+(-z)+^{FVmjg`O(7NcWQT4|TxkH0%+CG8i zNG$X^X>iEt>b!N7{>u`1RV+X~ta-P3X6I87K9|!V%F0#+V%^3@uTLa)O55Y76&|;M zwkP{xuvp9T+k0sg)wm#E&!U%PPsM1NpV-8e;=W$&Y8j6`0xX<)-H2#7f=@z~8} zYf~KZFww%uKepbVG)`z%xk!CAuPI!Ay5Ca{@?);L+l$VUxr=(D1RH)xu&b8dZKp5A z%#m}QAY{wH~8q%grd~oVr@gYCg%JBQv){G2%HO~F6%5b{q6IgK1y*$$k z$Bs(svmw{7ja>{5XV?RpH8PqpAs2>UIzk)a6sjMs3fO#S(oQbyYn}aCO3k=TycOHb z3{M9%-%Do+D#D~n>Jif;wq+UOi(C}X<|vA*ltpJah%i4*KcPNnayR%87Wv?`v4RO- zQ3Hc`e|^Y(F79DQeaFcy!x)$JWs^`7j>{rr@45U!jR91VOcEo(m0$hsxliHMx4eyP zCDZDI&|f;Xm$wkRQx=o)898#cYfa6+)-Ffa9b>q378MOhC)Ay;1PjqU;Fj2{55bXS zU?kRw|5q>zL#!?axZ2DbCGJig1tF4Yy6zezY4P2RGoZlL-A!{IEUOq4xo7o|J?`hk5hY&3GT6YLkgcm>XLWy zHlMVSKDh$&)u&UJ^f)F?0OV6dy3KoRgz5jlp2Oky5dbmTjC z_C?U}YQrHqZ;-W@OU(sM8TP~Ip>;C%wby&?=T%#{`v-T9xRvi*uK!L~T&iMC8{c<( z6_@21;7F>$z>Dn+~(3eIro&Ox8SD|EE^+E?~CyJ z_{NXrEcJS1((;jiAEv}_U;TqQcf`?6q@2l6yLkK2*tq_}2e!6_TwLMnqxSaf*+Z-B zdRGGRpW_l2*zDq=m$gS7=Vg|iyojM6U&0;E@rd__sW9_pF~g&%2k(g=iW+(~?B2${ z@*E;p)n`;KDf9KwXJ*tZA&wwlKL24J{hYVyrMC4%*|Eq)3e`$zrp!)F7ae@8aD9Ac zMkE}MXiRW^GRpSb?>C4pd3rX;(!wdPfoDqg?!Lr&-R$PuKu}ZLRjW22-el0a8U?WD z`F6pVY6{TfP)p@8SSo2o;d<4jCs1K$}gW zGgqUrXX}xk`!HBjcW`f5Rpb{7dt$*;xlW*%VD96KTux4+bA@}V;z_Oa>yS6M; zAc@-m{{+fRGb^@62yD*-b9Ehd9&UZU%CNIJ)vUo5Hb?!X-qERXeS6y&F~mFV5~Dfo zyZlyKt3Gr?V(G;(aE@z`3%wJ@tON6~n=1d(bkKHt?Ql}*GBT^f@!PkX70+6j$V5DX zF*D*0=F`v5lsUUJP+g%;YIXIX@A(WUBojvUx8cO+(4G4yf$#08qQc|zeP5BgERotq2jp0l;~LrS@VqF zx*p1*x*@H_#g!;^1O1B}1BsNu&~nY!%CJ!a45y46ZP2|E#z+5?9QbGX+f9NFKTAf| z)BvyaG>CDh^$0332&}{S4RQ$2tlZ{YC+cQbxS#+FE&~1l@(^iV4@X*M;2sih02!2H zKi^AN)Vvw(G}f8apuW+F^b+tW*QJcb^>oNtt_=z0(3XnmFk_6(#dt{8;XeI_9eFOJ zdI<3$dPk0-BniMKjA2XkzuYNr1e7xkgZzv0or zua#4Hszy~s2Ruga{cMyTG$WIdT&{gebm!rNa4qmsWFPO%i6(6Q3;^xIBDMl{%C8#p zoyoGj#;*jI^BiJ0x4`o*V`IA%a&Nm)e;yhg`6Q;z_E1svKc%je|!HYPx_SPAm$2E;FaYkGm`wjJRAje)t~ zYyy}hukW?*YMgw1@d=;bqBc`_H0Sf0d@mp8H2EMMYcBNZyF&?l6T-nl-oX6ASqeKfi{>z}q%ORpVUc;$#f5ZzUbu3v;)E9->YLIU>nByl)ASj5h*e!FpE+ za{in1VwE!h1TfBktZOq=P^=G#gb?t6zd8q-Lm>$6Ljl_}uTu=uLhXPJ1zRIMcVALY zMcE{-iQO{iwELb_A%p^*u-g}1-0H^s(o~C1Bq93L6VNow=)eyDor3$vnJ*JjGrm0CmL0b7k|t zc{~31JHv_15Si;QP4wUSzkmMme}D1+@4tODim&*B7$l9Tf9x?o36S(M?mg50&u0keeF}Duhb7|9f78|f&n2#o1I9-;P|p1AUoW^* z)oGTgUM@;ejFRp9VsJsT-M0S0@(Hj z((G)$bC!g8kXm@xJwt;1ycz`4ZuC0bW&e+v{`7+wER;&+p^krFC`mDr|BtV?4vTW@ z-p7@LN{ECYC`bv?At;E12q@BBQqn5j3@HjCh=5We4JzHz11KP=gec8Wj&uzz^;?hn ze!k~@_4@sH&NY|JJkQ>H?X~W8ulv6Hczl5UGj>8=`&HL0D!T91gxYMd^GA0)36c+O z9VHj>cNB#vqMDrRD`$nT*V#V)#zfWe`wtCB!^!mOeemqx`|@{XuX+PNs*V;%9AX%Ac+1l~HypvO86=1k$ z*s|s#{fsP(ASvtw7TIZ>e24e;A~+Uq$dUM?UwylC?AJeK_kq3sx-*LY&j%)J!NUtg z1)p3LB0lw)3HjYEOn6-9o}UYw>XH)F{P|N_tl^)dYS4-&{#agB5yDri6q}gw0NH|s zr6VOss8>CM@4dA?;raYrMC?(YAHTyvR071w)`9N7z^wkgSTx$-dN(0N<#tb z4@)S z+k57MsSGPy)7tN6$Ev_V-i=$8`O68AkGn5}$T^>14~g}lIKlh#RHo1om~%#)3yWx4O>ygaxf1NbNtW?3yr1u_El%=0p2&oU2p>`S z&wcMNkNlR;b$EyV5;BGSJ(L{-9t|6*+(2qOMq>iTu&H)=0n%SfLJdo@UHts_0sL3^ zU{oa}Y`lI5@@k}Naoi9|Mj)v9nw>cj%Yah$N7hf$#81^f)`WGW@W;dIe(|>HvL;eEHWYp9I z()u@2bkc@E#^%a+IiUAk-3q=!i6YK#z~}S)OS*cGfCrJs3Al}GhcUi8wmIPMi6q9S z-=@e5kv~4zBWi9MEsi)k_51riv%&ZMP@I8;=YN;YUx0;-nrgY2OS+$R-m~#Bxf`gd z3;`?B7RU;3p+5T5YvBBeVk5@y6XLo$2Xbu}i*oX-+QLM>znHEPNCc6tb_sAG0Sa?s zUhR+B=)1G5NjXkE#%==^`FqgVwg+||R1Oz&Y48FAwb)*He#j+MK?2Dk|F&zenVfP3 zOCa(3_kMsk{EfsP!Sn9&di1l7XLdbtoNO9+DvY@UYBq9bnn{F*BUtd+MsfqFNw4k} z8oG2}@BY{+GDRmkms^rH*XB|T`fo!ZGjCJ!Nl1|J0T93xUhad{>O6GbOOQN1D-&IIq0 zlV%40FYgk^NVa)OmXeQj_WD(`jsy{9GEijjXlp~fmB5811FdtK7?3JcV!cG)A2Yq+ zL9qi#Z?50L{u}-^T!lSYDjQA4T`+sJ09Ro*9hKo2Xg7!FyE1p)LEUVpbd`KC0rkg1 z{$4X^!`*{NEU-ndGzq~)lcSXrQx`4R41-CPrHFbxB3xlN86fpKqZp}Tj~=HPv%6a& z34(7LTIt;Fgp}vQCNCvnpENK3eDRD{gpj{Ntk z`C0*Xmka7M?H`YG2+u->k(Y6d$LL0i;QU6i-~NTXR-W?V=f&5-Z#{wfZGb#?+&d(_ zM;z3NYWiuZ{h{6EcT*w6;-wNgZ;Lyzj3Y%xh&XLnw)pdeUCKA4qNV*fW~HwwW7H|S1? zExK75mq41VwPCxo&&U~5Q`>{c0=&3jrijXbILw~|zCLx)I?V?=bq6KLnR%CB12 z4Nkbk!MrAy-<}H>`yAYC5_k0{mIcV6J5yu0$afm!giFmp5$^}XKvP<~3X?(psW!d> zu}RNk=6wdvPem<%F!4DO&c@rg2OCT1*6!RpCJMl16c%y zm*?c~#PMH=78DuvnO4oWK%R2*yovfmQaRvEmsfa=8!q`l7*>7^Dt0R8F6eL9QPp|^ z0Ov4X0Gdp*j^-}M(-|@gK!A=V$H`P7LPzs{@!G{+K^Dv#0jz<}nm>>a#b*pP41=LH z>28>9`GJ>fQB2GDfh)K&=Yn~BOluYB_YGqY>D+Yo@k8Ggl#3U#9rph0NZ=g2eSKADgYahg4TRO>7DNSdwuz5>pr=j zCVOnZj|+ciJsdek@H>$^izIRl&y4w3*Y0(H~O*&K$f}@VN*d% zTFPYyX$z!>U1^J=_5>Y)G6>UycQX>di)rcTSwv?Voo55c^6AsFqP-|H1&4fKSDpVv zl$S2SdZPpGq`7)da5 zq`iWXt~2iJhT50ywvYDvyW7evwoua}5p7Y8!V#P54IG_nYgEpt$K=!Qy|gBcgq^|T zDf=36=!EtB*SHvMIA^V2wB3^0O!6Hzme8wVs}rQjTqZja(kC2OBXpD6D9;#I))NZ` zMqOR3m?W|Zi)D@Y=ny_q6sSCTMEl1XI!s{x&tde35)-PAM^Dh*d3cO8?C3eQ z-Q1E60Ya;cB+q-A`6mhOaT{N+1}6}m&2t!=X>=kiCOXLFUnoZIb|T`yJgc@y98iv2 z77WtIq>XAQXsN=)qFYbu)LWaBL8!Kdo8)jfR@3(4D3kP~ifxF=efbp=L|))9ADImk z79$99sBv=x!m2=(4n=s^=NHD|^x||3ff#Le_W>p05%cn4Cxwebi3X4?$5L3aN5*i0=+^lOi;|N+lwwJpDP;A98EZ15V11nrM$A zl9ck}40o?dhjDH9^)*LGdHNxjIceyu?uI`RPq7=>Pw@RGEQD;{TrsHlqOER{{^fl~ zG5J^U8&NP79S_pssM-hcFTpB1d7fOBZd^u@a0F?5tuGAqjdHH_1AM|}j_6TztbX<4 zRM;8<%a zcQ#g7}$I^mnZ7!jUN$ig^)$ zi%{r~Z5rznq{KB`nMiv|J246c$F#QG_pJ4Wfs%}x^ZFi-| zyEX@{`E<~bcCr!g6}m}wtL}WH81K7fomY5f%Hk$t zbl+va)i$!rhCf+X|9=!trzesI?C-qtcl%T@g}8|rIqn^}MQlN_&b`l3ZHUTpnP~-= zU%lwW)Po)1xz-aO@ZLovLRw9A9V@;d-pv~3Hv6U3eKL$_f!BTrFvn4pwL;Y91~O%E zLUewNFEXsnVh`iBR4EW>q!Tvn;o(k*J|`RILf>~r7M!)_A!!TwaksxPmAHua@U8kq z$k^usy7^_xoJ7FEcu*}KZr$OIs|Vih2r)wc#f_AUQ*7kDULoxdjWC-txo-nS#D&+S zVpH-WzTM)&z7HG9R7-!}tF@Hici=q&h=J%ez44}KQj9(<&8GfjaJ>4_JI)Wq@=7;e z2KD>EbEat+TMMF8R7pu&HWm-_?(^<&`2YfJI25Xb7U)-5YL5g#BJ?4R1& zu9x<*@g4YV${H1$Bx+6pP41N;@I#boqGBt`5f#*4T{9BDIF~4gX=jxnOamgldNQe| zJjcneomNLGOBm%6WHbS6H`lbtItF@heWFKkC{!G;iD>ZLH%RSS_w^JVyZ=u@Ujh0( zHaI6?(l@j=EDU12@wdI4IhaX0a$&UW?e`24e2T%zH~d3L<6)I^<3UcX^Z4+DZHU*| zT9v^&shc;NEBJGKKd6ZeH>^i6=9Q9uBA(>z`A&$kfU37s)x#~3MS`-DSxea^FHfu} z`pL-9*2<)kX)S4bzB}-glGn?L#oN*ithvKIZL4ltv|Y%*Lnx3JE9F3KkvfGI8wbZ) z%@nz037@nj=?dN>oa(BU`09ZgQ%gp1<8RDMOJ$`~ufKOH8 zMASDgEyYz(fwt@!0P7D$lV%^Ez(+B6cHt5fWzuF|4In(3_8qsc6}Nd4q)tjtQl%5U zZ-v>1m*2+oyjzG+JQ{X3*p`^q27M`WG5ojav`IWHcPCsDK-F;>lx~`Dl6-UAg=4m(;2w3;8}^{A1x_*6y+ASk=v$Pe_RCcbzd=ee z(rw;nT1IQMwr`)cUtO%(g1N|98Q)TUy(h9X5wR7WK6$k}>vL9+zS*zQ)QK=sx|NDB zukGqsU|ly&TBXO)EUQuObpams<6hs}Cu9R#HdFi7CEBe=rmU%DKXIMZF!J)zVNq1L ztzr?PoC4QeMUZ#)4^HB`hBm%hprf#9?SYooa1(_wyS;02^Kh&qHv`_dCBL{@_u;5> z^#4iSZesxwC=iqO{NFMffdoPcB8<_Y?@pEI6Fx*Plspy}F5%*OxeUR;hL|yqCth!x zq!rt_w!i8aKMjx$9t6)9%eMT<`eGcv!rSP;2We78LG@*ee$c$)5ciGdyJhNnIl1ec zj%~DxC&bvEySIoxu5V;&e^;00v;N-Q)h8HoduWBajaQepGE!PekBfdidKzWB z(>001oD$WO`+l0bX_9GSPq)F0eHigSSxoeV18PWxUG2RQtjK+QJh`L93q(ab(uX&x zRrr{~-3ix2s#26Vh(zmPjpBt^TUd&JsLofNa`p-L#`o78CH&gZ79=T_aHZa3+hL01 z=M}0df+^GHu082DY;;AYta~?a!!-NJ$yY3e3;he6i)ED#iZDs~W!xHEc zF|C@+{3{?AdWrC=0O|wh)m13G?AVe#(ztqpq);%2v)Em#yog>^CU$ntnSZXp>zLZT z{t;5eEOv_y3sfe9>lZa%nbI7}9o0K-Bb(>L4GFt3A?HFfC^n?|9M(Bfw?Qm0tiC6x zvZKMu%YN*0(kK`YD$&wORYQKZ0MhZKPZD&>`tK&z?*Ev>qhFSb7OZ$26t8n)5foHU z-Qf@-QlqamHZgJ{EQdP6NxhmMzh+cb^)u?8hUD~xqC`H?T<<|cAwjv-FvX)+%)$|c#zh6?M$Ntpa@*W)Y%rJ`+-2-Gn#-Oh_+htm=a^@h z*aqt>=+ZILb6ig!vp4>bd*nC7vI|gClAm>3=%48~N}6#kp}{(TBIc4-hXr8{MF}e- z)E{3^>GJ5%AfnjKdAJMDkQkYk1=#C>Nsetx1QTzpJG+d0Vb2=^@kucKbU;-^SBu$6 zG*^fjK?QMUBxb5mrccEAdqqMk1xHQR67-8iNR5JV7%4|FdhJ`xxsClU=gIq~Y+_#U zoB)ws*9kkZ0~hehID0OzWW#8^%`k7fO^V#0kEk_I3~M1$2gFoNplW!KZyitzlv2N2 z;3i_Hjn$F5gSd#H%A<)-J(tc1Bgo`d-c3&8MvUSDsib@_9#P_jM zFLN4vHb?rfBAcl8J!z~z5BV)xSu}@t74Bsaq!nI^bChnHTi!lw=0AK5J!f8X|cv>`k~ls6{3bM<82dKa>*70(vwrk54(zW@QXQ%4|iU z3H`u>%pA~`8UXG1GtlTIbiO=SD`t0T6p$z8Y~F4)qaJ;mqCjHfyifG|+a~m@%Qdmh zZcrG?yZTaOv0^+=mRB6BT$H1Xz04a~UK{Y`IZ{j;EV_>Rg512DQTzUt$Vm{^U#uU@ zvGW#7U0z)M!gbLDvhzr%Bz?zs8zQ6RJcdWB^|a|YXqdF-p;WKE{ASA9*4%5cGD8l3LkN`B*{@cKp&_=}#j+Vn*+Z_! zj_=v&Eq~}BK~wfRVb@aRtQT>hW3*C|*uVt+RIQ!Iaq-dUSOb%O4L!7sj?3<=dLwB2s2_T|pGV%H69^gu9ryR6PkPY*YHgta@)ui*eL?sq$nF#g zA)TAvd7vna;yBe&157dQftJLbz_%Ev%Mz!DfNS$=w|P9Xe8g?2MH)yc;bl1mwO7y! z9oQo|-V>gW&{)L5 zSLb3u4M&OU8`VO2{G^)onMP;KW(7LI0uWXK6ce>2k_oOpK9RgI$AJ3w3_(}{aSY>g zYPKj}|IG0pEr9kI5fz8PVA54NL`mO{9?2Aw(rVT2ep&+L#C7g`rx#&{X;ep}&KwKh zH`OgAow`D&;IFtFz2_f7nJ#>ebhhv+VKtHCBG2LsZ_|%N0%3vO?WttmdP!J~-JwC5 z6uRXsp@(;TJlCejrSgJAYA@9STGMEIrE41;6-);4p9Rk(s``2b_eos!$aaIAwoGnK z#maN)tsU+ZsnY1#*TT!=qoo^zml=CROuk6pqH@pwLKLDoPGa)^pcP;j5lnJ5hxh(* zeF7JU98zxqJbnL>N0`s>)#mED>!0aj>R-)`!f={3T$8?s9r^dU2~&U&l+6|MST9GL zr_YEvAOFC)Lxc^(vQUas<|-(`<j#l71x~M_A0l9GbqRQctfMDR1V_};Befr&Mms3o6wCiS^Xj&s0t$Om0rmp z)2hRAl5mJ(iR!B)s#EY%@MH*?swOSUuf0L+ErRyh&Z@q=uc(N^loHC^pjlUZ9IbLT zUWS z3mr*t8@$`mF0!a*e3x-owA*igyZO4UD&_|W!pAi(e-awX)ujQ-I~6KC7Hb)8N)pm$ zw;BZftp>CIdi^3Cq1J8VC(I0&-u5U9!R&dW>0j33+hG6)7M*#f-hbi5Ql8?uWsU^k zcrTO6NG?{o^M>4b6am=N`CV&pA@XSJa~{Y_ntZ3ql5Db!KBzEn(A!;NsP_=cB{KV& zb^3cV!j(>%(?a*J3+4BJqHZ$s9%l@l+GpmHEt7f*xy$~C4!*>l604(RExdR{>j+1` z`Wn!8hFEG%2d**hZ<3mbiS`Dn{c1=qBBYbOOXf%acnW_s3t4AT2!B#+`^Q(%x*_^M z>d|ly!W=XWGAT$g(RtbYh+KobiR)9bpxV#+gxw7GsKxOYi+`>Y8T)D2qt6}FsQ}XU zPa{x-c(sAl|9S8pguwDD?WIFq0@8yMbfEv$7LI-ZSn6wC%kzYP6qGIEc&YrgKw26A zV{s>YiclH^XFf$y0eRU1l+*6#s>dJE<^r=x?{Zt4_$v_d8USqREWTJ1*Jky*`JcZp zWeqaYSb7D|zqS1S-40yl^M_W89^^cTHFmx^Kq_VM+Z)*0;SX31Jm9DM)$=5Vr$-fq zD*kGx{(He9{18CjUMUU;DXJ^@7>`L3Xw*y&OAeM=TLE4v`GGWqoRU$JeI4&6`|oli z7opBZ-?(|~kL7^_f5cyvM&|%bFSwpGcOkq1fBEYv;C?RTxpqf*DpL7MD=*Nf8!$%**H@&hGPG2#&0f&{qfnO|haXBjrE$ugP4UHTga*2Lp5%I5 zvBxPNxDcqMZ$r!#^y#wzE%|a#NY(i$>2WU=zkc+#Qz&&vNc^v#>K_X0XcZdrH*!f7 z8$1>6Rn3GR+>?a}+*t+y&;a;)wEGQF^|^tnLOm%#tR$ z4YuA0rFrJ_&|K#C*U%y9t{HKY!=KwNIuQ2Gc7Y4fU4dXBQSzI-slETtSTO9AxRYCO zJtbspL5gK5JnZlgX~kIVE7Gfq;lVkob%j>oy#Rjt)Un^4ze06*FFHgFPyhTXGIlOJ zM-v04S}@Pj*A7n~#rFrY+pq)}8R%Ojy3PZ6jK}r7vEN>4t90q_F1Pwp@`?7Kcf*y= zi7C)k)_`%~_`IT~GuYMJ&|a2@sSEUT?u$LY*31cM=q|RP82@Mn9m0zvgEJhUKGVCB z`UUzFO0-vfy=UB#rj;r~M?L3w`j+4ZvjU|Q&UGtug&;ok@&hG6|FG5t`sH?I$8$8B zE||BFRl{aBG)DMzi5?TduRrr8LV)0cy}f$=H;~iz2wvxa!)u*CHq0S>?dON;x8(7- zudM?P#ezUPabWQ7Q}RPQmLvsg%Z2Um;c09$5o3m1AGgxF}PQPKaVAdgJ0cg&7_qSgmJtV?#omtS^3 zrhFS(9I`HkNo*8RbvuiqJAm;hp*mT)g>Cw~%KA--*)GPqa6?u9a1Tsi@{K>a1B12H zwrrqD+t_D4wAveL38YdkA`$9;2V_xOq736|H``5>EF$p#nEKJTm5lm+y8JX2ir;V{ zP4nFpqTDU;*?CbL3!+Lz;+w-g7Ykg3OzQD_>^%XVo)0*wTnMf_Z*peaKm>ML=sjE) z!gfz}^ldKoXUK?JZSKfpgIlz6rxB>zV>+tYia2UL5OV%${mw>LI5%D(Z94)^icS zksq6&Lq3Q=2cZ@S@^T#MeSmrPGpooh@3rmnRpn(mVpmTS4#5_{TK$v13avp3)ERVh=62TFC33XRtSi65}Vi0-*2`rW{ zX7iJ)-~|xS0>Im)z{BVVQ-dh&`5(|GOiTF2qhA*4WI*jshgCB+-AZ)F%+R|+e@)bW z5a(fs5}O35vlLnvf}UTHNditTz8y%Gm6E>VBzfDy#Beu}X!9i75;jXQF(10?8`dxi zIKCf~;ESa`tngP|Q``Hngs}3pfq3q*B5!ORhMP|kLlq;D3!xP>s~TY_UI|{H?6sYvB?ljBZ@)QosJ{1+bpaLNj3lK)67yo+Rtl2HWxxOX#^c z4_>MCKDWQA;(U#!6H8?=|MNzP;DI1tV!=vt>@Sg44u7H^f*?hbKqY8e;PVn17Q16m z&0$w&GpA7$6<}s~+R)0=30~XK!Tx4l=8q%P2DcI2kJgi4e@8Vz)yeorH2Fg&woDb0X8PS1Z^@?sQj z4HGNt3?P9mq#@m_uFR>fJxaot0!P9|kqMfg9E5C!x-PHGrwplb{M!9X2yq(BB6gNz zh$EMrTi8anHYY#_wpc@1gth9myYb|6cJaHPUuBAkb<hmz^Yx?m7^W(_pZ8$ImdP zdCUGmKtJ3)?cYjyH6$FaGj`F`1jdVb>vd((~4!n=xyh`zh>z6du7V38f zUBL6S2G3bT!rdoh*MQQ=i2fU9LahENcWsyu!5uRt0BF3Q$u&~XX_6nBFq)ol1>*Y^ zm6gngjdCU?!wsI5E|@%hVQO^=I>CRDyCqwZgf^5m@87BC@4FIGb4PNUj6}C$5S55p z(P%IC3f7@;DtRAe)jvh1t!xwc&*mGt&qQ(yf!BgRQ;da}!EI>!#b^ON{d#yD_v5%U zdmXg?&c9b5kEXh!pPJl*^-;cb6f1~;9~vW^u>#mz8>_*@kFWyw1-u`l0~#VGC0Kk< zO9;&VfHx5?WRs~nzORABY14Qe>~pSdxAWD}t&?8`UEoj-t5V_DM3=X}MebR+9GBkC zS%wc4xh$=F9&aAk@w^YF0~cpAa+N`D#n7B32pC;gy7lYP49QKa&}-12YDNU6P=zUc#9fagiCASsjZ*m)U;DBW&()pv% z50znkV%zlJbj9MQ$o|YDm_%kC{wLXZN8Vy(;tjWja-;g47047`pfjEbz$+^RT7)em zwGM3#lh@bP`h8Glc10gf<%dX}RLDJ{gsC7B&MR!DNP+NIutpJJ9l-xF&B&1^_QdgDN3Y7W{E0L%x17+-TNK| zS2UNRw^-4Okl?;P)4LCQ@~M==+(@@*RGZW@T~h~|`m08Mh~yPS0NH29Sne0V{$9Da z=<}t@Q-PZBHemX_Z+Xj3*|xdBa~QyHkXDvA?+ zyDPH7WgvhaqidsmdH%x_>Y+2%x#WR_D%@rg^1w^IojFGXNpf4)e# zcuNEIz#hh#II2%H)KIgA=KO;#i19Fj2>&*o)5v4|NY9%?_MR$Kc;a?I19?kaosX+v zb4ALca6&eA~$P z!#>UR;NbWwtq=zY&C~VUr$XkcvX(-clCntXF7p#Dqmrpuq@_5F8kCt;WG##tp5L6`4(gtzWWCZiiO=`a|Q%f8OSe-6j? z@{)NVeJp_%sIul5*VO`Zi1QqiR#KA0ZbiWLKndP_j;V67SF8f|fCs8&-o=uiaQ4k0 z&dHsU(~OMG*<{v=YlN4j|LGgyJWr%|HSTB(b)|6Nmzb0@!cX;`H#^b5MpN33P%x#? zyW}1x;}y8W8+=#%+cQzOd0jUAAfKDwQ7M&>*q!P(VC*FlEkHf0Oo(>hgBG>J$aGTu zCoj^8Li@xg@%1Lwydlhtjsx-a^GLsHQ6Rd{ZMrol^B)S;_MVG=HLJcn;g=@}BJWof zzlm50>1RAy4(oH#B6hHFTzp{N2Kxoj$XeAP{U@|s3v|0|5~N* z5|wYwtZwosn{YF2KJJLe$?)N{Jr{x0PHg{-qpdD5^X6!|W zRHr;jv#kLQ;CX%(zGNUrOhr-~%d-45Pa8`%ic}-eLVIgc(H1lk-9Aw1yg*w>&tYn+ zPadVB7pKhBAlxyjhUR1wHZZ0zm#ho0y7G#Mm|*^W07qF-hqx%c*}HZ?S!%wdWAdwU z1`+Gh5|wKd|MWnq&42*MyoZ{tt8v;I6ar>#;|5W3jD5Gh0_i2&6S!ytm--AQo%-sw zCZ2S}L*hSLW)>!LK0Ey+_I)iZL}VKaCl^Z@CZkJpv$&mC5VaTdU>YVX?6DzeoRfnRv?!AL#ejZ`fX1D4a8Ewo683)iW%8R7TX&PbGf;g1dXbX21tE)w4 zr62g2(Bi4PJS)9UFsWC4@%S&wxf3!I5XQ&Y@aIs?H!gqgQ%$9oNIriu(uMbMC3G>a z@Z3&iE4O=OItg8!`F^u-SCNOr7mpLM_(BVzlknp;$In?(@m}GdG)+ekI?N9?Cbx$q zLXQVIRUE{;om>PR(^LmvCX@E$dr=fhUC>D_Iz~!wBksB8U{cYrF^+nXVUXsoCUuLQ zpuPGQQ=J_g#K%vGE{7de0n36swajwpeqlw0dPJC_o{2Qy@?> zmaR^R^p!yJlUwm@Z-b>y)jp|JnvUZw(im@T?*YezNp+GfD^3~D>6OLyC(g$k(sM?B zlTCQK0(&c1mXxYUXphjV${!ijbq3Nn{Rr9W|{e#&H&-(DXOp@!h^s>Jq7?9!s!c^&eB>D>w z`Y)JJlhNOsx`_(s4LOff0M+0vDRoX_=PTgL)eUw|6WJWQ<@i~uGGEvIkI_#%(Q<|U zcz=w64!aY5|C{vP3{Pct=Jr($(|dO?(ibT|e>0&YP39(dN`ETkG>&FXk&DpQM}6?p z;I$7%V>~w(7i2c;r8IN$>(B4(ewc9*+mUcR{y{kTmhFVHR?>8>B=FF zX;JtGDTxhRPZxVz83usMAcb!9O3)(p7g;A?P^HJqK4J5*$I$V)+U1kQfXLolZW*RQ` zx@0j3eBxr*$3&S6hTtl=lB&cY3j;~X4vhIV}fC0_#A5bGbZ|(y^@jCldG>2wMz&*X}A!+f;q)f>4h}-s>MOS#z2GUcCTBhZS6g4iwbXb8t*$eU-LeW zONvdY0UC0XJyk_a1P`fYjTc6=R`RtUF)+%%vfKDnU5Sff_|MS8Y{;1u{&lPgjI0D> zN;E6KKRF{!Q!i$uvs8__TB9GRH(YI;MJJ%gwVw6qwCPmeL6n9v$Fjaoe~I%reZ2>7 zE``}|gdRqzlb+->z4#N*iM}ssLDqz=$yuHfAVlGej4YzH5`yy4tv&=cC`twN7x4jT z>wZW3xhBakM{jY2+w;+7C6&7vy~RaIfFy!psV4m-jx0JO^W&4xsUDG>Do!*>BbRnJ zrI~uJ{+K?ekCe8p2t?DQw9oa5P*rT!hrksVrcr7CTRvQG%g|41_>DAmQKi9~Oz%~#+5Lqt24mW;FY!>C z`xrU%IdGv%nJ+zhGdw`VmNe@lU;6CY(sO)s?08tvH_{!RMbuW9<)F3*Ci+GSbZ$7} z*|{s4;_lgT(6SI=$Gws11wbC+^5t(}ar2v%rKQ2w@$6CkaAGFa8K?Cm?nyc((S9#d z`KmloAv72;Lou-qM$!py-!t|oaZs#Nal9|k0S5ob(wk8i3P0t1qoBGx-xJ?xHd!wJ z?t05B1J3wu{?4Dd*L}&;6q(2CD;f;~&u|WM8!cX}x`wR`Up+YVif5!%7U|uy z)XuCioK^*$HFHB-z>q^_dp#S8RZ#3*wa9Y94;t^N@mTmkOK1X#*PErbv&KL`VM$e~ z&z3UsI=m6gmQ;Awt^fU35^+`Hb`;%r%3hBT9r53Db_9}D4AROQ?d>UM_g+X}FxtfK z<@0xOSr0O%@NZ%!CfBe;iO>by*-b%rDB+t#u+*d86LIt z(oqf?m~`m$PN2R0LU{S_erEBD!)0EWOGF@m$VKqx{eo)odiHgcQlXCHL+tA-_a27y zRzX&pWk;>&1|a6k+G7GW;m6Lps6MlmPk$g}?K1QEgR2%r!2!RzOx4PCP0!Lz6PtPx ziCNir8cl8BKI4sW@;nskY)ogGc9)%tw*T&zQIBE@4Z3*wcSaT!3K?2!MK{q;TP6FBBu_91N8@=2LN%1SoufLXW9S+!#~%G6A3cbS{md#Tsy|)` zqW5IyjATFWc#)Dj*>g6F{i7#fkj(zQ!p~((0(j#B+=E*rqACMq33G96UoW%ZP%64# zW4GQo%;Geo%QLvw$Vfhz6DB%_TlF!nbOVe#6`XC28j??0KSeY`#Kudy3GpKJJ`LxJ z0ezPd!N!6Dmuyjed{9!OX?n!8DPxZ%0pS`&y7Y>cYgFWwj|=&9UnG{Q88X7|`2o-e zz^c#p5LQX9!FPx-0^kSX=(}3^PYKRQ-!bX;u3^A6ZqS~JayBq(Eav}KW?$f{*)Xq&sF zwPjyJK~X8VVyDe(N$5^th7G0V)YL6yZ);>YbeBRtn#mAas3JUye>^u<=#F= zIu~MN06^!b< zO9KEHkDzGuB-QYuhR_$eLpdYzuhv-O7=eyoX2w$Bw)AXaXxjb5lkve9Da*UpXBoF#aiVi8M4Pr91-^q)b=F{Pzs-5^@6-J0UdvuBBfqrG8x?|+Y)syab?j@3$5;g6K!5DflHT97vdI!rVME9Vl68)7eU_+L8i zzu>5#7&~^>lWxcBiacY~iz(^o97UgY4YA`Td7cz9tl2Qw_I0D*j8w~Y0jqW9(Zv%r zRW)O09({8oF=L?EeMHKT#M1kS9!C_<-E9LEF7K<-mkPJnC){&IW33E3H_nqAGCNOa zc>;O%GO4Gr6^#3I^oa4|e(YRn%h7sZcQ;Om`Of5hbOlHpe!}f<(D#8rO8QBj$q7`p zFUw2ohceR^i>q%G9>-dt45GBIp7}{&!Z6hQgF}C93a(dNiVU!`H@V{+Jny@Djiwek z6a0a0d?f7wPlPn56A6^)n?uycM#*j8bv+`ByG#cZRJFCh!o;h6pem@5`UyIeAeKgJ zOGhRhT+d0`u#@w&_u4Qe;kC5l&&-YD!`Rn+_UpJ}Xt{|Ej-^B7XZj}M z0CTb2VO4rdbbM|)Gn2~qq_S?lbKqRxnGeF=jdL@%mdbn2eO)rm{!w}B5r0w+S98U$ z%x{SBTQq-1ex;4y2o1v@_$H$>UbGwyHC5n;80wh>5$AcRB|)&Iii$|Vv^Ze3V#~9U zT=p{4<>D;h+2*L}Ml5!+fuc<>E5G>{~c6)Ziee?x7RFq0HbjLq_`+x8o+EOZL} zb-;=f5m>r_Z1O)0_5U|zp{b4+twh5&BX9siIm#?i5#`-CXsJ$z>D6b|KiVnmOg*#; zvyP%m-IscG8&DRU32t{Nybzir+PJ|9<%#f_JI-m3*R!_$*qt<~SvFuchXx(9%H5Gj z2M#91P8BPP3)n3BmjQApF@^pD;8c5XVJq>qmz4Ml+)&!F(Z{l11cwI<17Gv&CzZ}G zo))HqA5;9=jPoiv*3g^0ov(aMTu*W9-oAA2%j4|FPjJ-=FZ!HW9%WFBrXLMHnHMJ& z81u6hgH)Zw}}boS2|H$IV~h@mkLNY0r^?84Ux`LD9C^j|xTFP5O z_Ru=9RiM_4)t3p|V}`F=Wg6G{-o47nwWHyA6!n1G>fB9j1aliie-?KH0o5Oo9}<+2uu~8nU}-_ltJ%+_nZrKko;DYptF{P-u?)$xCL4HfwyNu zkNnIpaY$dNHjjPv&%V$%Lil~0Ny0$>&AKB@;w7U|Z?$m7DyCuB#u zN1A@Mr?%yR25GDlgZdjA8h&&b-|ZNZ13h0i`?^#;7+1+BtBPOJw@g_yBlvgt1@K4-H3 zlP3rrsru_CH-G-~2w~XQtCk#b1b;j*V;yq5`aA{V=h>Day&L+6RO~j`5(x*!H$#De zLx@@XA5p&)nl$N=V``Nb$MNUi$w2r75Fkaiz*Ft07I6m_15{l+ z!Ua=FUL7ED5bf@)D4Ys~90Du}|D^kXK(e->>sJ>ojhF(Pov1{0-MfT{g3FQbzA&z@ zzl5nFj?(zG72pBC!xITwU03?s5l0T5Nd0%U)8vRB`qR^bO<(t*t)Az*_v3VFd$c^1 z73Cnx(oV7orG6Q(wzzd38GXB4Y6or=E)O=JvnnVaTqE z{POF2`8GS5=ad;E4#O%OXH@%jZWvV&F)P;lH%|WT7bU?j8n|Fo;gDJbV>Z3T77Es% zU&#%KXCC)50$8jD<|DOV%To=(JV*Po+<|M&e|TEgY6&L=tvcQc*$&D?^4Oc~!nIKZ z{Hc-IFIkhl7th?}NZ{5l`-n_XnXbD)YB2~0V16*yX2(?gMH|^o=zmRJ`hDbfuX;@# zroX=OXeAs&k-c`xGx9tqqjuL-=ErHw1exp)7_Y0!L~&|eJ4~(?@g@Z?V8-B=o9}u>;~=cS5I3{%_vNV{G7n=!>VA z<_Xn!)O8!UkiJ3ddu_nhg+eK4{*);&mqv}(gI=HuaU^aJh+TE5&)N1DUMq&mXP#HO zcOL>O7CF>A$fYL+vs)Xk{3U6D`}_cjrUk zSL?tXj$OZqFj2D9(jRdy+4~fTDy1JOvTTp#i-p(9LYsDo))RWf=RkLXY&YyCFX;1W zLQ!}Qs)Z`F#az=!C- zONI{+R)jkAN5@=Gy^4Wbkr8HtH1c3?t>V6Ds2s`42(UEirlY3L;C1@e!UQS_I;uOw zu9FD64-HKvw{k?JTnuy*He3sp5u-n3-hZKqE=@?r#;X2N08~LOFu24HgI3GzN$H9( zT&cMZvlX%+u%FWbSuN*ebGVLUBlMMcju25s^!Mww#tCMacO>Y+FvEGW>1TztIXVR~ zp{E72t#_BpYe!TmliwBZ1C`imqLEMpg?shG9X!b{O~PN0gIDv~^3%)b!uCe-crq*S zpRGXe)uI==L&>SxQd^+1ybpsQ>KN};r9@UZO;Lz6P2Uf5fTHfDe@GICYD#{zr`dZO zCl||W24(R^k4n;YTqJnFORDo_3Tg6d&z*44n&in`5Ftloibaw z^=4bPgKwX~@@tV;!l6(HG-H|O1!?;ImhCpKg3L28sQes8iFZ_oHq*#{jCs-%%IXfv zYCL#xTum!9vtLw_Z67mD}?H-PJYf=8w;#Kjg~kCES@j!Ou-k@3!>EeMrKhsE^p3 z?^>COJj2swa`J)O&{g+EgZJfz8CzQ(!NI}Zv9knfbQmU}`iRHw!ftH^HlHC*J6D$p z#JD!@ac4fZ!Z-OxK8k((v+_M-RT`BAs@n&@{N%b3%ksDR+*5zE3@2BH50_7MQLZ4; zAa^n7%Gr4+dhv*rD+oGcc;e05qBuMrE|*v|-f!xE#_#KMqKJxFDEGceYKWizO@~h; z)E{past1F#`3(L=$`4Gp>pxZAb+zdg9vLy43=m!{`&4>e zA7NlRy|*ii|591E9(hmn($cl*N7&tBi*|EtTXY*$%?Z}A&WgfT6A)#}4u*R`8KP@m zM^Tw)L)d_X&^0u0Z!BYOF`yrUN>te@$fh$QZjWf^?T zpR8Nfe7WMz77E~o0xWyvEosxb-$r|6RQSx=G|kGj7tER}xbY60#~wVS{{7j%9r(z) z5r;ne?Xm1LG0`_2I1I8iIV?)&-fqc+-fet&qInHiECY7M7bFO7JU%y1x!4xX#fEU4 zN13lqXb9U5YNp=b!M=ZZEa+SeW%vvz^A__IcM}Y2$6sjH7%mJ7Ns>|2pb4^Gg#K%1 z7|981Gu?-iDA!mB<*!UtCh6N?bRpTuHuT*aBAd684_F0d)Qz9lt^3Sy^;^704>)gz&wk}`|WH4MM{r)bFK z*^*01Sa#AxNIdVFD>cH2cY1G>rOuj&b!uGw0=SeYsq+@lt)k11iwZ_7v%}P^hnvFB zTa9cT_KNHth4X{IZKOE(aHr1hjq0?m_2Wu?5UKU&|7WuS#CF!ovOBSiP6xp3!vRI2 z9pd4)u2gBxUcQMy>kGsWF6Tb-kt3_%4;Qd#W9L#oOFJAZlwdIqK84B89-TPL=^#$8 zl;wnN<6V3`QhCz2*gUuxT>x;Ou||-V0REk~Iz^_}5%b`)RtChA`eioHAaVG#*i1{j z0XRU9-4xU|)#{l;t;CBPRPyD^*=>R>+ zmjV_c=(W!ZvtqB~uaC`Kv;X4HPHKPr=8GOsh{*0(C$)KA0g(OrYaav1fEY0q$~5Q1 zo;H2>FvA@#E2g9SPa@e88tRfC0$;=6A|MeLJ%1SSOMdJGmeJ|n{vzUkaZi4%iT8{- z^jy*<1JZM+mcYOzDt-#+VTOcgOkvQ?3ZPT9CW%*f_QqK56kZYc+eg1rh*kbT&@A4F z3*364`CvMbW~7kj(dCe>iP~47DANYZ!&mLTr0rP4rJ2bHeC8)SNg_iJ0y%QKm<*(% zTw)mm&V|xHKdmrqsQ2ytnO*3HYNi>25?gfPOqPxOD*2?Yen~B4a-TuPB1*`j?_rDQ zeE)^k8bo?-kBd_*x-wM(5K3>elnB0ktv z?*TUwzRAgFx3_m7@u>)v9pU$V$0hau5%$($QMO(8Fd`};ArjIJA`Q|h(kVT3gLHQz zB?8hNDvAO_H$zEEi@?y`-Ce(vTkq$6-tYA|zW>HUo$H!2_g-u5wXe>P)G*p_fCC+! z<3gkx&J3C!Q&u>Yxv04ERW6ja{`bFq$I4?f%_U!b~QOUS?t95zJSPc zi(g{FV*YKFjcFo3Ln_NdU!%_vrQuJ~49<^FxNrBl_N-u}DFT6CL8jn}*%L*!oxRN& zhYpg!NF1qT;r8I2TyB&jkW||E(V^ipTW5Kx2t!Qem}@aZ9t~5w|7mF-5D%iFOh;F! z^xtAZEHOj{Ljhv(J7J+%MdfYTZ|^#UQt-fJv6jgXZyiFq*ncs;;enk@I=wHAb*0;G z>Us_?Q|81;U<{)HPk8d6RS7w%I5j95?S%$iYkx2T2AZtkGB6F60SA-IqoVhtSO~J( z5Hr5VLDCSn)WT||22dXLc6kH(&I%IYwmu|1#jcx7b=QU}ku}JjgpMR|btqRw?abin z36K4UsZil&RwQlfhY*0iFfAMQK)7w_b$}>cY!E@X^=G>vNfm*5e^}MSegrA3$9t1& z7kv^@#Jr!NUs!aiKR|O02_lgku;530HBK*Y+qQaussObZAhS~S!2P*&CDgw9J@X+7`%76Cc|1@g{e++nqjqGMPNyNPb2&N=p95&W| zKi{^sIQU1N@xeGZ37!2~gpgd!1JNf)FF)@sbf6(ow_=2LTQEhCO^3g70lu+B_meOXX6*yakIs@5k(yD6tsm4B$%05! zcak$3vDM-5p4BhlT>fkhf4l0|jCYt6T4mTq(i0?)p;as=eQ5)I%=N5ES*Qld%EJ0# zQ|%g3)i128U7e<0UTiKh5fjeGNMguu%>rk`%`w>0dXcJzea;V+*b3$I4cyXR$?Xv) zUYC@Vn5pCBOk_xs2o$Cy)UVxj3aH+kL=N!4Boor9Z}Ieg z`VJlK2|ic*Y(^6-U&XTeg!`VawVb_{$3}?<9{{L_rv=`e89E_NTMQ=f*V&O5R)6g! z9Zk>XHMko*T{oAj=ynG5qmQZsB}Gq>50l2l`UFYcExB*8H{aF; z6g@CdUwkX}d`D!kxPipo3re1=8=QH8Y9O@h8Bq$Bp&`nKP2ezFD}xG7$0&ta^QT*3 zba|R5C<2HlfA`Q$^gZ6m7OGJC2bNYr2>^1YnY2d`2n`+AKV{rHGP~c(5_;iO9rFMa zxg3k(9S;4cN#B>>xL439Cg{~S9yJ|t=A+6>@+g#8fN4d>+e|o=v3IH+LYlwJXz+alde~R{3d4i0u)I`55G8;&K zSJoDCn)-6C6{@b9u$qj015k6yvns;XO(YDqWHw7DUg7(vD9RJ-Zk;7aeeH>*PgS^z3 zF@@c<^x&?8ku9IU$ZZ+-cM0rj3GSD7PJiKZ;WqVFe>D*jetH-G1mv^3ssc(4!bcRx zpIBOV6_^dt0Ue{gBq$n+@zcdX9CL2+Q0C)K@ce6AJ*l@(BYPQlA+yXLWex~OSP%3X zFP3R3-E3;RTWBA&7LSl}E6<}h>%y*=dHrra3SQ}5OmJ=dN$y3oXhjSKn2Ll}6#jCt z8Ok-$KeV1{5M-3FLXCfdr9-8WtK3FP6a*!*t5eeSNVWCI5G8!(URoN2%nPd8XsS0t zZq7GYa8)KU5?H&M)*mr{(5|rjl8?;zuFSOCOn>8X*ikW;WT32b7<`(#m6m(rwlKl; z=Z6RV>#++^Gd=xC3jZ-p+xjH* zL$GSKy`d(E9;?(;RQuvsqZ&X)&HxY@?7<^$z5&V|z;J&s>e`4ZF+^Y+I9Tk=F59G< z417~^EP#N2INE9tV7zg*;jLyk%6TaAdvsJS^42o{=r{HmQP~Q`#2s24t*uW_){0#L z0T-2K0kX?V&W02+=mE%?CYnF5`I23M#sac{gR!E4FAzA=3b^%E&ta*3N8GLvq_HMk z1Ga0mk-aFZBT0*PKKkdsOiT3ag?$fKm5%xhjo;GYFVrfqzRzhpz4hn(d4Kx&Z6xOD z{aV@S_7cf3ggRNNu(s(hviNSj9z8AX#ML{J%}#I7t)3=vZ0PH(*V$r8NxYQS9h zcl16W2h!u`Ma(M_f0@lkx3d}ahSe9qAGixz#=*sR_eN4!)sfSSy@#8hGh$O9tRu-v zSF0;N`;JXi(i~&ZiJUYw{%ZpIVDGWfQ|wkn8ygG?BKY?{lW@;sfzS$bN0d+0%j@M@ z;)2LBQse8&x)9+>6etmwH5PK)_GEiYAYS6nQAo7TZ95o|SCWAU=Rg!ntI<|;pSBPz>G)}%4_WE^z3J)9X?6tk?JzV)h6 zbE#vvl?ZOtH;?5U5E5w|x;;K2FCHnr+hD=8hH zjgCZ3LZbzNrY<0PQx2=zfIcH$ssd!m0WkNB^!^8ohZJ(=ow4GY3UqYEYpwz$y%jQ+ zw)S(8JinyIW2bQ1>&L<1UDq8z*k2$n*$%E8W)4H6gQ2Op4dz;BlarY{Rz!bGmDn*ulH5ny=nF z{bMfw!rE_xzvFT4$a0yjZQq`&(DF&IF3DtQ63Ug0lZM$?sp&IlP{T^((m7~pp*D)> zbnu|TrdS9wY4P$Z)IsS9X43E+&+nn7OaYgOl%8Nz#{U^;f22>z;1aP%&B|qSsdnL7 zF!U;Y;>OJd&>e+u&o_EgI3(W=^4YEZ`oazpilpRjEWJm5PaLvbQic5*1b|QKy5s5Y z9CKm63qdtWs2UsgWXx?f<9Q-qszWQc?c_Hom*LxdXNs!1WAWonDIZwWH4`iC2{FuF6!-a_+=0j3A7X-3v|vxj*(+kmT4a#tyks5P9yNT6F>=Y5!kk}X_ySf0KT+`%a9NL+ zeHsV~Vd$(t`5{nv3VGRZ+8s2&4uD|d)m%ZE8#_+q0g9|Cz(T@L|I2>xwGMlyv{erk645PXsKb%TwieQ zxA=o-`@Ga1;rF4WBmxd497f8o|BX@o`*}d>&!Mz8FHX~(lK2Y?|Iq|I!`-S7&4_~g z^-qyX>#0?F_Gw6M~6}He%Ke-)Y`QRLSp!*qS8uwD6VVX&7nQg z)HY6fs??14a$vbLj&7KkLiweExU~~CQ|&x4r7|Gl9P(OKt)KXRcvmSGqle4tE7BUc zi(<$NV&iraCEIz5%NEpOIcZHuT1jq3U>^OpaT&tA|3zG}x;;t3W1aDqJY72bj#G-= z4QEgm!O*Q*?Z#zH#xHIjANuosFBZgVi=D)Xr9@Wo`(aE~*r`5yn zrvTB82H;ZO=zQPl5riAM1`K7)ys+(s_(7#j+SR6|th=D1UsPC{jVGtSfo8G6i=wpW z-1*fL2(yJ0gI8SJRJK(I9?lwyD`(pJRgc#?s-`_tSJk^yy- z_Ia^*3H_OZ`Or9*9t)Cu!eDatwG!aRs)5xwKJvL>%lv)kM)C-)9OAbg#@1W&_yDR+2d(W5@-5c9+n>*2IQU3_u<0O(1%)UQ3$Lk$w=;<=Pz`=| zfq50wz0+jSo3a)A8|xH#ddpwkGd+IsmtcT;mgA1f6Msmk`_NqMBntQPDEWSqQ3-(R zpWS~h){~t4ghrrwiB;_9BKEk*q+a|8itS(pc}hHkEAj})i8Y3AlL;EnbuN47cBzn2 zBsBY#YJ(S0CVC2TAHWRd5k#QFlQOvwl6_KE>@6@hJTnaFBSss-A~X2iY)$W=qs=EU zXvl!kaAsQrDEA>Sx@myZVXd$UXBfQ22pGrtKv4>G|5LSL`jTOlfHZKmn9+SRixSi4 zEFOi9J~}!p-yCwsI_&4>BVppg4a1}L@*iE-rCDx zpYcmVywRP#xX0jdsfRLRV%zZ3_%myv^sdyONuZ|#0r%1-B<`;pDh#Pv^GQd!p*-4v znzlV%Fd`y#m+6n_7X}HDkSY7%t-h`&g?rs>eg>3ZAL^h-$9fzriYwv<-f8Ea1=KOpY2GsbKt)b zZ;mE#FlrL;3JZDX)wfp^7466@{_?WB`&fMdI^Ze7==dEVV|Cu5-}~zhn}0*U+mM=d zpNy#Y~ieI(Xg9@?Q#h1i@)U8Ggk+rEV=mXS~Y)ZV|2b;r{h?fNu zZ@L}B#1sN5fvaNR>Dac8%S-Fv;{3-*TFA!sYlO=k<re9sD=*i|eMPF`C z)~FN@v}<5ukKzRMGL3$I1+Hc>l@7CL5L$Nu3);Nx??-&+(r93WwIHT_G5;)Za!zmv zDWb1${(Ze`-eTQpk6(CORhLOX?Lpp*ZFq!^HmUqYCPlnuo|x^+qas4}Rr?DJC1T2k zuSnl$-|$l73&3$qOsKhjk>hj z901t^kSY8lsYd++cb+zU+^%~q_CwX1kT%#M%f5v5&qe1h4=%cqZ;PI}HbOBsWyo;x@amW$9PVa@$QJSh(o#gFKkGW+rKNk{r$p5qN zv9`fN3%x*f@czp}iFy!Lkt-m4@G5m$EMnFMI197;)W3!9j zPniReT!fPogr^X@L+tmDetWyS=JOnS{_-Bt_mNrK-3cKk3V#;LBk;~|qgmhl8Gl4k zFn}VgrH}ps>X8SC+=>)lf3kl6dy!$^CSO5n^G~GzNxmp!ZZiZO&Zv~XOy(~H@E{9= z7+&$;V6Yf?NjlNyhku@fj12zz&i5Y@f63$gkr2TuasTkP^fz%6AVm%ib8Pju#=nO? zObqc6Lj?bg6T<1gME*RV{oj7Q2qFdmElEV&fAa~^X2|i3n!hq{)nd1c;FweKKaW?I z0FUgdF2VZ?jTtQxjRNj?b^|WO-y>d$Bxjg@-_Q^yNBrcUe=idB2#k~=TKn9esNlbO zP!TN(R$w}I>*J8hT(I=3E6*wO_f&!3mEM2n&l8a{!EiQln7;eVG>RbJxg7%ptg+t_ zqlnn8#v!J={l%ZP#T)PqyS>IspeKt9S)^AlkahNkM!S0ei2LybE(U! z0dM6jQK!?&6!wYE&JS&|C>|pes0AFtoWVoervK!r#+0vQYu}r@bOBN{A{y&4wT{Hx zzbBUGb_?|7x0L*4bBYks76YA;#lWXvc>};99ea=~Dimrm(Iwt6<71M=8jVX;K!mDFGyC$ zGS;1#AaG>+ke?7XlR-J%6ABqC`f&rtRHMbH-RO}NBT7L2>=vP9o|&#X&H=c}J{ z-XG6xN1kS;{es%w{k!)VTY2O9$4#QgG?k7Cr^hU z#<4iC|ItoxBgIft>;-Gpb9)o-Zu#M#^1?^nR=Exi{G`nz(MWQU@|kJjnVh^7e? zS{|3c%_c?%91jl^hpJ1}>a?CU@KQkAdHx(`fgZV2g~px_=dsRXFBO)8_!{T^&(Ip~7tRcDFaO2H z1wTXnqii(4IGd|1jfMQ@K9wd+%Fn5dhnWWsCOxWJ1xF@eLN`|$>XVsRM766NEK&jO z@^$(6P0A~-JFzbBsl(>xUc00Zsg~@SU4$7r9`CrTF**&zDlgSz#^zzGoxm&W^qEN~ zzb>nu=58ymUN0MRH~KN_M4!SjyS`987#@|uBx9;6Y!tF?mo^lzP7J(D@tZ(nza`MD zU+|Lr<*p5*Ma*H<1M-^`(9~{bkiXs{&f0xnX;@*}i!?fR%F}&#xkeCX>QqGPXt=XY z-Mvz~LhNEE(FyD^Bth!$R^2r*gUyS2?8ihwWz7>P7JQ zDz;h1MrjP|zUX`CI_i4akf&kFXeTM8N9!hP_-E_)xLA-8ndkXBx4Bex_dbQOa_1XZ zj-v~~4^Dr5iG@u^#%Al(6ek~jw`+{irMjPAviMD1w(C795#B;GxmKk${cZp8j+gHo zi0=J+5jU}bLAq-0==$qX@SPg#q2XkNpSJ0;KxewJU#SXDy+gM3+OV!>Xj(AG5({+- zDqbvF;_E^tOb5_%Zc=%9xFoh-j-af%e`SMDfOdt;F4`X7$0rlw|4c`~8v+*^RjpW# z6Leull+XU@j?gpNfdJT0uo^7UxP2sKo6i2Ocf2!pB+$?>%SdYuO78|qS)kUB3 z?zCBH-rkmFEkUVi(*ENd8Th9*WxsRvry-}3WTo8v!75OP|2eDIITn!r4G^2bmG^%4 z-s0|G_7-_63X%?Su~Bzn&5bRMeFwad&NMVq3UB6%%GbrB#9nL^y)KuNEw`}GvR}t} zE(a0EuGZ~g#85E?`BYj0rzM3-OvQWf3NO_@n+X$5T_Fnb38Cd&NNTTeqg&DCFfGM3 zCsNhsuw~boE=*Ohg6~Sr#CIs8u zg9uqQFzJm8rtr7acSMKbizQH(dg&y^tk_|BqP$P0lJ7BJyCc}0OA^Fs4A7i9gv52b&H7lMSy z6p^JK6yAlwvLybcVTGhetW^D#z^#j zQ9bh-yP0$R;kM(HvCZOSRKfffq~40tQI-UhB=9zPr|9sx|HN*pnn;gJQ>y51jC(ld zM6JPSdcu^ilE7|KtvnMx;4|CJvbdQj@3{Aqg16Bop9!u{AAic|m9VaCxOv*jt(@$% zU*tYERPiQH*L4%=ZGmHj2Ge(%(^Rua)v;6$6Z#t0N3Sn8Q3$_a7OD6v1r{w9u~g z*ZoRCK8u5V8Cizv*1;cgtU<*x;8wf{EAWji<09(i2cNZJ!&0Ig4aIAy$ z3&l1L=(-X$q(du^(%wBdksdJDi$;u0J5}af@8TP29z>dJ7xJpGqV5>hkgcr#6too<;Lkcomjh4F6!nuKYgND!A3`fY7|MyFdjF16#K_X?}gZL!=6^DO^YL! zl(Ie;z5KDQ)Uw5wVD8PRiHcuY)Neas=CR3>xeE>LY!49R$mzb$waaHapV$1J zsp_u?jNF)jQG$a-LUT15hTfk$RwNu81d42Y>i@|>|1%Nb12Pu~_5R!;X5lcwTK5?1 zjf?a={oRr%<(v=l^XXZ;o`!soS1Ka(w0kFsOnsl0-wH8|P%eVK*)D2CQnnKZy zwnCw9_GAI9OhkWb5rd{UX_Z@Sf66n>a$#~?x3t2K%tfzsN2JqMGl%anlmpZ6B+}$Z ziY)5Xj1K!!?*`-i5vNY)PNsm8!c~J<+kCH1`RBzmeJc9>R}3_WFss$u%;B&d-O+Ja zrp9?Q89S#eiJq>;5`GBj7>kPQ9rz+^GV!jT@7>sly|%9B?5j?o-pyF)MKRJOOF#N( zI$W>$OEd8kRxX;*Q2VgVxMPx!cN;42eoK|(CVxNW)-ah*A!H~0w2~MUz!{&|kLf^t zIzGT2aEo{4W%)7?7}q)J`nX9bD}8TT$;RvE(s^NW0;iRj z&5FXR%t$!thI`O_b&1Ola^B;Gs#wlKsA}qE;X>g>_p5p$d`1?8jS1mAQFa6B(b-p) zKf4{*P93C^gfg(>RVLO)1u6P#a=6jUaJW(z?FQ9RIbkyl`By$pD?g?kvQ-~z%Erga zsF)}B1|MFARd_5lPYc35Rbxlh)$1c~Jy1C6zd8eby^oIImy9tOyK6|m?a~~Er9f!ypb_*WC=Uy&thBQ(ypV!91wj&df z^&oJ;*jYzNr1{TRPGQoSExM=6zAQgdDj22`IhZ6*w3^Qv-Y#G#ym_768IGIDror54 zgmTk1QK4bV3@M!EK3Ovj&QfG4f%7;G7c$`&pd)&!giN@|4xJ}NIPtsv(Cf}SlDm9X z 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

    0Qlqf3@gXD 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 OKgCO`7t_xhd;Je_Un33x diff --git a/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx b/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx index afa5f8e0fdd..194b8f94e84 100644 --- a/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx +++ b/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx @@ -38,7 +38,7 @@ You can view the full network configuration by visiting the TaikoL1 contract on ## Tier configuration (Hekla) -You can view the full post ontake fork `HeklaTierRouter` tier configuration [here](https://holesky.etherscan.io/address/0x98d4FaD098526c4582063FA588C5e96229270366#code): +You can view the full post ontake fork `HeklaTierRouter` tier configuration [here](https://holesky.etherscan.io/address/0x6A666F2C56a6559dB0BD8866Bd0c0dDB9ec03c66#code): ![hekla proof tiers](~/assets/content/docs/network-reference/proof-tier-config-hekla.webp)